Answer · US Nonprofit Financial Data API

Is there an API for IRS Form 990 data?

No, not from the IRS as a query API: it publishes the Tax Exempt Organization Search and bulk files, namely e-filed Form 990 series returns as XML in yearly zip files, the Exempt Organizations Business Master File as CSV, and the SOI annual extracts of selected financial fields. The Olympus US Nonprofit Financial Data API joins those IRS files by EIN: GET /v1/nonprofit-financials/organizations/{ein}/financials returns an organisation's Form 990, 990-EZ or 990-PF revenue, expenses, assets and liabilities by tax year as JSON, with the e-filed returns the IRS lists for it.

By New Odyssey · Published · Markdown

The official route, and what it lacks

The IRS's exempt organisation data pages list these routes, and none of them is a query API:

  • Tax Exempt Organization Search (TEOS). The IRS web search of tax-exempt organisations.
  • Form 990 series downloads. E-filed returns as XML, in zip files organised by year, with a yearly index file. The IRS says its bulk data files "are updated monthly".
  • Exempt Organizations Business Master File Extract (EO BMF). A cumulative file of the organisations on the IRS Business Master File, as CSV: one file per state, DC and Puerto Rico, an international file and four regional files.
  • SOI annual extract. "Selected financial data" from Forms 990, 990-EZ and 990-PF, one zip per form and year, with field lists.

What that leaves to you: finding one organisation's figures means downloading and joining files by EIN, parsing return XML, and knowing that the SOI extracts trail filing by a year or more. There is no IRS endpoint that takes an EIN and returns its financials.

What the US Nonprofit Financial Data API serves

IRS exempt organisations by EIN from the Exempt Organizations Business Master File, Form 990, 990-EZ and 990-PF revenue, expenses and assets from the IRS SOI annual extracts, the index of e-filed returns the IRS publishes, and name-prefix search.

Limits

  • Figures are as filed with the IRS and extracted by SOI: nothing is estimated or corrected.
  • SOI extracts trail filing by a year or more, so the latest tax periods of an organisation may be missing.
  • Name search returns organisations whose name starts with the query: candidates, not matches; confirm with the EIN.
  • Where an extract carries two lines with the same EIN and tax period, the first is kept (counted in coverage).

Not included: parsed e-file XML or Form 990 schedules; officer or employee compensation; donors; charity ratings or scores; state charity registrations.

Example request and response

An organisation's figures by tax year (the example EIN, 530196605, is the American National Red Cross's):

Request
curl -s "https://api.olympus.new-odyssey.com/v1/nonprofit-financials/organizations/530196605/financials" \
  -H "X-API-Key: $OLYMPUS_API_KEY"
200 OK (abridged)
{
  "data": {
    "ein": "530196605",
    "name": "…",
    "financials": [
      {
        "form": "990",
        "tax_period": "…",
        "tax_year": …,
        "total_revenue": …,
        "total_expenses": …,
        "contributions": …,
        "program_service_revenue": …,
        "total_assets_eoy": …,
        "total_liabilities_eoy": …,
        "net_assets_eoy": …,
        "provenance": { "source_id": "irs.soi_eo_extract", "source_url": "…" }
      }
    ],
    "efile_returns": [
      {
        "object_id": "…",
        "return_type": "990",
        "tax_period": "…",
        "index_year": …,
        "xml_batch_url": "…",
        "provenance": { "source_id": "irs.teos_xml_index", "source_url": "…" }
      }
    ],
    "sections": { "financials": "found", "efile_returns": "found" }
  },
  "meta": {
    "datasets": [{ "dataset_id": "…", "freshness": "fresh" }],
    "notices": [{ "code": "figures_as_filed", "message": "…" }]
  }
}

GET /v1/nonprofit-financials/organizations/{ein} returns the organisation itself from the IRS Exempt Organizations Business Master File (name, city, state, NTEE code, subsection, ruling date) with its latest figures. GET /v1/nonprofit-financials/organizations?name= finds organisations whose name starts with your query: candidates to confirm with the EIN.

Coverage and refresh

Coverage: Organisations the IRS lists in the Exempt Organizations Business Master File (region files eo1-eo4).

  • EO BMF: the latest monthly IRS files loaded; the file date is in every record's provenance.
  • Financials: the SOI extracts of the processing years loaded (e.g. the 2024 extracts); tax_year is the year the tax period begins, as the IRS uses it.
  • E-filed returns: the IRS index years loaded (e.g. 2025); GET /v1/nonprofit-financials/coverage lists every file and year.

Refresh: Monthly (the 16th, after the IRS's mid-month refresh); unchanged files are not downloaded again. GET /v1/nonprofit-financials/coverage lists exactly what is loaded right now.

Price

Every Olympus plan includes the US Nonprofit Financial Data API and every other live API. The Free plan (no card) gives 1,000 requests a month to each live API at 10 requests a minute. Paid plans: Developer $79 a month (50,000 requests per API), Growth $299 a month (250,000 requests per API), Business $999 a month (1,000,000 requests per API); Enterprise from $2,500 a month on request. Prices in USD; see pricing for rate limits and what counts as a request.

Docs

Questions

Does the IRS have an API for Form 990 data?

The IRS's exempt organisation data pages offer a web search (TEOS) and bulk downloads: e-filed returns as XML, the EO Business Master File as CSV and the SOI annual extracts. They do not list a query API.

Can I look up a nonprofit's financials by EIN?

Yes. From code, GET /v1/nonprofit-financials/organizations/{ein}/financials returns the organisation's revenue, expenses and assets by tax year as JSON.

Which forms are covered?

Form 990, Form 990-EZ and Form 990-PF figures from the IRS SOI annual extracts, plus the index of e-filed returns the IRS publishes. Form 990-N postcards are not covered.

Does it include officer compensation or donors?

No. Parsed Form 990 schedules, officer and employee compensation, donors, charity ratings and state charity registrations are not included.

Sources