ProPublica Nonprofit Explorer Scraper — 990 Data by EIN avatar

ProPublica Nonprofit Explorer Scraper — 990 Data by EIN

Pricing

from $4.00 / 1,000 nonprofit records

Go to Apify Store
ProPublica Nonprofit Explorer Scraper — 990 Data by EIN

ProPublica Nonprofit Explorer Scraper — 990 Data by EIN

Look up US nonprofits by EIN or name in ProPublica Nonprofit Explorer and export Form 990 revenue, expenses, assets and filing PDFs. USD 5 per 1,000.

Pricing

from $4.00 / 1,000 nonprofit records

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 hours ago

Last modified

Share

ProPublica Nonprofit Explorer Scraper looks up US nonprofits by EIN or name and returns one record per organization with IRS Form 990 financials (revenue, expenses, assets, liabilities), a filing history with PDF links, NTEE and 501(c) codes, and the Nonprofit Explorer profile link. It is built for grant researchers, due-diligence teams, fundraisers and journalists who need nonprofit financial data in bulk, and it costs USD 5.00 per 1,000 nonprofit records on the FREE tier (USD 4.00 per 1,000 on GOLD).

The data comes from ProPublica's public Nonprofit Explorer API, an index of IRS exempt-organization records and Form 990 filings. No login is needed.

What data does the ProPublica Nonprofit Explorer scraper return?

Each dataset row is one nonprofit, identified by EIN. Missing values are null, never invented.

FieldWhat it contains
ein, formattedEinEmployer Identification Number, for example 14-2007220
name, alternateNameLegal name and secondary name
address, city, state, zipCodeLocation (street and ZIP are filled in EIN lookups, see limits)
subsectionCode, nteeCodeIRS subsection (3 = 501(c)(3)) and NTEE category code
organizationStatus, classification, rulingDate, deductibility, accountingPeriodIRS registry codes and ruling date (EIN lookups)
latestFilingYear, latestFilingTypeNewest filing year and form (990, 990-EZ, 990-PF)
latestRevenue, latestExpenses, latestAssets, latestLiabilitiesFigures from the newest filing that has extracted financial data
filingsUp to 25 filings: tax period, year, form, revenue, expenses, assets, liabilities, officer-compensation share, PDF link
filingCountNumber of filings the source lists
proPublicaUrlNonprofit Explorer profile page
guidestarUrl, nccsUrlguidestarUrl is the organization's public GuideStar profile link, built from the EIN (for example https://www.guidestar.org/profile/14-2007220); nccsUrl is null because NCCS has no public per-organization page to link
sourceSearchQuery, sourceSearchUrl, scrapedAt, warningsProvenance and per-record notes

An OUTPUT record in the key-value store lists records collected, charged events, requests and errors.

How do I look up a nonprofit's Form 990 by EIN?

Put the EINs in Exact EINs (7 to 9 digits, with or without the hyphen), leave Nonprofit search phrases empty (in Console, remove the pre-filled nonprofit), and set Maximum nonprofit records to the number of EINs:

{
"eins": ["14-2007220", "13-1837418"],
"searchQueries": [],
"maxResults": 2,
"includeFilings": true,
"maxFilingsPerOrganization": 5
}

When EINs are given and searchQueries is left out or empty, no search runs, so only the organizations you asked for are returned and charged. A phrase you add yourself runs after the EIN lookups. EIN lookups return the full registry fields (street address, ZIP, ruling date, deductibility) plus the filing history.

How do I search nonprofits by name, state or category?

Enter phrases in Nonprofit search phrases and narrow with a two-letter state, an NTEE major group (1 arts, 2 education, 3 environment, 4 health, 5 human services, 6 international, 7 public benefit, 8 religion, 9 membership, 10 unknown) or an IRS subsection code:

{
"searchQueries": ["food bank"],
"state": "NY",
"nteeCode": 5,
"subsectionCode": 3,
"maxResults": 50,
"maxPages": 2,
"responseFormat": "detailed"
}

The source returns 25 organizations per search page, so maxPages: 2 reads up to 50 matches per phrase. Duplicate EINs across phrases are returned once. Set includeFilings: false for faster profile-only discovery, or responseFormat: "concise" to drop the filings array while keeping the latest figures.

When should I use this Actor, and when not?

Use it when you need nonprofit financials as data: screening grantees, building a prospect list of foundations or charities in a state, checking a list of EINs against their latest 990 revenue, or giving an AI agent a nonprofit lookup tool.

Use something else when:

  • You need federal grants and contracts awarded to an organization: USAspending Federal Awards Scraper.
  • You need SEC filings for a company rather than a nonprofit: SEC EDGAR Scraper.
  • You need GuideStar (Candid) profiles, ratings, donor or board data, or full 990 line items such as officer names. This Actor returns summary figures and filing PDF links only.

Use it from an AI assistant

ProPublica Nonprofit Explorer Scraper works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add it with https://mcp.apify.com/?tools=muhammadafzal/guidestar-propublica-nonprofit-scraper, then ask, for example: "Find 501(c)(3) food banks in New York and rank them by their latest reported revenue."

Run it with the API

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/guidestar-propublica-nonprofit-scraper').call({
eins: ['14-2007220'],
searchQueries: [],
maxResults: 1,
includeFilings: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]?.name, items[0]?.latestRevenue);

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("muhammadafzal/guidestar-propublica-nonprofit-scraper").call(
run_input={"searchQueries": ["food bank"], "state": "TX", "maxResults": 10}
)
for org in client.dataset(run.default_dataset_id).iterate_items():
print(org["formattedEin"], org["name"], org["city"], org["latestRevenue"])

