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.