NIH RePORTER API
Free NIH RePORTER API with no key: search every NIH-funded research project by year, institution, investigator, funding amount and topic. POST-based query API. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the NIH RePORTER API?
The NIH RePORTER API is a free, key-free API for searching US National Institutes of Health research funding. It exposes every NIH-funded project with its award amount, principal investigators, institution, fiscal year, abstract and linked publications, queried through a JSON POST body.
The NIH is the largest public funder of biomedical research in the world, distributing tens of billions of dollars a year, and RePORTER makes every award publicly searchable. For research analytics, science journalism or competitive intelligence this is a uniquely complete dataset — you can see who is funded, for how much, on what topic and with what results.
The interface is a POST-only search API rather than a set of GET resources: you send a JSON `criteria` object describing the filters and RePORTER returns matching projects with a `meta` block giving the total count. That design is what allows genuinely complex queries — fiscal years, agencies, activity codes, organisation states, PI names and full-text terms combined — but it does mean you cannot explore it from a browser address bar.
Quick facts
- Base URL
https://api.reporter.nih.gov/v2- Authentication
- No API key or registration. It is US federal open government data.
- Rate limit
- Roughly 1 request per second, with a maximum of 500 records per request and 10,000 records per query overall.
- Pricing
- Free. US government work, in the public domain.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the NIH RePORTER API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Search NIH projects funded in fiscal year 2023
POST https://api.reporter.nih.gov/v2/projects/search
curl -X POST 'https://api.reporter.nih.gov/v2/projects/search' \
-H 'Content-Type: application/json' \
-d '{"criteria":{"fiscal_years":[2023]},"limit":1}'const res = await fetch("https://api.reporter.nih.gov/v2/projects/search", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({"criteria":{"fiscal_years":[2023]},"limit":1}),
});
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
headers = {
"Content-Type": "application/json",
}
payload = {"criteria":{"fiscal_years":[2023]},"limit":1}
res = requests.post("https://api.reporter.nih.gov/v2/projects/search", headers=headers, json=payload, timeout=20)
res.raise_for_status()
print(res.json()){
"meta": {
"search_id": "f4YjqkRbi0qP3oBzaxD6jg",
"total": 85128,
"offset": 0,
"limit": 1,
"sort_field": null,
"sort_order": "ASC",
"sorted_by_relevance": false,
"properties": {
"URL": "https:/reporter.nih.gov/search/f4YjqkRbi0qP3oBzaxD6jg/projects"
}
},
"results": [
{
"appl_id": 10617263,
"subproject_id": null,
"fiscal_year": 2023,
"project_num": "5F32DK132864-02",
"project_serial_num": "DK132864",
"organization": {
"org_name": "DANA-FARBER CANCER INST",
"city": null,
"country": null,
"org_city": "BOSTON",
"org_country": "UNITED STATES",
"org_state": "MA",
"org_state_name": null,
"dept_type": null,
"fips_country_code": null,
"org_duns": [
"076580745"
],
"org_ueis": [
"DPMGH9MG1X67"
],
"primary_duns": "076580745",
"primary_uei": "DPMGH9MG1X67",
"org_fips": "US",
"org_ipf_code": "1464901",
"org_zipcode": "022155450",
"external_org_id": 1464901
},
"award_type": "5",
"activity_code": "F32",
"award_amount": 71792,
"is_active": false,
"project_num_split": {
"appl_type_code": "5",
"activity_code": "F32",
"ic_code": "DK",
"serial_num": "132864",
"support_year": "02",
"full_support_year": "02",
"suffix_code": ""
},
"principal_investigators": [
{
"profile_id": 12547591,
"first_name": "Mu",Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
criteria | object | Required | The search filter object, sent in the JSON body. Supports `fiscal_years`, `pi_names`, `org_names`, `org_states`, `agencies`, `activity_codes`, `award_types` and `advanced_text_search`. {"fiscal_years":[2023]} |
limit | integer | Optional | Records per page, up to 500. Defaults to 25. 1 |
offset | integer | Optional | Pagination offset. The total record cap across a query is 10,000. 0 |
include_fields | array | Optional | Restrict which fields come back. Full project records are large, so naming fields materially shrinks the response. ["ProjectTitle","AwardAmount"] |
sort_field | string | Optional | Field to sort by, paired with `sort_order` as `asc` or `desc`. award_amount |
Response fields
meta.totalinteger- Total matching projects, which is usually far more than the page returned. Use it to decide whether to paginate.
meta.search_idstring- Identifier for the search, which also builds a shareable RePORTER website URL for the same query.
results[].appl_idinteger- Unique application identifier for the award.
results[].project_numstring- NIH project number encoding activity code, institute, serial number and support year.
results[].fiscal_yearinteger- Fiscal year of the award. NIH fiscal years run October to September, not January to December.
results[].organizationobject- Recipient institution with name, city, state and country.
results[].award_amountinteger- Award amount in US dollars for that fiscal year — not the total across the grant's lifetime.
results[].principal_investigatorsarray- Named investigators with their profile identifiers.
What you can build with the NIH RePORTER API
- Analyse NIH funding trends by topic, institution or state
- Find which labs are funded to work on a specific disease or method
- Support science journalism on how public research money is allocated
- Track an investigator's funding history and resulting publications
Common errors and how to fix them
400
Malformed `criteria` object or an unknown filter field.
Fix: Field names inside `criteria` are snake_case, while `include_fields` uses PascalCase. That inconsistency is real and catches people out.
429
Rate limited.
Fix: Keep to about one request per second and page with `offset` rather than firing concurrent requests.
Truncated results
A single query caps at 10,000 records.
Fix: Split the query — usually by fiscal year or state — so each slice stays under the cap.
NIH RePORTER API — frequently asked questions
Is the NIH RePORTER API free?
Yes, free with no API key or registration. It is US federal open government data and the records are in the public domain.
Why does the NIH RePORTER API only accept POST?
Because the search criteria are a nested JSON object supporting dozens of combinable filters, which does not fit cleanly in a query string. The trade-off is that you cannot test it from a browser address bar — use curl or a REST client.
What does award_amount actually represent?
The amount awarded for that specific fiscal year, not the total value of the grant. A five-year grant appears as five separate project records, so summing them gives the lifetime total.
Can I get publications linked to a grant?
Yes. A separate publications endpoint maps NIH core project numbers to the PubMed identifiers of papers that acknowledge the funding, which lets you trace awards through to research output.
Tools that pair with this API
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Percentage Calculator
Calculate what X% of a number is, what percent one number is of another, and percentage increase or decrease between two values — instantly and free.
NIH RePORTER is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.