Nonprofit 990 Scraper: US Charity Financials avatar

Nonprofit 990 Scraper: US Charity Financials

Pricing

from $16.00 / 1,000 organization records

Go to Apify Store
Nonprofit 990 Scraper: US Charity Financials

Nonprofit 990 Scraper: US Charity Financials

Scrape IRS Form 990 data for US nonprofits by name, state, NTEE sector, 501(c) type or EIN: revenue, expenses, assets, liabilities, filing PDFs and up to 50 years of filing history per organization. Export CSV, Excel, JSON, XML. No login or API key needed.

Pricing

from $16.00 / 1,000 organization records

Rating

0.0

(0)

Developer

RecordsData

RecordsData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share

RecordsData

πŸ› Nonprofit 990 Scraper: US Charity Financials

The Nonprofit 990 Scraper pulls IRS Form 990 data for US nonprofits from ProPublica's Nonprofit Explorer. Search by name, state, sector, 501(c) type or EIN. Each row carries up to 68 data columns: revenue, expenses, assets, net assets, contributions, program revenue, total officer pay, grants paid and filing PDFs, normalized across Form 990, 990-EZ and 990-PF. Export CSV, Excel, JSON or XML. No login, no API key. Priced per result: $0.02 per organization, $0.012 per filing. "Only new" mode returns just unseen filings.

The Nonprofit 990 Scraper turns the public IRS 990 record into a spreadsheet. In a run on 2026-10-04, a "food bank" search limited to Texas returned 10 organizations and 18 filing rows, from Food Share Food Bank ($30,727 revenue in 2023) to Houston Food Bank ($298,504,285 revenue in 2023).

πŸ“‹ What does the Nonprofit 990 Scraper do?

It searches nonprofits by keyword, US state, NTEE sector and 501(c) subsection. Operators: "animal rescue" -cat (exact phrase, excluded word), +habitat +humanity (required words) and univers* (prefix); ProPublica returns at most 10,000 results per query. EINs can be looked up directly. It returns one organization row per nonprofit with its latest filed totals, and optionally one row per filed 990, 990-EZ or 990-PF, newest first, with the PDF link. Filings can be limited by tax year and form. "Only new filings" mode skips earlier deliveries for free.

πŸ“Š What data can you extract from IRS 990 filings?

A run can return 71 keys: 68 data columns plus error, errorType and hint. A column a form does not have is left out, never filled with null.

FieldRow typeDescription
recordType, ein, url, searchTerm, scrapedAtbothRow type, 9-digit EIN, ProPublica link, term, timestamp
name / organizationNameorg / filingLegal name
city, state, address, zipcode, nteeCode, nteeSectororganizationLocation, NTEE code (for example K31), sector
subsection, deductibility, foundationType, organizationType, rulingDate, fiscalYearEndMonthorganizationIRS status and dates
latestFilingYear, latestFormType, latestTotalRevenue, latestTotalExpenses, latestTotalAssets, latestTotalLiabilities, latestNetAssets, latestTotalContributions, latestOfficerCompensationorganizationLatest filed totals in USD
masterFileAssets, masterFileIncome, masterFileRevenue, filingsAvailable, sourceUpdatedAtorganizationIRS master file figures (see Limits), filings held, update time
taxYear, taxPeriodEnd, formType, hasFinancialDatafilingYear, period end, form, data loaded
totalRevenue, totalExpenses, totalAssets, totalLiabilities, netAssets, excessOrDeficitfilingThat year's totals in USD
totalContributions, programServiceRevenue, investmentIncome, interestIncome, dividendIncome, membershipDuesfilingRevenue lines, where the form has them
officerCompensation, otherSalariesAndWages, payrollTaxes, professionalFundraisingFees, netFundraisingIncome, netGamingIncome, netRentalIncome, royaltiesfilingPay, fundraising, gaming, rental and royalty lines
grantsPaid, charitableDisbursements, netInvestmentIncome, fairMarketValueOfAssets, pdfUrlfilingFoundation lines (mostly 990-PF) and the filing PDF link

When ProPublica publishes no figure (a filing the IRS has not digitized), the amount reads Not Disclosed instead of a made-up zero.

Limits. The masterFile* amounts come from the IRS master file, which ProPublica caps near 2 billion and which shows revenue 0 for some organizations; do not use them for large foundations. Officer pay is one total per filing, with no names; per-person pay, Schedule J and pension lines are not available.

🧾 Sample output from a real run

Organization row (Houston Food Bank, 2026-10-04 run, trimmed):

{
"recordType": "organization",
"ein": "742181456",
"name": "Houston Food Bank",
"state": "TX",
"subsection": "501(c)(3)",
"latestFilingYear": 2023,
"latestTotalRevenue": 298504285,
"latestTotalAssets": 154916055,
"filingsAvailable": 24,
"searchTerm": "food bank"
}

