projects.propublica.org APIprojects.propublica.org ↗
Search 1.9M+ US nonprofits by name, EIN, state, or NTEE category. Retrieve financials, tax filings, compensation, and grants via 3 structured endpoints.
curl -X GET 'https://api.parse.bot/scraper/215c40f3-ec1f-432f-a891-57122947675c/search_organizations?ntee=3&limit=3&query=hospital' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for nonprofit organizations by name/keyword with optional filters for state, NTEE major category, and subsection code. Returns basic organization info with pagination support. Results are returned 25 per page from the upstream API, with auto-pagination up to the specified limit.
| Param | Type | Description |
|---|---|---|
| ntee | string | NTEE major category numeric ID filter. Verified working values: '1' (Arts), '2' (Education), '3' (Animal-Related), '4' (Health), '5' (Mental Health), '6' (Diseases/Disorders), '7' (Human Services), '8' (International), '9' (Environmental), '10' (Mutual Benefit). Full NTEE codes (e.g., 'E220') may cause upstream errors. |
| page | integer | Page number (0-indexed). |
| limit | integer | Maximum number of results to return (auto-paginates if needed). |
| query | string | Search query (organization name, keyword, or EIN). |
| state | string | Two-letter US state code filter (e.g., 'NY', 'CA'). |
| c_code | string | IRS subsection code filter (e.g., '3' for 501(c)(3), '4' for 501(c)(4)). |
{
"type": "object",
"fields": {
"page": "integer - starting page",
"num_pages": "integer - total pages available",
"organizations": "array of organization summary objects with ein, name, city, state, ntee_code, subseccd, score",
"total_results": "integer - total matching organizations",
"results_returned": "integer - number returned in this response"
},
"sample": {
"data": {
"page": 0,
"num_pages": 8,
"organizations": [
{
"ein": 530196605,
"city": "Washington",
"name": "American National Red Cross",
"score": 78.63474,
"state": "DC",
"strein": "53-0196605",
"sub_name": "American National Red Cross Shared Services Center",
"subseccd": 3,
"have_pdfs": null,
"ntee_code": "P210",
"has_subseccd": true,
"have_filings": null,
"have_extracts": null,
"raw_ntee_code": "P210"
}
],
"total_results": 190,
"results_returned": 3
},
"status": "success"
}
}About the projects.propublica.org API
The ProPublica Nonprofit Explorer API provides structured access to over 1.9 million US nonprofit organizations across 3 endpoints. Use search_organizations to filter nonprofits by name, state, IRS subsection code, or NTEE category, and get_organization to retrieve full financial profiles including annual revenue, expenses, assets, liabilities, and multi-year tax filing records by EIN.
What the API Covers
The API surfaces data from ProPublica's Nonprofit Explorer, a public database of IRS filings for US tax-exempt organizations. Coverage includes 501(c)(3) charities, 501(c)(4) social welfare organizations, and dozens of other subsection types. Each organization record includes core identifiers (ein, name, city, state, zipcode), classification metadata (ntee_code, subsection_code, classification_codes), and a ruling_date indicating when the IRS recognized the organization's tax-exempt status.
Endpoints and Key Parameters
search_organizations accepts a free-text query (name, keyword, or EIN), a two-letter state code, a numeric ntee major category ID (e.g., '1' for Arts, '2' for Education), and a c_code for IRS subsection filtering. Results default to 25 per page; the limit parameter triggers auto-pagination across pages. Each result includes ein, name, city, state, ntee_code, subseccd, and a relevance score.
get_organization takes a single ein (dashes stripped automatically) and returns the full organization object plus two filing arrays: filings_with_data contains extracted financial figures per tax year — totrevenue, totfuncexpns, totassetsend, totliabend, totcntrbgfts, totprgmrevn, and more — while filings_without_data lists years where a filing exists but financials were not extracted.
Combined Lookup
search_and_detail merges a search query with per-organization detail fetches in a single call, returning an array where each element contains both the full organization object and its filings_with_data. Because it issues multiple lookups internally, keeping limit small (under 10) reduces the chance of timeouts on large result sets.
- Screen nonprofit grantees by pulling revenue, expenses, and assets from
filings_with_databefore disbursing funds. - Map the density of 501(c)(3) organizations by state using the
statefilter insearch_organizations. - Track year-over-year financial trends for a specific nonprofit by comparing
totrevenueandtotassetsendacross filing years fromget_organization. - Build a sector analysis tool by filtering nonprofits with the
nteeparameter across arts, education, health, and other major categories. - Identify large nonprofits in a region by sorting results on
totassetsendfrom combinedsearch_and_detailresponses. - Verify nonprofit status and EIN for compliance workflows using
get_organizationwith known EINs. - Filter 501(c)(4) social welfare organizations separately from charitable 501(c)(3)s using the
c_codeparameter.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does ProPublica offer an official developer API for Nonprofit Explorer?+
What financial fields are available per tax filing, and are they available for every organization?+
filings_with_data returns fields including totrevenue, totfuncexpns, totassetsend, totliabend, totcntrbgfts, and totprgmrevn for years where IRS data was extracted. Some organizations have filings listed in filings_without_data where financial figures were not extracted — typically smaller organizations or those that filed paper returns that were not digitized.Does the API return executive compensation or individual grant data?+
get_organization endpoint description references compensation and grants as part of the filing data, but the specific compensation and grant line items are part of the broader filing object rather than top-level search filters. Granular compensation breakdowns by officer name are not surfaced as discrete response fields in the current endpoints. You can fork this API on Parse and revise it to extract and expose those sub-fields explicitly.Can I retrieve nonprofit data for organizations outside the United States?+
state filter accepts US state codes only. You can fork this API on Parse and revise it to incorporate additional international nonprofit data sources if needed.How does pagination work in `search_organizations`, and what is the maximum result size?+
page parameter is 0-indexed. The limit parameter triggers auto-pagination to assemble larger result sets, but very large limits may slow response times significantly. The num_pages and total_results fields in the response indicate how many records are available for a given query.