Developers · Public data
The Grants API
Every grant in the US grantmaking universe — about 205,000 funders and 17.9 million grants, read straight from public IRS filings — behind a small JSON API. We built it for our own grants work and opened it for anyone.
Every endpoint takes an API key. Generating one is free and takes a minute — no card — and includes 50 calls a month, enough to try the whole surface. Building something that pulls at volume is where we ask you to pay: a paid plan raises it to 10,000 calls a month. See access & limits.
Get a free API keyNew · No code needed
Ask the data in plain English
Prefer not to touch the API? Ask a plain question and get a sourced answer with the chart to match, every figure traced back to the filing. Three free questions a day per visitor, then an API key.
Open the chatAuthentication
Send your key in an X-API-Key header (or as a Authorization: Bearer token — both work). Generate one from your account; it starts plinth_sk_. Keys are secrets — keep them server-side, never in browser JavaScript or a committed file.
curl -H "X-API-Key: $PLINTH_API_KEY" \ https://data.useplinth.com/api/grants/summary
Every response carries your remaining allowance, so you can back off before you hit the wall:
X-Calls-Limit: 50 X-Calls-Remaining: 37
- 401
- No key, or a key we don’t recognize.
- 402
- Monthly allowance spent, or the account is inactive. The
messagesays which.
Base URL
Everything lives under /api on this site. Responses are JSON and cached (the underlying data refreshes monthly) — cache on your side too: a repeat call is a repeat call against your allowance even when we serve it from memory.
# the whole universe, one call curl -H "X-API-Key: $PLINTH_API_KEY" https://data.useplinth.com/api/grants/summary
Grants
All four share the same filters (below). Combine them freely.
Aggregate totals for the filter — dollars, grant count, distinct funders and recipients — plus a year-by-year breakdown.
/api/grants/summary
Funders ranked by giving: total amount, grant count, recipients reached, and the years they were active.
/api/grants/funders?year=2023&sort_by=amount&limit=10
Recipients ranked by what they received, with location and how many funders backed them.
/api/grants/recipients?location=MA&year=2023
Individual grant rows — funder, recipient, amount, year, subject, description.
/api/grants/transactions?location=MA&min_amt=1000000&year=2023
Filters
- funder_id
- EIN of the grantmaker (any format; we normalize).
- recip_id
- EIN of the recipient organization.
- year
- Filing fiscal year, e.g. 2023.
- subject
- Cause area (NTEE major group).
- location
- Recipient US state, 2-letter (e.g. MA).
- min_amt / max_amt
- Grant amount band, in whole dollars.
- sort_by / sort_order
- amount | year, with asc | desc.
- page / limit
- Pagination; limit up to 1000.
Organizations
Compliance snapshot: exemption subsection, deductibility, foundation type, NTEE, IRS auto-revocation status, and an OFAC (Treasury SDN) sanctions name screen — refreshed monthly, so far fresher than the 990 financial data. The OFAC field is a triage signal (entity name screen only), not a sanctions determination.
/api/compliance/043407816
Core profile — name, location, NTEE classification, and a financials summary.
/api/essentials/043407816
Deeper profile — full financials plus the resolved geographic footprint.
/api/premier/043407816
Response shape
Every response is a small envelope. List endpoints return hits (the total for your filter) plus a results array; /grants/summary returns summary and by_year.
{
"code": 200,
"message": "Request was processed successfully!",
"hits": 143375,
"page": 1,
"limit": 10,
"results": [
{
"funder_ein": "...",
"funder_name": "FIDELITY INVESTMENTS CHARITABLE GIFT FUND",
"total_amount": 9310839472,
"grant_count": 72328,
"recipient_count": 41207,
"first_fiscal_year": 2017,
"last_fiscal_year": 2024
}
]
}Access & limits
What’s free, and where the paid line is — so a 402 never surprises you.
- REST endpoints (above) — 50/month on a free key
- Every
/grants/*and org endpoint counts one call, whatever the page size. A free key is enough to evaluate the API and run something small; the For consultants plan raises it to 10,000 a month, which is the tier for anything that syncs, backfills or runs on a schedule. Need more than that, or a bulk extract? Talk to us. - Plain-English analysis — three free a day, then a key
- The Ask-the-datachat gives each visitor three free questions per day; beyond that it needs a paid key. It’s metered separately from your API calls — running out of one doesn’t touch the other.
- Ad-hoc SQL (
/sql) — paid only - Arbitrary read-only SQL across the warehouse (the power behind cross-org questions) requires a paid key — there’s no free SQL tier. Available on a paid plan or via the Plinth × Claude connector. See pricing.
Figures come from public IRS filings and lag 12–24 months; the data refreshes monthly.