Alfred P. Sloan Foundation — Grants API
Base URL: https://api.sloan.org
A read-only JSON API serving public grant data from the Alfred P. Sloan Foundation. Data refreshed nightly.
Authentication
All requests require an API key passed in the X-API-Key header.
Keys are issued by the Foundation on request.
curl -H "X-API-Key: YOUR-KEY-HERE" https://api.sloan.org/grants
Requests without a valid key receive a 401 response. There is no approval process; keys exist to identify callers, not to restrict access. To request a key, contact the Alfred P. Sloan Foundation through sloan.org.
List Grants
GET /grants
Returns a paginated list of grants.
Parameters:
| Parameter | Type | Description |
|---|---|---|
program | slug | Top-level program, by slug (e.g., research, technology, public-understanding). Unknown slug → empty result. |
subprogram | slug | Subprogram, by slug (e.g., research.economics, technology.better-software, public-understanding.film). Unknown slug → empty result. |
year | integer | Fiscal year (single). If passed alongside year_from / year_to, the single year wins and the range params are ignored. |
year_from | integer | Lower bound of fiscal-year range (inclusive). 4-digit year. |
year_to | integer | Upper bound of fiscal-year range (inclusive). 4-digit year. Must be ≥ year_from when both are set. |
type | string | fellowships or grants. Default: all. |
q | string | Full-text search across grant name, purpose, summary, PI, institution, and co-PI names. Prefix-matches each term: ?q=finkelstei matches “Finkelstein.” Multiple terms are combined with AND. Quotes are not currently honored as phrase delimiters. |
pi | string | PI name (partial match) |
grantee_organization | string | Exact-match filter on grantee organization name. Use the exact string as it appears in API responses. |
initiative | slug | Initiative slug (the SRF discipline for fellowships, e.g. chemistry, physics). Unknown slug → empty result. |
sub_initiative | slug | Sub-initiative slug (e.g. chemical-biology). Unknown slug → empty result. |
page | integer | Page number (default: 1) |
per_page | integer | Results per page (default: 100, max: 200) |
sort | string | Sort order. One of year_desc (default behavior is approval_date desc; pass year_desc for fiscal-year desc), year_asc, amount_desc, amount_asc, pi_asc (by PI last name), institution_asc. Unknown values fall back to the default. |
format | string | Set to csv for CSV download |
All parameters are combinable.
Examples:
GET /grants?program=research&subprogram=research.economics&year=2025 GET /grants?type=fellowships&initiative=chemistry&year=2026 GET /grants?q=ocean+acidification GET /grants?pi=Derenoncourt GET /grants?year_from=2020&year_to=2024&program=research GET /grants?year=2024&format=csv
Note: as of May 2026, program, subprogram,
initiative, and sub_initiative filter params accept
slugs, not display names. See Taxonomy for the slug list.
Response:
{
"grants": [
{
"grant_number": "G-2024-22492",
"project_title": "Jens Ludwig",
"purpose_statement": "To support research on...",
"public_grant_summary": "<p>This grant supports...</p>",
"pi_name": "Jens Ludwig",
"pi_first_name": "Jens",
"pi_middle_name": null,
"pi_last_name": "Ludwig",
"co_pis": [
{ "name": "Jean Grossman", "first_name": "Jean", "middle_name": null, "last_name": "Grossman", "institution": "Dine College" },
{ "name": "Jonathan Guryan", "first_name": "Jonathan", "middle_name": null, "last_name": "Guryan", "institution": "Northwestern University" },
{ "name": "Gregory Stoddard", "first_name": "Gregory", "middle_name": null, "last_name": "Stoddard", "institution": "The University of Chicago" }
],
"pi_awards": [],
"grantee_organization": "The University of Chicago",
"city": "Chicago",
"state": "Illinois",
"program": { "name": "RESEARCH", "uuid": "099accad-8ab0-40d3-bae8-5d51b72ef3ff", "slug": "research" },
"subprogram": { "name": "Economics", "uuid": "8d2e1b3c-1234-5678-9abc-def012345678", "slug": "research.economics" },
"initiative": null,
"sub_initiative": null,
"award_amount": 500000,
"approval_date": "2024-06-25",
"fiscal_year": 2024,
"last_synced_at": "2026-05-09T08:00:00Z"
}
],
"total": 14357,
"page": 1,
"per_page": 100,
"meta": {
"last_synced_at": "2026-05-09T08:00:00Z"
}
}
A structured ?co_pi= filter is deferred to API v2. For now, search co-PIs through the free-text q parameter.
Single Grant
GET /grants/G-2024-19876
Returns a single grant by number. The single-grant response has the
same shape as each entry in the list response — this endpoint is just
a primary-key lookup, not a richer view. last_synced_at is
included as a top-level field on the grant object.
Taxonomy
GET /taxonomy
Returns the Foundation’s program taxonomy: every program,
subprogram, initiative, and sub-initiative the public API knows about.
Each entry has a stable uuid (immutable foreign key) and a
human-readable slug (URL-safe, may change editorially).
Parameters:
| Parameter | Type | Description |
|---|---|---|
type | string | program, subprogram, initiative, or sub_initiative. |
parent_slug | string | Restrict to children of a given parent (e.g. parent_slug=research). |
status | string | active (default), historical, retired, or needs_slug. |
Response:
{
"taxonomy": [
{
"name": "RESEARCH",
"uuid": "099accad-8ab0-40d3-bae8-5d51b72ef3ff",
"slug": "research",
"type": "program",
"parent": null,
"status": "active",
"grant_count": 4823
},
{
"name": "Economics",
"uuid": "8d2e1b3c-...",
"slug": "research.economics",
"type": "subprogram",
"parent": { "name": "RESEARCH", "uuid": "099accad-...", "slug": "research" },
"status": "active",
"grant_count": 412
}
],
"total": 221
}
Entries are sorted programs first, then subprograms, initiatives, and
sub-initiatives; within each bucket, alphabetical by slug.
UUIDs are immutable. Use them as foreign keys in your own database. Slugs may be revised editorially for readability or URL consistency; treat them as display values.
Awards
The Foundation tracks select major awards (Nobel Prize, Fields Medal, Abel Prize, John Bates Clark Medal, National Medal of Science) held by Sloan-affiliated researchers who were also Sloan Research Fellows.
GET /awards GET /awards?type=Nobel%20Prize GET /awards?type=Nobel%20Prize&subtype=Physics GET /awards?year_after=2010
Parameters:
| Parameter | Type | Description |
|---|---|---|
type | string | Award type, e.g. Nobel Prize, Fields Medal, Abel Prize, John Bates Clark Medal, National Medal Of Science. |
subtype | string | Award subtype, e.g. Chemistry, Physics, Economic Sciences. |
year_after | integer | Lower bound on award_year (inclusive). 4-digit year. |
year_before | integer | Upper bound on award_year (inclusive). 4-digit year. |
page | integer | Page number (default: 1) |
per_page | integer | Results per page (default: 100, max: 200) |
Response:
{
"awards": [
{
"award_type": "Nobel Prize",
"award_subtype": "Chemistry",
"award_year": 2023,
"nobel_field": "Chemistry",
"pi_first_name": "Moungi",
"pi_last_name": "Bawendi",
"fellowship_grant_number": "FG-BR-3344",
"fellowship_year": 1994,
"fellowship_subprogram": "Sloan Research Fellowships",
"fellowship_institution": "Massachusetts Institute of Technology"
}
],
"total": 24,
"page": 1,
"per_page": 100
}
Multi-award fellows appear as multiple rows. To find a single fellow’s
awards, filter by name (or use the pi_awards array on their
grant record).
CSV Download
GET /grants?format=csv
Returns all matching grants as a downloadable CSV. All filter parameters apply.
Fields
| Field | Description |
|---|---|
grant_number | Unique identifier |
project_title | Project title. Optional — may be null. |
purpose_statement | Brief description |
public_grant_summary | Longer narrative summary, returned as sanitized HTML. Allowed tags: <p>, <br>, <strong>, <em>, <ul>, <ol>, <li>, <a>. May be null for grants that predate the Foundation’s summary writing practice. |
pi_name | Principal Investigator (display string). |
pi_first_name | PI first name. |
pi_middle_name | PI middle name (may be null). |
pi_last_name | PI last name. Useful for alphabetical sorting. |
co_pis | JSONB array of co-investigators sorted alphabetically by last name. Each entry: {name, first_name, middle_name, last_name, institution}. Default []. In CSV exports, serialized as a semicolon-delimited string. |
pi_awards | JSONB array of awards held by the PI (Nobel Prize, Fields Medal, Abel Prize, John Bates Clark Medal, National Medal of Science). Each entry: {type, subtype, year, nobel_field}. Default []. |
last_synced_at | ISO-8601 UTC timestamp of when this row was last refreshed from the source of truth. |
grantee_organization | The organization receiving the grant (institution, nonprofit, company). |
city | Grantee city |
state | Grantee state |
program | Top-level program. Object with name, uuid, slug — or null if the grant has no program coding. See Taxonomy fields. |
subprogram | Subprogram. Same shape as program. May be null for programs that intentionally have no subdivision. |
initiative | Initiative classification. Same shape as program. For fellowships, this is the SRF discipline (e.g. Chemistry). Mostly null on non-fellowship grants. |
sub_initiative | Sub-initiative. Same shape as program. Populated for ~18% of fellowships, rarely elsewhere. |
award_amount | Grant amount (USD) |
approval_date | Date approved (YYYY-MM-DD) |
fiscal_year | Fiscal year |
Note on fellowships. For fellowships (grant_number
prefix FG-), program.name is always
RESEARCH and subprogram.name is always
Sloan Research Fellowships. The meaningful classification
is initiative (e.g. Chemistry) and optionally
sub_initiative (e.g. Chemical Biology).
Consumers rendering fellowship cards typically display these instead
of program/subprogram.
Taxonomy fields (program, subprogram, initiative, sub_initiative)
These four fields are returned as nested objects:
{
"name": "Economics",
"uuid": "8d2e1b3c-1234-5678-9abc-def012345678",
"slug": "research.economics"
}
or null when the grant has no value at that level. The
uuid is immutable and safe to use as a foreign key in your
own database. The slug is URL-safe and human-readable but
may be revised editorially — treat it as a display/URL value, not
a primary key. The name is the display string.
Filter parameters (?program=, ?subprogram=,
?initiative=, ?sub_initiative=) accept slugs;
see List Grants.
CSV exports flatten these to plain display-name columns (no UUID or slug). For programmatic access to UUIDs and slugs, use the JSON endpoints.
Rendering public_grant_summary
The summary is HTML. Render it with innerHTML (or your framework’s equivalent)
rather than as plain text. The allowed tag set is narrow and safe: no scripts, no inline
styles, no external resources. Standard XSS protections are not needed beyond the usual
care when inserting third-party HTML into your DOM.
Rate Limits
| Endpoint | Limit |
|---|---|
| JSON requests | 60 per minute |
| CSV downloads | 10 per minute |
Limits apply per client IP address. Each caller gets its own bucket; one client hitting the limit does not affect others.
Response metadata
All list responses include a meta object with freshness information:
{
"grants": [...],
"total": 14357,
"page": 1,
"per_page": 100,
"meta": {
"last_synced_at": "2026-05-09T08:00:00Z"
}
}
The /awards endpoint follows the same shape with an
awards array plus a top-level meta. Single-grant
responses include last_synced_at as a top-level field on the
grant object. Data is refreshed nightly around 04:00 UTC.
Error responses
All errors return JSON with an error field describing the problem.
| Status | When | Body |
|---|---|---|
| 401 | Missing API key | {"error": "API key required. Request one at https://sloan.org"} |
| 401 | Invalid API key | {"error": "Invalid API key"} |
| 400 | Bad query parameter (e.g. malformed year_from / year_to / year_after / year_before) | {"error": "<specific message>"} |
| 404 | Grant not found | {"error": "Not found"} |
| 405 | Method not allowed (only GET is supported) | {"error": "Method not allowed"} |
| 429 | Rate limit exceeded | Cloudflare-edge response — body is HTML/text rather than JSON. Inspect the status code and Retry-After header. |
| 500 | Unexpected server error | {"error": "Internal server error"} |
Permalinks
The grant_number field is suitable for use as a URL slug.
Grant numbers are unique, immutable, URL-safe, and human-readable
(G-2024-22492, FG-2025-24065). A permalink pattern
of https://yoursite.example/grants/{grant_number} works
directly against this API by passing the same value to
/grants/{grant_number}.
Notes
- Results per page capped at 200. Use
format=csvto download full result sets. - CORS enabled for all origins.
- Year coverage: Sloan Research Fellowships (
FG-grants) are exposed back to 1955. All other grant types are exposed from FY2008 onward. Pre-2008 non-SRF grants are intentionally hidden from every endpoint, including single-grant lookups by grant number (which return404).