Nonprofit & 990 Tax Filing Scraper avatar

Nonprofit & 990 Tax Filing Scraper

Under maintenance

Pricing

from $2.00 / 1,000 nonprofit scrapers

Go to Apify Store
Nonprofit & 990 Tax Filing Scraper

Nonprofit & 990 Tax Filing Scraper

Under maintenance

Search 1.8M+ US nonprofits by name, state, or NTEE category. Extract IRS 990 data: revenue, expenses, assets, officer compensation. ProPublica API — no auth, no proxy. Perfect for grant research, fundraising intelligence, donor prospecting & journalism.

Pricing

from $2.00 / 1,000 nonprofit scrapers

Rating

0.0

(0)

Developer

Mark F

Mark F

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

8 days ago

Last modified

Share

Search and extract data from 1.8 million+ US nonprofit organizations using the ProPublica Nonprofit Explorer API. Get IRS Form 990 filing data including revenue, expenses, assets, liabilities, officer compensation, and mission statements. No authentication required, no rate limit worries, structured JSON output ready for analysis.

What is the Nonprofit & 990 Tax Filing Scraper?

This actor is a wrapper around ProPublica's free Nonprofit Explorer API that makes it easy to search and extract nonprofit organization data at scale. Every US tax-exempt nonprofit must file Form 990 with the IRS annually, disclosing detailed financial and operational information. ProPublica aggregates this public data and provides a free JSON API. This actor handles pagination, error recovery, and data structuring so you can focus on analysis.

Perfect for:

  • Grant research — Find foundations with similar missions and funding capacity
  • Fundraising intelligence — Research donor prospects and their giving patterns
  • Competitive analysis — Benchmark your nonprofit against similar organizations
  • Journalism & investigations — Analyze nonprofit spending, compensation, trends
  • Due diligence — Verify nonprofit financials before partnerships or donations
  • Academic research — Study nonprofit sector trends, compensation, growth patterns
  • Lead generation — Identify nonprofits in specific sectors or regions for outreach

Use Cases

1. Grant Research

Find foundations that fund organizations like yours:

{
"searchQuery": "foundation",
"state": "NY",
"minRevenue": 10000000,
"maxResults": 50,
"includeFiling": true
}

2. Donor Prospecting

Identify high-capacity donors (board members of large nonprofits):

{
"searchQuery": "museum",
"nteeCode": "A",
"minRevenue": 5000000,
"includeOfficers": true,
"maxResults": 100
}

3. Competitive Intelligence

Benchmark against similar nonprofits in your sector:

{
"searchQuery": "environmental conservation",
"state": "CA",
"nteeCode": "C",
"includeFiling": true,
"maxResults": 200
}

4. Compensation Research

Analyze executive compensation trends in the nonprofit sector:

{
"searchQuery": "hospital",
"nteeCode": "E",
"minRevenue": 50000000,
"includeOfficers": true,
"maxResults": 50
}

5. Compliance & Due Diligence

Verify a nonprofit's financial health before partnering:

{
"searchQuery": "53-0196605",
"includeFiling": true,
"includeOfficers": true,
"maxResults": 1
}

Input Parameters

ParameterTypeRequiredDescription
searchQueryStringYesOrganization name, keyword, or EIN (e.g., "American Red Cross", "education", "53-0196605")
stateStringNoTwo-letter state code filter (e.g., "CA", "NY", "TX")
nteeCodeStringNoNTEE classification code (see NTEE Codes section below)
minRevenueIntegerNoMinimum total revenue filter in USD (e.g., 1000000 for $1M+)
maxResultsIntegerNoMaximum number of organizations to return (default: 100, max: 1000)
includeFilingBooleanNoFetch latest 990 filing details (revenue, expenses, assets). Default: true
includeOfficersBooleanNoExtract officer/director names and compensation. Requires includeFiling=true. Default: false

Common NTEE Codes

CodeCategoryExamples
AArts, Culture & HumanitiesMuseums, theaters, historical societies
BEducationSchools, universities, libraries, literacy programs
CEnvironmentConservation, wildlife, parks, pollution control
DAnimal-RelatedAnimal welfare, wildlife preservation, zoos
EHealthHospitals, mental health, disease research
FMental Health & CrisisCounseling, hotlines, addiction services
PHuman ServicesFood banks, homeless services, youth programs
TPhilanthropyFoundations, donor-advised funds, United Ways
XReligionChurches, synagogues, mosques, religious media

