ProPublica Nonprofit 990 Scraper
Pricing
from $11.54 / 1,000 results
ProPublica Nonprofit 990 Scraper
Scrape US nonprofit organizations and their IRS Form 990 financials from the ProPublica Nonprofit Explorer. Search by name, state, category or 501c type, or look up by EIN. Export JSON, CSV, Excel.
Pricing
from $11.54 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Share
ProPublica Nonprofit 990 Scraper
Here is one real result, with every field the actor returns:
{"ein": "36-2334002","name": "United Grand Imperial Coun Knights Of Red Cross Of Constantine","subName": null,"careOfName": null,"address": "6411 SEABRYN DR","city": "Rch Palos Vrd","state": "CA","zipcode": "90275-4755","nteeCode": null,"nteeCategory": null,"classification": "501(c)(10)","rulingDate": "1960-06-01","isActive": true,"deductible": true,"foundationCode": 0,"taxPeriod": "2025-03-01","revenueAmount": 294689,"incomeAmount": 315043,"assetAmount": 3117415,"totalRevenue": 275702,"totalExpenses": 109854,"totalAssets": 2873537,"totalLiabilities": 0,"netAssets": 2873537,"totalContributions": 0,"programServiceRevenue": 190908,"investmentIncome": 84794,"officerCompensation": 0,"otherSalariesWages": 0,"fiscalYear": 2024,"pdfUrl": "https://projects.propublica.org/nonprofits/download-filing?path=IRS%2F362334002_202403_990O_2025031723214236.pdf","guidestarUrl": "https://www.guidestar.org/profile/362334002","proPublicaUrl": "https://projects.propublica.org/nonprofits/organizations/362334002","filings": [{"fiscalYear": 2024,"taxPeriod": 202403,"formType": "990","totalRevenue": 275702,"totalExpenses": 109854,"totalAssets": 2873537,"totalLiabilities": 0,"netAssets": 2873537,"totalContributions": 0,"programServiceRevenue": 190908,"investmentIncome": 84794,"officerCompensation": 0,"otherSalariesWages": 0,"pdfUrl": "https://projects.propublica.org/nonprofits/download-filing?path=IRS%2F362334002_202403_990O_2025031723214236.pdf","updated": "2025-08-05T16:09:01.713Z"}],"observedAt": "2026-08-10T14:12:00.000Z","error": null}
The most complete ProPublica nonprofit scraper available. It returns every field the Nonprofit Explorer exposes for each tax-exempt organization, including the full IRS Form 990 financial surface (revenue, expenses, assets, liabilities, net assets, contributions, program service revenue, investment income and officer compensation) and the multi-year filing history, and gives you name, state, category, 501(c) type and EIN lookup to target exactly the organizations you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches the ProPublica Nonprofit Explorer, which indexes the IRS Exempt Organizations Business Master File (more than 1.8 million US tax-exempt organizations), applies your filters, paginates the results, and writes one normalized record per organization to the run's dataset. Every record carries the identity and location fields (EIN, name, address, city, state, classification, NTEE) plus the Business Master File figures. When withDetails is on (the default), each organization's detail record is fetched to add the latest Form 990 financials and the full multi-year filing history in the filings array. Missing source values are returned as null.
You can search by free-text query combined with state, NTEE category and 501(c) subsection filters, or look up specific organizations directly by EIN.
Quickstart
Open the actor, paste this into the input, and press Run. It returns up to 10 organizations matching "red cross" with full Form 990 details.
{"query": "red cross","maxNonprofits": 10,"withDetails": true}
Every input field is optional. Leave query empty and use state, ntee and cCode filters to browse, or fill eins to fetch exact organizations (the search filters are then ignored).
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | no | (empty) | Free-text search by organization name or keyword, for example red cross, food bank, university. Leave empty to browse by filters. |
state | enum | no | (any) | Two-letter US state or territory code, for example CA, NY, TX, PR. |
ntee | enum | no | (any) | NTEE major group (broad mission category), 1 to 10, for example 4 Health, 5 Human Services. |
cCode | enum | no | (any) | IRS 501(c) subsection code, for example 3 for 501(c)(3) public charities, 4 for 501(c)(4). |
eins | string[] | no | (none) | Look up specific organizations by EIN. Accepts plain digits or the 12-3456789 format. When filled, the search filters above are ignored. |
maxNonprofits | integer | no | 10 | Maximum organizations to collect across all pages. Free Apify plans are capped at 10 per run. |
withDetails | boolean | no | true | When on, fetches each organization's detail record including the latest Form 990 financials and full filing history. Turn off for lighter, faster search-level fields only. |
Output reference
One dataset item per organization. Types: string, integer, number, boolean, object[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
ein | string | Employer Identification Number (formatted 12-3456789). |
name | string | Organization name. |
subName | string | Secondary / DBA name, or null. |
careOfName | string | "Care of" contact name, or null. |
address | string | Street address. |
city | string | City. |
state | string | Two-letter state code. |
zipcode | string | ZIP code. |
nteeCode | string | NTEE classification code, or null. |
nteeCategory | string | NTEE category label, or null. |
classification | string | IRS subsection, for example 501(c)(3), 501(c)(10). |
rulingDate | string | IRS ruling date (YYYY-MM-DD). |
isActive | boolean | true when the organization is currently active. |
deductible | boolean | true when contributions are tax-deductible. |
foundationCode | integer | IRS foundation code. |
taxPeriod | string | Most recent tax period (YYYY-MM-DD). |
revenueAmount | number | Business Master File revenue amount. |
incomeAmount | number | Business Master File income amount. |
assetAmount | number | Business Master File asset amount. |
totalRevenue | number | Total revenue from the latest Form 990. |
totalExpenses | number | Total expenses from the latest Form 990. |
totalAssets | number | Total assets from the latest Form 990. |
totalLiabilities | number | Total liabilities from the latest Form 990. |
netAssets | number | Net assets from the latest Form 990. |
totalContributions | number | Contributions and grants received. |
programServiceRevenue | number | Program service revenue. |
investmentIncome | number | Investment income. |
officerCompensation | number | Officer / director / key employee compensation. |
otherSalariesWages | number | Other salaries and wages. |
fiscalYear | integer | Fiscal year of the latest Form 990. |
pdfUrl | string | Direct URL to the latest Form 990 PDF, or null. |
guidestarUrl | string | GuideStar profile URL. |
proPublicaUrl | string | ProPublica Nonprofit Explorer profile URL. |
filings | object[] | Multi-year filing history. Each entry carries fiscalYear, taxPeriod, formType, the financial figures above, pdfUrl and updated. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed EIN lookup, a record with the EIN and a populated error field is written instead. |
Example output record
Real record from a live run (input {"query":"red cross","withDetails":true}). The filings array is trimmed to its most recent entry; every value shown is unchanged from the live record:
{"ein": "36-2334002","name": "United Grand Imperial Coun Knights Of Red Cross Of Constantine","subName": null,"address": "6411 SEABRYN DR","city": "Rch Palos Vrd","state": "CA","zipcode": "90275-4755","classification": "501(c)(10)","rulingDate": "1960-06-01","isActive": true,"deductible": true,"foundationCode": 0,"taxPeriod": "2025-03-01","revenueAmount": 294689,"incomeAmount": 315043,"assetAmount": 3117415,"totalRevenue": 275702,"totalExpenses": 109854,"totalAssets": 2873537,"totalLiabilities": 0,"netAssets": 2873537,"programServiceRevenue": 190908,"investmentIncome": 84794,"fiscalYear": 2024,"pdfUrl": "https://projects.propublica.org/nonprofits/download-filing?path=IRS%2F362334002_202403_990O_2025031723214236.pdf","guidestarUrl": "https://www.guidestar.org/profile/362334002","proPublicaUrl": "https://projects.propublica.org/nonprofits/organizations/362334002","filings": [{ "fiscalYear": 2024, "taxPeriod": 202403, "formType": "990", "totalRevenue": 275702, "totalExpenses": 109854, "totalAssets": 2873537, "netAssets": 2873537, "programServiceRevenue": 190908, "investmentIncome": 84794 }],"observedAt": "2026-08-10T14:12:00.000Z","error": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~propublica-nonprofits-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"query":"food bank","state":"CA","cCode":"3","maxNonprofits":25,"withDetails":true}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~propublica-nonprofits-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"eins":["13-1837418","36-2334002"],"withDetails":true}'
Apify CLI:
apify call scrapers_lat/propublica-nonprofits-scraper \--input '{"state":"NY","ntee":"4","maxNonprofits":100}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per organization returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a run finds nothing or errors, the actor writes a single item with an
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 organizations per run. Upgrade for higher
maxNonprofits. - Search pagination. Search returns 25 organizations per page. Narrow with a state, category or 501(c) type to focus a large result set.
FAQ and troubleshooting
What organizations does this cover? The full IRS Exempt Organizations Business Master File as indexed by ProPublica Nonprofit Explorer, which is more than 1.8 million US tax-exempt organizations across every state, NTEE category and 501(c) type.
How do I filter the nonprofits I want?
Combine a free-text query with state, ntee and cCode filters. To pull specific organizations instead, paste their EINs into eins and the search filters are ignored.
Why are some financial fields empty?
Smaller nonprofits often file the short Form 990-N postcard, which carries no financial figures, so revenue, expenses and assets are null for them. Larger organizations have full Form 990 data and a populated filings array. Missing values are returned as null and never invented.
What happens when an EIN is not found?
The actor returns a record with the EIN and a populated error field, so the run still completes and you can see exactly which lookups missed.
Do I get past years, not just the latest?
Yes. With withDetails on, the filings array carries the multi-year filing history with the financial figures for each fiscal year.
Is this an official ProPublica or IRS tool? No. This actor is independent and has no affiliation with ProPublica or the IRS. It accesses only public IRS Form 990 data made available through the ProPublica Nonprofit Explorer.
Related scrapers
- USAspending Federal Award Scraper: US federal prime awards.
- Grants.gov Opportunity Scraper: US federal grant opportunities.
- Form 5500 Benefit Plans Scraper: US employee benefit plan filings.
- SEC EDGAR Company Filings Scraper: SEC filings by ticker or CIK.
- FEC Campaign Finance Scraper: US campaign finance transactions.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with ProPublica or the IRS. Accesses only public IRS Form 990 data made available through the ProPublica Nonprofit Explorer. Use it in accordance with ProPublica's terms of service.
