Nonprofit Search & IRS Form 990 Financials API (ProPublica)
Pricing
from $4.00 / 1,000 organization founds
Nonprofit Search & IRS Form 990 Financials API (ProPublica)
Returns US tax-exempt organizations (1.8M+) by name, state, cause or EIN, with IRS Form 990 financials per year (revenue, expenses, assets, officer pay, PDF links) from the ProPublica Nonprofit Explorer API. For fundraisers, grant makers and researchers.
Pricing
from $4.00 / 1,000 organization founds
Rating
0.0
(0)
Developer
lathewright LLC
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Search US tax-exempt organizations and pull their IRS Form 990 financials, for fundraisers, grant makers, journalists, researchers and AI agents. It costs $0.004 per organization and $0.01 more when financials are included, so 100 organizations with financials cost $1.40.
Search 1.8 million US tax-exempt organizations by name, state, cause (NTEE) and 501(c) subsection, or look up EINs directly, and get each organization's IRS Form 990 financials for the years you need: total revenue, expenses, assets, liabilities, contributions, program revenue, officer compensation, net assets and a link to the filed PDF. Data is the IRS Business Master File and e-filed 990s, served through ProPublica's free Nonprofit Explorer API.
Built and maintained by Lathewright. Lathewright is operated by AI systems under human ownership. A person reviews and approves everything we publish, send and sell. $0.004 per organization, $0.01 extra with financials.
Who uses it
- Fundraisers and grant writers: size up foundations and peer organizations (revenue, assets, grants paid) before applying or benchmarking.
- Sales to nonprofits: build lists of organizations by cause and state with budget data attached.
- Journalists and researchers: pull multi-year financial trends for a watchlist of EINs.
- AI agents: "How big is the Yolo Food Bank and what did it spend last year?" in one call.
Example tasks
Paste any of these into the Input tab, or send the same JSON through the API. Prices are the per-result prices listed under Pricing.
1. Food banks in Texas, no financials
{"mode": "search","query": "food bank","state": "TX","includeFinancials": false,"maxResults": 25}
What comes back: One row per organization with name, ein, city, state, nteeCode, latestRevenue and propublicaUrl. Up to 25 rows, at most $0.10.
2. Three years of financials for one EIN
{"mode": "lookup","eins": ["13-1644147"],"includeFinancials": true,"filingYears": 3}
What comes back: The organization row with a filings list of up to three years. $0.004 plus $0.01.
3. Texas animal rescues that are 501(c)(3) charities
{"mode": "search","query": "animal rescue","state": "TX","subsectionCode": 3,"includeFinancials": true,"filingYears": 2,"maxResults": 10}
What comes back: Up to 10 organizations, each with two years of filings.
Input
| Field | Type | Notes |
|---|---|---|
mode | search or lookup | |
query | string | Name or keyword (search mode) |
state | string | Two-letter state code |
nteeCategory | 1 to 10 | 1 Arts, 2 Education, 3 Environment/Animals, 4 Health, 5 Human Services, 6 International, 7 Public Benefit, 8 Religion, 9 Mutual Benefit, 10 Unknown |
subsectionCode | integer | 3 = 501(c)(3), 4 = 501(c)(4), 6 = 501(c)(6)… |
eins | array | EINs for lookup mode |
includeFinancials | boolean | Add Form 990 data (default true) |
filingYears | integer | Recent filings per organization (default 3) |
maxResults | integer | Cap on organizations |
{ "mode": "search", "query": "food bank", "state": "CA", "nteeCategory": 5, "subsectionCode": 3, "includeFinancials": true, "filingYears": 3, "maxResults": 100 }
Output
{"ein": "23-7111782","name": "Yolo Food Bank","city": "Woodland","state": "CA","zip": "95776-0000","nteeCode": "K31Z","subsectionCode": 3,"rulingDate": "1971-06-01","latestTaxPeriod": "2023-06","latestRevenue": 23338085,"latestExpenses": 23350748,"latestAssets": 19376488,"latestLiabilities": 8588506,"filings": [{"taxPeriod": "2023-06", "taxYear": 2023, "formType": "990","totalRevenue": 23338085, "totalExpenses": 23350748, "totalAssetsEnd": 19376488, "totalLiabilitiesEnd": 8588506,"contributionsAndGrants": 22785337, "programServiceRevenue": 277401, "investmentIncome": 177392,"officerCompensation": 103333, "otherSalaries": 2664449, "netAssetsEnd": 10787982,"pdfUrl": "https://projects.propublica.org/nonprofits/download-filing?path=IRS%2F237111782_202306_990_2024040522345095.pdf"}],"propublicaUrl": "https://projects.propublica.org/nonprofits/organizations/237111782"}
Pricing
| Event | Price | Notes |
|---|---|---|
Organization found (organization) | $0.004 | Primary event |
Form 990 financials added (organization-financials) | $0.01 | Only with includeFinancials and when filings exist |
Plus Apify's start fee ($0.00005). 100 organizations with financials = $1.40.
How to use it
- Console: fill in the form, Start, export CSV/JSON/Excel.
- API:
POST https://api.apify.com/v2/acts/lathewright~nonprofit-990-lookup/run-sync-get-dataset-items?token=<token> - n8n / Make / Zapier: Apify node → enrich a sheet of EINs or build prospect lists by cause and state.
Use from an AI agent (MCP)
Add this Actor as a tool in Claude, Cursor, VS Code or any MCP client with https://mcp.apify.com/?tools=lathewright/nonprofit-990-lookup. The Actor description is the tool description, and the input fields above are the tool parameters. Example prompts: "Find 501(c)(3) animal rescues in Texas with revenue over $1M", "Pull three years of financials for EIN 13-1644147".
Data source and fair use
IRS Exempt Organizations Business Master File and Form 990 e-file extracts, served by ProPublica's Nonprofit Explorer API (free, no key). The Actor sends at most two to three requests per second. Officer names and "care of" names are deliberately not included; only organization-level data is returned. Form 990s are public records by law.
FAQ
Why are financials missing for some organizations? Small organizations file the 990-N postcard (no financial data), churches do not file, and new filings take months to be processed.
What is the difference between latestRevenue and filings[0].totalRevenue? They are the same number; the latest* fields exist so flat CSV exports and agents can read them without digging into the array.