Filing rows (for example Food Share Food Bank, tax year 2023, form 990-EZ, revenue $30,727, expenses $41,498) add taxYear, formType, the money columns and pdfUrl.

πŸ’° How much does it cost to scrape nonprofit 990 data?

Pay per event, only for rows saved to your dataset.

EventWhat it coversPrice (Free plan)
Organization recordOne nonprofit with latest financials$0.02
IRS 990 filingOne filed 990, 990-EZ or 990-PF row$0.012

Organization records cost $0.0192 on Bronze, $0.0176 on Silver and $0.016 on Gold and above (1,000 organizations on Gold: $16.00). Filing records are $0.012 on every plan. Extra columns, filters and monitor mode are free.

Worked example on the Free plan: 1,000 organizations with filings off cost 1,000 x $0.02 = $20.00. With maxFilingsPerOrg 3, add 3,000 filing rows x $0.012 = $36.00, total $56.00. One organization with its default 10 filings costs $0.02 + 10 x $0.012 = $0.14.

Not-found EINs, invalid input, empty searches, error rows, skipped rows and failed runs are never charged.

πŸš€ How to scrape IRS 990 data in 3 steps

  1. Enter a search term, pick a state, sector or 501(c) filter, or paste EINs.
  2. Set Max Items and optionally a start and end year.
  3. Press Start and download the dataset.

βš™οΈ Input

FieldTypeDefaultDescription
searchTermslist["food bank"]Names or keywords, one search per term; operators work
einslist[]Exact EINs (dashes and short forms accepted)
maxItemsinteger10Maximum organizations (free users: 10)
stateselectallState or territory code
nteeCategory, irsSubsectionselectallOne of 10 NTEE sectors; 501(c) subsection
includeFilingsbooleantrueAdd filing rows
maxFilingsPerOrginteger101 to 50 per organization
startYear, endYearintegernoneTax year range (1990 to next year)
formTypeslistall990, 990-EZ, 990-PF
onlyNewbooleanfalseSkip rows delivered in earlier runs
stateKey, resetSeentext, booleanempty, falseMonitor name for its own memory, and a memory reset
{
"searchTerms": ["food bank"],
"state": "TX",
"maxItems": 10,
"maxFilingsPerOrg": 3,
"startYear": 2018
}

This returns up to 10 Texas organizations with at most 3 filings each from 2018 on. An empty input, an end year before the start year, or an out-of-range year fails fast with one free error row.

πŸ“¦ Output

Organization rows are followed by their filing rows, with three views: Overview, Organizations and Filings. An empty search finishes with a status message and no charge.

πŸ“ˆ How this actor compares to other nonprofit actors

Read on 2026-10-10 from public Store pages:

This actorsolidcode/propublica-scraperDevilScrapes/irs-990-officer-comp
Price$20 per 1,000 orgs, $12 per 1,000 filingsfrom $2 per 1,000 orgs, filings nested$3 per 1,000 filing rows, plus $0.05 per run
FilingsSeparate rows with PDF linkNested list inside each orgOne row per filing year
Year and form filtersStart and end year, form typeNot stated in their listingStart and end year
Search operatorsPhrase, exclude, require, prefixPhrase, exclude, requireName search only
Only-new monitoringYesNot stated in their listingNot stated in their listing
Officer payFiling total, no namesFiling totalFiling total, split by salary type

We are far more expensive per record: roughly 8 to 10 times the per-item price of the cheapest rivals at the Free plan. For one row per organization or cheap bulk lookups, a rival fits better. Ours is separate filing rows, year and form filters, normalized columns across the three forms, and monitoring. None of us has per-person officer pay or Schedule J.

πŸ’Ό Use cases

Fundraising research, grant due diligence, B2B lead lists of 501(c)(3) charities and watchdog journalism.

πŸ”Œ Run via API, schedule and integrations

Call it with the Apify API (curl), the JavaScript or Python client, schedules, Make, Zapier, n8n or Google Sheets. For a monitor, schedule the same input with onlyNew true and a fixed stateKey.

πŸ€– Nonprofit 990 Scraper MCP server for AI agents

AI agents can call the Nonprofit 990 Scraper through the Apify MCP server at https://mcp.apify.com?tools=RecordsData/nonprofit-financials-scraper.

Example agent prompt:

Use the Nonprofit 990 Scraper to find food banks in Texas, return the 10 largest by latest total revenue with their Form 990 filings from 2019 on, and tell me which one grew revenue the most.

Choose this tool when an agent needs filed IRS Form 990 numbers (revenue, expenses, assets, contributions, officer pay, PDF links) for US charities. It takes the same fields as the Input table.

Form 990 filings are public records, and ProPublica publishes them through an open API. This actor reads that public data only. It is independent of ProPublica and the IRS. Follow local rules when using contact details.

❓ Frequently asked questions

How do I get a nonprofit's 990 financials in bulk?

