Public API reference

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.

AWS
Direct host
x-api-key required for data
/api
Search990 proxy
same-origin app routes
Cursor
Pagination
next_cursor on result sets
10 years
Queryable span
filings and source XMLs
Browser caveat: the direct AWS CORS configuration currently appears to allow only 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.

Organization profile

Inspect one nonprofit by EIN.

https://www.search990.com/api/orgs/770165029
Organization filings

List source filings for one nonprofit.

https://www.search990.com/api/orgs/770165029/filings?limit=2
Organization grants made

List outbound grants for one nonprofit.

https://www.search990.com/api/orgs/770165029/grants-made?limit=5
Organization grants received

List inbound matched grants for one nonprofit.

https://www.search990.com/api/orgs/770165029/grants-received?limit=5
Filing search

Search filing metadata by EIN.

https://www.search990.com/api/filings?ein=770165029&limit=5
Recent filings

Browse recent indexed filings.

https://www.search990.com/api/filings?limit=5
Raw filing XML

Open the source IRS XML for one filing.

https://www.search990.com/api/filings/202500149349300050/xml
Filing expense breakdown

Read Form 990 Part IX expense line items.

https://www.search990.com/api/filings/202500149349300050/expense-breakdown
Health check

Check GrantAtlas availability.

https://www.search990.com/api/health
OpenAPI schema

Fetch the machine-readable API schema.

https://www.search990.com/openapi.json
Grant summary

Return grant corpus summary metrics.

https://www.search990.com/api/grants/summary
Grant detail

Inspect one grant by GrantAtlas id.

https://www.search990.com/api/grants/3145754
Recipient EIN

Stable lookup for a matched recipient.

https://www.search990.com/api/grants?recipient_ein=132992985&limit=25
Year and amount

Filter by filing year and minimum amount.

https://www.search990.com/api/grants?year=2023&min_amount=25000&limit=25
Schedule B contributors

List reported contributors to one private foundation by foundation EIN.

https://www.search990.com/api/contributors/880561746?limit=3&include_total=1
Global contributors

Search reported Schedule B contributors globally.

https://www.search990.com/api/contributors?q=stock&min_amount=10000&limit=10
Contributor filters

Filter contributor rows by year and minimum amount.

https://www.search990.com/api/contributors/880561746?year=2024&min_amount=500&limit=10
Next page pattern
https://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.

ParameterTypeNotes
resultsarrayCurrent page of records.
next_cursorstring | nullPass this value back as cursor for the next page.
meta.resourcestringResource name, such as organizations, filings, or grants.
meta.limitnumberResolved page size.
meta.countnumberNumber of rows in this page.
meta.total_resultsnumberTotal matching rows when requested or available.
meta.total_pagesnumberTotal pages at the resolved limit.
meta.total_is_exactbooleanWhether total_results is exact.
Available endpoints

Search Organizations

GET/api/orgs
Available

Search indexed organization profiles by text, geography, NTEE, type, grant role, and financial size.

ParameterTypeNotes
qstringOrganization name, EIN, or city search text.
stateUS stateTwo-letter state filter.
nteestringNTEE code prefix, such as B or T20.
typestringOrganization type: PC, PF, or N-filer.
categorystringIndexed organization category.
rolestringGrant role filter: given or received.
revenue_minnumberMinimum latest revenue.
revenue_maxnumberMaximum latest revenue.
assets_minnumberMinimum latest assets.
assets_maxnumberMaximum latest assets.
grants_paid_minnumberMinimum total grants given.
sortstringname, revenue, assets, grants_given, or grants_received.
cursorstringOpaque cursor from next_cursor.
limitnumberRows per page. Default 25, maximum 100.
Browser URL
https://www.search990.com/api/orgs?state=CA&type=PC&sort=grants_given&limit=10

Organization Profile

GET/api/orgs/{ein}
Available

Return a single organization profile, latest filing summary, grant totals, and related resource links.

Browser URL
https://www.search990.com/api/orgs/770165029

Financials

GET/api/orgs/{ein}/financials
Available

Return normalized authoritative financial rows for an organization when normalized filing data is available.