Full NTEE code list

Output Format

Each organization returns:

{
"ein": "53-0196605",
"name": "American Red Cross",
"city": "Washington",
"state": "DC",
"ntee_code": "P",
"subsection_code": "03",
"ruling_date": "1918-01-01",
"tax_period": "2023-06-30",
"total_revenue": 3234567890,
"total_expenses": 3100234567,
"total_assets": 4567890123,
"total_liabilities": 1234567890,
"net_assets": 3333322233,
"officer_count": 15,
"top_compensated_officers": [
{
"name": "Jane Doe",
"title": "Chief Executive Officer",
"compensation": 687500
},
{
"name": "John Smith",
"title": "Chief Financial Officer",
"compensation": 425000
}
],
"mission_statement": "The American Red Cross prevents and alleviates human suffering in the face of emergencies...",
"website": "https://www.redcross.org",
"propublica_url": "https://projects.propublica.org/nonprofits/organizations/530196605",
"filing_year": 2023,
"form_type": "990"
}

Field Descriptions

FieldTypeDescription
einStringEmployer Identification Number (unique nonprofit ID)
nameStringOfficial organization name
cityStringCity where organization is located
stateStringTwo-letter state code
ntee_codeStringNTEE classification code (sector/subsector)
subsection_codeStringIRS tax-exempt subsection (e.g., "03" = 501(c)(3))
ruling_dateStringDate IRS granted tax-exempt status
tax_periodStringTax period end date for latest filing
total_revenueIntegerTotal revenue from latest 990 filing
total_expensesIntegerTotal functional expenses
total_assetsIntegerTotal assets at end of tax year
total_liabilitiesIntegerTotal liabilities at end of tax year
net_assetsIntegerNet assets (assets minus liabilities)
officer_countIntegerNumber of officers/directors listed in filing
top_compensated_officersArrayTop compensated officers with name, title, compensation
mission_statementStringOrganization mission statement
websiteStringOrganization website URL
propublica_urlStringLink to full ProPublica page for this org
filing_yearIntegerYear of the latest 990 filing
form_typeStringType of 990 form filed (990, 990-EZ, 990-PF)

Note: Fields may be null if not reported in the 990 filing. Small nonprofits (revenue < $50K) file Form 990-N which contains no financial data.

Pricing & Cost Calculator

Base price: $2 per 1,000 organizations

Use CaseOrgsFiling DataOfficersEstimated Cost
Quick foundation search25YesNo$0.05 (minimum)
Grant prospect research100YesNo$0.25
Sector benchmarking500YesYes$1.05
Comprehensive database build1,000YesYes$2.05
Large-scale analysis5,000YesYes$10.05

What's included:

  • ✅ No authentication or API keys required
  • ✅ No proxy costs (public API)
  • ✅ Automatic pagination handling
  • ✅ Error recovery and retry logic
  • ✅ Structured JSON output ready for analysis

Note: The actor is charged per organization returned, not per API request. The ProPublica API is free with no rate limits, so you only pay Apify's platform fee.

FAQ

Yes. IRS Form 990 filings are public records by law. ProPublica aggregates and provides this data for free via their API. You can use this data for research, journalism, commercial purposes, or any lawful purpose. Always verify data accuracy for critical decisions.

How current is the data?

ProPublica updates their database regularly as new 990 filings are processed by the IRS. Most nonprofits file annually, so the latest data is typically from the previous tax year. The IRS publishes filings with a ~6-12 month lag. Check the filing_year field to see when the data is from.

What's an NTEE code?

The National Taxonomy of Exempt Entities (NTEE) is a classification system for nonprofits developed by the National Center for Charitable Statistics. It categorizes organizations by mission and activities (e.g., "B" = Education, "E" = Health, "P" = Human Services). Use NTEE codes to filter searches by sector.

What if an organization has no 990 data?

Small nonprofits with annual gross receipts under $50,000 file Form 990-N ("e-Postcard"), which contains no financial information — just basic contact details. If includeFiling=true but no filing data is returned, the organization either:

  • Files 990-N (too small to report financials)
  • Is newly registered and hasn't filed yet
  • Has filing data not yet processed by ProPublica

The actor will still return basic org info (name, EIN, location) even if filing data is unavailable.

Can I search by EIN directly?

Yes! If you know an organization's EIN (Employer Identification Number), just use it as the searchQuery:

{
"searchQuery": "53-0196605",
"includeFiling": true,
"maxResults": 1
}

