# Grants.gov Pro - Federal Grant Opportunities (`red.cars/grants-gov-pro`) Actor

Search all Grants.gov federal opportunities (NSF, NIH, HHS, ED, USDA and 100+ agencies): clean rows with number, agency, status, open/close dates, CFDA codes and direct links. Filter by eligibility, category, instrument, agency, CFDA or deadline window. No API key.

- **URL**: https://apify.com/red.cars/grants-gov-pro.md
- **Developed by:** [AutomateLab](https://apify.com/red.cars) (community)
- **Categories:** Developer tools, 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 results

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

## Grants.gov Pro - Federal Grant Opportunities

Search every federal funding opportunity on Grants.gov (NSF, NIH, HHS, ED, USDA, EPA, DOD and 100+ more agencies) and get clean, ready-to-use rows: opportunity number, title, agency, status, open and close dates, CFDA (Assistance Listing) codes, document type and a direct link to the opportunity on Grants.gov.

No API key. No login. No proxy. Data straight from Grants.gov's own search API.

### Comparison

| | Grants.gov Pro | us-grants-funding-tracker | us-federal-grant-scraper |
|---|---|---|---|
| Source | Grants.gov API (official) | grants.gov scraping | grants.gov scraping |
| API key needed | No | No | No |
| Status filter | forecasted / posted / closed / archived | posted only | posted only |
| Eligibility filter | Yes (20+ codes) | No | Limited |
| Funding category filter | Yes | No | Limited |
| Funding instrument filter | Yes (grant / CA / other / PC) | No | No |
| CFDA / Assistance Listing filter | Yes | No | No |
| Deadline window filter (closing within N days) | Yes | No | No |
| Sort by open date / close date / relevance | Yes | No | No |
| Price | $0.005/run + $2.00 per 1,000 rows | ~$2+ per 1,000 rows | ~$2+ per 1,000 rows |

The category leader on the Apify Store has about 60 users total and none of the competing scrapers expose Grants.gov's full filter set. This actor does, plus the deadline window filter grant writers actually ask for.

### Use cases

- Grant writers and nonprofit development teams: find open federal opportunities that match your mission and filter to deadlines closing within the next 30 days.
- Proposal consultants: monitor a portfolio of agencies, categories or Assistance Listings (CFDA) and track open vs closed vs forecasted opportunities.
- Researchers and universities: filter by eligibility code (institutions of higher education) and funding instrument to shortlist fundable opportunities.
- Market and policy analysts: quantify federal funding pipelines by agency, category or CFDA code.

### Input

| Field | Type | Description |
|---|---|---|
| keyword | string | Search words, e.g. `education`, `clean water`. Empty browses all. |
| maxResults | integer | Cap on rows returned, 1 to 1000. Default 10. |
| oppStatuses | array | forecasted, posted, closed, archived. Default: posted. |
| eligibilities | array | Eligibility codes, e.g. 05 (school districts), 06/07 (higher ed), 13 (501c3 nonprofits), 25 (unrestricted). |
| fundingCategories | array | Category codes, e.g. ED (education), HL (health), EN (energy), SC (science). |
| fundingInstruments | array | G (grant), CA (cooperative agreement), O (other), PC (procurement contract). |
| agencies | array | Agency codes, e.g. NSF, NIH, ED, USDA, EPA. |
| cfda | string | Assistance Listing number, e.g. 47.076. |
| oppNum | string | Fetch one opportunity by number, e.g. 21-595. |
| closeWithinDays | integer | Keep only opportunities closing within the next N days. 0 disables. |

### Output

Each row in the default dataset:

| Field | Description |
|---|---|
| id | Grants.gov opportunity id |
| opportunityNumber | Opportunity number, e.g. 21-595 |
| title | Opportunity title |
| agency | Full agency name |
| agencyCode | Agency code, e.g. NSF |
| status | posted / forecasted / closed / archived |
| docType | synopsis / forecast / full announcement |
| openDate | Opening date (MM/DD/YYYY) |
| closeDate | Closing date (MM/DD/YYYY) |
| cfdaList | Assistance Listing numbers |
| url | Direct link to the opportunity on grants.gov |

### Pricing

- $0.005 per actor run
- $2.00 per 1,000 result rows (billed per row; the zero-result hint row is the only row billed when nothing matches)

### FAQ

**Do I need a Grants.gov account or API key?**
No. The actor uses Grants.gov's public search API. No key, no registration, no login.

**How current is the data?**
Rows come live from Grants.gov at run time, the same source the grants.gov search page uses.

**How many results can I get?**
Up to 1,000 rows per run. Grants.gov's API serves deep pages in steps; widen your filters rather than paging past 1,000.

**What does the deadline window filter do?**
`closeWithinDays` keeps only opportunities whose close date falls within the next N days (in US Eastern time), so a grant writer can pull "everything closing this month" in one run.

**Why do closed/archived opportunities matter?**
Historical awards show what agencies actually funded, useful for pipeline research and competitor analysis.

**Can I filter to nonprofits or small businesses only?**
Yes: pass eligibility codes like 13 (501c3 nonprofits) or 20 (small businesses).

**What if my search returns nothing?**
You get a single hint row explaining which filter to loosen, and nothing else is billed.

Pair it with Academic Research MCP (https://apify.com/red.cars/academic-research-mcp) to move from funding opportunity to the published research behind the field.

# Actor input Schema

## `keyword` (type: `string`):

Search words matched against opportunity titles and descriptions, e.g. 'education', 'clean water', 'rural broadband'. Leave empty to browse all opportunities with the other filters.

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

Maximum number of opportunity rows to return, 1 to 1000.

## `oppStatuses` (type: `array`):

Filter by opportunity status. Values: forecasted, posted, closed, archived. Default: posted.

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

Filter by applicant eligibility code, pipe-joined to the API. Common values: 01 county governments, 02 city or township governments, 04 special district governments, 05 independent school districts, 06 public and state institutions of higher education, 07 private institutions of higher education, 08 individuals, 11 other public institutions, 12 nonprofits without 501c3, 13 nonprofits with 501c3, 20 small businesses, 21 for-profit organizations other than small businesses, 25 unrestricted.

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

Filter by funding category code, pipe-joined to the API. Common values: AG agriculture, AR arts, BS business and commerce, CD community development, CM consumer protection, CH crime, ED education, EN energy, CS capacity and community development, HL health, HO housing, IS information and statistics, OZ opportunity zone, JA law justice, SGNL income security and social services, SC science and technology, TR transportation, TU regional development, DK disaster prevention and relief, LC labor, RD food and nutrition, ENV environment, NR natural resources, EL employment, AF agriculture.

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

Filter by funding instrument code, pipe-joined to the API. Values: G grant, CA cooperative agreement, O other, PC procurement contract.

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

Filter by awarding agency code, pipe-joined to the API, e.g. NSF, NIH, HHS, ED, USDA, EPA, DOC, DOD.

## `cfda` (type: `string`):

Filter by Assistance Listing (CFDA) number, e.g. 47.076 or 84.116A. Leave empty for all.

## `oppNum` (type: `string`):

Fetch a specific opportunity by its Grants.gov opportunity number, e.g. 21-595.

## `closeWithinDays` (type: `integer`):

Keep only opportunities whose close date falls within the next N days, counted in US Eastern time. Set 0 to disable. Great for grant writers watching deadlines: 30 covers the month.

## Actor input object example

```json
{
  "keyword": "education",
  "maxResults": 10,
  "oppStatuses": [
    "posted"
  ],
  "closeWithinDays": 0
}
```

# Actor output Schema

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

Default dataset of grant opportunity rows: opportunity id, number, title, agency, status, open/close dates, CFDA list, document type and direct Grants.gov URL.

# 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 = {
    "keyword": "education",
    "maxResults": 10,
    "oppStatuses": [
        "posted"
    ],
    "closeWithinDays": 0
};

// Run the Actor and wait for it to finish
const run = await client.actor("red.cars/grants-gov-pro").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 = {
    "keyword": "education",
    "maxResults": 10,
    "oppStatuses": ["posted"],
    "closeWithinDays": 0,
}

# Run the Actor and wait for it to finish
run = client.actor("red.cars/grants-gov-pro").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 '{
  "keyword": "education",
  "maxResults": 10,
  "oppStatuses": [
    "posted"
  ],
  "closeWithinDays": 0
}' |
apify call red.cars/grants-gov-pro --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,red.cars/grants-gov-pro"
        }
    }
}
```

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/6bHlM4kh2GwWoZIZn/builds/abya5WzKIS8jAYP2O/openapi.json