ParameterTypeNotes
fromnumberEarliest tax year to include.
tonumberLatest tax year to include.
/api/orgs/{ein}/financialsList normalized financial years.
/api/orgs/{ein}/financials/{year}Retrieve one normalized financial year.
Browser URLs
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/2023

Filings

GET/api/filings
Available

Search IRS filing metadata globally, or list filings for a specific organization.

ParameterTypeNotes
qstringFiling organization name, EIN, or IRS object id.
object_idstringExact IRS filing object id.
einEINFilter filings to one organization.
form_typestringFilter by normalized form type, such as 990 or 990-PF.
tax_yearnumberFilter to one tax year.
posting_yearnumberIRS posting year.
cursorstringOpaque cursor from next_cursor.
limitnumberRows 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.
Browser URLs
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-breakdown

Grants

GET/api/grants
Available

Search 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.

ParameterTypeNotes
qstringFunder and recipient name search.
purpose_containsstringPurpose substring match.
grantor_einEINNine-digit funder EIN. Best option for large funders.
grantor_namestringGrantor name filter.
grantor_stateUS stateTwo-letter grantor state code.
grantor_nteestringGrantor NTEE code prefix.
recipient_einEINNine-digit recipient EIN when the recipient has been matched.
recipient_namestringRecipient name filter.
recipient_citystringRecipient city filter.
recipient_stateUS stateTwo-letter recipient state code.
recipient_countrystringRecipient country filter.
recipient_nteestringRecipient NTEE code prefix when matched.
recipient_typestringRecipient classification when available.
categorystringGrant category when available.
payment_statusstringPayment status, such as paid_during_year.
matchedbooleanUse 1 for matched recipients or 0 for unmatched rows.
min_match_confidencenumberMinimum recipient match confidence.
min_amountnumberMinimum grant amount in dollars.
max_amountnumberMaximum grant amount in dollars.
yearnumberFiling tax year.
sortstringnewest, amount, year, recipient, or grantor.
include_totalbooleanReturn total_results and total_pages metadata.
formatstringUse csv to return the current filtered page as CSV.
cursorstringOpaque cursor from next_cursor.
limitnumberRows per page. Default 25, maximum 100.
total_onlybooleanReturn count metadata without grant rows.

Hosted count metadata

ParameterTypeNotes
meta.current_pagenumberDecoded from cursor offset when available.
meta.page_sizenumberResolved page size for the hosted route.
meta.total_resultsnumberHosted grant count scan, capped at 250.
meta.total_pagesnumberComputed from total_results and page_size.
meta.total_is_exactbooleanFalse 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.
Browser URLs
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=1

Contributors

GET/api/contributors
Available

Search 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.

ParameterTypeNotes
qstringBroad contributor, foundation, recipient, description, or security text.
recipient_einEINReceiving foundation EIN.
org_einEINAlias for the receiving foundation EIN.
foundation_einEINAlias for the receiving foundation EIN.
contributor_namestringReported contributor name.
contributor_stateUS stateReported contributor state.
foundation_namestringReceiving foundation name.
recipient_namestringAlias for receiving foundation name.
description_containsstringSubstring search over noncash descriptions.
security_namestringParsed security name filter.
tickerstringParsed ticker or class filter.
yearnumberFiling year.
min_amountnumberMinimum contribution amount in dollars.
max_amountnumberMaximum contribution amount in dollars.
asset_classstringParsed asset class when available.
sortstringamount, newest, contributor, or foundation.
include_totalbooleanReturn exact total_results and total_pages metadata.
cursorstringOpaque cursor from next_cursor.
limitnumberRows per page. Default 25, maximum 100.
/api/contributorsSearch reported contributors globally.
/api/contributors/{ein}Search contributors scoped to one foundation.
Browser URLs
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=10

Objects

The public API uses normalized linked objects where possible. Organization links in API responses point back to public /api/orgs/... routes.

