ProPublica API: Search nonprofits by name
Finds U.S. nonprofits by organization name, optionally filtered by state and city, with the latest reported revenue and assets.
Unofficial. Not affiliated with or endorsed by ProPublica.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- City optional
city City to match, for example Washington. Leave blank for any city.
(default)
- Name, required
name Organization name to search for, for example Red Cross.
Red Cross
- State optional
state U.S. state or territory name or two-letter postal code, for example New York or NY. Leave blank to search all states.
(default)
- Max Results optional
max_results Maximum organizations to return, for example 25.
25 (default)
Whole number from 1 to 100.
Input as JSON
{ "name": "Red Cross"}Output
{ "organizations": [ { "ein": "581771391", "city": "Climax", "name": "Red Cross Civitans", "state": "NC", "category": "Public and societal benefit", "assets_tax_year": 2025, "tax_exempt_type": "501(c)(4) social welfare organization", "revenue_tax_year": 2025, "latest_total_assets_usd": 109299, "nonprofit_explorer_link": "https://projects.propublica.org/nonprofits/organizations/581771391" , "latest_total_revenue_usd": 11554 }, { "ein": "530196605", "city": "Washington", "name": "American National Red Cross", "state": "DC", "category": "Human services", "assets_tax_year": 2025, "tax_exempt_type": "501(c)(3) charity", "revenue_tax_year": 2025, "latest_total_assets_usd": 5052941623, "nonprofit_explorer_link": "https://projects.propublica.org/nonprofits/organizations/530196605" , "latest_total_revenue_usd": 3916983933 }, { "ein": "262622865", "city": "Joplin", "name": "Red Cross Of Constantine", "state": "MO", "category": null, "assets_tax_year": 2025, "tax_exempt_type": "501(c)(8) fraternal beneficiary society", "revenue_tax_year": 2025, "latest_total_assets_usd": 0, "nonprofit_explorer_link": "https://projects.propublica.org/nonprofits/organizations/262622865" , "latest_total_revenue_usd": 0 } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"projects.propublica.org/search_nonprofits","input":{"name":"Red Cross"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "projects.propublica.org/search_nonprofits" , "input": { "name": "Red Cross" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "projects.propublica.org/search_nonprofits" , "input": { "name": "Red Cross" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run projects.propublica.org/search_nonprofits# with {"name":"Red Cross"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "name" ], "properties": { "city": { "type": "string", "default": "", "description": "City to match, for example Washington. Leave blank for any city." }, "name": { "type": "string", "minLength": 1, "description": "Organization name to search for, for example Red Cross." }, "state": { "type": "string", "default": "", "description": "U.S. state or territory name or two-letter postal code, for example New York or NY. Leave blank to search all states." }, "max_results": { "type": "integer", "default": 25, "maximum": 100, "minimum": 1, "description": "Maximum organizations to return, for example 25." } }}Output schema
{ "type": "object", "required": [ "organizations" ], "properties": { "organizations": { "type": "array", "items": { "type": "object", "required": [ "name", "city", "state", "ein", "tax_exempt_type", "category", "latest_total_revenue_usd", "revenue_tax_year", "latest_total_assets_usd", "assets_tax_year", "nonprofit_explorer_link" ], "properties": { "ein": { "type": "string", "description": "Nine-digit IRS tax ID number, retaining leading zeroes." }, "city": { "type": [ "string", "null" ] }, "name": { "type": "string" }, "state": { "type": [ "string", "null" ] }, "category": { "type": [ "string", "null" ] }, "assets_tax_year": { "type": [ "integer", "null" ] }, "tax_exempt_type": { "type": [ "string", "null" ] }, "revenue_tax_year": { "type": [ "integer", "null" ] }, "latest_total_assets_usd": { "type": [ "number", "null" ] }, "nonprofit_explorer_link": { "type": "string" }, "latest_total_revenue_usd": { "type": [ "number", "null" ] } }, "additionalProperties": false } } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
projects.propublica.org/search_nonprofits- Returns
- name, city, state, EIN, tax-exempt type, category, latest revenue and assets with their tax years, Nonprofit Explorer link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method projects.propublica.org/search_nonprofits with the inputs above.
Ask your agent
- Find the Red Cross chapter in Austin, Texas and show its latest revenue and assets
- I need tax-exempt nonprofits named Habitat for Humanity in Ohio with their EIN and total assets
- Look up nonprofits with 'food bank' in the name across Washington state, max 10 results
- Which organizations called Boys and Girls Club are based in Chicago, Illinois? Include their most recent revenue figures
- On ProPublica, search for nonprofits named Doctors Without Borders in New York, NY and give me their EIN and tax-exempt type
See more
All ProPublica methodsLooks up a US nonprofit by name, EIN or Nonprofit Explorer link and returns its recent Form 990 filing years with revenue, expenses, assets, liabilities, top reported pay and PDF links.
projects.propublica.org/get_nonprofit_financialsLooks up an organization in the IRS Tax Exempt Organization Search by name or EIN. It reports whether donations are deductible, whether the organization was automatically revoked, and its recent Form 990 filings.
irs.gov/check_charity_statusFinds US healthcare providers by name, place, specialty and provider type in the NPI Registry, with practice contact details and primary taxonomy. Results may include providers with similar names.
npiregistry.cms.hhs.gov/search_providersFinds U.S. nursing homes on Medicare Care Compare by name, city and state, or ZIP code. Results include star ratings, ownership, fines from the last three years, and Care Compare links.
medicare.gov/search_nursing_homesSearches USAspending federal awards by keywords, awarding agency, state of performance and date across contracts, grants, loans and direct payments. Searches from October 1, 2007 onward.
usaspending.gov/search_federal_awardsFinds U.S. hospitals by name, city and state, or ZIP code, with Medicare overall and patient survey star ratings, contact details, and Care Compare links. Ratings may be unavailable for some hospitals.
medicare.gov/search_hospitalsFinds US trademark filings matching a brand name, optionally limited to likely goods or service classes. Exact marks come first, similar marks follow; not a legal clearance opinion.
uspto.gov/search_trademarksFinds North American industrial suppliers on Thomasnet for a product or service, optionally narrowed by US state or Canadian province and supplier type, in Thomasnet's public listing order. Certifications come from public certification listings or explicit company-profile claims.
thomasnet.com/search_suppliers