Nonprofit Lookup — US Charity Search & 990 Financials
Pricing
$4.00 / 1,000 results
Nonprofit Lookup — US Charity Search & 990 Financials
Searches US nonprofits and retrieves their latest available Form 990 financials.
Pricing
$4.00 / 1,000 results
Rating
0.0
(0)
Developer
Nick
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Nonprofit Lookup — US Charity Search, EIN & Form 990 Data
Search US nonprofits by name and state, or look one up by EIN, and get the latest Form 990 financials attached — revenue, expenses, assets, officer compensation and a link to the filing PDF. IRS data through the ProPublica Nonprofit Explorer API. No key, no login.
What does this Actor do?
There are two separate questions people ask about a charity: does this organization exist and who is it, and what do its finances look like. ProPublica's Nonprofit Explorer answers them at two different endpoints — a search index that returns identity only, and a per-organization endpoint that returns the filing history.
This Actor joins them. You search by name; it takes each match, calls the organization endpoint, walks the filings that actually contain data, picks the one with the newest tax period year, and attaches those financials to the identity record. One row per organization, with the money already on it.
The joining is optional and costed accordingly: set includeFinancials: false and you get identity
records with the financial fields null and no per-organization calls at all, which is much faster
when you only need to resolve names to EINs.
If one organization's detail call fails, that organization is still emitted with whatever identity data the search returned, and the failure is recorded as a diagnostic. One bad EIN never sinks a batch.
Who is it for?
- Donors and family offices doing due diligence before giving.
- Grant writers and development teams sizing a peer organization or a potential funder.
- Journalists and researchers pulling structured 990 figures instead of reading PDFs.
- B2B vetting and compliance teams confirming a counterparty's nonprofit status and scale.
- AI agent builders who want a charity-lookup tool with a stable output schema.
Use cases
- Check a charity's revenue, expenses and officer compensation before making a donation.
- Resolve a list of organization names to EINs for a CRM or grants database.
- Compare peer nonprofits in one state by total revenue and assets.
- Pull the Form 990 PDF link for an organization you need to read in full.
- Pair it with a grants feed: find who funds an area, then look up the funders' financials.
- Give an agent a tool that answers "how big is this charity, and what did it report?"
What you get
One row per organization. Any value the source does not publish is null — the field is always
present, and the untouched source record stays in raw.
| Field | Type | Description |
|---|---|---|
ein | string | Employer Identification Number, formatted XX-XXXXXXX |
name | string | Organization name as filed with the IRS |
city | string | City |
state | string | Two-letter state code |
nteeCode | string | NTEE code classifying the organization's activity |
subsectionCode | string | IRS subsection code, e.g. 3 for a 501(c)(3) |
latestFilingYear | integer | Tax period year of the newest filing that contained data |
totalRevenue | integer | Total revenue reported on that filing, in USD |
totalExpenses | integer | Total functional expenses reported on that filing, in USD |
totalAssets | integer | Total assets at end of year on that filing, in USD |
officerCompensation | integer | Compensation of current officers reported on that filing, in USD |
form990PdfUrl | string | Link to the PDF of that Form 990 filing |
propublicaUrl | string | Link to the organization's page on ProPublica Nonprofit Explorer |
raw | object | The complete original organization record, unmodified |
retrievedAt | string | ISO 8601 timestamp of when this row was fetched |
All six financial fields are null together when includeFinancials is false, or when an
organization has no filing that contains data.
Sample output record
{"ein": "53-0196605","name": "AMERICAN NATIONAL RED CROSS","city": "WASHINGTON","state": "DC","nteeCode": "P20","subsectionCode": "3","latestFilingYear": 2024,"totalRevenue": 3821000000,"totalExpenses": 3654000000,"totalAssets": 4102000000,"officerCompensation": 6284119,"form990PdfUrl": "https://projects.propublica.org/nonprofits/download-filing?path=…","propublicaUrl": "https://projects.propublica.org/nonprofits/organizations/530196605","raw": { "ein": 530196605, "…": "…" },"retrievedAt": "2026-08-23T10:44:52.019Z"}
How to use it
Search by name and state
{"mode": "search","query": "red cross","state": "DC","maxResults": 5}
Look one up by EIN
The EIN is accepted with or without the dash.
{"mode": "detail","ein": "53-0196605"}
Resolve a batch of names, identity only
Turning financials off skips the per-organization call, which is much faster for a long list.
{"mode": "search","queries": ["red cross", "habitat for humanity", "feeding america"],"includeFinancials": false,"maxResults": 50}
Input parameters
| Input | Type | Description |
|---|---|---|
mode | string | search finds nonprofits by name; detail retrieves one by EIN. Default: search |
ein | string | Required for detail mode. Nine digits, with or without the dash |
query | string | One organization name to search when queries is empty |
queries | array | Optional batch of names. When provided, this list is used instead of query |
state | string | Optional two-letter US state filter. Search mode only |
includeFinancials | boolean | Fetch the detail endpoint for each search result to attach financials. Default: true |
maxResults | integer | Maximum records returned across the search (1–100). Default: 10 |
Honest limitations
- This is a lookup, not a monitor. There is no watermark and no change feed — each run answers the query you gave it.
- Search reads the first page of results per query. ProPublica paginates its search; this Actor
requests one page per query, so a single broad name search returns roughly the first 25 matches, not
every match. To go wider, pass several more specific names in
queries— results are merged and de-duplicated by EIN. includeFinancials: truecosts one extra request per result, rate-limited to be a good citizen of a free public API. A 50-result run therefore takes a while. Turn it off when you only need identity.- "Latest" filing means latest available. Nonprofits file 990s months after their tax year ends
and the IRS releases them later still, so
latestFilingYearis routinely one to two years behind the present. Always read the figures against that year, not as current. - Filings without financial data are skipped when choosing the latest filing, so
latestFilingYearcan be older than the organization's most recent filing of any kind. - A detail miss is not a run failure. In search mode the un-enriched record is still emitted and a
diagnostic is recorded. In detail mode, an EIN with no organization succeeds with zero dataset rows
and a
NOT_FOUNDentry inRUN_SUMMARY. - Street address and ZIP are not normalized fields. Where the detail endpoint publishes them they
are present inside
raw. - US 501(c) organizations only, as covered by IRS filings. Foreign charities and organizations that do not file a 990 are not in this data.
- Financial figures are as the organization reported them. They are not audited by this Actor, by ProPublica or by the IRS at the point of publication.
Reliability
Per-query and per-EIN diagnostics are written to the RUN_SUMMARY key-value record — never into your
dataset. Failures carry structured reason codes. The Actor identifies itself and rate-limits its
requests.
Every record carries retrievedAt, a propublicaUrl back to the source page and, where a filing was
found, a form990PdfUrl to the filing itself — so you can check any row against the original 990.
Maintained against the upstream API. If ProPublica changes its schema or an endpoint moves, report it through the Issues tab and it gets fixed.
Integrations
Connect this Actor to Make, Zapier, n8n, Slack, Google Sheets, Airtable or any HTTP endpoint through Apify integrations. A run can push resolved organizations straight into a CRM or grants database, or fire a webhook when a batch completes. Datasets export as JSON, CSV, Excel, XML, RSS or HTML.
API usage
curl -X POST "https://api.apify.com/v2/acts/oneshotventure~nonprofit-lookup/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"mode": "search", "query": "red cross", "state": "DC", "maxResults": 5}'
Python, JavaScript, PHP and CLI clients are documented under Apify API clients.
Use with AI agents (MCP)
This Actor is callable from any MCP-compatible client — Claude, Cursor, VS Code or your own agent —
through the Apify MCP server. The input schema is
fully described and every record uses one stable, flat JSON shape, so an agent can call it and read
the result without a parsing step. Because it reads IRS filing data through ProPublica's official API
rather than a rendered page, the answer an agent gets is the same one the source publishes — and
form990PdfUrl gives the agent the filing itself to fetch when the summary figures are not enough.
Factual filing data. Not financial, tax or charitable-giving advice.
Frequently asked questions
Is there a free Form 990 API?
Yes — ProPublica publishes the Nonprofit Explorer API over IRS Form 990 data, free and without a key. This Actor is the search-and-enrich layer that joins the identity search to the filing financials.
How do I look up a nonprofit by EIN?
Run in detail mode with the nine-digit number in ein, with or without the dash. An EIN with no
matching organization returns zero rows and a NOT_FOUND diagnostic rather than failing the run.
How do I check a charity before donating?
Search by name, keep includeFinancials on, and read totalRevenue, totalExpenses, totalAssets
and officerCompensation against latestFilingYear. Open form990PdfUrl for the full filing. This
Actor reports what was filed; it does not rate or score charities.
How current are the financials?
They come from the newest filing that contains data, which is typically one to two tax years behind
the present because of IRS filing and release timelines. latestFilingYear tells you exactly which
year you are looking at.
What is an NTEE code?
The National Taxonomy of Exempt Entities code, which classifies what a nonprofit does — P20 for
human services, B codes for education, and so on. It is returned on every record as nteeCode.
Why are the financial fields empty?
Either includeFinancials was set to false, or the organization has no filing on record that
contains financial data. Both are normal.
Can I export the whole nonprofit database?
No, and please do not try. This Actor is a per-query lookup tool by design — see the data-source note below. Bulk IRS data is published separately by the IRS itself if that is what you need.
Does it cover charities outside the United States?
No. The data is IRS Form 990 filings, so coverage is US tax-exempt organizations only.
Data source and attribution
Data from the ProPublica Nonprofit Explorer API. This actor is not affiliated with ProPublica or the IRS. ProPublica data may not be resold as-is in bulk; this actor is a per-query lookup tool.
Every record links back to its ProPublica organization page in propublicaUrl. If you publish or
redistribute anything derived from these records, credit ProPublica's Nonprofit Explorer as the
source, and review
ProPublica's API terms before building a
commercial workflow on top of it.
Related actors
- Grants.gov Monitor — new US federal grant opportunities by keyword and agency.
- Business Entity Search API — official company records from SEC EDGAR, UK Companies House and the Australian Business Register.
- SAM.gov Contract Opportunities & Awards Feed — US federal contract opportunities and awards.