OrbTop

IRS Form 990-PF Private Foundation Scraper - Grant Detail

BUSINESSOTHERDEVELOPER TOOLS

IRS Form 990-PF Scraper — Private Foundation Grants

Parse IRS Form 990-PF filings for private foundation grant detail — recipient name, address, purpose, and dollar amount — directly from the IRS open-data portal. Covers ~120,000 private foundations filing annually. No API key, no proxy, no browser required.

What does the IRS Form 990-PF Scraper do?

Part XV is the schedule on Form 990-PF where private foundations disclose each grant recipient, the stated purpose, and the dollar amount paid. This scraper downloads the IRS bulk XML archives for a given filing year, filters for 990-PF returns, and parses every filing's Part XV grant rows alongside foundation header and financial data.

This actor targets Form 990-PF (private foundations) specifically. It is distinct from nonprofit scrapers that target Form 990 (public charities) — the schemas are different and the grant detail in Part XV is the core payload.

The IRS publishes 990-series XML files as bulk ZIP archives at irs.gov/charities-non-profits/form-990-series-downloads. Each archive contains thousands of XML files, one per return.

Estimated platform cost

The default memory is 2,048 MB and a full-year scan runs for approximately 1 hour. On Apify's standard compute pricing, a single full-year scan of all 990-PF filings costs roughly $2–4. Use maxItems and state/name filters to reduce scope and cost for targeted pulls.

What data does it extract?

Each record represents one foundation's 990-PF filing for a given tax year.

Field Type Description
foundation_ein string Foundation EIN (9-digit)
foundation_name string Foundation legal name
filing_year number Tax year of this filing
return_type string Always 990PF
foundation_address string Street address
foundation_city string City
foundation_state string 2-letter state code
foundation_zip string ZIP code
total_assets_eoy number Total assets at year-end (USD)
total_revenue number Total revenue for the year (USD)
total_grants_paid number Qualifying distributions paid (USD)
investment_income number Net investment income (USD)
excise_tax_paid number Excise tax on investment income (USD)
trustee_count number Number of trustees/officers listed
trustees array name|title|compensation per trustee
grant_count number Number of Part XV grant recipients
grants array recipient|address|purpose|amount per grant — the primary payload
source_xml_url string IRS ZIP batch URL
source_file string XML filename within the ZIP
scraped_at string ISO 8601 scrape timestamp

Which fields are populated in each mode:

  • grants_by_year and foundation_lookup — all fields populated including grants array
  • grants_by_recipient — same full schema; only foundations that have a Part XV entry matching recipientName are returned
  • The grants array is the main payload in all modes; grant_count: 0 means the foundation reported no Part XV distributions in that year

How to use it

Three modes:

{
  "mode": "grants_by_year",
  "filingYear": 2024,
  "stateFilter": "CA",
  "minGrantAmount": 100000,
  "maxItems": 50
}
{
  "mode": "foundation_lookup",
  "einList": ["13-1803509", "23-7129889"],
  "filingYear": 2024
}
{
  "mode": "grants_by_recipient",
  "recipientName": "Red Cross",
  "filingYear": 2024,
  "maxItems": 20
}
Field Type Description
mode string grants_by_year, foundation_lookup, or grants_by_recipient
filingYear integer Tax year to pull (e.g. 2024)
einList array EINs for foundation_lookup mode
foundationName string Filter by foundation name substring
recipientName string Filter by grant recipient name substring
stateFilter string Two-letter state code (e.g. CA)
minGrantAmount integer Only include foundations with total_grants_paid above this threshold
maxItems integer Maximum foundation records to return

Use cases

  • Grant writers — Identify which private foundations have funded projects in your sector. Use grants_by_recipient with a peer organization's name to find funders you haven't approached yet.
  • Foundation prospect research — Build a grant landscape for a client: which funders are active in a given state and sector, and how much are they distributing year over year.
  • Nonprofit fundraising teams — Pull multi-year filings for target foundations to understand grant size patterns and cycles before making an approach.
  • Grant-research SaaS platforms — Feed structured Part XV data into foundation search features without building an IRS XML parser.
  • Journalism and investigation — Trace grant flows from a specific foundation across years and grantees to document funding patterns.

FAQ

Is IRS 990-PF data public? Yes. The IRS publishes all 990-series XML filings as open data under the TEOS (Tax-Exempt Organization Submission) program. No login or API key is required.

How current is the data? IRS publishes TEOS data for the current and prior tax years. Data for the most recent year typically appears a few months after year-end. Filings for 2024 are generally available by mid-2025.

What export formats are available? Apify supports JSON, CSV, and Excel export from the dataset view. The grants array exports as a JSON column in CSV mode.