Nonprofit 990 Scraper — EIN, Financials & Execs (ProPublica) avatar

Nonprofit 990 Scraper — EIN, Financials & Execs (ProPublica)

Pricing

from $1.75 / 1,000 results

Go to Apify Store
Nonprofit 990 Scraper — EIN, Financials & Execs (ProPublica)

Nonprofit 990 Scraper — EIN, Financials & Execs (ProPublica)

Scrape US nonprofits from ProPublica Nonprofit Explorer: name, EIN, address, NTEE, 501(c) type, IRS ruling, plus 990 financials (revenue, expenses, assets, liabilities, executive compensation) by year with filing PDFs. Search by name, state or category. For KYC, grants and research.

Pricing

from $1.75 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

18 hours ago

Last modified

Features

Limited permissions

Share

🏛️ Nonprofit 990 Scraper — EIN, Financials & Execs (ProPublica)

Apify Actor Maintenance Data Quality Output Formats Pagination KYC Compliance

Extract structured US nonprofit intelligence and IRS Form 990 tax-exempt filings at scale from ProPublica Nonprofit Explorer. Query over 1.8 million tax-exempt organizations across the United States by name, EIN, state, 501(c) subsection classification, or NTEE major cause categories.

Retrieve verified Employer Identification Numbers (EINs), formal organization names, physical headquarters addresses, IRS ruling dates, exemption statuses, and multi-year Form 990 financial statements — including total annual revenue, operating expenses, end-of-year assets, total liabilities, executive compensation, and direct PDF download URLs for original IRS filings.

Export seamlessly to JSON, CSV, Excel, or API — or feed real-time grantee data directly into your foundation CRM, grantmaking platform, AML/KYC screening pipeline, or investigative analytics stack.


⚡ At a glance

FeatureSpecification
Data SourceProPublica Nonprofit Explorer & IRS Form 990 Public Database
Search ModesKeyword / Name, Direct EIN list, US State, 501(c) Subsection, NTEE Category
Financial DepthMulti-year Form 990, 990-EZ, 990-PF returns + IRS BMF headline metrics
Executive CompensationOfficer, director, and key employee compensation parsed in USD
Pagination ModelDeep pagination per query (25 orgs/page, set 0 for auto/unlimited)
Throughput Speed~80–120 enriched organizations per minute (~15–30s on prefill runs)
DeduplicationAutomatic deduplication by 9-digit IRS EIN (0% duplicates)
Export FormatsDataset (JSON, CSV, XML, Excel) & Key-Value Store OUTPUT mirror
Proxy RequirementApify Proxy Datacenter (enabled by default, fully supported)
Default Sample RunAutomatic national food bank sample (~50 items) when run with {}

🔎 Why scrape Nonprofit 990 data?

Form 990 is the primary public accountability mechanism for tax-exempt organizations in the United States. Filed annually with the Internal Revenue Service, it exposes critical governance and financial metrics that are essential for commercial and civic vetting:

  1. Grantee & Partner Verification (KYC/AML): Validate legitimate 501(c)(3) tax-exempt status, check IRS revocation flags, and confirm physical office addresses before disbursing foundation grants or corporate donations.
  2. Philanthropic Prospect Research: Identify well-funded charities, private foundations (990-PF), and endowments by sorting and filtering across net asset balances (latestAssets) and annual gross receipts (latestRevenue).
  3. Executive Compensation Benchmarking: Analyze officer, trustee, and CEO compensation (latestExecCompensation) across non-profit sectors to evaluate organizational overhead efficiency.
  4. Donor & Major-Gift Intelligence: Discover grantmaking institutions and assess their liquidity, asset holdings, and historical grant allocation patterns.
  5. Academic & Economic Sector Analysis: Track systemic changes in charitable revenues, balance sheets, and sector health across metropolitan regions and states.

✨ Key features

  • 🔍 Multi-Dimensional Search & Filtering: Combine free-text keyword search ("food bank"), state filters ("CA"), major NTEE category codes (e.g., 4 for Health, 5 for Human Services), and 501(c) subsection filters ("3" for charitable organizations, "4" for social welfare, "6" for business leagues).
  • 🆔 Direct Bulk EIN Lookups: Pass a pre-compiled list of specific 9-digit EINs (formatted or raw) in einList for immediate, targeted financial extraction.
  • 📈 Granular Form 990 Financial Breakdown: Extracts latest tax period year (latestFilingYear), return type (latestFormType: 990, 990-EZ, 990-PF), total revenue (latestRevenue), total functional expenses (latestExpenses), total assets (latestAssets), and total liabilities (latestLiabilities).
  • 👔 Executive Compensation Extraction: Automatically surfaces compensation amounts paid to officers, directors, and key executives (latestExecCompensation).
  • 📄 Direct Filing PDF Links: Provides permalinks to original digitized IRS Form 990 PDF scans (latestFilingPdfUrl) for audit verification.
  • ⚡ Continuous Deep Pagination (1,000+ Orgs): Seamlessly pages through 25-record batches without artificial cutoffs when maxPagesPerSearch is set to 0.
  • 🛡️ Zero Rate-Limiting Headaches: Parallelized asynchronous requests with intelligent retry mechanisms and datacenter proxy rotation for maximum throughput.

