# NIH RePORTER Grants Scraper — 13 Fields, No API Key (`themineworks/nih-reporter-grants`) Actor

Scrape NIH RePORTER grants: title, abstract, award $, principal investigator, institution, agency (NCI, NIAID, NIMH), fiscal year. 800K+ grants, no API key. Works in Claude, ChatGPT & any MCP agent.

- **URL**: https://apify.com/themineworks/nih-reporter-grants.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Other, Business, MCP servers
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 grant scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## 🔬 NIH RePORTER Grant Scraper: Funding, PI & Award Data

### Overview

NIH RePORTER Grant Scraper turns the NIH's Research Portfolio Online Reporting Tools (RePORTER) database into clean, structured JSON. Search across 800,000+ active and historical NIH grant records: project title, abstract, award amount, principal investigator, institution, funding agency (NCI, NIAID, NIMH, and every other IC), and fiscal year. No API key, no manual pagination, no wrestling with the RePORTER web UI.

Built for pharma and biotech BD teams, biomedical investors, grant writers, policy researchers, and AI teams that need federal biomedical funding data at scale.

Reliability posture: blocked, empty, or failed runs are never charged. You only pay for a grant record that was actually delivered.

✅ No login | ✅ No API key | ✅ 800K+ grants | ✅ MCP-ready for AI agents

### Features

Search by term across grant title and abstract text.
Filter by fiscal year, funding agency (IC), recipient state, and minimum award amount.
Structured fields for PI, institution, city, state, terms, and award dollars.
Direct link back to the official NIH RePORTER project page.
Same output whether you consume it via CSV, JSON, Excel, API, or MCP tool call.

### How it works

The NIH runs an open REST API at `api.reporter.nih.gov/v2` for RePORTER. Driving it well means understanding the criteria envelope, offset pagination, and inconsistent PI structures. This actor wraps all of that and returns one clean record per project, with the fields that biomedical intelligence teams actually need already lifted to the top level.

The output is flat. Every field (project number, title, abstract, award amount, PI names, institution, funding agency) sits at the top of the record, ready to drop into a CRM, a data warehouse, or a RAG index for a biomedical copilot.

### 🧾 Input configuration

```json
{
  "searchTerms": "CAR-T immunotherapy",
  "agency": "NCI",
  "fiscalYear": [2025, 2026],
  "state": "MA",
  "minAward": 500000,
  "maxResults": 500
}
```

### 📤 Output format

```json
{
  "project_number": "5R01MH125979-05",
  "title": "Gene editing in the brain with CRISPR-PEG",
  "abstract": "CRISPR-based gene editing has the potential to revolutionize the treatment of genetic brain disorders. However, complications with brain delivery have limited the utility of CRISPR-based therapeutics. To address this critical need, we have developed a new gene editing delivery vehicle, termed CRISPR-PEG...",
  "fiscal_year": 2025,
  "award_amount_usd": 667668,
  "funding_agency": "NIH",
  "principal_investigators": ["Hye Young Lee", "NIREN MURTHY"],
  "institution": "UNIVERSITY OF TEXAS HLTH SCIENCE CENTER",
  "institution_city": "SAN ANTONIO",
  "institution_state": "TX",
  "terms": "<Address><Advanced Development><Beds><Behavior assessment><Body Tissues><Brain><Brain Diseases><Brain Disorders><CGG repeat expansion><CRISPR><CRISPR based therapeutics>...",
  "url": "https://reporter.nih.gov/project-details/5R01MH125979-05",
  "scraped_at": "2026-07-15T04:15:09.911Z"
}
```

Every grant record contains these fields:

| Field | Description |
| --- | --- |
| 🆔 `project_number` | Full NIH project number including suffix |
| 📄 `title` | Grant project title |
| 📝 `abstract` | Full project abstract text |
| 📅 `fiscal_year` | Fiscal year of the award |
| 💰 `award_amount_usd` | Total obligated award amount in USD |
| 🏛️ `funding_agency` | Institute or center (NCI, NIAID, NIMH, etc.), or `NIH` when no specific IC is broken out |
| 👤 `principal_investigators` | Array of PI names |
| 🏫 `institution` | Awarded institution name |
| 🏙️ `institution_city` | Institution city |
| 🗺️ `institution_state` | Institution state |
| 🏷️ `terms` | NIH indexed terms for the project, delivered as a single string of angle-bracket-wrapped terms |
| 🔗 `url` | Direct link to the RePORTER project detail page |
| 🕒 `scraped_at` | ISO timestamp of capture |

