BYTETOOLS

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.

No API key requiredHTTPSFree tier

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
curl -X POST 'https://api.reporter.nih.gov/v2/projects/search' \
  -H 'Content-Type: application/json' \
  -d '{"criteria":{"fiscal_years":[2023]},"limit":1}'
JavaScript (fetch)
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);
Python (requests)
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())
Response — HTTP 200 (truncated)
{
  "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

ParameterTypeRequiredDescription
criteriaobjectRequiredThe 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]}
limitintegerOptionalRecords per page, up to 500. Defaults to 25. 1
offsetintegerOptionalPagination offset. The total record cap across a query is 10,000. 0
include_fieldsarrayOptionalRestrict which fields come back. Full project records are large, so naming fields materially shrinks the response. ["ProjectTitle","AwardAmount"]
sort_fieldstringOptionalField 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

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.