📥 Input parameters

The actor features intuitive parameters designed for rapid experimentation and high-volume data harvesting:

ParameterTypeDefaultDescription
searchTermsarray["food bank"]Nonprofit name keywords or search phrases (e.g. ["red cross", "humane society"]).
statesarray[]Two-letter US state abbreviations (e.g. ["CA", "NY", "TX"]).
nteeCategoriesarray[]Major NTEE category IDs (1: Arts, 2: Education, 3: Environment, 4: Health, 5: Human Services, 6: International, 7: Public/Societal, 8: Religion, 9: Mutual Benefit, 10: Unclassified).
cCodestring""501(c) subsection number (e.g., "3" for 501(c)(3) charities, "4" for 501(c)(4), "6" for trade associations).
einListarray[]List of explicit EINs for direct retrieval (e.g. ["530196605", "13-1628105"]).
includeFilingsbooleantrueWhen true, fetches full 990 balance sheets, executive compensation, and PDF URLs.
maxPagesPerSearchinteger0Maximum pages to paginate per search query (25 orgs/page). 0 = auto/unlimited governed by maxItems.
maxItemsinteger0Total maximum organizations to scrape across all queries (0 = no limit; prefilled to 100 for fast validation).
proxyConfigurationobject{ "useApifyProxy": true }Proxy settings. Apify Datacenter proxies are enabled by default.

📊 Data fields & output structure

Every output record delivers comprehensive legal identity, IRS classification, address records, and Form 990 financial statements.

🏢 Nonprofit Identity & Classification

FieldTypeCoverageDescription
einstring🟢 High (100%)9-digit IRS Employer Identification Number (unformatted)
einFormattedstring🟢 High (100%)Standard dash-formatted EIN (e.g. 12-3456789)
namestring🟢 High (100%)Registered legal name of tax-exempt organization
addressstring🟢 High (>95%)Physical or mailing street address
citystring🟢 High (>98%)Municipality or city
statestring🟢 High (100%)Two-letter US state abbreviation
zipcodestring🟢 High (>98%)5-digit postal ZIP code
nteeCodestring🟡 Conditional (~80%)National Taxonomy of Exempt Entities classification code
subsectionCodestring🟢 High (>95%)IRS 501(c) subsection integer code (e.g. 3)
subsectionLabelstring🟢 High (>95%)Human-readable tax-exempt status label (e.g. 501(c)(3) Charitable)
rulingDatestring🟢 High (>90%)Year and month of official IRS tax-exemption ruling
profileUrlstring🟢 High (100%)Direct web link to Nonprofit Explorer organization profile

💰 Form 990 Financials & Balance Sheets

FieldTypeCoverageDescription
latestFilingYearstring🟡 Conditional (~75%)Tax year corresponding to most recent filed Form 990
latestFormTypestring🟡 Conditional (~75%)Specific return filed (990, 990-EZ, 990-PF)
latestRevenuestring🟡 Conditional (~75%)Total gross revenue from latest return in USD
latestExpensesstring🟡 Conditional (~75%)Total functional expenses from latest return in USD
latestAssetsstring🟡 Conditional (~75%)Total end-of-year net assets from latest return in USD
latestLiabilitiesstring🟡 Conditional (~75%)Total liabilities reported at tax year end in USD
latestExecCompensationstring🟡 Conditional (~60%)Total compensation reported for officers and directors in USD
latestFilingPdfUrlstring🟡 Conditional (~75%)Direct URL to original digitized IRS Form 990 PDF document
filingsCountstring🟢 High (100%)Total number of historical annual returns digitized
filingYearsstring🟢 High (100%)Array of tax years available in digital history

🏛️ IRS Business Master File (BMF) Baseline Metrics

FieldTypeCoverageDescription
assetAmountstring🟢 High (>90%)Baseline asset amount recorded in IRS Business Master File
incomeAmountstring🟢 High (>90%)Baseline income amount recorded in IRS Business Master File
revenueAmountstring🟢 High (>90%)Baseline revenue amount recorded in IRS Business Master File
scrapedAtstring🟢 High (100%)ISO 8601 scrape timestamp

