funder-graph

Open datasets, served as objects

Everything under this domain is a file in a public bucket: Parquet you can query over HTTPS with range requests, JSON manifests with sizes and SHA-256 checksums, and nothing that needs an account. There is no listing API; each dataset's manifest is the list.

funder-graph — the open 990 funding graph

Every grant a US foundation or grantmaking charity reported paying on Form 990-PF or Form 990 Schedule I, with recipients resolved to IRS-listed organizations and a match tier on every row. Rendered as pages at funders.opengrants.io; source and schema at github.com/egeria-corporation/funder-graph.

Current version
2026.09.0 · built 2026-09-08 · latest/manifest.json
Grant rows
15,301,816
Filing years
2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026
License
Apache-2.0

Versions

Query it

One object per filing year, listed explicitly, because HTTP has no directory listing. Paste into DuckDB (or shell.duckdb.org):

INSTALL httpfs; LOAD httpfs;
SELECT funder_name, recipient_name_raw, amount_usd, tax_year
FROM read_parquet(
  [ 'https://data.opengrants.io/funder-graph/latest/grants/filing_year=2019/part-0000.parquet',
    'https://data.opengrants.io/funder-graph/latest/grants/filing_year=2020/part-0000.parquet',
    'https://data.opengrants.io/funder-graph/latest/grants/filing_year=2021/part-0000.parquet',
    'https://data.opengrants.io/funder-graph/latest/grants/filing_year=2022/part-0000.parquet',
    'https://data.opengrants.io/funder-graph/latest/grants/filing_year=2023/part-0000.parquet',
    'https://data.opengrants.io/funder-graph/latest/grants/filing_year=2024/part-0000.parquet',
    'https://data.opengrants.io/funder-graph/latest/grants/filing_year=2025/part-0000.parquet',
    'https://data.opengrants.io/funder-graph/latest/grants/filing_year=2026/part-0000.parquet' ],
  hive_partitioning = 1
)
WHERE amount_type = 'paid'
ORDER BY amount_usd DESC
LIMIT 25;

Conventions

Paths are /<dataset>/<version>/…. Versions are YYYY.MM.PATCH; latest/ is a copy of the current version and moves. Pin a version for anything you will be asked to reproduce. Every object supports HTTP range requests, so a Parquet reader pulls only the row groups it needs.

A health check lives at /funder-graph/healthcheck.txt.

This is informational only, derived from public data on the dates shown. It is not an eligibility determination, and not legal, tax, or accounting advice. Verify against the official source before relying on it.