Nonprofit 990 Scraper — EIN, Financials & Execs (ProPublica)
Pricing
from $1.75 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Features
Share
🏛️ Nonprofit 990 Scraper — EIN, Financials & Execs (ProPublica)
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
| Feature | Specification |
|---|---|
| Data Source | ProPublica Nonprofit Explorer & IRS Form 990 Public Database |
| Search Modes | Keyword / Name, Direct EIN list, US State, 501(c) Subsection, NTEE Category |
| Financial Depth | Multi-year Form 990, 990-EZ, 990-PF returns + IRS BMF headline metrics |
| Executive Compensation | Officer, director, and key employee compensation parsed in USD |
| Pagination Model | Deep pagination per query (25 orgs/page, set 0 for auto/unlimited) |
| Throughput Speed | ~80–120 enriched organizations per minute (~15–30s on prefill runs) |
| Deduplication | Automatic deduplication by 9-digit IRS EIN (0% duplicates) |
| Export Formats | Dataset (JSON, CSV, XML, Excel) & Key-Value Store OUTPUT mirror |
| Proxy Requirement | Apify Proxy Datacenter (enabled by default, fully supported) |
| Default Sample Run | Automatic 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:
- 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.
- 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). - Executive Compensation Benchmarking: Analyze officer, trustee, and CEO compensation (
latestExecCompensation) across non-profit sectors to evaluate organizational overhead efficiency. - Donor & Major-Gift Intelligence: Discover grantmaking institutions and assess their liquidity, asset holdings, and historical grant allocation patterns.
- 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.,4for Health,5for 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
einListfor 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
maxPagesPerSearchis set to0. - 🛡️ 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:
| Parameter | Type | Default | Description |
|---|---|---|---|
searchTerms | array | ["food bank"] | Nonprofit name keywords or search phrases (e.g. ["red cross", "humane society"]). |
states | array | [] | Two-letter US state abbreviations (e.g. ["CA", "NY", "TX"]). |
nteeCategories | array | [] | 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). |
cCode | string | "" | 501(c) subsection number (e.g., "3" for 501(c)(3) charities, "4" for 501(c)(4), "6" for trade associations). |
einList | array | [] | List of explicit EINs for direct retrieval (e.g. ["530196605", "13-1628105"]). |
includeFilings | boolean | true | When true, fetches full 990 balance sheets, executive compensation, and PDF URLs. |
maxPagesPerSearch | integer | 0 | Maximum pages to paginate per search query (25 orgs/page). 0 = auto/unlimited governed by maxItems. |
maxItems | integer | 0 | Total maximum organizations to scrape across all queries (0 = no limit; prefilled to 100 for fast validation). |
proxyConfiguration | object | { "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
| Field | Type | Coverage | Description |
|---|---|---|---|
ein | string | 🟢 High (100%) | 9-digit IRS Employer Identification Number (unformatted) |
einFormatted | string | 🟢 High (100%) | Standard dash-formatted EIN (e.g. 12-3456789) |
name | string | 🟢 High (100%) | Registered legal name of tax-exempt organization |
address | string | 🟢 High (>95%) | Physical or mailing street address |
city | string | 🟢 High (>98%) | Municipality or city |
state | string | 🟢 High (100%) | Two-letter US state abbreviation |
zipcode | string | 🟢 High (>98%) | 5-digit postal ZIP code |
nteeCode | string | 🟡 Conditional (~80%) | National Taxonomy of Exempt Entities classification code |
subsectionCode | string | 🟢 High (>95%) | IRS 501(c) subsection integer code (e.g. 3) |
subsectionLabel | string | 🟢 High (>95%) | Human-readable tax-exempt status label (e.g. 501(c)(3) Charitable) |
rulingDate | string | 🟢 High (>90%) | Year and month of official IRS tax-exemption ruling |
profileUrl | string | 🟢 High (100%) | Direct web link to Nonprofit Explorer organization profile |
💰 Form 990 Financials & Balance Sheets
| Field | Type | Coverage | Description |
|---|---|---|---|
latestFilingYear | string | 🟡 Conditional (~75%) | Tax year corresponding to most recent filed Form 990 |
latestFormType | string | 🟡 Conditional (~75%) | Specific return filed (990, 990-EZ, 990-PF) |
latestRevenue | string | 🟡 Conditional (~75%) | Total gross revenue from latest return in USD |
latestExpenses | string | 🟡 Conditional (~75%) | Total functional expenses from latest return in USD |
latestAssets | string | 🟡 Conditional (~75%) | Total end-of-year net assets from latest return in USD |
latestLiabilities | string | 🟡 Conditional (~75%) | Total liabilities reported at tax year end in USD |
latestExecCompensation | string | 🟡 Conditional (~60%) | Total compensation reported for officers and directors in USD |
latestFilingPdfUrl | string | 🟡 Conditional (~75%) | Direct URL to original digitized IRS Form 990 PDF document |
filingsCount | string | 🟢 High (100%) | Total number of historical annual returns digitized |
filingYears | string | 🟢 High (100%) | Array of tax years available in digital history |
🏛️ IRS Business Master File (BMF) Baseline Metrics
| Field | Type | Coverage | Description |
|---|---|---|---|
assetAmount | string | 🟢 High (>90%) | Baseline asset amount recorded in IRS Business Master File |
incomeAmount | string | 🟢 High (>90%) | Baseline income amount recorded in IRS Business Master File |
revenueAmount | string | 🟢 High (>90%) | Baseline revenue amount recorded in IRS Business Master File |
scrapedAt | string | 🟢 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
latestFormTypeto 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
- Configure Search Parameters: Enter keyword search phrases, choose target states, or provide a list of EINs.
- 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}'
- 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.
- Python: Load directly into a Pandas DataFrame using
❓ Frequently asked questions
Is scraping IRS Form 990 data legal?
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 ApifyClientimport pandas as pdclient = ApifyClient("YOUR_APIFY_TOKEN")# Trigger Nonprofit 990 Scraper runrun = client.actor("haketa/propublica-nonprofit-scraper").call(run_input={"searchTerms": ["food bank"],"states": ["CA"],"includeFilings": True,"maxItems": 100,})# Fetch dataset items and load into DataFrameitems = client.dataset(run["defaultDatasetId"]).list_items().itemsdf = pd.DataFrame(items)# Rank by total revenuetop_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.`);
🔗 Related intelligence scrapers
- USAspending Federal Awards Scraper — Extract federal contracts, grants, and procurement awards.
- EPA ECHO Compliance Scraper — Extract US industrial facilities, compliance status, and penalties.
- Google Maps Business Leads Scraper — Extract business listings with enriched email and social profiles.
- Article Content Extractor — Clean text and metadata extraction from news and media feeds.
📋 Changelog
v1.2 (2026-11)
- Deep Pagination Unlocked: Fully unlocked continuous multi-page pagination for 1,000+ organizations;
maxPagesPerSearch: 0now executes as unlimited pagination governed bymaxItems. - 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.