💡 Example output record

{
"ein": "530196605",
"einFormatted": "53-0196605",
"name": "AMERICAN NATIONAL RED CROSS",
"address": "430 17TH ST NW",
"city": "WASHINGTON",
"state": "DC",
"zipcode": "20006-2401",
"careOfName": "",
"nteeCode": "P20",
"subsectionCode": 3,
"subsectionLabel": "501(c)(3) Charitable",
"rulingDate": "1905-01",
"foundationCode": 15,
"exemptStatusCode": 1,
"assetAmount": 4215890000,
"incomeAmount": 3485000000,
"revenueAmount": 3485000000,
"latestFilingYear": 2023,
"latestFormType": "990",
"latestRevenue": 3485210450,
"latestExpenses": 3210450120,
"latestAssets": 4215890100,
"latestLiabilities": 1450200300,
"latestExecCompensation": 12850400,
"latestFilingPdfUrl": "https://projects.propublica.org/nonprofits/display_990/530196605/download990pdf_05_2024_prefixes_47-53%2F530196605_202306_990_2024051021481234.pdf",
"filingsCount": 21,
"filingYears": [2023, 2022, 2021, 2020, 2019, 2018],
"profileUrl": "https://projects.propublica.org/nonprofits/organizations/530196605",
"scrapedAt": "2026-11-10T16:45:00.000Z"
}

🎯 Practical input recipes

Recipe 1: Targeted Grantee Due Diligence by EIN

Perform comprehensive financial audits for specific partner organizations:

{
"einList": [
"53-0196605",
"13-1628105",
"06-1506561"
],
"includeFilings": true
}

Recipe 2: Human Services Charities in California

Extract 501(c)(3) human service nonprofits across California with full financial statements:

{
"states": ["CA"],
"cCode": "3",
"nteeCategories": ["5"],
"includeFilings": true,
"maxItems": 500
}

Recipe 3: High-Speed Organizational Directory (Without Filings)

Extract large-scale contact and status directories without retrieving detailed tax returns:

{
"searchTerms": ["animal shelter", "humane society"],
"includeFilings": false,
"maxPagesPerSearch": 0,
"maxItems": 1500
}

Recipe 4: Major Healthcare Foundations Benchmark

Benchmark major health organizations (NTEE 4) with over 1,000 records:

{
"states": ["NY", "MA", "IL"],
"cCode": "3",
"nteeCategories": ["4"],
"includeFilings": true,
"maxPagesPerSearch": 0,
"maxItems": 1000
}

Recipe 5: Higher Education & University Endowments

Screen university foundations and higher education institutions:

{
"searchTerms": ["university foundation", "college endowment"],
"cCode": "3",
"includeFilings": true,
"maxItems": 250
}

Recipe 6: Environmental & Wildlife Conservation Trusts

Audit environmental conservation organizations across the Pacific Northwest:

{
"states": ["WA", "OR"],
"cCode": "3",
"nteeCategories": ["3"],
"includeFilings": true,
"maxItems": 200
}

💡 Optimization & best practices

  • Understanding Small Filers (Form 990-N): Organizations with annual gross receipts under $50,000 typically file the electronic Form 990-N (e-Postcard). These filings do not contain line-item revenues, expenses, or executive pay; hence financial fields will be null while legal name, EIN, and address remain 100% populated.
  • Speed Optimization: If your project only requires legal organization names, state registrations, and IRS ruling dates, disable includeFilings: false. This skips the secondary detail requests and increases throughput by up to 5x.
  • Filtering by Form Type: Use downstream pandas or SQL filtering on latestFormType to separate private grantmaking foundations (latestFormType == '990-PF') from public operating charities (latestFormType == '990').
  • Combining Multiple States: You can pass several state codes simultaneously (e.g. ["NY", "NJ", "CT"]) to build regional tri-state non-profit intelligence datasets.
  • Preventing Duplicate Filers: Organizations are keyed on their unique 9-digit IRS EIN. Overlapping keyword searches will never result in duplicate records in your dataset.

🚀 How to use & integrate

  1. Configure Search Parameters: Enter keyword search phrases, choose target states, or provide a list of EINs.
  2. Execute Scraper: Trigger the run via Apify Web Console or through the Apify REST API:
    curl --request POST \
    --url "https://api.apify.com/v2/acts/haketa~propublica-nonprofit-scraper/runs?token=YOUR_API_TOKEN" \
    --header 'Content-Type: application/json' \
    --data '{"searchTerms": ["food bank"], "states": ["CA"], "maxItems": 100}'
  3. Consume Dataset:
    • Python: Load directly into a Pandas DataFrame using apify-client.
    • Spreadsheets: Export directly to Excel or auto-sync with Google Sheets.
    • Database Pipelines: Connect with Snowflake, BigQuery, or PostgreSQL via Apify integrations.

