Methodology · How we know this
How these figures are built
Every page on this site is assembled from public US IRS filings and government spending records. Nothing is licensed from a directory and nothing is hand-entered. This page is the standing reference for how the raw filings become the grant figures, funder profiles, government-funding layers, board and asset layers, and the co-funder graph, and for the limits we hold ourselves to.
The short version
- Every figure read from a filing links to that filing. Computed measures, including identity resolution, concentration and the network layers, are documented on this page and reproducible through the API. Data from outside the filings is named where it appears.
- Filings lag roughly 12 to 24 months, so every filing-derived figure is dated to the fiscal year it comes from, not to today.
- Grant relationships are reconciled by EIN from the filings we have parsed; an organization that does not e-file may be absent.
- Electronic filing became mandatory for tax years beginning after July 2019, and this corpus is built from e-filed returns only. FY2017–2019 therefore hold fewer filers than the sector contained — funder count rose 21.7% in FY2020 alone against 2–5% in the years after — so a year-over-year comparison that spans FY2020 measures the filing mandate as much as it measures giving. Compare FY2020 onward.
- We report grantee outcomes as association with sustained funding, never as caused by a funder.
- Low-confidence name matches are suppressed rather than guessed, and pages with too little data are left out of search indexes.
- How well that matching works is measured rather than asserted: /data-quality publishes the resolver's precision against held-out filer-supplied EINs, alongside how much of the graph came from filers versus our own matching. How the matching itself works is on /matching.
- Charitable-status screening looks an EIN up across seven IRS, Treasury and California files. A missing source reports not screened, never clear. How that works: /screening.
- Federal (USAspending.gov) and state government funding to nonprofits is layered in where it can be matched to an organization; coverage is partial and every amount is dated to its award year.
The sources
The spine is the IRS Form 990 / 990-EZ / 990-PF e-file XML: the machine-readable returns the IRS publishes for electronically-filed nonprofit and private-foundation tax returns. To those we add the IRS Business Master File for organization identity (name, EIN, location, ruling), and the Pub 78 and automatic-revocation lists for tax-deductible status. Sanctions screening uses the OFAC Specially Designated Nationals list. Those are all primary government data.
The filings are not the only source, and the rest are not all government. The need overlay draws on Census ACS and SAIPE, CDC PLACES, the USDA Food Access Research Atlas, Eviction Lab at Princeton, and the Opportunity Atlas tables the Census Bureau publishes. Government funding comes from USAspending and nine state transparency portals. Partnerships are extracted by a language model from organization websites and public news, and portfolio themes come from text embeddings. Several of those are modeled estimates rather than measured counts, and one describes a birth cohort from the early 1980s. Every source is listed with its publisher, how it joins, and where it stops being reliable.
Grants and recipients
Grants are read from the grant schedules inside each filing: Form 990 Schedule I and Form 990-PF Part XV. Each recipient is reconciled to its EIN where the filing reports one, which is what lets us link a funder to the recipient’s own filings and to other funders of the same organization.
Where the filer supplies no EIN, we resolve the name ourselves. This is a large share of the corpus: it is the difference between a key join and an inference. The recipient name, city and state are matched against IRS organization records; a match is kept only when it clears a confidence threshold, and below that the recipient stays a named, unlinked record rather than a guess. So the graph is part deterministic and part resolved, and a resolved edge is a judgement we have measured rather than a fact the filer stated. How much of the graph came from each, and the precision of the matching against held-out filer-supplied EINs, are published on data quality. How that matching works, and which grants no resolver could link, is on matching.
Charitable status screens
Separately from the grant graph, the API looks an organization up across seven public IRS, Treasury and California files before a grant is made: exemption status, Publication 78, auto-revocation, OFAC, the Internal Revenue Bulletin, and California registration. Three of those files join on EIN; the rest can only match a name. A source that is not on disk reports not screened, never clear. How the screen works is on the screening page.
Government funding (federal and state)
Alongside private grantmaking, we layer in government funding to nonprofits. Federal awards come from USAspending.gov, the official record of federal spending: prime grants and contracts (and first-tier subawards) to an organization, by agency, program, and year. USAspending identifies recipients by their federal UEI (and legacy DUNS), not by EIN, so the link to a nonprofit’s 990 identity is a confidence-scored name-and-location match rather than a key join: coverage is partial by design and we favor precision over recall, omitting an award rather than attaching it to the wrong organization.
State funding is pulled from individual state-government transparency portals, grants and payments from state agencies to nonprofits, and matched to the recipient by EIN where the portal publishes one. There is no national standard, so each state is a separate source and coverage varies from state to state; an absent state means we have not yet ingested it, not that no funding exists. As with every figure here, government amounts are dated to the award or fiscal year they come from.
Classification and geography
Grants are classified into cause areas using the IRS National Taxonomy of Exempt Entities (NTEE), and a foundation’s service area is resolved against a place gazetteer to county (FIPS) level where the filing and website support it. Both are confidence-tiered; inferences that rest on weak evidence are framed as questions or withheld.
The co-funder graph
Two funders are linked when their filings report grants to the same recipients. A link’s strength is a shrinkage-adjusted co-funding rate, so a single shared grantee does not read as a strong tie. The graph is a map of association, shared grantees, and not a claim of coordination between funders.
Boards and people
Every Form 990 lists an organization’s officers, directors, trustees, and key employees (Form 990 Part VII, and the equivalent schedule on 990-PF and 990-EZ). We read that roster directly, which is what lets us show who governs a funder and, by matching the same person across organizations, where boards interlock. People are matched on normalized name and, where the filing supports it, address; a shared-trustee link is read as association, evidence that two organizations share governance, never an inference about what was decided between them. Common names are matched conservatively and a thin or ambiguous match is withheld rather than asserted.
Assets and investments
For private foundations, the 990-PF balance sheet and investment schedules report what the endowment holds. We read the itemized holdings, named funds, managers, and securities, and group them into asset classes and recurring entities so a foundation’s portfolio can be summarized and compared with its peers. Holding names on a tax form are inconsistent, so the entity grouping is a confidence-scored match, corroborated across filings where possible; an uncertain holding is left unclassified rather than misattributed. These figures describe what the most recent filing reported and are dated to it.
Dating and provenance
IRS e-file data is released on a lag, so a filing for a given fiscal year typically becomes available 12–24 months later. Every figure is dated to the fiscal year it comes from. Where a foundation’s most recent filing names no grant recipient (grants abroad are filed by region only, and grants under $5,000 are not itemized), we show its most recent year of named grant activity and say so. Each displayed figure links back to the specific filing it was read from.
Named individuals
Some 990-PF filers report grants to peoplerather than organizations: a scholarship, a hardship-fund award. We withhold the name rather than publish it beside a dollar amount; the dollars still count in every total on the page. What’s withheld, why, and how to reach us about it is on redactions. What the filings will not support however good the matching gets is on known limitations.
What we don’t claim
We never state that a foundation caused a grantee’s outcome. Grantee achievements come from each organization’s own program-service reporting and are read as association with sustained funding. We do not infer numbers the filings do not contain. And provocative, sector-level findings are shown only as aggregate distributions, never as an unflattering ranking aimed at a named organization. For the data behind these pages, see the free Grants API; for terms of art, the glossary.
Questions and answers
- Where does the data come from?
- Public IRS filings: the Form 990, 990-EZ, and 990-PF e-file XML that the IRS releases, plus the IRS Business Master File for organization identity, and the Pub 78 and automatic-revocation lists for tax status. No data is licensed from a third-party directory; everything is read from the primary government source.
- How are grants and recipients matched?
- Grants are read from the grant schedules of each filing (Form 990 Schedule I and Form 990-PF Part XV). Where the filer supplies the recipient's EIN we use it. Where the filer does not, about a third of the corpus, we resolve the name ourselves against IRS organization records, and the match is kept only when it clears a confidence threshold; below it the recipient stays a named, unlinked record rather than a guess. Both the share we resolved and the measured precision of that matching are published on the data-quality page.
- How is the co-funder graph built?
- Two funders are linked when their filings report grants to the same recipients. The strength of a link is a shrinkage-adjusted co-funding rate, so thin evidence pulls toward no signal rather than overstating a tie. Overlap is association: evidence of a shared grantee, not proof of coordinated intent.
- Do you include government (federal and state) funding?
- Yes. Federal awards to nonprofits come from USAspending.gov, the official federal spending record, covering prime grants and contracts (and first-tier subawards) by agency, program and year. Because USAspending identifies recipients by UEI rather than EIN, the link to an organization is a confidence-scored name-and-location match, so coverage is partial by design. State funding is pulled from individual state-government transparency portals and matched by EIN where available; there is no national standard, so coverage varies by state and an absent state simply means we have not yet ingested it.
- Why might a figure look out of date?
- The IRS releases e-file data on a lag, and a foundation's most recent filing may name no grant recipient even where it reports grant expense: grants abroad are filed by region only (Schedule F), grants under $5,000 are not itemized, and some grants sit on a paper schedule. Where that happens we show the most recent year of named grant activity and label the figure with its fiscal year.
- Where do the board and asset figures come from?
- Both are read from the same primary filings. Officers, directors, and trustees come from Form 990 Part VII (and the equivalent 990-PF/990-EZ schedule); matching the same person across organizations is how board interlocks are surfaced, always as association rather than coordination. For private foundations, itemized investment holdings come from the 990-PF balance sheet and investment schedules, grouped into asset classes and recurring entities by a confidence-scored match. An uncertain holding is left unclassified rather than guessed.
- How does the compliance screen work?
- GET /api/screening/{ein} looks an organization up across seven public files from the IRS, Treasury and California: exemption status, Publication 78, auto-revocation, OFAC, the Internal Revenue Bulletin, and California registration. Three of those files join on EIN; the rest can only match a name. A source that is not on disk reports not screened, never clear. The full write-up is on the compliance page.
- What do you deliberately not claim?
- We do not claim a foundation caused a grantee's outcome. We do not invent figures: every number is derived from a filing or a named source, and the derived ones — recipient matching, financial-health flags, the funded-versus-unfunded comparison — are labelled as ours and published with their measured precision on /data-quality, because they are inferences rather than things a filing states. And we do not build pages whose purpose is to rank named organizations unflatteringly; where a measure about a named organization is unflattering, it is filing-derived and shown with the basis it rests on, not offered as an opinion. Sector-level provocative findings are published as aggregate distributions.