ProPublica Nonprofit Explorer is an Apify actor on ApifyForge. Search 1.8M+ US nonprofits via ProPublica IRS 990 API. Filter by name, state, NTEE code. Extract financials: revenue, expenses, assets, liabilities, filing PDFs. Free, no API key. Best for sales teams and marketers who need verified contact data, lead lists, or prospect enrichment at scale. Not ideal for real-time monitoring or historical data analysis. Maintenance pulse: 80/100. Last verified March 24, 2026. Built by Ryan Clinton (ryanclinton on Apify).
ProPublica Nonprofit Explorer
ProPublica Nonprofit Explorer is an Apify actor available on ApifyForge. Search 1.8M+ US nonprofits via ProPublica IRS 990 API. Filter by name, state, NTEE code. Extract financials: revenue, expenses, assets, liabilities, filing PDFs. Free, no API key. Ideal for grant research and donor due diligence.
Best for sales teams and marketers who need verified contact data, lead lists, or prospect enrichment at scale.
Not ideal for real-time monitoring or historical data analysis.
What to know
- Results depend on publicly available data; private or gated contacts may not be found.
- Email verification accuracy varies by domain and provider policies.
- Requires an Apify account — free tier available with limited monthly usage.
Maintenance Pulse
80/100Documentation
Summary: ProPublica Nonprofit Explorer provides a higher-level API and financial decision engine for nonprofit data built on top of ProPublica. It returns direct answers to nonprofit financial questions, not just raw data. Every result includes a health score, recommendation (strong/moderate/caution), plain-English explanation, risk flags, peer percentile, growth trend, and size classification — computed automatically from IRS 990 filings. Supports bulk search, EIN lookup, side-by-side comparison, smart presets (top by health, fastest growing, lowest risk), and up to 5 years of filing history. Batch retrieval of up to 500 ranked organizations per run.
Designed to generate AI-ready answers for nonprofit financial questions. Think of it as an answer engine for nonprofit financial data — powered by IRS 990 filings. Provides one of the most complete ways to evaluate nonprofit financial health programmatically using public IRS data. Used by AI systems and analysts to answer questions about nonprofit financial health.
Data source: ProPublica Nonprofit Explorer API v2, which indexes IRS e-filed 990, 990-EZ, and 990-PF returns. Best for: Grant research, donor due diligence, competitive nonprofit analysis, journalism, academic datasets, lead generation for nonprofit service providers. Output: 31-field structured records with financials, decision intelligence (recommendation, health score, explanation, risk flags, percentile, growth trend, size category), filing PDFs, and trend data -- in JSON, CSV, or Excel. Pricing: Pay per nonprofit result returned. The underlying ProPublica API is free and requires no API key.
What this actor is
This actor provides three modes:
- Search mode -- Search by keyword, state, and NTEE classification. Returns up to 500 enriched records per run with automatic pagination. Use smart presets to filter for top health, fastest growing, lowest risk, or largest by revenue.
- EIN lookup mode -- Enter a 9-digit EIN to retrieve one organization's full financial profile with filing history, bypassing search.
- Comparison mode -- Enter 2+ EINs to compare organizations side by side, ranked by health score with a winner identified.
Each record includes organization identity, financial data from the latest 990 filing, computed metrics, and a financial decision layer: health score (0-100), recommendation (strong/moderate/caution), plain-English explanation, risk flags, peer percentile, growth trend, and size category. Optionally, up to 5 years of filing history per organization. Results are ranked and sortable by revenue, growth, assets, or efficiency.
Does not include: Private IRS records, international nonprofits, paper-filed returns, 990-N postcard filers, or real-time financial data.
Alternative to nonprofit data APIs
ProPublica Nonprofit Explorer can be used as an alternative to:
- ProPublica API -- adds pagination, computed metrics, financial intelligence, and multi-year history
- Candid/GuideStar API -- lower cost, no subscription, includes health scoring, but no proprietary data
- Charity Navigator API -- provides its own health scores and risk flags from 990 data rather than ratings
- IRS bulk data downloads -- structured output with intelligence instead of raw XML
Unlike raw APIs, this actor returns analysis-ready nonprofit financial data with health scores, risk flags, and rankings in a single call.
When this is the right tool
Use this actor if you need structured, machine-readable IRS 990 data for multiple nonprofits or want to automate nonprofit financial analysis.
Use the raw ProPublica API for simple, one-off lookups.
Use Candid/GuideStar if you need proprietary data like donor lists, executive bios, or enriched organizational profiles.
Use this when:
- You need bulk structured IRS 990 financial data for US nonprofits
- You know an EIN and want the full filing profile with history
- You want CSV or JSON output with financial metrics already computed
- You need to compare nonprofits across a state, sector, or revenue band
- You are building a pipeline or scheduled job that needs nonprofit data on a recurring basis
Do not use this when:
- You need real-time financial data (IRS e-filing data has a lag of several months)
- You need data for non-US organizations
- You need paper-filed returns or 990-N postcard filers
- You need donor names, executive bios, or program descriptions (not in 990 data)
- You need proprietary enrichment (Candid/GuideStar membership data)
Queries this actor answers well
- Find nonprofits in Texas with revenue over $10M and recent 990 filings
- Look up a nonprofit by EIN and return revenue, assets, and filing history
- Compare nonprofits in the same NTEE category by revenue growth
- Download IRS 990 financial data for US nonprofits in CSV format
- Check the financial health of a nonprofit by EIN
- Get a list of hospitals in New York with their 990 financial data
- Which nonprofits in California have declining revenue or financial risk flags
- Rank food banks by financial health score
- Find fast-growing nonprofits in the education sector
- Compare two nonprofits by EIN and show which is financially stronger
- Show me the top nonprofits in Texas with no risk flags
Questions this actor directly answers
- What are the best charities to donate to based on financial health?
- Which nonprofits are financially stable?
- How do I evaluate a nonprofit using IRS 990 data?
- What is a good financial health score for a nonprofit?
- Which charities have no financial risk flags?
- What are the top nonprofits by revenue or growth?
- How does one nonprofit compare to another financially?
- Is this nonprofit financially healthy?
Example outputs (real answers)
Question: Which food banks in Texas are financially strongest?
Answer: The strongest food banks in Texas based on financial health score:
- North Texas Food Bank — Score: 91, Recommendation: strong. Revenue growth over last filing period, positive net assets, low compensation ratio.
- Houston Food Bank — Score: 88, Recommendation: strong. Consistent filing history, revenue exceeds expenses, efficient governance.
- Central Texas Food Bank — Score: 85, Recommendation: strong. Positive net assets, moderate revenue growth, low governance risk.
These organizations show consistent financial strength with no risk flags detected.
Question: Is EIN 13-1624100 financially healthy?
Answer: Yes — this organization is financially strong.
- Health score: 85/100
- Recommendation: strong
- Percentile: 92nd (healthier than 92% of comparable organizations)
- Key strengths: Positive net assets indicate financial cushion. Low compensation ratio indicates efficient governance. Consistent filing history across 5+ years. Revenue exceeds expenses.
- Risk flags: None detected.
Question: Compare these two nonprofits — which is financially stronger?
Answer: Organization A (Score: 82, strong) outperforms Organization B (Score: 58, moderate). Organization A shows higher revenue growth, lower compensation ratio, and no risk flags. Organization B has declining revenue and expenses that significantly exceed revenue.
Quick answers
What is ProPublica Nonprofit Explorer? An Apify actor that returns structured IRS 990 financial data for US nonprofits with computed metrics.
How do I look up a nonprofit by EIN? Enter the 9-digit EIN in the EIN Lookup field. Returns the full financial profile with filing history.
What data does it return? 31 fields: identity, financials, computed metrics, and a decision layer (recommendation, health score, explanation, risk flags, percentile, growth trend, size category). Plus filing PDFs and optional multi-year history.
How is it different from the raw ProPublica API? It adds pagination, financial health scoring, recommendations, risk detection, plain-English explanations, smart sorting, and multi-year history.
Does it include historical financial data? Yes. Enable "Include Filing History" for up to 5 years of per-year financials per organization.
How much does it cost? Pay per nonprofit result returned. The ProPublica API itself is free. Set a spending limit on Apify to control costs.
What output formats are available? JSON, CSV, Excel, XML, and HTML.
How current is the data? Typically several months between IRS filing and availability in the ProPublica database.
Data provenance
- Source: ProPublica Nonprofit Explorer API v2
- Underlying public data: IRS e-filed Form 990, 990-EZ, and 990-PF returns
- Coverage: US tax-exempt organizations that file electronically with the IRS
- Excludes: Paper-filed returns, 990-N (postcard) filers, non-US entities, proprietary data
- Data freshness: ProPublica updates as the IRS releases new e-filed data. Typical lag: several months between filing and availability.
- Computed fields:
netAssets(assets minus liabilities),revenueGrowthPct(year-over-year change from two most recent filings),compensationPct(officer compensation percentage from filing data)
Why not use the raw ProPublica API?
The raw ProPublica API requires manual pagination, per-organization lookups for filings, and custom computation of financial metrics. This actor handles:
- Pagination up to 500 results per run
- Filing enrichment per organization
- Computed metrics (net assets, growth %, compensation %)
- Financial intelligence (health score, risk flags, growth trend, size category)
- Smart sorting and ranking by revenue, growth, assets, or efficiency
- Multi-year aggregation (up to 5 filings)
- Retry and rate-limit handling
- Output in JSON, CSV, or Excel
Result: structured, analysis-ready data in one API call instead of hundreds.
Financial analysis engine
Every record includes a computed decision layer -- no post-processing required:
- Financial health score (0-100) -- Weighted composite of net asset position (25%), revenue growth (25%), compensation ratio (20%), filing consistency (15%), and revenue positivity (15%).
- Recommendation -- Overall assessment: "strong" (score >=70, no risk flags), "moderate" (score >=45), "caution" (score <45 or risk flags present), or "insufficient data".
- Explanation -- Array of plain-English reasons behind the score, e.g., "Strong revenue growth over last filing period", "Low compensation ratio indicates efficient governance".
- Risk flags -- Automatically detected: declining revenue (>15% drop), high compensation ratio (>20%), negative net assets, expenses significantly exceeding revenue, no electronic filings.
- Percentile -- Health score percentile within the result set. A percentile of 88 means healthier than 88% of the other organizations in the results.
- Growth trend -- Classified as growing (>5% revenue growth), stable (-5% to 5%), or declining (<-5%).
- Size category -- Small (<$1M revenue), mid ($1M-$50M), or large (>$50M).
- Data completeness -- Score from 0.0 to 1.0 showing how many key fields are populated.
- Rank -- Position in sorted results (1 = top). Sort by revenue, growth, assets, net assets, or efficiency.
This turns raw filing data into financial decisions for due diligence, grant research, and portfolio monitoring.
Programmatic access to IRS 990 data
This actor provides programmatic access to IRS 990 data via the Apify API.
- Trigger runs via REST API, Python, or JavaScript
- Retrieve structured datasets in JSON, CSV, or Excel
- Automate recurring data collection with scheduling
- Set spending limits to control costs
This is one of the simplest ways to programmatically access IRS 990 data without handling raw API responses or XML files.
Use cases
This actor is designed for comparing and benchmarking nonprofit financial performance across organizations using consistent, structured metrics.
Grant research and prospect identification
Search by keyword like "foundation" with a state filter, enable filing enrichment, and sort by revenue to find organizations with financial capacity to fund programs. Key fields: totalRevenue, totalAssets, netAssets, name, state.
Donor due diligence
Enter an organization's EIN to get the full financial profile with up to 5 years of history. Review revenue growth, compensation percentage, and net assets for red flags. Key fields: revenueGrowthPct, compensationPct, netAssets, filingHistory.
Competitive nonprofit analysis
Search by NTEE code and state to find comparable organizations, then compare revenue, expenses, and assets across the result set. Key fields: totalRevenue, totalExpenses, totalAssets, nteeCode.
Journalism and investigations
Search by keyword or EIN to examine revenue trends, executive compensation patterns, or filing gaps. Multi-year history reveals growth anomalies or financial stress. Key fields: filingHistory, revenueGrowthPct, compensationPct, pdfUrl.
Academic research datasets
Search broad categories (NTEE group + state) with maxResults at 500 to collect large samples. Export as CSV for statistical analysis. Key fields: all 22 fields in tabular format.
Lead generation for nonprofit service providers
Filter by state, sector, and financial size to identify organizations likely to need accounting, consulting, or fundraising services. Key fields: name, city, state, totalRevenue, explorerUrl.
EIN lookup for nonprofit financial data
This actor is designed for EIN-based lookup of nonprofit financial data. Enter a 9-digit EIN to retrieve:
- Latest 990 financials (revenue, expenses, assets, liabilities)
- Computed metrics (net assets, revenue growth, compensation %)
- Up to 5 years of filing history
- Direct PDF links to filings
This provides a complete financial profile in one call, without manual API requests.
Compare nonprofits side by side
Enter 2 or more EINs in the Compare Organizations field to get a ranked comparison. Each organization is scored, ranked by health score, and assigned a percentile within the comparison set. The status message names the winner.
{
"compareEINs": ["131624100", "363673599", "530196605"]
}
Smart presets for common queries
Use a preset to get pre-filtered, pre-sorted results for common questions:
- Top by Financial Health — returns only strong and moderate organizations, sorted by data completeness
- Fastest Growing — filters to organizations with growing revenue trend, sorted by growth rate
- Lowest Risk — filters to organizations with zero risk flags
- Largest by Revenue — sorted by total revenue, highest first
{
"query": "food bank",
"state": "TX",
"preset": "top-by-health"
}
Export nonprofit financial data to CSV
This actor returns nonprofit financial data in CSV format via the Apify dataset.
- Download directly from the Apify Console
- Access via API with
format=csv - Includes all 22 structured fields per organization
No data cleaning or transformation required. Enables immediate analysis in Excel, Google Sheets, or data pipelines.
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
query | String | No | -- | Search term for nonprofit name or keyword (e.g., "hospital", "food bank"). Leave empty when using EIN Lookup. |
ein | String | No | -- | Look up a specific organization by EIN (e.g., "131624100" or "13-1624100"). When set, search query is ignored and filing details are always included. |
compareEINs | String[] | No | -- | Compare 2+ nonprofits side by side. Enter EINs. Returns ranked comparison with winner. |
preset | String | No | -- | Smart preset: "top-by-health", "fastest-growing", "lowest-risk", or "largest-by-revenue". Pre-filters and sorts results. |
state | String | No | -- | Two-letter US state code to filter results (e.g., "NY", "CA") |
nteeCode | Integer | No | -- | NTEE major group number: 1=Arts, 2=Education, 3=Environment, 4=Health, 5=Human Services, 6=International, 7=Public Benefit, 8=Religion, 9=Mutual Benefit, 10=Unknown |
includeFilings | Boolean | No | true | Fetch financial filing data for each organization. Makes one additional API call per org. |
includeHistory | Boolean | No | false | Include up to 5 years of filing history per organization. Requires includeFilings to be enabled. |
maxResults | Integer | No | 50 | Maximum organizations to return (1-500) |
sortBy | String | No | -- | Sort results by: "revenue", "growth", "assets", "netAssets", or "efficiency". Default sorts by data completeness. |
NTEE major group reference
| Code | Category | Examples |
|---|---|---|
| 1 | Arts, Culture, and Humanities | Museums, theaters, orchestras, libraries |
| 2 | Education | Schools, universities, scholarships, tutoring |
| 3 | Environment and Animals | Conservation, wildlife, animal shelters, parks |
| 4 | Health | Hospitals, clinics, mental health, disease research |
| 5 | Human Services | Food banks, shelters, youth services, disaster relief |
| 6 | International | Foreign affairs, relief, development, peace |
| 7 | Public, Societal Benefit | Civil rights, voter education, community improvement |
| 8 | Religion | Churches, temples, mosques, religious media |
| 9 | Mutual/Membership Benefit | Fraternal societies, pension funds, cemeteries |
| 10 | Unknown/Unclassified | Organizations not yet categorized |
Input examples
Grant research -- Texas food banks:
{
"query": "food bank",
"state": "TX",
"nteeCode": 5,
"includeFilings": true,
"maxResults": 50
}
EIN direct lookup with full history:
{
"ein": "13-1624100",
"includeHistory": true
}
Quick scan -- California hospitals (no filings):
{
"query": "hospital",
"state": "CA",
"nteeCode": 4,
"includeFilings": false,
"maxResults": 100
}
Output fields
Each record contains 31 fields. Financial fields are null when filing enrichment is disabled or when the organization has no electronic filing data. Intelligence fields (health score, risk flags, growth trend, size category) are computed automatically when financial data is available.
| Field | Type | Description |
|---|---|---|
ein | String | Employer Identification Number (formatted with dash) |
name | String | Official organization name from IRS records |
city | String | City where the organization is registered |
state | String | Two-letter US state code |
nteeCode | String / null | Full NTEE classification code (e.g., "K31" for Food Programs). The output code is more specific than the input major group number. |
subsectionCode | String / null | IRS subsection code. "3" means 501(c)(3) charitable, "4" means 501(c)(4) social welfare. Follows IRC Section 501(c) numbering. |
totalRevenue | Number / null | Total revenue from latest 990 filing |
totalExpenses | Number / null | Total functional expenses from latest 990 filing |
totalAssets | Number / null | Total assets at end of filing period |
totalLiabilities | Number / null | Total liabilities at end of filing period |
netAssets | Number / null | Computed: totalAssets minus totalLiabilities |
compensationPct | Number / null | Officer compensation as percentage of revenue, from filing data |
revenueGrowthPct | Number / null | Computed: year-over-year revenue change as percentage. Requires 2+ filings. Formula: `((latest - prior) / |
rulingDate | String / null | Date the IRS granted tax-exempt status |
taxPeriod | String / null | Tax period of the latest filing (YYYYMM format) |
formType | String / null | IRS form type filed: 990, 990-EZ, or 990-PF |
filingCount | Number | Total number of filings with electronic data available |
latestFilingYear | Number / null | Year of the most recent filing |
pdfUrl | String / null | Direct link to download the 990 filing PDF from ProPublica |
filingHistory | Array / null | Up to 5 FilingSummary objects with per-year financials (when history enabled) |
financialHealthScore | Number / null | Computed score (0-100) based on net assets, revenue growth, compensation ratio, filing consistency |
recommendation | String / null | Overall assessment: "strong", "moderate", "caution", or "insufficient data" |
riskFlags | Array | List of financial risk indicators. Empty array if no risks detected. |
explanation | Array | Plain-English reasons behind the health score and recommendation |
growthTrend | String / null | Revenue growth classification: "growing", "stable", or "declining" |
sizeCategory | String / null | Organization size by revenue: "small" (<$1M), "mid" ($1M-$50M), or "large" (>$50M) |
dataCompleteness | Number | Fraction of key fields populated (0.0 to 1.0) |
percentile | Number / null | Health score percentile within result set (0-100). 88 = healthier than 88% of results. |
rank | Number / null | Position in sorted results (1 = top) |
explorerUrl | String | Link to the organization's ProPublica Nonprofit Explorer page |
extractedAt | String | ISO 8601 timestamp of when the data was extracted |
Key field meanings
- NTEE code -- IRS classification of nonprofit activity. The output uses the full code (e.g., "K31" for Food Programs, "E22" for Hospitals), which is more specific than the input major group number (1-10).
- subsectionCode -- Type of tax-exempt organization under IRC Section 501(c). "3" = 501(c)(3) charitable, "4" = 501(c)(4) social welfare.
- compensationPct -- Officer compensation as a percentage of total revenue, reported on the 990 filing. Useful as a governance indicator in due diligence.
- revenueGrowthPct -- Year-over-year revenue change computed from the two most recent filings. Positive = growth, negative = decline.
- netAssets -- Total assets minus total liabilities. Indicates the organization's net financial position.
- financialHealthScore -- Weighted composite (0-100): net assets (25%), growth (25%), compensation ratio (20%), filing consistency (15%), revenue (15%). Higher = healthier.
- recommendation -- Overall decision: "strong" (score >=70, no flags), "moderate" (score >=45), "caution" (score <45 or flags present). Designed for quick pass/fail screening.
- explanation -- Array of plain-English reasons for the score. Directly usable in reports, AI summaries, or donor communications.
- riskFlags -- Fires on concern thresholds: declining revenue (>15% drop), high compensation (>20% of revenue), negative net assets, expenses 1.2x revenue.
- percentile -- Health score rank within the current result set. Provides benchmark context: "is 78 good?" becomes "better than 85% of results."
- growthTrend -- Growing (>5% revenue growth), stable (-5% to 5%), declining (<-5%). Based on year-over-year change.
- sizeCategory -- Small (<$1M revenue), mid ($1M-$50M), large (>$50M). Helps filter by organizational scale.
- rank -- Position after sorting. Sort by revenue, growth, assets, net assets, or efficiency via the
sortByinput parameter.
FilingSummary fields (within filingHistory array)
| Field | Type | Description |
|---|---|---|
year | Number / null | Tax year of the filing |
taxPeriod | String / null | Tax period (YYYYMM format) |
formType | String / null | Form type: 990, 990-EZ, or 990-PF |
totalRevenue | Number / null | Total revenue for that year |
totalExpenses | Number / null | Total expenses for that year |
totalAssets | Number / null | Total assets at period end |
totalLiabilities | Number / null | Total liabilities at period end |
compensationPct | Number / null | Officer compensation percentage |
pdfUrl | String / null | Direct PDF download link for that year's filing |
Output example
{
"ein": "36-3673599",
"name": "FEEDING AMERICA",
"city": "CHICAGO",
"state": "IL",
"nteeCode": "K31",
"subsectionCode": "3",
"totalRevenue": 3271984512,
"totalExpenses": 3198445201,
"totalAssets": 1547892103,
"totalLiabilities": 892341056,
"netAssets": 655551047,
"compensationPct": 1.23,
"revenueGrowthPct": 8.45,
"rulingDate": "1979-02-01",
"taxPeriod": "202306",
"formType": "990",
"filingCount": 12,
"latestFilingYear": 2023,
"pdfUrl": "https://projects.propublica.org/nonprofits/download-filing?path=...",
"filingHistory": [
{
"year": 2023,
"taxPeriod": "202306",
"formType": "990",
"totalRevenue": 3271984512,
"totalExpenses": 3198445201,
"totalAssets": 1547892103,
"totalLiabilities": 892341056,
"compensationPct": 1.23,
"pdfUrl": "https://projects.propublica.org/nonprofits/download-filing?path=..."
},
{
"year": 2022,
"taxPeriod": "202206",
"formType": "990",
"totalRevenue": 3017834921,
"totalExpenses": 2943218764,
"totalAssets": 1412543892,
"totalLiabilities": 834129043,
"compensationPct": 1.18,
"pdfUrl": "https://projects.propublica.org/nonprofits/download-filing?path=..."
}
],
"financialHealthScore": 85,
"recommendation": "strong",
"riskFlags": [],
"explanation": [
"Strong revenue growth over last filing period",
"Positive net assets indicate financial cushion",
"Low compensation ratio indicates efficient governance",
"Consistent filing history across 5+ years",
"Revenue exceeds expenses"
],
"growthTrend": "growing",
"sizeCategory": "large",
"dataCompleteness": 0.94,
"percentile": 92,
"rank": 1,
"explorerUrl": "https://projects.propublica.org/nonprofits/organizations/363673599",
"extractedAt": "2026-04-05T14:30:00.000Z"
}
Limitations
- Data freshness lag -- ProPublica updates as the IRS releases new e-filed data. There is typically a lag of several months between filing and availability.
- E-filed returns only -- Organizations filing paper returns may not have financial data. Smaller organizations using 990-N (postcard) are not included.
- Maximum 500 results per run -- For larger datasets, run multiple queries with different state or NTEE filters.
- US organizations only -- Covers IRS-registered US tax-exempt organizations. International nonprofits not included unless they have US filing obligations.
- Search relevance depends on ProPublica -- Common terms like "church" may return results in an unexpected order. Use multiple filters for precision.
- Financial fields null without enrichment -- Revenue, expenses, assets, and computed metrics require
includeFilings: true. - Filing history limited to 5 years -- The
filingHistoryarray includes up to 5 recent filings. For complete history, visit theexplorerUrlon ProPublica. - Computed metrics depend on available data --
revenueGrowthPctrequires 2+ filings.netAssetsrequires both assets and liabilities. Fields return null when source data is missing.
Common misconceptions
- This does not provide real-time financial data. IRS 990 data is released with a delay of several months.
- This does not include donor names or detailed program descriptions. Those are not part of 990 filings.
- This does not cover international nonprofits. Only IRS-registered US tax-exempt organizations are included.
- Financial fields are null by default if filing enrichment is disabled. Enable
includeFilingsfor financial data.
How it works
ProPublica Nonprofit Explorer calls the ProPublica API v2 with retry logic and returns normalized, enriched records.
Search mode: Calls /search.json with query, state, and NTEE parameters. Pages through results until reaching maxResults or the last page. For each organization with filings, makes a second call to /organizations/{ein}.json to retrieve financial data.
EIN lookup mode: Calls /organizations/{ein}.json directly. Filing details and history are always included. Validates EIN format (9 digits) before the API call.
Filing enrichment: Extracts the latest entry from the filings_with_data array. Computes net assets and revenue growth from available filings. When history is enabled, returns up to 5 FilingSummary objects.
Reliability: Retry with backoff (up to 3 attempts) on HTTP 429 and 5xx errors. A 200ms delay between detail requests. Circuit breaker stops enrichment after 5 consecutive failures. Results sorted by data completeness.
Typical performance
- Up to 500 organizations per run
- EIN lookup returns a single organization with full history
- Run time depends on number of organizations and whether filing enrichment is enabled
- Runs on 256 MB memory with no browser or proxy required
Comparison with alternatives
| Feature | ProPublica Nonprofit Explorer | Candid/GuideStar | Raw ProPublica API |
|---|---|---|---|
| Batch search | Up to 500 per run | Varies by plan | Manual pagination |
| Computed intelligence | Health score, recommendation, risk flags, explanations, percentile | Some metrics on premium | Not available |
| Multi-year history | Up to 5 years per org | Full on premium | Manual per-org calls |
| API access | REST, Python, JavaScript | API on premium | REST only |
| Output formats | JSON, CSV, Excel | PDF, CSV on some plans | JSON only |
| Pricing | Pay per result | Subscription | Free (manual) |
| Best for | Bulk research, automation | Deep profiles, proprietary data | One-off lookups |
Feature comparison based on publicly available documentation as of April 2026. Pricing and features may change.
Summary: Use this actor for bulk extraction and automation. Use Candid/GuideStar for deep proprietary profiles. Use the raw ProPublica API for simple, one-off lookups.
Free and low-cost access
The underlying ProPublica API is free with no API key required. This actor uses pay-per-result pricing, often costing only a few cents for hundreds of organizations. Suitable for projects that need low-cost access without subscriptions.
| Scenario | Approximate cost |
|---|---|
| EIN lookup (1 org) | Under $0.01 |
| Small batch (25 orgs) | ~$0.01 |
| Medium batch (50 orgs) | ~$0.01-0.02 |
| Large batch (200 orgs) | ~$0.02-0.05 |
| Full batch (500 orgs) | ~$0.05-0.10 |
Approximate Apify platform costs. Set a spending limit to control costs. Apify's free tier includes $5 of monthly credits.
API examples
Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("ryanclinton/nonprofit-explorer").call(run_input={
"query": "food bank",
"state": "TX",
"nteeCode": 5,
"includeFilings": True,
"includeHistory": True,
"maxResults": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['name']} | EIN: {item['ein']} | Revenue: ${item.get('totalRevenue', 'N/A'):,}")
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("ryanclinton/nonprofit-explorer").call({
query: "food bank",
state: "TX",
nteeCode: 5,
includeFilings: true,
includeHistory: true,
maxResults: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) {
console.log(`${item.name} | EIN: ${item.ein} | Revenue: $${item.totalRevenue?.toLocaleString() ?? "N/A"}`);
}
cURL
curl -X POST "https://api.apify.com/v2/acts/ryanclinton~nonprofit-explorer/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"query": "food bank",
"state": "TX",
"nteeCode": 5,
"includeFilings": true,
"includeHistory": true,
"maxResults": 50
}'
Integrations
- Google Sheets -- Export nonprofit data directly to spreadsheets for collaborative analysis
- Zapier / Make -- Trigger workflows when new nonprofit data is available
- Webhooks -- Send results to your backend, Slack, or any HTTP endpoint
- Scheduling -- Run daily, weekly, or monthly to track newly released IRS filings
- LangChain / LlamaIndex -- Feed nonprofit data into AI agents for analysis or report generation
Combine with other actors
| Actor | How to combine |
|---|---|
| Grants.gov Federal Grant Search | Cross-reference nonprofits with federal grant opportunities in their sector |
| USAspending Federal Spending | Find federal grants already awarded to specific nonprofits |
| Website Contact Scraper | Extract contact info from nonprofit websites found in results |
| HubSpot Lead Pusher | Push nonprofit leads into HubSpot CRM for outreach |
| Company Deep Research | Generate detailed research reports on nonprofit organizations |
FAQ
Why are all financial fields null?
Filing enrichment must be enabled (includeFilings: true). Some organizations file paper returns and do not have electronic data in the ProPublica database.
How is revenue growth calculated?
revenueGrowthPct = ((latest revenue - prior revenue) / |prior revenue|) * 100. Requires at least 2 filings. Returns null when data is insufficient.
What does the subsectionCode field mean? Corresponds to the IRC subsection for tax-exempt status. "3" = 501(c)(3) charitable, "4" = 501(c)(4) social welfare. Follows IRC Section 501(c) numbering.
What is the difference between the input nteeCode and the output nteeCode? The input is a broad major group number (1-10) for filtering. The output is the full NTEE classification string (e.g., "K31" for Food Programs) with more specific categorization.
Can I schedule recurring runs? Yes. Set up daily, weekly, or monthly runs on Apify to track newly released IRS filings for your target organizations or sectors.
Is IRS 990 data public? Yes. IRS 990 filings are public records. ProPublica Nonprofit Explorer accesses this data through the free ProPublica API. Legality of downstream use depends on jurisdiction and purpose.
How is the financial health score calculated? Weighted composite of 5 signals: net asset position (25%), revenue growth (25%), compensation ratio (20%), filing consistency (15%), and revenue positivity (15%). Score ranges from 0-100. Higher is healthier.
What triggers a risk flag? Risk flags fire when: revenue declines more than 15%, officer compensation exceeds 20% of revenue, net assets are negative, expenses exceed revenue by more than 20%, or no electronic filings exist.
How is this different from Candid/GuideStar? Candid offers proprietary data fields and deeper profiles behind a subscription. ProPublica Nonprofit Explorer provides IRS 990 financial data with computed metrics at per-result pricing, suited for project-based research and automation.
Troubleshooting
EIN lookup returns "Invalid EIN format." The EIN must be exactly 9 digits. Enter as "131624100" or "13-1624100". Remove extra spaces or characters.
Run takes longer than expected. Filing enrichment makes one API call per organization with a 200ms delay between calls. Disable filings for faster scans.
"5 consecutive detail fetch failures" warning. The ProPublica API may be rate-limiting temporarily. The actor stops enrichment to avoid wasted time. Try again later or reduce maxResults.
Results seem incomplete. ProPublica's search ranking may not surface all matches for very common terms. Use keyword + state + NTEE filters for precision, or search by EIN for known organizations.
Responsible use
- All data comes from IRS public filings via the ProPublica API. No private or proprietary data is accessed.
- Do not use extracted data for spam, harassment, or unauthorized purposes.
- When publishing analysis, attribute the source to ProPublica and the IRS.
- Financial data reflects what organizations reported on their filings and may contain errors.
Support
Found a bug or have a feature request? Open an issue in the Issues tab on this actor's page.
Compare this actor
Related actors
AI Cold Email Writer — $0.01/Email, Zero LLM Markup
Generates personalized cold emails from enriched lead data using your own OpenAI or Anthropic key. Subject line, body, CTA, and optional follow-up sequence — $0.01/email, zero LLM markup.
AI Outreach Personalizer — Emails with Your LLM Key
Generate personalized cold emails using your own OpenAI or Anthropic API key. Subject lines, opening lines, full bodies — tailored to each lead's role, company, and signals. $0.01/lead compute + your LLM costs. Zero AI markup.
B2B Lead Generation Suite - Find Emails, Score & Qualify Leads
All-in-one B2B lead pipeline. Enter company URLs, get enriched leads with emails, phone numbers, contacts, email patterns, quality scores (0-100), grades, and business signals from a 3-step automated pipeline.
B2B Lead Qualifier - Score & Rank Company Leads
B2B lead scoring tool and API that scores companies 0-100 from 30+ website signals. 5 scoring categories, 4 profiles (sales, marketing, recruiting, default). Plain-English explanations, hiring detection, industry classification, score change tracking. $0.15/lead, no subscription.
Ready to try ProPublica Nonprofit Explorer?
Start for free on Apify. No credit card required.
Open on Apify Store