# US Federal Grants (Grants.gov): Funding Opportunities API (`studded_lantana/grants-gov-opportunities`) Actor

Returns US federal grant opportunities from Grants.gov as flat JSON: title, agency, award ceiling and floor, total funding, expected awards, deadline, eligibility, ALN, category and description. Filter by keyword, agency, category, eligibility, posted or closing window.

- **URL**: https://apify.com/studded_lantana/grants-gov-opportunities.md
- **Developed by:** [amit ashkenazi](https://apify.com/studded_lantana) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 90.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 opportunities

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

## US Federal Grants (Grants.gov): Funding Opportunities API

**What it does:** returns US federal grant opportunities from **Grants.gov** as flat JSON records: title, opportunity number, agency and parent department, award ceiling and floor, estimated total funding, expected number of awards, posting and closing dates, eligible applicant types, Assistance Listing (ALN/CFDA) numbers, funding category, cost-sharing flag, description and the official link. Forecasted opportunities also carry the estimated award date, project start and fiscal year. Filter by keyword, agency, category, applicant type, award type, ALN, "posted in the last N days", "closing in the next N days" and minimum award size.

> This product uses the Grants.gov API but is not endorsed or certified by the U.S. Department of Health and Human Services.

Why use it instead of the Grants.gov search page: the search API returns only summary fields per opportunity (number, title, agency, posted and closing dates). This Actor fetches each opportunity's full record and flattens it into one row, so you get the money, eligibility and deadline fields in the same table, ready for a spreadsheet, a CRM or an AI agent. It reads the official, documented Grants.gov REST API, so there is no HTML parsing to break.

### Use cases

- **Find grants your organisation can apply for.** Nonprofits, universities, tribes, cities and small businesses filter by applicant type and category and get open opportunities with their deadline and award size.
- **Track new federal funding every week.** Schedule a run with `postedWithinDays: 7` to get every opportunity posted in the last week.
- **Plan ahead with forecasts.** Forecasted opportunities show what agencies plan to fund, with estimated amounts and dates, before applications open.
- **Build deadline calendars.** `closingWithinDays: 30` lists every opportunity due in the next month.
- **Research federal funding.** Pull closed opportunities by agency or ALN to see how much a program offers and to whom it is open.

### Input

```json
{
  "statuses": ["posted"],
  "keyword": "health",
  "agencies": ["HHS"],
  "fundingCategories": ["HL"],
  "eligibilities": ["12"],
  "fundingInstruments": ["G", "CA"],
  "alnNumbers": ["93."],
  "postedWithinDays": 60,
  "closingWithinDays": 90,
  "minAwardCeiling": 250000,
  "maxItems": 100
}
```

All filters are optional and combine with AND; values within one filter combine with OR.

- `statuses`: `forecasted` (announced, not yet open), `posted` (open now), `closed`. Default: forecasted and posted.
- `keyword`: Grants.gov keyword search, the same as the search box on grants.gov.
- `agencies`: Grants.gov agency codes. A department code includes all its sub-agencies (`HHS` covers NIH, CDC and the rest; `DOC` covers NOAA and NIST); `HHS-NIH11` matches only NIH. Note `DOT` is Transportation and `USDOT` is Treasury.
- `fundingCategories`: category codes such as `HL` (Health), `ED` (Education), `EN` (Energy), `ENV` (Environment), `ST` (Science and Technology), `AG` (Agriculture). The input form lists them all.
- `eligibilities`: applicant-type codes such as `00` (State governments), `12` (501(c)(3) nonprofits), `06` (public universities), `23` (small businesses), `99` (unrestricted).
- `fundingInstruments`: `G` grant, `CA` cooperative agreement, `PC` procurement contract, `O` other.
- `alnNumbers`: Assistance Listing (CFDA) numbers or prefixes: `93.` is every HHS program, `93.213` one program.
- `postedWithinDays`: posted in the last N days, including today. `closingWithinDays`: deadline between today and N days from now.
- `minAwardCeiling`: maximum award per recipient of at least this many US dollars.
- `maxItems` (default 100): stop after this many opportunities; it also caps the cost of a run.

### Output

One record per opportunity. A real example (posted 2026-10-09, fetched 2026-10-12; lists shortened here):

```json
{
  "opportunity_id": "360905",
  "opportunity_number": "RFA-CA-28-013",
  "title": "Carcinogen Hazard Assessment Monographs Program (CHAMP) (R01 Clinical Trial Not Allowed)",
  "status": "posted",
  "is_forecast": false,
  "agency_code": "HHS-NIH11",
  "agency_name": "National Institutes of Health",
  "parent_agency_code": "HHS",
  "parent_agency_name": "Department of Health and Human Services",
  "category": "Discretionary",
  "funding_instruments": ["Grant"],
  "funding_categories": ["Health"],
  "eligible_applicants": ["State governments", "Small businesses", "Private institutions of higher education", "..."],
  "eligibility_details": "Refer to Section III. Eligibility Information in the NOFO for additional information on eligibility...",
  "aln_numbers": ["93.393", "93.396", "93.399"],
  "aln_programs": ["Cancer Cause and Prevention Research", "Cancer Biology Research", "Cancer Control"],
  "posted_date": "2026-10-09",
  "close_date": "2027-02-09",
  "close_date_note": null,
  "archive_date": "2027-04-10",
  "estimated_award_date": null,
  "estimated_project_start": null,
  "fiscal_year": null,
  "award_ceiling": 700000.0,
  "award_floor": 700000.0,
  "estimated_total_funding": 800000.0,
  "expected_awards": 1,
  "cost_sharing": false,
  "description": "Through this Notice of Funding Opportunity (NOFO), the National Cancer Institute invites applications to the Carcinogen Hazard Assessment Monographs Program (CHAMP) Initiative. NCI seeks meritorious proposals...",
  "more_info_url": null,
  "last_updated": "2026-10-09",
  "is_open": true,
  "url": "https://www.grants.gov/search-results-detail/360905",
  "fetched_at": "2026-10-12T04:23:29Z"
}
```

A forecasted opportunity from the same day has, for example, `"is_forecast": true`, `"estimated_award_date": "2027-08-31"`, `"estimated_project_start": "2027-09-30"`, `"fiscal_year": 2027`, `"estimated_total_funding": 15000000.0`.

| Field | Meaning |
|---|---|
| `opportunity_id`, `opportunity_number` | Grants.gov ID (used in the link) and the agency's funding opportunity number |
| `status`, `is_forecast`, `is_open` | `forecasted`, `posted` or `closed`; `is_open` is true for posted opportunities whose deadline is today or later, or that have no fixed deadline |
| `agency_code`, `agency_name`, `parent_agency_code`, `parent_agency_name` | The issuing agency and its department |
| `category` | Grants.gov opportunity category, e.g. Discretionary or Earmark |
| `funding_instruments`, `funding_categories` | Award types and Grants.gov funding categories |
| `eligible_applicants`, `eligibility_details` | Applicant types that may apply, and the agency's extra eligibility text |
| `aln_numbers`, `aln_programs` | Assistance Listing (formerly CFDA) numbers and program titles |
| `posted_date`, `close_date`, `close_date_note`, `archive_date` | Dates as `YYYY-MM-DD`. For forecasts, `close_date` is the estimated application deadline. `close_date_note` is the agency's explanation, e.g. multiple deadlines |
| `estimated_award_date`, `estimated_project_start`, `fiscal_year` | Forecasts only |
| `award_ceiling`, `award_floor`, `estimated_total_funding`, `expected_awards` | US dollars and number of awards, when the agency stated them |
| `cost_sharing` | Whether cost sharing or matching is required |
| `description` | The synopsis or forecast description as plain text, cut at 3,000 characters |
| `more_info_url` | The agency's link for the full announcement, when it is a URL |
| `last_updated` | Date of the latest synopsis or forecast version |
| `url` | The opportunity page on grants.gov |

### FAQ

**How do I get Grants.gov data as JSON or CSV?**
Run the Actor with the filters you want. Results land in an Apify dataset, which you can download as JSON, CSV or Excel, or read through the Apify API.

**Does Grants.gov have an API?**
Yes. Grants.gov offers a public REST API, and this Actor uses it. Its search returns only summary fields, so the Actor also fetches each opportunity's details and joins them into one record.

**How do I find grants for small businesses or nonprofits?**
Set `eligibilities` to `["23"]` for small businesses, or `["12"]` for 501(c)(3) nonprofits, and `statuses` to `["posted"]`. Add `fundingCategories` or `keyword` to narrow the topic.

**How do I get new federal grants every week?**
Create an Apify schedule that runs the Actor weekly with `postedWithinDays: 7`. Use `opportunity_id` to skip opportunities you have already seen.

**Which grants close soon?**
Set `statuses` to `["posted"]` and `closingWithinDays` to, for example, `30`.

**How do I see how much a grant pays?**
Each record has `award_ceiling`, `award_floor`, `estimated_total_funding` and `expected_awards`. They are `null` when the agency did not state them (Grants.gov shows "none" or 0 in that case). Use `minAwardCeiling` to keep only larger awards.

**Does it return contact details?**
No. Agency contact names, emails and phone numbers are never returned, and email addresses and phone numbers inside descriptions are replaced with `[email removed]` / `[phone removed]`. Each record links to the official opportunity page.

### Pricing

Pay per event:

- **$0.005 per run** (start).
- **$0.002 per opportunity** returned, so $2 per 1,000 opportunities.

You only pay for opportunities that match your filters. Set a maximum charge per run in Apify to cap spend.

### Limits

- About 860 posted and 600 forecasted opportunities exist at any time (October 2026), so an unfiltered run returns up to `maxItems` of them, newest first.
- One search considers at most the 5,000 most recently posted matches; `closed` alone has about 8,700, so add filters or `postedWithinDays` when you include it. Archived opportunities are not offered.
- `minAwardCeiling` is checked after details are fetched; opportunities that do not state a ceiling are dropped when it is set.
- Amounts, dates and eligibility text are only present when the agency published them. Values are passed through as Grants.gov publishes them, except that "none" and 0 amounts become `null` and HTML is converted to plain text.
- Dates are calendar dates as Grants.gov shows them (US Eastern time); the time of day of a deadline is in `close_date_note` or the full announcement.
- Source: Grants.gov, U.S. Department of Health and Human Services. This product uses the Grants.gov API but is not endorsed or certified by the U.S. Department of Health and Human Services.

# Actor input Schema

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

Which opportunities to return. posted = open for applications now (default, with forecasted). forecasted = announced by the agency but not yet open; shows estimated dates and amounts. closed = past the application deadline, for research on past funding. Example: \["posted"].

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

Grants.gov keyword search, the same as the search box on grants.gov, e.g. "rural broadband" or "opioid". Leave empty for all opportunities. Letters, digits, spaces and . , & ' ( ) / - only.

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

Agency codes as on Grants.gov; a department code includes its sub-agencies. Examples: "HHS" (incl. NIH, CDC), "USDA", "DOE", "NSF", "DOD", "DOC" (incl. NOAA), "DOS" (State), "USDOJ" (Justice), "DOT" (Transportation), "USDOT" (Treasury), "EPA", "NASA". "HHS-NIH11" matches only NIH. Leave empty for all agencies.

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

Grants.gov category codes: AG Agriculture, AR Arts, BC Business, CD Community Dev., CP Consumer Protection, DPR Disaster Relief, ED Education, ELT Employment, EN Energy, ENV Environment, FN Food/Nutrition, HL Health, HO Housing, HU Humanities, IIJ Infrastructure Act, IS Statistics, ISS Social Services, LJL Justice, NR Natural Resources, OZ Opportunity Zones, RD Regional Dev., RT Recreation, ST Science/Tech, T Transportation, O Other. Example: \["HL", "ED"].

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

Applicant-type codes: 00 State gov, 01 County gov, 02 City/township gov, 04 Special district, 05 School district, 06 Public/state higher ed, 07 Federally recognized tribes, 08 Housing authorities, 11 Other tribal orgs, 12 Nonprofit 501(c)(3), 13 Nonprofit non-501(c)(3), 20 Private higher ed, 21 Individuals, 22 For-profit (not small), 23 Small business, 25 Others, 99 Unrestricted. Example: \["23"].

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

Keep opportunities using any of these award types: G Grant, CA Cooperative agreement, PC Procurement contract, O Other. Example: \["G", "CA"]. Leave empty for all.

## `alnNumbers` (type: `array`):

Keep opportunities under these Assistance Listing (formerly CFDA) numbers. A prefix matches all programs below it: "93." all HHS programs, "10." all USDA programs, "93.213" a single program. Leave empty for all.

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

Keep opportunities first posted in the last N days, including today (US dates as shown on Grants.gov). For a weekly check of new funding use 7; for a daily check use 2 and skip opportunity_id values already seen. Leave empty for all.

## `closingWithinDays` (type: `integer`):

Keep opportunities whose application deadline is between today and N days from now, e.g. 30 for deadlines in the coming month. Opportunities without a fixed deadline are dropped when this is set. Leave empty for all.

## `minAwardCeiling` (type: `integer`):

Keep opportunities whose maximum award per recipient is at least this many US dollars, e.g. 500000. Opportunities that do not state a ceiling are dropped when this is set. You are charged only for opportunities returned.

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

Stop after this many matching opportunities, e.g. 100. You are charged per opportunity returned, so this also caps the cost of the run. About 860 opportunities are open and 600 forecasted at any time (Oct 2026).

## Actor input object example

```json
{
  "statuses": [
    "forecasted",
    "posted"
  ],
  "keyword": "climate",
  "maxItems": 100
}
```

# Actor output Schema

## `opportunities` (type: `string`):

One record per Grants.gov opportunity: agency, award ceiling and floor, total funding, deadline, eligibility, ALN and link.

# 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": "climate"
};

// Run the Actor and wait for it to finish
const run = await client.actor("studded_lantana/grants-gov-opportunities").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": "climate" }

# Run the Actor and wait for it to finish
run = client.actor("studded_lantana/grants-gov-opportunities").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": "climate"
}' |
apify call studded_lantana/grants-gov-opportunities --silent --output-dataset

```

## MCP server setup

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

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/wwhHV7wibzDxoMtII/builds/T6e3LGrwaAAwCNFX6/openapi.json