Enter search terms or exact EINs in the Nonprofit 990 Scraper, set Max Items and run. Each US nonprofit comes back as one organization row with its latest filed revenue, expenses, assets and liabilities from ProPublica Nonprofit Explorer, plus optional filing rows per tax year.

Does the Nonprofit 990 Scraper include the actual 990 PDFs?

It returns the PDF link (pdfUrl) for each filing row where ProPublica hosts one, so every IRS 990, 990-EZ or 990-PF record points to its source document. The actor does not download the PDF files themselves; fetching them is up to your own pipeline or workflow.

Can I filter nonprofits by state and type of charity?

Yes. There are dropdowns for US state or territory, for the 10 NTEE sectors, and for the IRS 501(c) subsection such as 501(c)(3) charities. Combine them with a search term or leave the term empty. Subsection code 92 now reads 4947(a)(1).

How many years of 990 history can I get per nonprofit?

Up to 50 filings per organization through maxFilingsPerOrg (default 10), newest tax year first, and as many as ProPublica holds. Houston Food Bank, for example, has 24 filings available. Each filing row carries that year's revenue, expenses, assets and liabilities.

Can I filter filings by tax year or form type?

Yes. Set startYear and endYear (1990 to next year) to keep filings in that range, and formTypes to keep only 990, 990-EZ or 990-PF. These apply before maxFilingsPerOrg, so you pay only for matching filings. An end year before the start year returns one free invalid-input row.

Why do some filings show "Not Disclosed" amounts?

The IRS has not digitized every filing, so ProPublica holds no figures for some years. Those rows keep the tax year, form type and PDF link, while amounts read Not Disclosed instead of a made-up zero. They are still billed as a filing row at $0.012.

Why does the newest tax year have no money figures?

ProPublica often lists the newest year (2024 at the time of writing) before the IRS data is loaded. The row still comes back with the tax year, form and PDF link, hasFinancialData false and Not Disclosed amounts, and is billed as a filing row. Set endYear one year earlier to skip it.

Can I use search operators like exact phrases or exclusions?

Yes. The term goes to ProPublica, so "animal rescue" -cat matches the exact phrase and drops cat, +habitat +humanity requires both words and univers* matches a prefix. ProPublica returns at most 10,000 results per query, so combine terms with state or sector filters for larger sets.

Can I monitor for new nonprofit filings?

Yes. Turn on onlyNew and keep the same stateKey on a schedule. The actor stores what it delivered and skips seen filings before charging, so a run with nothing new costs nothing. With onlyNew, maxItems counts organizations examined, not rows returned.

Why do EINs have a leading zero now?

EINs are always returned as 9 digits, so Harvard is 042103580. Earlier versions could return 42103580 from searches. If you join on the old short text, pad your side with zeros. You can still enter EINs with dashes or without the zero.

Does the Nonprofit 990 Scraper give officer names and pay?

Only part of it. Filing rows carry one total officer compensation figure (officerCompensation) plus other salaries and payroll taxes where the form has them, with no names. Per-person officer and key-employee pay, Schedule J and pension lines are not available. Use the filing PDF for those.

What are the masterFile columns and can I trust them?

They are amounts from the IRS exempt-organizations master file, shown on the organization row as masterFileAssets, masterFileIncome and masterFileRevenue. ProPublica caps them near 2 billion and shows revenue 0 for some organizations, so do not use them for large foundations. Use the filing rows for yearly totals.

Why did I get 0 results from the Nonprofit 990 Scraper?

Your search term or filters matched no nonprofit in ProPublica Nonprofit Explorer. The run finishes successfully, says so in its status message, and charges nothing. Try a shorter keyword, remove a filter, or look up the EIN directly. An unknown EIN returns one free not-found row.

Do I pay for failed or empty rows in the Nonprofit 990 Scraper?

No. Error rows, not-found EINs, failed detail requests and empty searches are not billed, and a run that fails charges nothing. You pay only for organization records ($0.02 each on the Free plan) and filing records ($0.012 each) that were actually saved to your dataset.

What happens if I send an empty or invalid input to the Nonprofit 990 Scraper?

A value outside a dropdown list, such as an unknown state code, is rejected with a 400 error and no run is created. With no search term, EIN or filter, or an invalid year or EIN, the run ends as SUCCEEDED with one free error row (errorType invalid-input) and no charge.

Does the Nonprofit 990 Scraper need an API key?

No. It reads the public ProPublica Nonprofit Explorer data, so you need no ProPublica key, IRS account or login. You only need an Apify account to run the actor. It is an independent tool, not affiliated with ProPublica or the IRS.

How fresh is the nonprofit 990 data?

The actor follows IRS releases as ingested by ProPublica Nonprofit Explorer, and it reads them live at run time. The latestFilingYear field on each organization row shows exactly which tax year of 990 data you received, and sourceUpdatedAt shows when ProPublica last updated the record.

πŸ†˜ Support

Data issue? Open the Issues tab or write to contact.punkrecordsdata@gmail.com.

Last updated: 2026-10-11