Build on nonprofit data

Self-serve API access to 2M+ tax-exempt organizations, 16M+ grants, and 12M+ officers. Human-readable field names, a full OpenAPI spec, and structured responses designed for both traditional integrations and AI agents.

Quick Start

Three steps to your first API call.

1

Create a free account

Sign up. No credit card required.

2

Upgrade to Pro and get your API key

API access requires a Pro plan. Go to Settings to create an API key once you're on Pro. Keys use the format sk_live_... and can be viewed or revoked anytime.

3

Make your first request

# Search for nonprofits in Georgia with "food" in the name
curl "https://api.501see.app/api/v1/orgs?name=food&state=GA&limit=3" \
  -H "Authorization: Bearer YOUR_API_KEY"

More examples

# Get the latest filing for Dollywood Foundation
curl "https://api.501see.app/api/v1/orgs/62-1348105/filings/latest?preset=financials"
# Search grants awarded to organizations in Tennessee
curl "https://api.501see.app/api/v1/grants?state=TN&min_amount=10000&limit=5"
# Full-text search across orgs, officers, and grants
curl "https://api.501see.app/api/v1/search?q=dolly+parton"

Authentication

Pass your API key in the Authorization header.

Authorization: Bearer YOUR_API_KEY

Anonymous (no key)

Read access to org names, filing structure, and grant relationships. Dollar amounts (compensation, grant amounts) are blurred. Rate limited to 2 req/s.

Pro (API key required)

Full access: dollar amounts visible, bulk export, 30 req/s. API keys are available on the Pro plan. See pricing.

Core Concepts

Semantic field names

Every field has a human-readable name. No need to memorize IRS column codes.

Raw IRS field
f9_01_rev_tot_cy
501(see) API
total_revenue

Field presets

Control how much data you get back from filing endpoints.

PresetFieldsUse case
summary~30Default. Key financials, identity, mission.
financials~90Summary + Part VIII/IX/X detail lines.
allAllEvery registered field.

Or cherry-pick: ?fields=total_revenue,mission,total_employees

Pagination

Offset-based. Every list response includes total, offset, and limit.

?offset=0&limit=50    # default
?offset=50&limit=50   # next page
# max limit: 500

Sorting

Prefix with - for descending.

?sort=total_revenue    # ascending
?sort=-total_revenue   # descending

Plan-aware responses

Every response envelope includes a plan field indicating your access level: anonymous, free, or your paid plan name. Dollar-amount fields are only present for paid plans.

Endpoints

All endpoints are read-only. Base URL: https://api.501see.app

MethodPathDescriptionAuth
GET/api/v1/orgsList & filter organizationsOptional
GET/api/v1/orgs/{ein}Get organization by EINOptional
GET/api/v1/orgs/{ein}/filingsList filings for an orgOptional
GET/api/v1/orgs/{ein}/filings/latestLatest filing for an orgOptional
GET/api/v1/filings/{object_id}Get filing by object IDOptional
GET/api/v1/filings/{object_id}/officersOfficers for a filingOptional
GET/api/v1/filings/{object_id}/grantsSchedule I grants for a filingOptional
GET/api/v1/filings/{object_id}/pf990-PF financialsOptional
GET/api/v1/filings/{object_id}/pf/grantsFoundation grants paidOptional
GET/api/v1/grantsSearch grants across all filingsOptional
GET/api/v1/officersSearch officers across all filingsOptional
GET/api/v1/searchFull-text search (orgs, officers, grants)Optional

For full parameter details, see the OpenAPI spec.

Rate Limits

PlanSteady rateBurstLimiting
Anonymous (no key)2 req/s10IP-based
Pro30 req/s50Account-based

Exceeding your rate limit returns HTTP 429:

{"error": {"code": "rate_limit_exceeded", "message": "rate limit exceeded"}}

OpenAPI Spec

The full API is described by an OpenAPI 3.1 spec. Use it to generate client libraries, import into Postman, or feed directly to an LLM as a tool definition.

Interactive API explorer coming soon.

Download OpenAPI Spec

AI & Agent Integration

Connect your own AI subscription to nonprofit data. Use your existing Claude, ChatGPT, or any tool-use-capable model. 501(see) is the data source, you bring the brain.

MCP Server

501(see) ships an MCP server that gives AI tools direct access to nonprofit data. Add it to Claude Desktop, Claude Code, Cursor, or any MCP-compatible client.

Available tools

ToolDescription
searchFull-text search across orgs, officers, and grants
list_organizationsFilter by name, state, NTEE code, revenue range
get_organizationLookup a single org by EIN
get_latest_filingFinancials, mission, employees for any org
search_grantsFind grants by recipient, funder, amount, geography
list_officersOfficers and compensation for a filing

Setup

Add to your MCP client configuration:

{
  "mcpServers": {
    "501see": {
      "command": "501see-mcp",
      "env": {
        "FIVEOHONE_API_KEY": "your-api-key"
      }
    }
  }
}

MCP server distribution details coming soon.

Direct tool use (Claude, ChatGPT, etc.)

Define 501(see) API calls as tools in your LLM application. The model decides when to call them based on the user's question.

import anthropic, httpx

client = anthropic.Anthropic()
API_KEY = "your-501see-api-key"
BASE = "https://api.501see.app"

tools = [{
    "name": "search_nonprofits",
    "description": "Search nonprofit organizations by name, state, or revenue",
    "input_schema": {
        "type": "object",
        "properties": {
            "name":  {"type": "string", "description": "Org name (fuzzy match)"},
            "state": {"type": "string", "description": "Two-letter state code"},
            "min_revenue": {"type": "number", "description": "Minimum annual revenue"},
        },
    },
}]

def handle_tool_call(name, input):
    if name == "search_nonprofits":
        params = {k: v for k, v in input.items() if v is not None}
        r = httpx.get(f"{BASE}/api/v1/orgs", params=params,
                      headers={"Authorization": f"Bearer {API_KEY}"})
        return r.text

# The model calls search_nonprofits when a user asks about nonprofits
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    tools=tools,
    messages=[{"role": "user",
               "content": "Find food banks in Georgia with over $1M revenue"}],
)

What you can build

Grant Prospecting

"Find foundations that fund environmental nonprofits in the Pacific Northwest with grants over $50K"

Due Diligence

"Pull the latest financials for this organization and summarize anything unusual"

Prospect Research

"Build a list of arts nonprofits in Georgia with over $1M revenue"