NIH RePORTER API: Search Grant Funding, Award Amounts, and Principal Investigators
Search NIH grant awards by topic, agency, institution, or state. Returns project title, abstract, award amount, and PI data for research funding intelligence. No API key required.
The actor referenced in this article. Pay only for results delivered.
The NIH funds over $40 billion in research each year across 27 institutes and centers. Every active grant is recorded in NIH RePORTER with project details, award amounts, and principal investigator data. Our NIH RePORTER Scraper makes that database searchable without navigating the export interface.
What you get per grant
project_num: NIH project numbertitle: project titleabstract: full project abstractagency: funding agency (e.g. NCI, NIAID, NHLBI)award_amount: total award amount in USDfiscal_year: fiscal year of the awardpi_names: list of principal investigator namespi_profile_ids: NIH profile IDs for each PIorganization: institution namecityandstate: institution locationstart_dateandend_date: project datesactivity_code: grant mechanism (R01, R21, K99, etc.)scraped_at: ISO timestamp
Python example
import requests, time
run = requests.post(
"https://api.apify.com/v2/acts/themineworks~nih-reporter-grants/runs",
headers={"Authorization": f"Bearer {APIFY_TOKEN}"},
json={
"query": "CRISPR gene editing cancer",
"agency": "NCI",
"maxResults": 100
}
)
run_id = run.json()["data"]["id"]
while True:
r = requests.get(
f"https://api.apify.com/v2/actor-runs/{run_id}",
headers={"Authorization": f"Bearer {APIFY_TOKEN}"}
).json()
if r["data"]["status"] in ("SUCCEEDED", "FAILED"):
break
time.sleep(5)
grants = requests.get(
f"https://api.apify.com/v2/actor-runs/{run_id}/dataset/items",
headers={"Authorization": f"Bearer {APIFY_TOKEN}"}
).json()
total = sum(g.get("award_amount", 0) for g in grants)
print(f"{len(grants)} grants, total ${total:,.0f}")
for g in grants[:5]:
print(g["title"], f"${g['award_amount']:,.0f}")
Map funding by institution
import pandas as pd
df = pd.DataFrame(grants)
df["award_amount"] = pd.to_numeric(df["award_amount"], errors="coerce")
by_org = df.groupby("organization")["award_amount"].agg(["sum", "count"])
by_org.columns = ["total_funding", "grant_count"]
by_org = by_org.sort_values("total_funding", ascending=False)
print(by_org.head(20))
Parameters
| Parameter | Default | Notes |
|---|---|---|
query | None | Keyword search across title and abstract |
agency | None | NIH agency code (e.g. "NCI", "NIAID") |
activityCode | None | Grant mechanism (e.g. "R01", "K99") |
state | None | Institution state code |
fiscalYear | latest | Fiscal year of award |
maxResults | 100 | Maximum grants to return |
Use cases
Academic business development. Identify PIs at universities who have recently received NIH funding in your technology area. Approach them as potential research collaborators or licensing partners.
Active funding mapping. Before launching a new research program, pull all active NIH grants in the space to understand who is funded, at what scale, and by which agencies.
Grant writing support. Pull funded abstracts for R01s in your area to understand how funded investigators frame their specific aims and what language resonates with study sections.
Startup competitive intelligence. SBIR and STTR grants fund early-stage companies. Search for grants awarded to companies rather than universities to map the venture-fundable startups receiving NIH validation.
Life sciences sales. Target institutions and PIs with active NIH funding in your product’s application area: active funding means active spending on lab consumables, instruments, and software.
Pricing
$0.0025 per grant record. Empty queries are not charged.
Available on Apify.
Explore the scraper referenced in this article: inputs, outputs, and pricing, then run it on Apify.
arXiv Scraper: Search AI, Physics, and Biology Preprints with PDF Links via API
Search arXiv preprints by keyword, category, or author. Returns title, abstract, authors, categories, and PDF links. Track AI research before peer review. No API key required.
ClinicalTrials.gov API v2: How to Search 600,000 Studies and Track Trial Status
How to use the ClinicalTrials.gov v2 REST API: what changed from v1, which filters actually exist, and Python for bulk pulls and status monitoring.
Crossref API: 150 Million DOIs, Citation Counts, and Bibliographic Data for Free
Crossref's free REST API returns journal and article metadata, reference lists and citation counts for 150M+ DOIs, with no API key needed.
Google Trends API for Python in 2025: pytrends vs Scraper
Google Trends has no official API. Learn why pytrends breaks, how the SERP API approach works, and the fastest way to pull trend data into Python without getting rate-limited.