Collection envelope
{
  "results": [],
  "next_cursor": null,
  "meta": {
    "resource": "grants",
    "limit": 25,
    "count": 0
  }
}
Grant object
{
  "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

ParameterTypeNotes
grant_idstring | number | nullGrantAtlas grant identifier.
amountnumber-string | numberGrant amount in dollars.
purposestring | nullPurpose text from the source filing.
categorystring | nullNormalized category when available.
recipient_typestring | nullRecipient classification.
recipient_statestring | nullRecipient state code.
payment_statusstring | nullPayment status reported or inferred from the source.
match_confidencenumber | nullRecipient match confidence when available.
grantorlinked organizationein, name, and href.
recipientlinked organizationein, name, and href.
filingobjectSource object_id and tax_year.
Contributor object
{
  "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

ParameterTypeNotes
contribution_idstring | number | nullGrantAtlas contribution identifier.
object_idstring | nullSource IRS filing object id.
org_einEINPrivate foundation EIN.
org_namestring | nullPrivate foundation name.
filing_yearnumber | nullFiling year.
contributor_numberstring | number | nullReported Schedule B contributor number.
contributor_namestring | nullReported contributor name.
contributor_citystring | nullReported contributor city.
contributor_statestring | nullReported contributor state.
amountnumber-string | number | nullContribution amount in dollars.
cash_boolboolean | nullWhether the contribution was reported as cash.
description_rawstring | nullRaw noncash description when present.
noncash_fmvnumber-string | number | nullReported fair-market value.
date_receivedstring | nullReported date received.
asset_classstring | nullParsed asset class when available.
quantitystring | number | nullParsed quantity when available.
unitstring | nullParsed unit when available.
security_namestring | nullParsed security name when available.
ticker_or_classstring | nullParsed ticker or security class when available.
donor_match_confidencenumber | nullContributor 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.

RouteStatusNotes
Collection totalsAvailableCollection metadata includes total_results, total_pages, and total_is_exact when available.
Grant detailAvailableGET /api/grants/{grant_id} supports permalinks and reconciliation workflows.
Recipient-name filtersAvailableGrant search supports recipient_name and grantor_name filters.
Facets and summariesBetaGET /api/grants/summary supports summary metrics; include_facets=1 returns capped facets.
Grant CSVAvailableGET /api/grants?format=csv returns the current page.
Source XMLsAvailableGET /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.

RouteStatusNotes
GET /api/orgsAvailableOrganization search endpoint.
GET /api/orgs/{ein}AvailableOrganization profile by EIN.
GET /api/orgs/{ein}/financialsAvailableNormalized financial rows when available.
GET /api/orgs/{ein}/financials/{year}AvailableSingle normalized financial year.
GET /api/orgs/{ein}/filingsAvailableOrganization filing pages.
GET /api/orgs/{ein}/grants-madeAvailableOutbound grants.
GET /api/orgs/{ein}/grants-receivedAvailableInbound matched grants.
GET /api/orgs/{ein}/compensationAvailableReported leadership and key-employee compensation.
GET /api/orgs/{ein}/programsAvailableReported Form 990 program services.
GET /api/orgs/{ein}/relationshipsAvailableTop grant counterparties and totals.
GET /api/orgs/compareAvailableLatest financial comparison for up to 20 EINs.
GET /api/filingsAvailableFiling metadata search.
GET /api/filings/{object_id}/xmlAvailableSource IRS XML redirect/proxy.
GET /api/filings/{object_id}/expense-breakdownAvailableForm 990 Part IX expense line items.
GET /api/filings/{object_id}/revenue-breakdownAvailableSource-filing revenue line items.
GET /api/grantsAvailableGrant relationship search.
GET /api/grants/{grant_id}AvailableGrant detail permalink.
GET /api/grants/summaryAvailableGrant summary and facets.
GET /api/contributorsAvailableGlobal Schedule B contributor search.
GET /api/contributors/{ein}AvailableSchedule B contributors by foundation EIN.
GET /api/healthAvailableAvailability check.
GET /openapi.jsonAvailablePublic OpenAPI schema for the hosted API.
Organization search is exposed as a public endpoint, but some broad name queries may return sparse results while the organization search index continues to mature. EIN profile routes and filing/grant subresources are the most dependable organization lookups today.