### 💼 Common use cases

**Pharma business development**
Scout academic partners and licensing targets funded to work on your therapeutic area.
Map the researcher network around a disease indication before a partnership meeting.

**Biotech investing**
Identify early-stage academic research funded before IP is publicly visible.
Track NIH funding momentum in a modality (mRNA, CAR-T, gene therapy) year over year.

**Grant strategy and academic BD**
Benchmark award sizes for similar projects at similar career stages.
Discover peer PIs and co-investigators for collaboration planning.

**Policy and biomedical AI**
Track federal spending priorities across disease areas over time.
Feed abstracts and terms into a biomedical knowledge graph or RAG assistant.

### 🚀 Getting started

1. Open the actor and set `searchTerms` to a topic or leave empty for everything.
2. Optionally filter by `agency` (NCI, NIAID, NIMH, etc.) and `fiscalYear` array.
3. Narrow further by `state` and `minAward` if you want only larger, geo-specific grants.
4. Set `maxResults` to cap the run, then click Start.
5. Download the dataset as JSON, CSV, or Excel, or pull it via API or MCP.

### FAQ

**Do I need an API key?**
No. The NIH RePORTER API v2 is fully open, and the actor handles pagination, retries, and rate limiting for you.

**How fresh is the data?**
Grant records reflect the latest data NIH has published, typically updated on a rolling basis as awards are obligated and revised.

**Can I search across abstracts?**
Yes. `searchTerms` runs against title and abstract text so a term like `"CAR-T immunotherapy"` finds projects that mention it in either field.

**How much does it cost?**
$2 per 1,000 grant records delivered. You pay only for records actually delivered. Empty runs cost nothing.

**Can I use it inside an AI agent?**
Yes. It is exposed as an MCP tool. See below.

### Use in Claude, ChatGPT & any MCP agent

```
https://mcp.apify.com/?tools=themineworks/nih-reporter-grants
```

Or call it programmatically with the Apify client:

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('themineworks/nih-reporter-grants').call({
  searchTerms: 'CAR-T immunotherapy',
  agency: 'NCI',
  fiscalYear: [2025, 2026],
  maxResults: 500,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### 🛠️ Complete your biomedical intelligence pipeline

Pair this actor with the rest of the themineworks government and life-science suite:

- **[ClinicalTrials Scraper](https://apify.com/themineworks/clinicaltrials)**: pull matching clinical trials for grant-funded programs.
- **[FDA 510(k) Scraper](https://apify.com/themineworks/fda-510k)**: track device clearances downstream of NIH-funded research.
- **[USAspending Federal Awards Scraper](https://apify.com/themineworks/usaspending-federal-awards)**: pull every federal contract and grant alongside NIH awards.

Typical flow: nih-reporter surfaces the funded research, clinicaltrials shows what has reached the clinic, fda-510k catches the device outcomes, usaspending gives the full federal-dollar picture.

Questions or need a custom field set? Reach out through the Apify profile.

# Actor input Schema

## `searchTerms` (type: `string`):

Terms to search in title and abstract (e.g. mRNA vaccine, Alzheimer, CRISPR).

## `agency` (type: `string`):

NIH agency code: NCI, NIAID, NIMH, NHLBI, NHGRI, NIDDK, NIA, NINDS, NCCIH, etc. Leave blank for all agencies.

## `fiscalYear` (type: `integer`):

Grant fiscal year (e.g. 2024, 2023). Leave blank for 2023-2025.

## `state` (type: `string`):

Filter by PI institution state.

## `minAward` (type: `integer`):

Return only grants above this total award amount.

## `maxResults` (type: `integer`):

Maximum grants to return.

## Actor input object example

```json
{
  "searchTerms": "mRNA vaccine",
  "maxResults": 25
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchTerms": "mRNA vaccine",
    "maxResults": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/nih-reporter-grants").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchTerms": "mRNA vaccine",
    "maxResults": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/nih-reporter-grants").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": "mRNA vaccine",
  "maxResults": 25
}' |
apify call themineworks/nih-reporter-grants --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=themineworks/nih-reporter-grants",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/1knA58T2YqOF75JDA/builds/VS5rK4jRSq75ryO5C/openapi.json
