# Grants.gov Scraper & Grant Finder API: NSF, NIH Fellowships (`clearfeedlabs/grant-fellowship-radar`) Actor

Federal grant and fellowship alerts from official Grants.gov, NSF Award Search and NIH RePORTER APIs. Filter by keyword, agency, eligibility, category and deadline window. Normalized, deduplicated rows, new-since-last-run mode and 30/7-day deadline alerts.

- **URL**: https://apify.com/clearfeedlabs/grant-fellowship-radar.md
- **Developed by:** [Clearfeed Labs](https://apify.com/clearfeedlabs) (community)
- **Categories:** Lead generation, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 result rows

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Grant & Fellowship Radar: Grants.gov, NSF & NIH Funding Alerts API

**Grant & Fellowship Radar** turns three official U.S. government funding APIs into one clean, deduplicated feed of **open grant and fellowship opportunities** and **newly funded research awards**. Filter by research field keywords, agency, applicant eligibility, funding category and **deadline window**, then schedule it in **since-last-run mode** to get only new or changed opportunities plus **30-day and 7-day deadline alerts**.

Built for **graduate students, postdocs, research labs, university research offices, grant writers, nonprofits and small businesses** who need to find federal funding before the deadline, not after.

- **Grants.gov**: every federal agency's posted and forecasted opportunities (NSF, NIH, DOE, NASA, USDA, NEH, ED, DOD and more), with award floor and ceiling, total funding, expected awards, eligibility, cost-sharing and synopsis.
- **NSF Award Search**: recent NSF awards with institution, state, principal investigator, program and amount, so you can see who's getting funded in your field.
- **NIH RePORTER**: recent NIH (and VA/AHRQ/CDC) awards with institute, activity code, funding opportunity number, organization and amount, deduplicated by core project.

No login, no API key, no cookies and no proxies: only documented public APIs, called politely.

#### Ready-made examples (low spending caps)

- [Graduate fellowships closing in the next 120 days](https://apify.com/clearfeedlabs/grant-fellowship-radar/examples/graduate-fellowships-closing-soon)
- [NIH and HHS health research grants, plus recent NIH awards](https://apify.com/clearfeedlabs/grant-fellowship-radar/examples/nih-health-research-grants-awards)
- [Machine learning and AI funding: open calls plus new NSF and NIH awards](https://apify.com/clearfeedlabs/grant-fellowship-radar/examples/machine-learning-ai-research-funding)

#### Why this one

| | Grant & Fellowship Radar | Typical single-source scraper |
|---|---|---|
| Sources | Grants.gov + NSF awards + NIH RePORTER in **one schema** | One source |
| Deadline windows | `deadlineWithinDays`, `minDaysLeft`, days-left and urgency fields | Raw dates only |
| Deadline alerts | Optional `deadline-alert` rows at 30/7 days (configurable) | None |
| Past winners | Optional: who already won each NIH opportunity, median award, top institutions | None |
| Incremental | Since-last-run: new + changed only; re-delivers when a deadline or status changes | Full dump each run |
| Relevance | Strict keyword match on title + synopsis + eligibility (Grants.gov's own search matches *any* word) | Raw keyword search |
| Dedupe | Merges keyword overlaps, cross-listed opportunities and NIH award years (latest per core project) | Duplicates |

#### Input highlights

| Field | What it does |
|---|---|
| `keywords` | Field or topic, e.g. `graduate fellowship`, `neuroscience`, `climate adaptation`. Each is searched separately and merged. |
| `sources` | `grantsgov`, `nsf`, `nih` |
| `mode` | `all` or `sinceLastRun` (for schedules) |
| `deadlineWithinDays` / `minDaysLeft` | Deadline window, e.g. 14 to 90 days out |
| `agencies` | Grants.gov codes: `NSF`, `HHS-NIH11`, `DOE`, `NASA`, `USDA-NIFA`, `ED`... |
| `eligibilities` | Individuals, public/private universities, nonprofits, small businesses, tribes, governments |
| `fundingCategories`, `fundingInstruments`, `opportunityStatuses`, `postedWithinDays`, `minAwardUsd` | Narrow opportunities |
| `awardsLookbackDays`, `awardStates`, `nihInstitutes` | Narrow NSF/NIH awards |
| `deadlineAlertDays` | Alert thresholds, default `30, 7` |
| `maxItems` | Hard cap on rows and cost, split fairly across sources |

#### Output

Each row has `rowType` (`opportunity`, `award` or `deadline-alert`), `source`, `id`, `isNew`, `title`, `agency`, `url` and the fields for its type:

Real row from a test run on 2026-11-01 (trimmed; past-winners add-on on):

```json
{
  "rowType": "opportunity", "source": "grants.gov", "isNew": true,
  "opportunityNumber": "PAR-25-221",
  "title": "Population Approaches to Reducing Alcohol-related Cancer Risk (R01 Clinical Trial Optional)",
  "agency": "National Institutes of Health", "status": "posted",
  "postedDate": "2024-11-06", "closeDate": "2027-01-07",
  "daysUntilDeadline": 67, "deadlineUrgency": "due-within-90-days",
  "eligibility": ["Public and State controlled institutions of higher education", "Private institutions of higher education", "..."],
  "matchedKeywords": ["cancer"],
  "url": "https://www.grants.gov/search-results-detail/357021",
  "pastWinners": { "fundedProjects": 3, "medianAwardUsd": 610625,
    "topOrganizations": [{ "name": "OHIO STATE UNIVERSITY", "projects": 1 }, { "name": "UNIVERSITY OF KENTUCKY", "projects": 1 }] }
}
```

Award rows add `recipientOrg`, `recipientCity`, `recipientState`, `principalInvestigator`, `program`, `awardDate`, `startDate`, `endDate`, `awardAmountUsd` and (NIH) `coreProjectNumber`, `fundingOpportunityNumber`. Values change over time; always confirm on the linked official page.

#### Pricing

Pay per event. You only pay for rows delivered, and add-ons are **off by default**.

| Event | Price | When |
|---|---|---|
| Actor start | $0.00005 | Each run |
| Result row | $0.002 ($2 per 1,000) | Each opportunity or award row. In since-last-run mode, items you already received aren't charged again unless they change. |
| Add-on: deadline alert | $0.005 | Only with `enableDeadlineAlerts`, when an opportunity you already have crosses a 30/7-day threshold |
| Add-on: past winners | $0.003 | Only with `addPastWinners`, and only on rows where past NIH winners were found |

Set a maximum cost per run in Apify to cap spend. A weekly watchlist of about 50 new items costs about $0.10.

#### How the pricing compares

Store list prices for similar Actors, checked on 2026-11-01 (they may change, so check each listing):

| Actor | Sources | List price per 1,000 rows |
|---|---|---|
| **Grant & Fellowship Radar** | Grants.gov + NSF + NIH, one schema | **$2.00**, add-ons optional |
| hridayrungta/grants-gov-scraper | Grants.gov | $1.50 |
| pink_comic/nih-reporter-search | NIH RePORTER | $2.00 |
| fortuitous_pirate/nih-nsf-funding-scraper | NIH + NSF awards | about $5.47 |
| seibs.co/grant-funding-intel | Grants.gov + IRS 990-PF | $6.00 plus add-ons |
| solidcode/grants-gov-scraper | Grants.gov | $8.00 |
| nexgendata/federal-grant-opportunities | Grants.gov | $30.00 |
| nexgendata/us-grants-funding-tracker | SBIR, NIH and NSF awards | $50.00 |

**What the extra $0.50 per 1,000 buys over the cheapest Grants.gov-only option:** three official sources in one run and one schema, NSF and NIH award intelligence, strict keyword relevance (fewer off-topic rows to pay for), deduplication, deadline windows with days-left and urgency fields, and incremental runs, so on a schedule you pay only for new or changed items. That last one usually makes the total bill lower than re-downloading full lists. The add-ons are priced separately so you only pay for alerts or past-winner data if you use them.

#### Use cases

- Grad students and postdocs: fellowships, dissertation grants and training awards you're eligible for, sorted by deadline.
- Labs and PIs: open calls in your field plus who just won similar NSF/NIH awards.
- Research offices and grant writers: weekly funding digest for faculty by department keyword.
- Nonprofits and small businesses: Grants.gov opportunities filtered by eligibility and category, with deadline alerts.
- Funding intelligence: track new awards by state, institute or program.

#### Scheduling tips

Create a task per watchlist (own `stateKey`), set `mode` to `sinceLastRun`, schedule daily or weekly, and connect the dataset to email, Slack, Google Sheets or a webhook through Apify integrations.

#### Sources, attribution and responsible use

Data comes from [Grants.gov](https://www.grants.gov) (U.S. Department of Health and Human Services), the [NSF Award Search API](https://www.research.gov/common/webapi/awardapisearch-v1.htm) (U.S. National Science Foundation) and the [NIH RePORTER API](https://api.reporter.nih.gov) (U.S. National Institutes of Health). These are U.S. government works. This Actor is independent and is **not affiliated with or endorsed by** Grants.gov, HHS, NSF, NIH or any agency. Requests use an identifying User-Agent, at most about one request per second per host, as NIH RePORTER asks. Principal investigator emails are not collected. Please use award data to research funding, not for unsolicited bulk outreach.

#### Disclaimer

- **Data accuracy:** results are copied from the agencies' public systems, which can be delayed, incomplete or changed after publication (NSF awards often appear weeks after the award date). Deadlines, amounts and eligibility can change, and amendments may not be reflected until the next run. **Always confirm every detail in the official announcement before applying.** Missing a result is possible; do not rely on this Actor as your only search.
- **Not legal, financial, tax or grant-compliance advice.** Eligibility labels are the agency's applicant types, not a determination that you qualify.
- Provided "as is" without warranty. You're responsible for how you use the data and for following each source's terms.

#### FAQ

**Do I need a Grants.gov, NSF or NIH account or key?** No.
**Does it include private foundations?** Not yet; this Actor covers federal sources only.
**Are add-ons on by default?** No. Deadline alerts and past winners are opt-in, and each is listed in the pricing table.
**Why are some deadlines empty?** Forecasts and rolling programs often have none. Turn off `includeNoDeadline` to hide them.

Built by **Clearfeed Labs**: clean, compliant data feeds. Found an issue or want a feature? Open an issue on the Actor's Issues tab with a small example input. If the Actor helped your workflow, an honest review helps other users decide.

***

More Clearfeed Labs tools: [clearfeedlabs.com](https://clearfeedlabs.com/actors/grant-fellowship-radar/)

# Actor input Schema

## `keywords` (type: `array`):

Research field or topic words, e.g. 'graduate fellowship', 'neuroscience', 'climate'. Each keyword is searched separately and results are merged and deduplicated; matchedKeywords shows which hit. Empty = everything (use filters).

## `strictKeywords` (type: `boolean`):

Grants.gov keyword search is broad (any word). When on, an opportunity is kept only if every word of a keyword appears in its title, synopsis or eligibility text.

## `sources` (type: `array`):

Opportunities = money you can apply for. Awards = who just got funded (find labs, advisors, collaborators and active programs).

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

Since last run delivers each opportunity or award once (per stateKey), re-delivers it if its deadline/status changes, and (with the deadline-alert add-on) adds an alert row when a saved opportunity nears its deadline.

## `deadlineWithinDays` (type: `integer`):

Only opportunities that close within this many days. Empty = any future deadline.

## `minDaysLeft` (type: `integer`):

Skip deadlines too soon to apply for, e.g. 14.

## `includeNoDeadline` (type: `boolean`):

Forecasts and rolling programs often have no close date.

## `enableDeadlineAlerts` (type: `boolean`):

In since-last-run mode, emit a deadline-alert row when an opportunity you already received crosses a threshold below (default 30 and 7 days). Each alert costs $0.005.

## `deadlineAlertDays` (type: `array`):

Thresholds for the optional deadline-alert add-on.

## `addPastWinners` (type: `boolean`):

For NIH funding opportunities (PAR-, RFA-, PA- numbers), attach who already won awards under that same opportunity in NIH RePORTER: project count, median award, top institutions and example projects. Charged only for rows where winners are found.

## `agencies` (type: `array`):

e.g. NSF, HHS-NIH11 (NIH), DOE, NASA, USDA-NIFA, ED, DOD. Top-level codes include their sub-agencies.

## `eligibilities` (type: `array`):

Grants.gov applicant types. Grad students usually apply through a university (20, 06) or as Individuals (21).

## `fundingCategories` (type: `array`):

Grants.gov funding activity categories.

## `fundingInstruments` (type: `array`):

Empty = all.

## `opportunityStatuses` (type: `array`):

Posted = open now. Forecasted = coming soon.

## `postedWithinDays` (type: `integer`):

Only opportunities posted recently (Grants.gov date filter).

## `minAwardUsd` (type: `integer`):

Opportunities: award ceiling at least this (unknown ceilings kept). Awards: amount at least this.

## `awardsLookbackDays` (type: `integer`):

NSF/NIH awards made in the last N days. NSF publishes with a lag of several weeks.

## `awardStates` (type: `array`):

Two-letter codes, e.g. CA, MA (NSF/NIH awards only).

## `nihInstitutes` (type: `array`):

e.g. NCI, NIMH, NIGMS, NHLBI (NIH awards only).

## `includeDetails` (type: `boolean`):

Adds award floor/ceiling, total funding, eligibility, description and links (one extra official API call per opportunity).

## `includeAbstracts` (type: `boolean`):

Longer synopsis text and NIH abstracts.

## `maxItems` (type: `integer`):

Cap on rows (and cost) per run.

## `stateKey` (type: `string`):

Separate watchlists keep separate since-last-run memory.

## Actor input object example

```json
{
  "keywords": [
    "machine learning"
  ],
  "strictKeywords": true,
  "sources": [
    "grantsgov",
    "nsf",
    "nih"
  ],
  "mode": "all",
  "includeNoDeadline": true,
  "enableDeadlineAlerts": false,
  "deadlineAlertDays": [
    "30",
    "7"
  ],
  "addPastWinners": false,
  "opportunityStatuses": [
    "posted",
    "forecasted"
  ],
  "awardsLookbackDays": 60,
  "includeDetails": true,
  "includeAbstracts": false,
  "maxItems": 200,
  "stateKey": "default"
}
```

# Actor output Schema

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

No description

## `summary` (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 = {
    "keywords": [
        "machine learning"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("clearfeedlabs/grant-fellowship-radar").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 = { "keywords": ["machine learning"] }

# Run the Actor and wait for it to finish
run = client.actor("clearfeedlabs/grant-fellowship-radar").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "keywords": [
    "machine learning"
  ]
}' |
apify call clearfeedlabs/grant-fellowship-radar --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,clearfeedlabs/grant-fellowship-radar"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OHVOcdO6ThUAS1B1x/builds/GexGYY1lIQcYXv4e1/openapi.json
