# NIH Research Funding Monitor - Grant Momentum Signals (`datasignalslab/nih-research-funding-monitor`) Actor

NIH research funding monitor: recent grants by organization or topic, with funding momentum and top awards, scored. Pay per query.

- **URL**: https://apify.com/datasignalslab/nih-research-funding-monitor.md
- **Developed by:** [DataSignals Lab](https://apify.com/datasignalslab) (community)
- **Categories:** AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $200.00 / 1,000 query analyzeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Research Funding Monitor: Grants, Momentum and Top Awards

**See where NIH research funding is flowing, by organization or by research topic, scored and ranked instead of dumped as raw rows.** This Actor reads the official NIH RePORTER API and turns recent grants into a usable research-funding signal: total funding momentum, the largest recent awards, and which organizations dominate a field. Give it a university, institute, or biotech to profile, or a research topic to see who is winning the money, and it returns scored, ranked grants with a direct link to each project on RePORTER.

NIH research funding is an early indicator of where biomedical R&D is heading, often years before products, trials, or approvals. This monitor surfaces that momentum per organization or research area as a continuous R&D signal.

### Why this is different

Most grant tools hand back a raw list of award rows and leave the analysis to you. This Actor computes the signal layer on top of NIH RePORTER:

- **Funding momentum** is summarized per query as total recent award value plus grant count, so you see concentration at a glance.
- **Top organization** is identified for each query by summing award value, which tells you who dominates a topic search.
- **Impact score (0 to 100)** ranks every grant by award size plus recency, so a large, recent grant rises to the top.
- **Two modes**, organization and topic, let you either profile one institution's funding or scan who is funding a research area.
- **Verifiable** output: every grant carries a direct RePORTER project URL, so any number can be checked at the source.


Be honest about scope: this is a research-funding signal, not a direct ticker mapping. NIH funds universities, institutes, and smaller biotechs, so treat the output as upstream R&D intelligence, not a public-company revenue feed.

### Who it's for

- **Biotech investors and research analysts** who want to track where R&D capital concentrates before it shows up in pipelines or readouts.
- **Competitive-intelligence teams** monitoring a rival institution's funded research or a fast-moving research area.
- **Fintech and research-app builders** who need a clean funding-momentum data feed to drop into a product or model.

### Use cases

- **Profile an institution (organization mode):** scan "Broad Institute" or "Dana-Farber Cancer Institute" to get its total recent NIH funding, grant count, and largest awards.
- **Map a research field (topic mode):** scan "CRISPR gene therapy" to see which organizations are winning the biggest awards in that area and which institution leads.
- **Competitor watch:** run a list of rival organizations on a schedule to detect new high-value awards as they land.
- **Theme screening:** scan several topics at once (for example disease areas or modalities) and rank them by total recent funding momentum.
- **High-value filter:** set a minimum impact score so you only see large, recent awards (1M dollar plus grants) across a watchlist.

### Input

The Actor accepts a list of queries plus a mode that decides how each query is interpreted: as an organization name or as a research topic.

| Field | Type | Description |
|---|---|---|
| `queries` | array | Required. One or more organization names (e.g. Broad Institute) or research topics (e.g. CRISPR gene therapy), depending on Mode. |
| `mode` | string | `organization` (match each query as an institution name) or `topic` (research-area text search). Default `organization`. |
| `fiscalYears` | array | Optional. Limit to specific fiscal years (e.g. 2026, 2025). Empty means the last three years. |
| `maxProjects` | integer | Largest recent grants to return and rank per query. Default 25, max 100. |
| `minImpact` | integer | Only return grants at or above this impact score (e.g. 75 for 1M dollar plus recent awards). Default 0 returns all. |

In organization mode, if the full name returns no grants, the Actor automatically falls back to shorter variants built from the first words of the name (for example "Dana-Farber Cancer Institute" narrows to its first two words, then the first word) to match the RePORTER naming convention.

### Output

One dataset item per query. Each item carries the query, mode, total funding, grant count, a high-value (1M dollar plus) count, the top organization, and a ranked list of grants. Example:

```json
{
  "type": "nih_funding",
  "query": "Broad Institute",
  "mode": "organization",
  "total_funding": 113000000.0,
  "grant_count": 25,
  "high_value_count": 8,
  "top_org": "BROAD INSTITUTE, INC.",
  "grants": [
    {
      "title": "Broad Institute Genome Sequencing Center",
      "organization": "BROAD INSTITUTE, INC.",
      "pi_name": "Smith, Jane A",
      "award_amount": 36000000.0,
      "fiscal_year": 2026,
      "project_num": "U54HG000000",
      "agency": "National Human Genome Research Institute",
      "impact": 100,
      "catalyst": "$36,000,000 FY2026 to BROAD INSTITUTE, INC.",
      "url": "https://reporter.nih.gov/project-details/10000000"
    }
  ]
}
````

Grants are sorted highest impact first. Example values illustrate the field shapes; live amounts, names, and IDs come straight from RePORTER.

### How the score works

The impact score is transparent and computed in code from two factors: award size and recency.

- **Size:** 5M dollar plus scores 90, 1M dollar plus scores 75, 500K dollar plus scores 60, 250K dollar plus scores 50, and anything smaller scores 40.
- **Recency:** a grant in the current fiscal year adds 10 points, and a grant from the prior fiscal year adds 5 points. The total is capped at 100.

So a large, current-year award reaches the top of the ranking, while older or smaller grants settle lower. The `top_org` per query is chosen by summing award amounts across all returned grants and picking the organization with the most funding.

### Use with AI agents and automation

This Actor is built to be called by code and by AI agents, not just clicked in the UI:

- **AI agent frameworks:** invoke it as a tool from LangChain or LlamaIndex agents to pull NIH funding signals on demand.
- **Apify MCP server:** expose the Actor to MCP-aware assistants such as Claude, ChatGPT, and Cursor so an agent can call it automatically.
- **No-code automation:** connect it to Zapier or Make to route results into sheets, databases, or alerts.
- **Webhooks and scheduling:** trigger downstream systems via webhooks on run completion, or run on a schedule for continuous monitoring.
- **JSON on demand:** every run returns clean JSON through the Apify API for existing data pipelines.

### Pricing

**Pay-per-event, charged per query analyzed, with no subscription.** Scanning a list of 10 organizations or 10 topics is 10 charges. You pay only for the queries you scan, which keeps ad-hoc lookups cheap and scheduled scans predictable.

### Data source and compliance

The Actor reads the official **NIH RePORTER API v2**, a free, public source that requires no API key, no registration, and no authorization of any kind. RePORTER covers NIH and other HHS divisions (such as CDC, FDA, AHRQ, and HRSA) plus VA. All data is publicly funded research-award information. The Actor collects no personal data beyond the principal-investigator name that RePORTER already publishes on each public award.

### FAQ

**Organization or topic, which mode do I use?** Use organization mode to profile one institution's funding; use topic mode to see which organizations are funding a research area.

**Can an AI agent call this automatically?** Yes. Expose the Actor through the Apify MCP server and an MCP-aware agent (Claude, ChatGPT, Cursor) can call it on its own, or invoke it as a tool from LangChain or LlamaIndex.

**Does it map grants to stock tickers?** No. NIH funds universities, research institutes, and smaller biotechs, not mostly public companies, so there is no direct ticker mapping. Treat the output as an upstream research-funding signal alongside clinical-trial and approval data.

**How current is the data?** NIH RePORTER is updated continuously, and each run reads the latest available awards for the selected fiscal years.

**What if my organization name returns nothing?** The Actor automatically retries with shorter variants built from the first words of the name, since RePORTER stores institution names in its own format.

**How are grants ranked?** By the impact score, which combines award size and recency. The largest, most recent awards rank first within each query.

*Keywords: NIH research funding, NIH grants, NIH RePORTER API, research funding momentum, R\&D signal, biomedical research funding, top research organizations, largest research awards, grant momentum, life sciences data, university research grants, biotech research funding, alternative data.*

***

**Disclaimer:** Provided as data for research, screening, and monitoring, not investment advice. Historical funding patterns do not guarantee future results.

# Actor input Schema

## `queries` (type: `array`):

One or more organization names (e.g. Broad Institute, Stanford University) or research topics (e.g. CRISPR gene therapy) - depending on Mode.

## `mode` (type: `string`):

organization = match each query as an institution name; topic = match each query as a research-area text search.

## `fiscalYears` (type: `array`):

Limit to these fiscal years (e.g. 2026, 2025). Leave empty for the last three years.

## `maxProjects` (type: `integer`):

How many of the largest recent grants to return and rank per query.

## `minImpact` (type: `integer`):

Only return grants at or above this impact score (e.g. 75 = $1M+ recent awards). 0 = all.

## Actor input object example

```json
{
  "queries": [
    "Broad Institute",
    "Dana-Farber Cancer Institute"
  ],
  "mode": "organization",
  "fiscalYears": [],
  "maxProjects": 25,
  "minImpact": 0
}
```

# 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 = {
    "queries": [
        "Broad Institute",
        "Dana-Farber Cancer Institute"
    ],
    "fiscalYears": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("datasignalslab/nih-research-funding-monitor").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 = {
    "queries": [
        "Broad Institute",
        "Dana-Farber Cancer Institute",
    ],
    "fiscalYears": [],
}

# Run the Actor and wait for it to finish
run = client.actor("datasignalslab/nih-research-funding-monitor").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 '{
  "queries": [
    "Broad Institute",
    "Dana-Farber Cancer Institute"
  ],
  "fiscalYears": []
}' |
apify call datasignalslab/nih-research-funding-monitor --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NIH Research Funding Monitor - Grant Momentum Signals",
        "description": "NIH research funding monitor: recent grants by organization or topic, with funding momentum and top awards, scored. Pay per query.",
        "version": "0.1",
        "x-build-id": "CWL8NxwWE4ewG0073"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/datasignalslab~nih-research-funding-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-datasignalslab-nih-research-funding-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/datasignalslab~nih-research-funding-monitor/runs": {
            "post": {
                "operationId": "runs-sync-datasignalslab-nih-research-funding-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/datasignalslab~nih-research-funding-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-datasignalslab-nih-research-funding-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "queries"
                ],
                "properties": {
                    "queries": {
                        "title": "Organizations or research topics",
                        "type": "array",
                        "description": "One or more organization names (e.g. Broad Institute, Stanford University) or research topics (e.g. CRISPR gene therapy) - depending on Mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "mode": {
                        "title": "Search mode",
                        "enum": [
                            "organization",
                            "topic"
                        ],
                        "type": "string",
                        "description": "organization = match each query as an institution name; topic = match each query as a research-area text search.",
                        "default": "organization"
                    },
                    "fiscalYears": {
                        "title": "Fiscal years (optional)",
                        "type": "array",
                        "description": "Limit to these fiscal years (e.g. 2026, 2025). Leave empty for the last three years.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxProjects": {
                        "title": "Max grants per query",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "How many of the largest recent grants to return and rank per query.",
                        "default": 25
                    },
                    "minImpact": {
                        "title": "Minimum impact score (0-100)",
                        "minimum": 0,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Only return grants at or above this impact score (e.g. 75 = $1M+ recent awards). 0 = all.",
                        "default": 0
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
