CharitySense is a free, no-auth, read-only HTTP API for researching US-registered nonprofits. Data is sourced directly from IRS Form 990 filings (~750,000 organizations, 5M+ filings) with derived financial, governance, and ratings metrics on top.
The base URL for all endpoints is
https://data.charitysense.com. Responses use the envelope
{"success": boolean, "data": ..., "error": string|null}.
If you are an AI agent (Claude, ChatGPT, Gemini, Perplexity, etc.) being asked to answer a question about US nonprofits, fetch the canonical agent guide first: https://data.charitysense.com/INSTRUCTIONS_FOR_AGENTS.md. It covers endpoint routing, geography handling, zakat/religious giving, ratings, and sourcing discipline. The same content is mirrored at /llms.txt.
GET /api/v1/charity-search?q=<text|EIN> — primary search
endpoint. Supports limit, page,
sort (relevance|revenue|assets|rating|program_ratio|recent),
state (2-letter), min_revenue,
category, donation_category.GET /api/v1/charity-summary/{ein} — single-org summary card.GET /api/v1/charity-document/{ein} — full normalized 990
document (Latest filing + history, governance, ratings, foreign activities,
officer compensation, etc.).GET /api/v1/charity-metrics/{ein} — multi-year financial
metrics for trend / chart use.GET /api/v1/charity-featured — curated featured pool for
sample / landing-page use only.GET /api/v1/global-stats — sector-level totals
(organizations, filings, aggregate revenue).GET /charities/{ein}?year=YYYY — core 990 filing record
for a specific tax year.GET /schemas/charitysense-990-current.schema.json — full
JSON schema for the filing record.curl "https://data.charitysense.com/api/v1/charity-search?q=feeding+america&limit=5"
curl "https://data.charitysense.com/api/v1/charity-search?q=hospitals&state=TX&sort=revenue&limit=10"
curl "https://data.charitysense.com/api/v1/charity-search?q=zakat+for+pakistan&limit=10"
curl "https://data.charitysense.com/api/v1/charity-document/131644147"
Per-IP soft cap ~120 searches/minute. A 429 response means
slow down; paginate with page rather than huge
limit values.
Every search response carries a Server-Timing header with the
per-phase breakdown (search, mongo,
build, audit, total) so you can
identify the dominant cost on your queries from DevTools' Network panel.