GrantAtlas API
GrantAtlas is a read-only public API for nonprofit organization profiles, IRS filing metadata, normalized financials, grant relationships, and reported Schedule B contributors. The current corpus exposes a full decade of queryable filing metadata and source XML access. Search990 hosts a same-origin proxy at https://www.search990.com/api; the direct AWS API is https://5qlkc2dh07.execute-api.us-east-2.amazonaws.com.
Overview
Public discovery endpoints are open: /, /health, /v1/health, and /openapi.json. Direct AWS data calls require x-api-key. Search990's /api routes proxy those calls server-side so the frontend can avoid exposing the key and can work around current browser CORS limits on the direct API.
content-type, while authenticated browser calls need x-api-key. Use Search990's backend proxy or update AWS CORS to allow the API key header before calling AWS directly from a browser.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=5Open the source IRS XML for one filing.
https://www.search990.com/api/filings/202500149349300050/xmlRead Form 990 Part IX expense line items.
https://www.search990.com/api/filings/202500149349300050/expense-breakdownSearch funder and recipient names.
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=1Search reported Schedule B contributors globally.
https://www.search990.com/api/contributors?q=stock&min_amount=10000&limit=10Filter 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 | Resource name, such as organizations, filings, or grants. |
| meta.limit | number | Resolved page size. |
| meta.count | number | Number of rows in this page. |
| meta.total_results | number | Total matching rows when requested or available. |
| meta.total_pages | number | Total pages at the resolved limit. |
| meta.total_is_exact | boolean | Whether total_results is exact. |
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./api/filings/{object_id}/xmlOpen the raw IRS XML for one filing. Direct AWS returns a five-minute signed S3 redirect./api/filings/{object_id}/expense-breakdownReturn source-filing Form 990 Part IX expenses, including salaries and wages.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=5
https://www.search990.com/api/filings/202500149349300050/xml
https://www.search990.com/api/filings/202500149349300050/expense-breakdownGrants
/api/grantsSearch grant relationships by funder, recipient, purpose, category, payment status, matching confidence, amount, recipient city/state, and year. Organization-scoped grant routes expose made and received views.
| Parameter | Type | Notes |
|---|---|---|
| q | string | Funder and recipient name search. |
| purpose_contains | string | Purpose substring match. |
| grantor_ein | EIN | Nine-digit funder EIN. Best option for large funders. |
| grantor_name | string | Grantor name filter. |
| grantor_state | US state | Two-letter grantor state code. |
| grantor_ntee | string | Grantor NTEE code prefix. |
| recipient_ein | EIN | Nine-digit recipient EIN when the recipient has been matched. |
| recipient_name | string | Recipient name filter. |
| recipient_city | string | Recipient city filter. |
| recipient_state | US state | Two-letter recipient state code. |
| recipient_country | string | Recipient country filter. |
| recipient_ntee | string | Recipient NTEE code prefix when matched. |
| recipient_type | string | Recipient classification when available. |
| category | string | Grant category when available. |
| payment_status | string | Payment status, such as paid_during_year. |
| matched | boolean | Use 1 for matched recipients or 0 for unmatched rows. |
| min_match_confidence | number | Minimum recipient match confidence. |
| min_amount | number | Minimum grant amount in dollars. |
| max_amount | number | Maximum grant amount in dollars. |
| year | number | Filing tax year. |
| sort | string | newest, amount, year, recipient, or grantor. |
| include_total | boolean | Return total_results and total_pages metadata. |
| format | string | Use csv to return the current filtered page as CSV. |
| cursor | string | Opaque cursor from next_cursor. |
| limit | number | Rows per page. Default 25, maximum 100. |
| 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?recipient_city=Detroit&year=2024&min_amount=500000&limit=25
https://www.search990.com/api/grants/3145754
https://www.search990.com/api/grants/summary
https://www.search990.com/api/grants/summary?include_facets=1
https://www.search990.com/api/grants?recipient_state=MA&format=csv&limit=100
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/contributorsSearch reported Schedule B contributions globally or scope the same search to one receiving private foundation by EIN. Contributor data appears where Schedule B e-file data exists in the indexed corpus.
| Parameter | Type | Notes |
|---|---|---|
| q | string | Broad contributor, foundation, recipient, description, or security text. |
| recipient_ein | EIN | Receiving foundation EIN. |
| org_ein | EIN | Alias for the receiving foundation EIN. |
| foundation_ein | EIN | Alias for the receiving foundation EIN. |
| contributor_name | string | Reported contributor name. |
| contributor_state | US state | Reported contributor state. |
| foundation_name | string | Receiving foundation name. |
| recipient_name | string | Alias for receiving foundation name. |
| description_contains | string | Substring search over noncash descriptions. |
| security_name | string | Parsed security name filter. |
| ticker | string | Parsed ticker or class filter. |
| year | number | Filing year. |
| min_amount | number | Minimum contribution amount in dollars. |
| max_amount | number | Maximum contribution amount in dollars. |
| asset_class | string | Parsed asset class when available. |
| sort | string | amount, newest, contributor, or foundation. |
| 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. |
/api/contributorsSearch reported contributors globally./api/contributors/{ein}Search contributors scoped to one foundation.https://www.search990.com/api/contributors?q=stock&min_amount=10000&limit=10
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. |
Capabilities
The public beta now exposes the richer GrantAtlas resource surface, including exact or indicated totals, CSV pages for grants, grant facets, contributor search, and source filing XMLs.
| Route | Status | Notes |
|---|---|---|
| Collection totals | Available | Collection metadata includes total_results, total_pages, and total_is_exact when available. |
| Grant detail | Available | GET /api/grants/{grant_id} supports permalinks and reconciliation workflows. |
| Recipient-name filters | Available | Grant search supports recipient_name and grantor_name filters. |
| Facets and summaries | Beta | GET /api/grants/summary supports summary metrics; include_facets=1 returns capped facets. |
| Grant CSV | Available | GET /api/grants?format=csv returns the current page. |
| Source XMLs | Available | GET /api/filings/{object_id}/xml opens source IRS XML. |
Status
This page reflects the hosted GrantAtlas API at https://5qlkc2dh07.execute-api.us-east-2.amazonaws.com and Search990's same-origin proxy 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/orgs/{ein}/compensation | Available | Reported leadership and key-employee compensation. |
| GET /api/orgs/{ein}/programs | Available | Reported Form 990 program services. |
| GET /api/orgs/{ein}/relationships | Available | Top grant counterparties and totals. |
| GET /api/orgs/compare | Available | Latest financial comparison for up to 20 EINs. |
| GET /api/filings | Available | Filing metadata search. |
| GET /api/filings/{object_id}/xml | Available | Source IRS XML redirect/proxy. |
| GET /api/filings/{object_id}/expense-breakdown | Available | Form 990 Part IX expense line items. |
| GET /api/filings/{object_id}/revenue-breakdown | Available | Source-filing revenue line items. |
| 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 | Available | Global Schedule B contributor search. |
| 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. |