# Grants.gov Scraper: Federal Grant Opportunities & Funding (`bogdiehard/grants-gov-scraper`) Actor

Extracts US federal grant opportunities from Grants.gov with award ceiling and floor, eligibility, deadlines and agency contacts. Filter by status, agency or category.

- **URL**: https://apify.com/bogdiehard/grants-gov-scraper.md
- **Developed by:** [Demetrius Greses Jr](https://apify.com/bogdiehard) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.75 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Scraper: Federal Grant Opportunities & Funding

Grants.gov Scraper returns US federal grant and funding opportunities with award ceiling and floor, estimated total funding, eligibility, deadlines and agency contacts as flat JSON, for grant writers and nonprofits that need a filtered feed.

### Use cases

- **Grant writers and consultancies:** pull every open opportunity matching a client's keyword and eligibility code, then rank bids by award ceiling and close date.
- **Nonprofits and universities:** filter by agency and eligibility (for example code 12 for 501(c)(3) nonprofits) and get a daily list of new postings.
- **Forward planning:** run with status `forecasted` to see funding the agencies plan to post months ahead, with estimated application dates.
- **GovTech and fundraising software:** load clean, typed fields (ISO dates, numeric award amounts, plain-text descriptions) into a database or CRM.
- **Market analysis:** total funding and expected number of awards by agency and funding category, from one run.

### Sample output

| id | title | agencyName | closeDate | awardCeiling |
| --- | --- | --- | --- | --- |
| 355100 | Advanced Technological Education (ATE) | U.S. National Science Foundation | 2027-10-07T00:00:00.000Z | 7500000 |
| 334326 | Tribal Colleges and Universities Program (TCUP) | U.S. National Science Foundation | 2026-10-14T00:00:00.000Z | 3500000 |
| 360296 | National Indian Health Outreach and Education | Indian Health Service | 2026-11-02T00:00:00.000Z | 1101311 |

One item as JSON, exactly as the Actor saved it in the test run (item 361159):

```json
{
    "id": "361159",
    "opportunityNumber": "PA-27-036",
    "title": "NIH Research Education Program - Research Experiences (Parent R25 - Clinical Trial Not Allowed)",
    "agencyCode": "HHS-NIH11",
    "agencyName": "National Institutes of Health",
    "status": "posted",
    "docType": "synopsis",
    "openDate": "2026-06-08T00:00:00.000Z",
    "closeDate": "2029-05-05T00:00:00.000Z",
    "cfdaNumbers": [
        "93.859",
        "93.310",
        "93.853",
        "93.879",
        "93.279",
        "93.173",
        "93.273",
        "93.313",
        "93.837",
        "93.242",
        "93.361",
        "93.840",
        "93.866",
        "93.398",
        "93.839",
        "93.THR",
        "93.847",
        "93.855",
        "93.865",
        "93.113",
        "93.838",
        "93.172",
        "93.233",
        "93.121",
        "93.867",
        "93.T21"
    ],
    "awardCeiling": null,
    "awardFloor": null,
    "estimatedTotalFunding": null,
    "expectedNumberOfAwards": null,
    "costSharing": false,
    "fundingInstruments": [
        "Grant"
    ],
    "fundingCategories": [
        "Health"
    ],
    "eligibleApplicants": [
        "State governments",
        "Independent school districts",
        "Others (see text field entitled \"Additional Information on Eligibility\" for clarification)",
        "Private institutions of higher education",
        "For profit organizations other than small businesses",
        "County governments",
        "Small businesses",
        "Special district governments",
        "Public and State controlled institutions of higher education",
        "Native American tribal organizations (other than Federally recognized tribal governments)",
        "Nonprofits having a 501(c)(3) status with the IRS, other than institutions of higher education",
        "City or township governments",
        "Public housing authorities/Indian housing authorities",
        "Native American tribal governments (Federally recognized)",
        "Nonprofits that do not have a 501(c)(3) status with the IRS, other than institutions of higher education"
    ],
    "eligibilityDetails": "Refer to Section III. Eligibility Information in the NOFO for additional information on eligibility.The sponsoring organization must assure support for the proposed program. Appropriate institutional commitment to the program includes the provision of adequate staff, facilities, and educational resources that can contribute to the planned program.Institutions with existing Ruth L. Kirschstein National Research Service Award (NRSA) institutional training grants (e.g., T32) or other Federally funded training programs may apply for a research education grant provided that the proposed educational experiences are distinct from those training programs receiving federal support. In many cases, it is anticipated that the proposed research education program will complement ongoing research training occurring at the applicant organization.Foreign Organizations/International Collaborations:Non-domestic (non-U.S.) Entities (Foreign Organizations) are not eligible to applyNon-domestic (non-U.S.) components of U.S. Organizations are not eligible to apply.Foreign components, as defined in the NIH Grants Policy Statement, are not allowed.",
    "description": "The National Institutes of Health (NIH) Research Education Program supports research education activities in the mission areas of the NIH. The overarching goal of the Research Education program is to:Support educational activities that complement and/or enhance training of a workforce to meet the nation's biomedical, behavioral and clinical research needs;Help recruit individuals with specific specialty or disciplinary backgrounds to research careers in biomedical, behavioral and clinical sciences; and Foster a better understanding of biomedical, behavioral and clinical research and its implications.",
    "contactName": "National Institutes of Health",
    "contactEmail": "NIHTrain@mail.nih.gov",
    "contactPhone": "301-402-2541",
    "additionalInfoUrl": null,
    "lastUpdatedAt": "2026-06-08T11:58:36.000Z",
    "archiveDate": "2029-07-04T04:00:00.000Z",
    "opportunityUrl": "https://www.grants.gov/search-results-detail/361159",
    "sourceUrl": "https://www.grants.gov/search-results-detail/361159",
    "scrapedAt": "2026-10-11T00:59:24.639Z"
}
```

### Pricing

**$2.50 per 1,000 results.** A 500-result run costs about $1.25. You pay only for results saved to your dataset, plus Apify's standard start fee of $0.00005 per run. Apify Silver and Gold plan users get lower per-result prices automatically.

Set **Max results** to cap what a run can cost. The Actor stops cleanly when it reaches your spending limit.

### Input

See the input tab for full configuration options. Every field is optional.

| Field | Type | Description |
| --- | --- | --- |
| `keyword` | string | Full-text search over opportunity titles and descriptions, for example `education`. Leave empty to match every opportunity that passes the other filters. |
| `statuses` | array | Which listings to return: `forecasted`, `posted`, `closed`, `archived`. Default: `forecasted` and `posted`. |
| `agencies` | array | Only opportunities from these agency codes, for example `HHS`, `NSF`, `ED`. A top-level code such as `HHS` automatically includes all its sub-agencies. |
| `fundingCategories` | array | Only these funding category codes, for example `ED`, `HL`, `ST`. |
| `eligibilities` | array | Only opportunities open to these applicant type codes, for example `25`, `12`, `20`. |
| `fundingInstruments` | array | `G` grant, `CA` cooperative agreement, `PC` procurement contract, `O` other. |
| `includeDetails` | boolean | Default `true`. Fetch each opportunity's detail record for award amounts, eligibility, description and contacts (one extra request per result). |
| `maxItems` | integer | Maximum number of opportunities to return, from 1 to 10000. Default 100. |
| `proxyConfiguration` | object | Not needed for the official Grants.gov API. Default `{ "useApifyProxy": false }`. |

Common codes (the full lists are in the input tab):

| Agency code | Agency |
| --- | --- |
| `HHS` | Department of Health and Human Services |
| `NSF` | U.S. National Science Foundation |
| `ED` | Department of Education |
| `DOD` | Department of Defense |
| `USDA` | Department of Agriculture |
| `NASA` | National Aeronautics and Space Administration |

| Funding category | Meaning |
| --- | --- |
| `ED` | Education |
| `HL` | Health |
| `ST` | Science and Technology and other R\&D |
| `ENV` | Environment |
| `ISS` | Income Security and Social Services |
| `AG` | Agriculture |

| Eligibility code | Applicant type |
| --- | --- |
| `25` | Others |
| `12` | Nonprofits with 501(c)(3) status |
| `20` | Private institutions of higher education |
| `23` | Small businesses |
| `00` | State governments |
| `99` | Unrestricted |

Example input:

```json
{
    "keyword": "education",
    "statuses": ["posted"],
    "includeDetails": true,
    "maxItems": 20
}
```

### Integrations

- **API:** run the Actor and fetch results with the [Apify API](https://docs.apify.com/api/v2) or the JavaScript and Python clients.
- **AI agents:** call it as a tool through the [Apify MCP server](https://mcp.apify.com).
- **No-code:** connect it to Make, Zapier or n8n, or export results straight to Google Sheets.
- **Scheduling:** run it daily or hourly with Apify Schedules and get only fresh data.

### FAQ

**What are the limits?** A run returns at most 10,000 opportunities (**Max results**). Search reads 1,000 listings per request. With **Include details** on, each result adds one request to Grants.gov, at most five at a time. Some fields are empty for some listings: forecasts publish no award amounts, and some listings have no close date. For a forecast, `closeDate` is the agency's estimated application date. If a detail request fails after its retries, the result is still returned with the detail fields empty. Status values other than `forecasted`, `posted`, `closed` and `archived` are rejected before the run, because the API returns zero results for them without an error.

**How do the dates work?** `openDate` and `closeDate` taken from the search listing are calendar dates, saved as midnight UTC (`T00:00:00.000Z`). Dates from the detail record (`lastUpdatedAt`, `archiveDate`, and `closeDate` when the listing has none) are the agency's Eastern Time timestamps converted to UTC, so they carry a time of day. Compare the two kinds with that in mind.

**Is this legal?** The Actor collects public data only, from the official Grants.gov API, with no login, and crawls at a polite rate. It is not affiliated with, endorsed by or connected to Grants.gov or the U.S. Government. Contact names, emails and phone numbers are copied only as published on each listing. You are responsible for how you use the data.

**Something broke or a field is missing?** Open an issue on the Actor's Issues tab. We answer within one business day and usually ship a fix within 48 hours.

### Related Actors

- [UK Contracts Finder Scraper](https://apify.com/bogdiehard/uk-contracts-finder-scraper) — UK public contract notices from Contracts Finder, for the same buyers and bid teams.
- [UK Find a Tender Scraper](https://apify.com/bogdiehard/uk-find-a-tender-scraper) — UK public tender notices from Find a Tender.

### Changelog

- **0.1** (2026-10-10) — First release.

# Actor input Schema

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

Full-text search over opportunity titles and descriptions, for example education or climate. Leave empty to match every opportunity that passes the other filters.

## `statuses` (type: `array`):

Which listings to return. Forecasted: planned, not yet posted. Posted: open now. Closed: past the deadline. Archived: older listings. Leave empty for the default, forecasted and posted.

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

Only opportunities from these agencies. Common codes: HHS (Health and Human Services), NSF (National Science Foundation), ED (Education), DOD (Defense), DOE (Energy), USDA (Agriculture), DOC (Commerce), DOI (Interior), USDOJ (Justice), DOL (Labor), DOT (Transportation), EPA (Environmental Protection Agency), NASA, NEA (Arts), NEH (Humanities). Leave empty for all agencies. A top-level code such as HHS automatically includes all its sub-agencies (HHS-NIH11, HHS-CDC-…).

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

Only opportunities in these funding categories. Common codes: ED (Education), HL (Health), ST (Science and Technology and other R\&D), NR (Natural Resources), ENV (Environment), ISS (Income Security and Social Services), LJL (Law, Justice and Legal Services), AG (Agriculture), CD (Community Development), HU (Humanities), O (Other). Leave empty for all categories.

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

Only opportunities open to these applicant types. Common codes: 25 (Others), 12 (Nonprofits with 501(c)(3) status), 20 (Private institutions of higher education), 06 (Public and state-controlled higher education), 22 (For-profit organizations other than small businesses), 23 (Small businesses), 00 (State governments), 01 (County governments), 02 (City or township governments), 05 (Independent school districts), 99 (Unrestricted). Leave empty for all applicants.

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

Only opportunities with these instruments. G: grant. CA: cooperative agreement. PC: procurement contract. O: other. Leave empty for all instruments.

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

Fetch each opportunity's detail record for award amounts, eligibility, description and contacts (one extra request per result).

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

Maximum number of opportunities to return, from 1 to 10000. You are charged per result.

## `proxyConfiguration` (type: `object`):

Grants.gov is an official open-data API, so no proxy is needed. Keep the default.

## Actor input object example

```json
{
  "keyword": "education",
  "statuses": [
    "posted"
  ],
  "includeDetails": true,
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

## `stats` (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 = {
    "keyword": "education",
    "statuses": [
        "posted"
    ],
    "includeDetails": true,
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("bogdiehard/grants-gov-scraper").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",
    "statuses": ["posted"],
    "includeDetails": True,
    "maxItems": 20,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("bogdiehard/grants-gov-scraper").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",
  "statuses": [
    "posted"
  ],
  "includeDetails": true,
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call bogdiehard/grants-gov-scraper --silent --output-dataset

```

## MCP server setup

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

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/K9c7Vu0Pe5VZs0sZn/builds/mpI9Q92R3CZMol7R4/openapi.json
