GrantAtlas API
GrantAtlas is a read-only public API for nonprofit organization profiles, IRS filing metadata, normalized financials, and grant relationships. Search990 hosts the public beta at https://www.search990.com/api.
Overview
All endpoints return JSON and can be opened directly in a browser address bar. The public API follows a resource layout inspired by ProPublica's Nonprofit Explorer API: organizations are keyed by EIN, filings are searchable, and grants can be queried from either side of the funder-recipient relationship.
Copy-Paste Examples
These examples cover the currently available public GrantAtlas resources. Each URL is clickable and can also be copied directly into a browser.
List source filings for one nonprofit.
https://www.search990.com/api/orgs/770165029/filings?limit=2List outbound grants for one nonprofit.
https://www.search990.com/api/orgs/770165029/grants-made?limit=5List inbound matched grants for one nonprofit.
https://www.search990.com/api/orgs/770165029/grants-received?limit=5Search filing metadata by EIN.
https://www.search990.com/api/filings?ein=770165029&limit=5Search funder, recipient, and purpose text.
https://www.search990.com/api/grants?q=Central%20Fund%20of%20Israel&limit=25Search by purpose and recipient state.
https://www.search990.com/api/grants?purpose_contains=scholarship&recipient_state=MA&limit=25Stable lookup for a large funder.
https://www.search990.com/api/grants?grantor_ein=770165029&limit=25Stable lookup for a matched recipient.
https://www.search990.com/api/grants?recipient_ein=132992985&limit=25Filter by minimum and maximum dollars.
https://www.search990.com/api/grants?min_amount=10000&max_amount=250000&limit=25Filter by filing year and minimum amount.
https://www.search990.com/api/grants?year=2023&min_amount=25000&limit=25Return hosted count metadata for grant search.
https://www.search990.com/api/grants?recipient_state=NY&min_amount=10000&total_only=1List reported contributors to one private foundation by foundation EIN.
https://www.search990.com/api/contributors/880561746?limit=3&include_total=1Filter contributor rows by year and minimum amount.
https://www.search990.com/api/contributors/880561746?year=2024&min_amount=500&limit=10https://www.search990.com/api/grants?recipient_state=NY&limit=25&cursor=<next_cursor-from-previous-response>Pagination
Collection responses return results, next_cursor, and meta. Treat the cursor as opaque: pass it back as cursor to request the next page.
| Parameter | Type | Notes |
|---|---|---|
| results | array | Current page of records. |
| next_cursor | string | null | Pass this value back as cursor for the next page. |
| meta.resource | string | Collection name, such as organizations, filings, or grants. |
| meta.limit | number | Resolved page size. |
| meta.count | number | Number of rows in this page. |
Search Organizations
/api/orgsSearch indexed organization profiles by text, geography, NTEE, type, grant role, and financial size.
| Parameter | Type | Notes |
|---|---|---|
| q | string | Organization name, EIN, or city search text. |
| state | US state | Two-letter state filter. |
| ntee | string | NTEE code prefix, such as B or T20. |
| type | string | Organization type: PC, PF, or N-filer. |
| category | string | Indexed organization category. |
| role | string | Grant role filter: given or received. |
| revenue_min | number | Minimum latest revenue. |
| revenue_max | number | Maximum latest revenue. |
| assets_min | number | Minimum latest assets. |
| assets_max | number | Maximum latest assets. |
| grants_paid_min | number | Minimum total grants given. |
| sort | string | name, revenue, assets, grants_given, or grants_received. |
| cursor | string | Opaque cursor from next_cursor. |
| limit | number | Rows per page. Default 25, maximum 100. |
https://www.search990.com/api/orgs?state=CA&type=PC&sort=grants_given&limit=10Organization Profile
/api/orgs/{ein}Return a single organization profile, latest filing summary, grant totals, and related resource links.
https://www.search990.com/api/orgs/770165029Financials
/api/orgs/{ein}/financialsReturn normalized authoritative financial rows for an organization when normalized filing data is available.
| Parameter | Type | Notes |
|---|---|---|
| from | number | Earliest tax year to include. |
| to | number | Latest tax year to include. |
/api/orgs/{ein}/financialsList normalized financial years./api/orgs/{ein}/financials/{year}Retrieve one normalized financial year.https://www.search990.com/api/orgs/770165029/financials
https://www.search990.com/api/orgs/770165029/financials?from=2020&to=2024
https://www.search990.com/api/orgs/770165029/financials/2023Filings
/api/filingsSearch IRS filing metadata globally, or list filings for a specific organization.
| Parameter | Type | Notes |
|---|---|---|
| q | string | Filing organization name, EIN, or IRS object id. |
| object_id | string | Exact IRS filing object id. |
| ein | EIN | Filter filings to one organization. |
| form_type | string | Filter by normalized form type, such as 990 or 990-PF. |
| tax_year | number | Filter to one tax year. |
| posting_year | number | IRS posting year. |
| cursor | string | Opaque cursor from next_cursor. |
| limit | number | Rows per page. Default 25, maximum 100. |
/api/orgs/{ein}/filingsList filings for one organization.https://www.search990.com/api/filings?ein=770165029&limit=5
https://www.search990.com/api/filings?form_type=990&tax_year=2024&limit=5
https://www.search990.com/api/orgs/770165029/filings?limit=5Grants
/api/grantsSearch grant relationships by funder, recipient, purpose, category, amount, state, and year. Organization-scoped grant routes expose made and received views.
| Parameter | Type | Notes |
|---|---|---|
| q | string | Broad discovery text over grantor, recipient, and purpose fields. |
| purpose_contains | string | Purpose substring match. |
| grantor_ein | EIN | Nine-digit funder EIN. Best option for large funders. |
| recipient_ein | EIN | Nine-digit recipient EIN when the recipient has been matched. |
| recipient_state | US state | Two-letter recipient state code. |
| recipient_type | string | Recipient classification when available. |
| category | string | Grant category when available. |
| min_amount | number | Minimum grant amount in dollars. |
| max_amount | number | Maximum grant amount in dollars. |
| year | number | Filing tax year. |
| cursor | string | Opaque cursor from next_cursor. |
| limit | number | Rows per page. Default 25, maximum 100. |
| include_total | boolean | Return rows plus hosted count metadata. |
| total_only | boolean | Return count metadata without grant rows. |
Hosted count metadata
| Parameter | Type | Notes |
|---|---|---|
| meta.current_page | number | Decoded from cursor offset when available. |
| meta.page_size | number | Resolved page size for the hosted route. |
| meta.total_results | number | Hosted grant count scan, capped at 250. |
| meta.total_pages | number | Computed from total_results and page_size. |
| meta.total_is_exact | boolean | False when the count reaches the current scan cap. |
/api/grants/{grant_id}Retrieve one grant by GrantAtlas id./api/grants/summaryRetrieve summary metrics. Facets are beta./api/orgs/{ein}/grants-madeList outbound grants for one organization./api/orgs/{ein}/grants-receivedList inbound matched grants for one organization.https://www.search990.com/api/grants?purpose_contains=scholarship&recipient_state=MA&limit=25
https://www.search990.com/api/grants?grantor_ein=770165029&limit=25
https://www.search990.com/api/grants?recipient_ein=132992985&limit=25
https://www.search990.com/api/grants/3145754
https://www.search990.com/api/grants/summary
https://www.search990.com/api/orgs/770165029/grants-made?year=2023&min_amount=10000&limit=25
https://www.search990.com/api/orgs/770165029/grants-received?limit=25
https://www.search990.com/api/grants?recipient_state=NY&min_amount=10000&total_only=1Contributors
/api/contributors/{ein}Return Schedule B contributors reported by a private foundation, keyed by the foundation EIN. Contributor data appears where Schedule B e-file data exists in the indexed corpus.
| Parameter | Type | Notes |
|---|---|---|
| year | number | Filing year. |
| min_amount | number | Minimum contribution amount in dollars. |
| asset_class | string | Parsed asset class when available. |
| include_total | boolean | Return exact total_results and total_pages metadata. |
| cursor | string | Opaque cursor from next_cursor. |
| limit | number | Rows per page. Default 25, maximum 100. |
https://www.search990.com/api/contributors/880561746?limit=3&include_total=1
https://www.search990.com/api/contributors/880561746?year=2024&min_amount=500&limit=10
https://www.search990.com/api/contributors/880561746?asset_class=stock&limit=10Objects
The public API uses normalized linked objects where possible. Organization links in API responses point back to public /api/orgs/... routes.
{
"results": [],
"next_cursor": null,
"meta": {
"resource": "grants",
"limit": 25,
"count": 0
}
}{
"grant_id": "3145754",
"amount": "3850",
"purpose": "Scholarship",
"category": null,
"recipient_type": null,
"recipient_state": "MA",
"payment_status": "paid_during_year",
"match_confidence": null,
"grantor": { "ein": "387196567", "name": "Kohlberg Foundation", "href": "/api/orgs/387196567" },
"recipient": { "ein": "...", "name": "...", "href": "/api/orgs/..." },
"filing": { "object_id": "...", "tax_year": 2023 }
}Grant result fields
| Parameter | Type | Notes |
|---|---|---|
| grant_id | string | number | null | GrantAtlas grant identifier. |
| amount | number-string | number | Grant amount in dollars. |
| purpose | string | null | Purpose text from the source filing. |
| category | string | null | Normalized category when available. |
| recipient_type | string | null | Recipient classification. |
| recipient_state | string | null | Recipient state code. |
| payment_status | string | null | Payment status reported or inferred from the source. |
| match_confidence | number | null | Recipient match confidence when available. |
| grantor | linked organization | ein, name, and href. |
| recipient | linked organization | ein, name, and href. |
| filing | object | Source object_id and tax_year. |
{
"contribution_id": "...",
"object_id": "...",
"org_ein": "880561746",
"org_name": "Mid Florida Youth Conference",
"filing_year": 2024,
"contributor_name": "Polk Sports Alliance",
"contributor_city": null,
"contributor_state": null,
"amount": "500",
"cash_bool": true,
"asset_class": null
}Contributor result fields
| Parameter | Type | Notes |
|---|---|---|
| contribution_id | string | number | null | GrantAtlas contribution identifier. |
| object_id | string | null | Source IRS filing object id. |
| org_ein | EIN | Private foundation EIN. |
| org_name | string | null | Private foundation name. |
| filing_year | number | null | Filing year. |
| contributor_number | string | number | null | Reported Schedule B contributor number. |
| contributor_name | string | null | Reported contributor name. |
| contributor_city | string | null | Reported contributor city. |
| contributor_state | string | null | Reported contributor state. |
| amount | number-string | number | null | Contribution amount in dollars. |
| cash_bool | boolean | null | Whether the contribution was reported as cash. |
| description_raw | string | null | Raw noncash description when present. |
| noncash_fmv | number-string | number | null | Reported fair-market value. |
| date_received | string | null | Reported date received. |
| asset_class | string | null | Parsed asset class when available. |
| quantity | string | number | null | Parsed quantity when available. |
| unit | string | null | Parsed unit when available. |
| security_name | string | null | Parsed security name when available. |
| ticker_or_class | string | null | Parsed ticker or security class when available. |
| donor_match_confidence | number | null | Contributor matching confidence when available. |
Planned Enhancements
The public beta already exposes the richer GrantAtlas resource surface. These are the next features that would make it easier to build external tools on top of it.
| Route | Status | Notes |
|---|---|---|
| Native exact counts | Planned | Expose uncapped total_results and total_pages for collection endpoints. |
| Grant detail | Available | GET /api/grants/{grant_id} supports permalinks and reconciliation workflows. |
| Recipient-name filters | Planned | Add recipient_name and grantor_name filters for unmatched recipient rows. |
| Facets and summaries | Beta | GET /api/grants/summary supports summary metrics; include_facets=1 is still settling. |
| Exports | Planned | Support CSV or async export jobs for large result sets. |
Status
This page reflects the hosted public GrantAtlas API under https://www.search990.com/api. The app may not yet have frontend screens for every endpoint listed here.
| Route | Status | Notes |
|---|---|---|
| GET /api/orgs | Available | Organization search endpoint. |
| GET /api/orgs/{ein} | Available | Organization profile by EIN. |
| GET /api/orgs/{ein}/financials | Available | Normalized financial rows when available. |
| GET /api/orgs/{ein}/financials/{year} | Available | Single normalized financial year. |
| GET /api/orgs/{ein}/filings | Available | Organization filing pages. |
| GET /api/orgs/{ein}/grants-made | Available | Outbound grants. |
| GET /api/orgs/{ein}/grants-received | Available | Inbound matched grants. |
| GET /api/filings | Available | Filing metadata search. |
| GET /api/grants | Available | Grant relationship search. |
| GET /api/grants/{grant_id} | Available | Grant detail permalink. |
| GET /api/grants/summary | Available | Grant summary and facets. |
| GET /api/contributors/{ein} | Available | Schedule B contributors by foundation EIN. |
| GET /api/health | Available | Availability check. |
| GET /openapi.json | Available | Public OpenAPI schema for the hosted API. |