foundation_grants
990-PF Part XV grant recipient data for S&P 500-linked foundations. Tier A. Grain: grant-filing (ein + object_id + recipient position). Includes recipient name, city, state, ZIP, country, grant amount, free-text purpose, and relationship. Filtered to confirmed crosswalk pairs. Source: IRS TEOS XML. Coverage: 2017-present.
tier aTier A: directly from IRS 990-PF XML. Grant descriptions are free-text; standardization not applied.
overview
overview
~632,000 grant-filing rows for S&P 500-linked foundations, 2018–2023. Includes recipient name, city, state, ZIP, country, amount, purpose, and relationship.
current vintage — 2023
history — Yes — 2017–2023 via IRS TEOS XML
provenance
source & licensing
authority
U.S. Internal Revenue Service
dataset
IRS TEOS 990-PF Part XV (Grants)
license
Public domain (U.S. Federal Government work)
citation
U.S. Internal Revenue Service (2025). Tax Exempt Organization Search (TEOS) XML.
schema
fields
| name | type | definition |
|---|---|---|
| cik | string | 10-digit zero-padded SEC CIK of the parent company. |
| company_name | string | Name of the S&P 500 parent company. |
| country_idkey | string | ISO alpha-2 country code for the filing foundation. Always US. |
| einkey | string | 9-digit EIN of the filing foundation (no dashes). |
| foundation_name | string | Name of the private foundation. |
| grant_amount_usd | float64 | Dollar amount of the grant or contribution. NULL in ~0.003% of rows. |
| is_foreign_recipient | bool | TRUE if the recipient has a foreign (non-US) address. |
| object_id | string | IRS TEOS unique filing identifier. Uniquely identifies one 990-PF return. |
| purpose | string | Free-text grant purpose as reported by the filer on 990-PF Part XV. Quality varies by filer. |
| recipient_city | string | City of the grant recipient. |
| recipient_country | string | ISO country code of the recipient. US for domestic grants; foreign ISO code for international grants. |
| recipient_ein | string | EIN of the recipient org, enriched via exact normalized-name + state match against IRS EO BMF. NULL when no clean match found — do not treat as "no EIN". |
| recipient_name | string | Name of the grant recipient as reported on 990-PF Part XV. NULL in ~0.03% of rows. |
| recipient_ntee_cd | string | NTEE code from IRS EO BMF, populated only when recipient_ein is non-NULL. |
| recipient_state | string | 2-char US state abbreviation of the recipient. NULL for foreign recipients (~1.2% of rows). |
| recipient_zip | string | ZIP code of the grant recipient. |
| relationship | string | Relationship between the foundation and the recipient as reported on the 990-PF (e.g. None or disqualified person). |
| tax_period | string | Tax period in YYYYMM format. |
| ticker | string | Stock ticker of the S&P 500 parent company. |
| yearkey | int64 | Calendar year derived from tax_period (first 4 chars). |
relationships
joins
primary key
ein, country_id, year
common joins
foundation_giving on (ein, year)
corporate_foundation_crosswalk on (ein)
usage
how to use this table
method
Parsed from Part XV of 990-PF XML files; filtered to EINs in corporate_foundation_crosswalk where confirmed=TRUE.
do not use for
Grants to individuals — 990-PF Part XV covers grants to organizations only.
last updated · Jul 7, 2026