# NIH RePORTER API

> NIH RePORTER workflow and API: grants. Returns grants, city, state and abstract as JSON.

NIH RePORTER data from reporter.nih.gov: grants.

- Page: https://fous.com/tools/nih-reporter
- Handle: `@nih-reporter`
- Category: [Science](https://fous.com/tools/category/science)
- Source website: https://reporter.nih.gov
- Last verified: Sep 29, 2026

## Methods

### Search grants

Operation `search_grants`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Find NIH research grants by topic, organisation, or researcher name. Searches the last five fiscal years by default; grants without a published abstract or award amount show null.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `sort` | string | no | `"largest_amount"` | Newest awards by notice date, or largest award amounts. |
| `query` | string | yes | `"Johns Hopkins University"` | Topic, organisation, or researcher name, such as Alzheimer's or Johns Hopkins University. |
| `state` | string | no | `"MD"` | Organisation state name or two-letter code, such as Maryland or MD. |
| `max_results` | integer | no | `3` | Maximum number of grants to return, such as 20. |
| `fiscal_years` | string | no | `"2024-2026"` | Fiscal year or inclusive year range, such as 2024-2026; defaults to the last five fiscal years. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "sort": {
      "enum": [
        "newest",
        "largest_amount"
      ],
      "type": "string",
      "default": "newest",
      "description": "Newest awards by notice date, or largest award amounts.",
      "examples": [
        "largest_amount"
      ]
    },
    "query": {
      "type": "string",
      "description": "Topic, organisation, or researcher name, such as Alzheimer's or Johns Hopkins University.",
      "examples": [
        "Johns Hopkins University",
        "Alzheimer's",
        "Zhiyong Liu"
      ]
    },
    "state": {
      "type": "string",
      "default": "",
      "description": "Organisation state name or two-letter code, such as Maryland or MD.",
      "examples": [
        "MD"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum number of grants to return, such as 20.",
      "x-fous-developer": true,
      "examples": [
        3,
        2
      ]
    },
    "fiscal_years": {
      "type": "string",
      "default": "",
      "description": "Fiscal year or inclusive year range, such as 2024-2026; defaults to the last five fiscal years.",
      "examples": [
        "2024-2026",
        "2022-2026"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "sort": "largest_amount",
      "query": "Johns Hopkins University",
      "state": "MD",
      "max_results": 3,
      "fiscal_years": "2024-2026"
    },
    {
      "query": "Alzheimer's"
    },
    {
      "query": "Zhiyong Liu",
      "max_results": 3,
      "fiscal_years": "2022-2026"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `grants` | array |  | Matching NIH grants. |
| `grants[].city` | string or null | `"BALTIMORE"` | Organisation city. |
| `grants[].state` | string or null | `"Maryland"` | Organisation state or territory name. |
| `grants[].abstract` | string or null |  | Project abstract as plain text. |
| `grants[].fiscal_year` | integer or null | `2024` | Fiscal year of the award. |
| `grants[].organisation` | string or null | `"JOHNS HOPKINS UNIVERSITY"` | Funded organisation. |
| `grants[].nih_institute` | string or null | `"National Institute on Aging"` | NIH institute or center name. |
| `grants[].project_title` | string or null | `"The National Health and Aging Trends Study and National Study of Caregiving"` | Project title. |
| `grants[].reporter_link` | string or null | `"https://reporter.nih.gov/project-details/10937690"` | NIH RePORTER project page link. |
| `grants[].project_number` | string or null | `"2U01AG032947-16"` | Grant project number. |
| `grants[].award_amount_usd` | number or null | `17449142` | Award amount in USD. |
| `grants[].project_end_date` | string or null | `"2029-03-31"` | Project end date in YYYY-MM-DD. |
| `grants[].project_start_date` | string or null | `"2008-09-30"` | Project start date in YYYY-MM-DD. |
| `grants[].principal_investigators` | array |  | Principal investigator names. |

**Example input**

```json
{
  "sort": "largest_amount",
  "query": "Johns Hopkins University",
  "state": "MD",
  "max_results": 3,
  "fiscal_years": "2024-2026"
}
```

**Example output**

```json
{
  "grants": [
    {
      "city": "BALTIMORE",
      "state": "Maryland",
      "abstract": "Project Summary The purpose of this application is to extend and enhance the National Health and Aging Trends Study (NHATS) and the National Study of Caregiving (NSOC) to promote the study of late-lif…",
      "fiscal_year": 2024,
      "organisation": "JOHNS HOPKINS UNIVERSITY",
      "nih_institute": "National Institute on Aging",
      "project_title": "The National Health and Aging Trends Study and National Study of Caregiving",
      "reporter_link": "https://reporter.nih.gov/project-details/10937690",
      "project_number": "2U01AG032947-16",
      "award_amount_usd": 17449142,
      "project_end_date": "2029-03-31",
      "project_start_date": "2008-09-30",
      "principal_investigators": [
        "VICKI A. FREEDMAN",
        "JENNIFER ANN SCHRACK"
      ]
    },
    {
      "city": "BALTIMORE",
      "state": "Maryland",
      "abstract": "Project Summary The purpose of this application is to extend and enhance the National Health and Aging Trends Study (NHATS) and the National Study of Caregiving (NSOC) to promote the study of late-lif…",
      "fiscal_year": 2025,
      "organisation": "JOHNS HOPKINS UNIVERSITY",
      "nih_institute": "National Institute on Aging",
      "project_title": "The National Health and Aging Trends Study and National Study of Caregiving",
      "reporter_link": "https://reporter.nih.gov/project-details/11128801",
      "project_number": "5U01AG032947-17",
      "award_amount_usd": 17103230,
      "project_end_date": "2029-03-31",
      "project_start_date": "2008-09-30",
      "principal_investigators": [
        "VICKI A. FREEDMAN",
        "JENNIFER ANN SCHRACK"
      ]
    }
  ]
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@nih-reporter",
  "visibility": "public",
  "operation": "search_grants",
  "version": 1,
  "input": {
    "sort": "largest_amount",
    "query": "Johns Hopkins University",
    "state": "MD",
    "max_results": 3,
    "fiscal_years": "2024-2026"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@nih-reporter\",\n  \"visibility\": \"public\",\n  \"operation\": \"search_grants\",\n  \"version\": 1,\n  \"input\": {\n    \"sort\": \"largest_amount\",\n    \"query\": \"Johns Hopkins University\",\n    \"state\": \"MD\",\n    \"max_results\": 3,\n    \"fiscal_years\": \"2024-2026\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@nih-reporter",
  "visibility": "public",
  "operation": "search_grants",
  "version": 1,
  "input": {
    "sort": "largest_amount",
    "query": "Johns Hopkins University",
    "state": "MD",
    "max_results": 3,
    "fiscal_years": "2024-2026"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/nih-reporter`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `search_grants`: Search grants. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-nih-reporter https://api.fous.com/mcp/tools/nih-reporter --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this NIH RePORTER tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a NIH RePORTER account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from reporter.nih.gov when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 29, 2026.

## Related

- [Grants.gov API](https://fous.com/tools/grants-gov.md): U.S. federal grant opportunities and application information.
- [ORCID API](https://fous.com/tools/orcid.md): Researcher identifiers and public research records.
- [USAspending API](https://fous.com/tools/usaspending.md): USAspending provides official federal spending data and searchable awards from October 1, 2007 onward; figures and agency account reports may be revised or lag published award updates.
- [PubMed API](https://fous.com/tools/pubmed.md): PubMed searches medical and life-science articles by topic and retrieves one article’s abstract and publication details; abstracts and free full-text links may be unavailable.
- [NPR API](https://fous.com/tools/npr.md): NPR returns displayed section headlines, searchable articles with summaries and publication details, and available article text; date-filtered searches may miss older stories edited much later.
- [ProPublica Nonprofit Explorer API](https://fous.com/tools/propublica-nonprofit-explorer.md): ProPublica Nonprofit Explorer searches U.S. tax-exempt organizations and shows available latest revenue, assets, filing-year finances, and top reported pay; reporting years and records vary.
- [ClinicalTrials.gov API](https://fous.com/tools/clinicaltrials-gov.md): ClinicalTrials.gov helps users find studies and view public trial records, including sponsor-run or funded studies; site distances are approximate, and contacts, eligibility, or exact dates may be missing.
- [Reuters API](https://fous.com/tools/reuters.md): Reuters provides international news and reporting, with latest section headlines and keyword search; coverage and article details may be limited by access restrictions and news indexing.
- [All Science tools](https://fous.com/tools/category/science)