❓ Frequently asked questions

Yes. Form 990 tax filings and the IRS Business Master File are public records by federal law. Tax-exempt non-profit organizations are required to make their annual returns publicly accessible.

Do I need an API key or account?

No. There are no API keys, logins, or authentication credentials required.

What is the NTEE classification system?

The National Taxonomy of Exempt Entities (NTEE) is the IRS classification system used to categorize non-profit organizations by primary purpose (e.g. Category 1: Arts & Humanities, Category 2: Education, Category 4: Health, Category 5: Human Services).

Why are executive compensation figures missing for some records?

Executive compensation (latestExecCompensation) is reported on Part VII of Form 990. Non-profits that file simplified Form 990-EZ or Form 990-N do not have detailed executive compensation digitized in this specific field, or may rely on volunteer management.

How frequently is the financial data refreshed?

Data reflects the most recently digitized returns released by the IRS and processed by ProPublica. New tax filings are published as non-profits complete their annual IRS reporting cycles.

What export formats are supported?

You can download datasets in JSON, CSV, Excel (XLSX), XML, or HTML format directly from the Apify console.

What is the difference between BMF amounts and latest 990 amounts?

The IRS Business Master File (BMF) metrics (assetAmount, incomeAmount, revenueAmount) represent cumulative baseline amounts recorded by the IRS during administrative status tracking. The latestRevenue, latestExpenses, latestAssets, and latestLiabilities fields reflect the exact line-item figures filed on the organization's most recent digitized Form 990, 990-EZ, or 990-PF.

How are fiscal year-ends handled?

Non-profits operate on diverse fiscal calendars (e.g. July 1 – June 30 or October 1 – September 30). The latestFilingYear field indicates the primary calendar tax period year associated with the return.

Can I monitor a portfolio of charities for changes?

Yes. You can input your list of foundation partners or grantees into einList and schedule a monthly run. By comparing the new dataset with previous runs, you can automatically detect updated balance sheets, new revenue figures, or changes in tax exemption standing.

What happens if an organization files multiple amended returns?

The scraper extracts the latest digitized return available in the official repository, which incorporates any accepted superseding or amended filings.


🛠️ Step-by-step code integration examples

Python Integration with Pandas

from apify_client import ApifyClient
import pandas as pd
client = ApifyClient("YOUR_APIFY_TOKEN")
# Trigger Nonprofit 990 Scraper run
run = client.actor("haketa/propublica-nonprofit-scraper").call(
run_input={
"searchTerms": ["food bank"],
"states": ["CA"],
"includeFilings": True,
"maxItems": 100,
}
)
# Fetch dataset items and load into DataFrame
items = client.dataset(run["defaultDatasetId"]).list_items().items
df = pd.DataFrame(items)
# Rank by total revenue
top_earners = df[["name", "city", "latestRevenue", "latestAssets", "latestExecCompensation"]].sort_values(
by="latestRevenue", ascending=False
)
print(top_earners.head(10))

Node.js / JavaScript Integration

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('haketa/propublica-nonprofit-scraper').call({
searchTerms: ['food bank'],
states: ['CA'],
includeFilings: true,
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Retrieved ${items.length} non-profit records.`);


📋 Changelog

v1.2 (2026-11)

  • Deep Pagination Unlocked: Fully unlocked continuous multi-page pagination for 1,000+ organizations; maxPagesPerSearch: 0 now executes as unlimited pagination governed by maxItems.
  • Fast Prefill Optimization: Adjusted prefill limits to 100 records for sub-20s sample verification with full 990 financial statements.
  • Default Fallback Robustness: Added safe fallback defaults (food bank) ensuring runs with empty input payloads execute reliably with ~50 sample organizations.
  • Financial Normalization: Enhanced parsing for numeric financial amounts and standardized 501(c) subsection labels.

v1.1 (2026-10)

  • Concurrent Financial Extraction: Increased concurrent detail fetching to 8 parallel streams, cutting run durations by 60%.
  • Source PDF URLs: Added direct link resolution to digitized Form 990 PDF scans.

v1.0 (2026-09)

  • Initial release featuring EIN lookups, NTEE category mapping, IRS BMF headline metrics, and Form 990 financial statement parsing.
⌂ 换网址