What does the output look like?

An EIN lookup (built from the source's 2026-10-26 data for EIN 14-2007220) and a search result from a 2026-10-26 run, shortened:

[
{
"ein": "142007220",
"formattedEin": "14-2007220",
"name": "Pro Publica Inc",
"address": "155 AVENUE OF THE AMERICAS FL 13",
"city": "New York",
"state": "NY",
"zipCode": "10013-1549",
"subsectionCode": 3,
"nteeCode": "A20",
"rulingDate": "2008-02-01",
"latestFilingYear": 2024,
"latestFilingType": "Form 990",
"latestRevenue": 57970562,
"latestExpenses": 44080009,
"latestAssets": 85514123,
"latestLiabilities": 10080757,
"filings": [
{ "taxPeriod": 202312, "taxYear": 2023, "formType": "Form 990", "revenue": 57970562, "expenses": 44080009, "assetsEnd": 85514123, "liabilitiesEnd": 10080757, "pdfUrl": "https://projects.propublica.org/nonprofits/download-filing?path=IRS%2F142007220_202312_990_2025020323066717.pdf" }
],
"filingCount": 18,
"guidestarUrl": "https://www.guidestar.org/profile/14-2007220",
"proPublicaUrl": "https://projects.propublica.org/nonprofits/organizations/142007220",
"warnings": ["Financial metrics use the newest filing with extracted data (2023), while latestFilingYear is 2024."]
},
{
"ein": "352635030",
"formattedEin": "35-2635030",
"name": "Ceota Nonprofit",
"address": null,
"city": "Decatur",
"state": "AL",
"zipCode": null,
"subsectionCode": 3,
"nteeCode": "A54",
"latestFilingYear": 2024,
"latestRevenue": 1597665,
"latestAssets": 1591963,
"filingCount": 2,
"proPublicaUrl": "https://projects.propublica.org/nonprofits/organizations/352635030",
"sourceSearchQuery": "nonprofit",
"scrapedAt": "2026-10-26T07:55:01.456Z"
}
]

Pricing: how much does nonprofit 990 data cost?

ProPublica Nonprofit Explorer Scraper uses pay-per-event pricing. Platform usage is included in the event prices.

EventFREEBRONZESILVERGOLDPLATINUM / DIAMOND
Nonprofit record (one dataset row)USD 0.005001USD 0.004875USD 0.00475USD 0.004USD 0.004
Actor start (per started GB of allocated memory)USD 0.006251USD 0.006094USD 0.005938USD 0.005USD 0.005

Worked totals on the FREE tier with one start event (runs use at most 1 GB):

  • One EIN lookup: 1 × USD 0.005001 + USD 0.006251 = USD 0.0113
  • Default run, 25 records: 25 × USD 0.005001 + USD 0.006251 = USD 0.1313

A search with no matches charges only the start fee. Set a maximum cost per run in Apify Console to cap spending; the Actor stops when the charge limit is reached.

What are the limits?

  • 500 records per run, 20 search phrases, 40 search pages per phrase (25 organizations each).
  • Search results carry fewer registry fields. Records found through searchQueries leave address, zipCode, organizationStatus, classification, rulingDate, deductibility and accountingPeriod as null, even with filings enabled. Look those organizations up again by EIN for the full set.
  • NCCS links are empty. NCCS has no public per-organization page, so nccsUrl is null. guidestarUrl is built from the EIN and opens the organization's GuideStar profile.
  • Financial figures lag. The newest filing often has no extracted figures yet; a warning on the record says which year the financials come from.
  • Pacing. Requests are spaced by requestDelayMs (default 250 ms) and retried up to 3 times. A run of 25 records with filings took about 13 seconds.

FAQ

Does it return GuideStar or Candid data?

No. It reads ProPublica's Nonprofit Explorer only. It does not log in to Candid or use paid GuideStar endpoints; the only GuideStar item is guidestarUrl, a link to the organization's public GuideStar profile.

Where does the 990 data come from?

From IRS exempt-organization records and electronically filed Form 990s, as indexed by ProPublica's Nonprofit Explorer. Each record links to its Nonprofit Explorer page and, where available, the filing PDF.

Can I look up a nonprofit by EIN?

Yes. Use Exact EINs with no search phrases and maxResults equal to the number of EINs, as shown above.

Does it include executive compensation?

Only as compensationPercent on each filing, the officer-compensation percentage the source reports. Named officer salaries are in the linked 990 PDFs, not in the dataset.

How far back do filings go?

As far as the source has them, usually from the early 2010s. maxFilingsPerOrganization caps how many are returned (default 5, maximum 25); filingCount shows the total.

Can I verify 501(c)(3) status with it?

It returns the IRS subsection and deductibility codes the source publishes, which is useful for screening. For an official determination, check the IRS Tax Exempt Organization Search.

Public data from the same developer:

This Actor reads public nonprofit tax data and is not affiliated with ProPublica, Candid (GuideStar), the IRS or NCCS. It does not bypass access controls. Respect the source's terms and rate limits, follow privacy and anti-spam law if you use the data for outreach, and verify material grant, tax or compliance decisions against primary records.

Last verified: 2026-10-27