This is the fastest way to get data for a specific organization.

What's the difference between 990, 990-EZ, and 990-PF?

  • Form 990 — Standard form for larger nonprofits (annual gross receipts > $200K or assets > $500K)
  • Form 990-EZ — Shorter form for mid-size nonprofits (gross receipts < $200K and assets < $500K)
  • Form 990-PF — Private foundations (regardless of size)
  • Form 990-N — E-Postcard for very small nonprofits (receipts < $50K) — no financial data

The form_type field tells you which form was filed.

Why is includeOfficers slower?

When includeOfficers=true, the actor fetches detailed filing data for each organization, which requires an additional API request per org. This doubles the number of HTTP requests and increases runtime. Use this option only when you need officer/compensation data.

Can I filter by revenue range?

Yes, use the minRevenue parameter to set a minimum revenue threshold:

{
"searchQuery": "foundation",
"minRevenue": 10000000,
"maxResults": 100
}

This returns only organizations with total revenue >= $10 million. Note: Organizations without 990 filing data (small orgs filing 990-N) will be excluded if minRevenue is set.

Integration Examples

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run_input = {
"searchQuery": "cancer research",
"state": "CA",
"nteeCode": "E",
"minRevenue": 1000000,
"maxResults": 50,
"includeFiling": True,
"includeOfficers": False
}
run = client.actor("YOUR_USERNAME/nonprofit-990-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['name']} ({item['ein']})")
print(f" Revenue: ${item['total_revenue']:,}")
print(f" Net Assets: ${item['net_assets']:,}")
print(f" Location: {item['city']}, {item['state']}")
print(f" ProPublica: {item['propublica_url']}\n")

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const input = {
searchQuery: "environmental conservation",
state: "NY",
nteeCode: "C",
minRevenue: 500000,
maxResults: 100,
includeFiling: true
};
const run = await client.actor("YOUR_USERNAME/nonprofit-990-scraper").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((org) => {
console.log(`${org.name} (${org.ein})`);
console.log(` Revenue: $${org.total_revenue?.toLocaleString() || 'N/A'}`);
console.log(` Mission: ${org.mission_statement?.substring(0, 100)}...`);
console.log(` Website: ${org.website || 'N/A'}\n`);
});

Export to CSV

Use Apify's built-in dataset export to download results as CSV:

curl "https://api.apify.com/v2/datasets/{DATASET_ID}/items?format=csv" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-o nonprofits.csv

Excel / Google Sheets Integration

  1. Run the actor via Apify Console
  2. Go to the dataset results page
  3. Click "Export" → Choose CSV, JSON, or Excel format
  4. Import into Excel or Google Sheets for analysis

Data Sources

This actor retrieves data from:

ProPublica is a nonprofit investigative journalism organization. Their Nonprofit Explorer tool is free and publicly available.

Limitations & Notes

What this actor provides:

  • ✅ Search and filter 1.8M+ US nonprofits
  • ✅ Latest IRS Form 990 filing data (revenue, expenses, assets)
  • ✅ Officer names and compensation from 990 filings
  • ✅ Organization mission statements and websites
  • ✅ Historical filing data (latest filing only)

What this actor does NOT provide:

  • ❌ Multi-year historical trend analysis (only latest filing)
  • ❌ Detailed program expense breakdowns (beyond total expenses)
  • ❌ Grant recipient lists (990 Schedule I data not included)
  • ❌ Fundraising event details
  • ❌ Non-US nonprofits (US IRS filings only)

Data freshness:

  • IRS filings have a 6-12 month publication lag
  • ProPublica updates as new filings are published
  • Check filing_year field to see when data is from

Accuracy:

  • Data is sourced directly from IRS 990 filings
  • Organizations self-report financial data
  • Always verify critical information before making major decisions

Support & Feedback


Keywords & SEO

nonprofit scraper, 990 data API, nonprofit revenue lookup, IRS 990 scraper, nonprofit officer compensation, charity data extractor, nonprofit search API, tax-exempt organization data, foundation research tool, nonprofit financials API, charity navigator alternative, guidestar alternative, nonprofit intelligence, grant research tool, donor prospecting, nonprofit benchmarking, charity due diligence, nonprofit salary data, 501c3 lookup, nonprofit database


Built with ❤️ for nonprofit researchers, grant writers, fundraisers, and journalists.

Try it now → Search 1.8 million nonprofits in under 60 seconds!