# Grants.gov Opportunities: US Federal Grants Feed (`offerastudio/grants-gov-opportunities`) Actor

Search US federal grant opportunities from the official Grants.gov API by keyword, eligibility, funding category, agency and dates. Gets award ceiling and floor, expected awards, eligibility, ALN numbers and a summary. Optional new-since-last-run monitor mode.

- **URL**: https://apify.com/offerastudio/grants-gov-opportunities.md
- **Developed by:** [Offera Studio](https://apify.com/offerastudio) (community)
- **Categories:** Lead generation, 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 opportunity returneds

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

### What does Grants.gov Opportunities do?

**Grants.gov Opportunities** searches **US federal grant opportunities** through the **official Grants.gov API** and returns one clean row per opportunity. It also has a **"new since last run" monitor mode** that remembers what it has seen and returns only **new and changed** opportunities. No key, no scraping.

Each row has:

- **opportunity number, title and agency** (with the top-level agency)
- **status** (posted or forecasted), **posted date and close date**
- **award ceiling and floor**, **expected number of awards** and **estimated total funding**
- the **list of eligible applicants** (nonprofits, small businesses, state and local governments, individuals ...)
- **ALN / CFDA numbers** and program titles, funding instruments and funding categories
- a **description summary** (the first 600 characters, plain text)
- the **Grants.gov link**

### Who is it for?

- **Nonprofits and grant writers**: a weekly list of new opportunities open to 501(c)(3) organizations in your field.
- **Universities and research offices**: new NSF, NIH, DOE and other announcements, with ceilings and close dates.
- **Small businesses**: opportunities open to small businesses, with the award size up front.
- **Consultants and lead-generation teams**: which agencies fund what, and what is forecast before it opens.

### How to use it

1. Click **Start** with the default input: the 25 newest posted and forecasted opportunities.
2. Add filters: keywords, who can apply, funding category, agency (`HHS`, `NSF`, `HHS-NIH11` or part of a name), ALN number, date windows, minimum award ceiling.
3. For alerts, choose **Mode: New since last run** and **schedule** the Actor daily. The first run saves a baseline; later runs return only what is new or changed. Connect the dataset to Slack, e-mail or a webhook.

### Input example

```json
{
    "keywords": ["clean energy", "solar"],
    "eligibility": ["nonprofits", "small-business"],
    "fundingCategories": ["EN", "ENV"],
    "agencies": ["DOE", "EPA"],
    "statuses": ["posted"],
    "closingFrom": "+14 days",
    "minAwardCeiling": 100000,
    "maxResults": 100,
    "mode": "new-since-last-run",
    "monitorName": "clean-energy"
}
```

| Field | Meaning |
| --- | --- |
| `keywords` | Search phrases; an opportunity matches if it contains any of them. |
| `eligibility` | `nonprofits`, `small-business`, `for-profit`, `state-local-government`, `school-districts`, `higher-education`, `tribal`, `public-housing`, `individuals`, `unrestricted`, `others`. |
| `fundingCategories` | Grants.gov category codes such as `HL` (health), `EN` (energy), `ED` (education), `ST` (science and technology). |
| `agencies` | Agency codes or names: `HHS` matches every HHS agency, `HHS-NIH11` one agency, or part of a name. |
| `alnNumbers` | Assistance Listing numbers such as `93.847`. |
| `statuses` | `posted`, `forecasted` (default both). |
| `postedFrom`, `postedTo`, `closingFrom`, `closingTo` | `2026-10-01` or relative (`7 days` = 7 days ago, `+30 days` = in 30 days). |
| `minAwardCeiling` | Only opportunities whose award ceiling is at least this many dollars. |
| `maxResults` | Up to 2,000 (default 50). |
| `mode` | `all` (default) or `new-since-last-run`. |
| `includeUnchanged` | Monitor mode: also return opportunities that did not change. |
| `monitorName` | Names the snapshot store, so you can edit the filters without losing it. |

### Output example

Real output of a local run on 7 October 2026 (posted opportunities, newest first), first four rows:

| Number | Title | Agency | Status | Posted | Closes | Ceiling | Floor | Awards |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| O-OVC-2026-172790 | OVC FY 2026 Specialized Human Trafficking Assistance: Task Forces and Legal Services | Office for Victims of Crime | posted | 2026-10-06 | 2026-12-01 | 3,000,000 | 0 | 2 |
| RFA-DA-28-012 | HEAL Initiative: Integrative Management of chronic Pain and ... | National Institutes of Health | posted | 2026-10-06 | 2027-01-26 | 0 | 0 | 1 |
| RFA-DA-28-011 | HEAL Initiative: Integrative Management of Chronic Pain and ... | National Institutes of Health | posted | 2026-10-06 | 2027-01-26 | 0 | 0 | |
| 20270113-PJ | National Digital Newspaper Program | National Endowment for the Humanities | posted | 2026-10-06 | 2027-01-13 | 325,000 | 1 | 11 |

The first row in full (shortened):

```json
{
    "opportunityId": "364029",
    "opportunityNumber": "O-OVC-2026-172790",
    "title": "OVC FY 2026 Specialized Human Trafficking Assistance: Task Forces and Legal Services",
    "agency": "Office for Victims of Crime",
    "agencyCode": "USDOJ-OJP-OVC",
    "topAgency": "Department of Justice",
    "status": "posted",
    "postedDate": "2026-10-06",
    "closeDate": "2026-12-01",
    "awardCeiling": 3000000,
    "awardFloor": 0,
    "expectedNumberOfAwards": 2,
    "estimatedTotalFunding": 5000000,
    "costSharing": false,
    "eligibility": [
        { "code": "25", "description": "Others (see text field entitled \"Additional Information on Eligibility\" for clarification)" },
        { "code": "12", "description": "Nonprofits having a 501(c)(3) status with the IRS, other than institutions of higher education" }
    ],
    "alnNumbers": ["16.320"],
    "programTitles": ["Services for Trafficking Victims"],
    "fundingInstruments": ["Cooperative Agreement"],
    "fundingCategories": ["Income Security and Social Services"],
    "descriptionSummary": "This opportunity will assist OVC-funded multidisciplinary anti-trafficking task forces and teams (MDTs) and legal service providers by offering specialized trai…",
    "url": "https://www.grants.gov/search-results-detail/364029",
    "changeStatus": "listed",
    "changes": []
}
```

#### Monitor mode

`changeStatus` is `listed` in the normal mode. In **new-since-last-run** mode it is `baseline` (first run, or after you change the filters), `new` (not seen before), `changed` (status, closing date or award ceiling changed; the `changes` list shows from and to) or `unchanged` (only with `includeUnchanged`). The monitor was checked live on 7 October 2026: a first run saved a baseline of 5 opportunities, a second run returned no rows, and after the saved snapshot was edited locally (one opportunity removed, another given a different status and closing date) the next run returned one `new` and one `changed` row.

### How much does it cost?

This Actor uses **pay per event**:

| Event | Price |
| --- | --- |
| Opportunity returned (one row each) | **$0.002** |
| Info rows, error rows and "no results" rows | **free** |

- 1,000 opportunities cost **$2**. The default run (25 rows) costs **$0.05**.
- In monitor mode you pay for the rows you get: the baseline once, then only new and changed opportunities.
- The Grants.gov API is free. Apify also charges a tiny standard start fee per run.
- Set **Maximum cost per run** and the Actor stops when it is reached.

### Limitations

- **Only what Grants.gov publishes.** Federal grants only; state, local and private grants are not covered.
- **Award ceiling and floor are sometimes 0 or empty** because the agency did not fill them in; the Actor shows what is published.
- **Forecasts have no close date** (an estimated date is not shown as a close date).
- **Agency and date filters are applied after the search**, because the service only takes exact agency codes; very broad searches read up to 1,000 results per request.
- **One keyword phrase per search**: with several keywords the Actor searches each one and merges the results.
- A minimum award ceiling needs one extra request per opportunity checked, so it is slower on wide searches.
- Monitor mode compares status, closing date and award ceiling with your last run; edits to descriptions do not create a change row.

### FAQ

#### Is this official data?

Yes. It comes from the Grants.gov API (`search2` and `fetchOpportunity`) run by the US Department of Health and Human Services for all federal agencies.

#### Do I need an API key?

No.

#### How does "new since last run" know what is new?

It saves a small snapshot in a named key-value store in your account (`grants-gov-monitor-...`). Change the filters and it saves a new baseline.

#### Why are some eligibility lists very long?

Many announcements are open to nearly every applicant type; the list is exactly what the agency selected.

#### Does it include contact people?

No. Only opportunity facts, agencies and links; contact names, phone numbers and e-mail addresses are not returned.

### More tools from the same developer

All pay-per-result, no proxy or login needed, built and maintained by the same developer:

**Website audits**

- [Website Accessibility Checker: WCAG 2.2 & EAA](https://apify.com/offerastudio/website-accessibility-audit): accessibility issues with fixes, SEO basics and security headers.
- [Cookie & Tracker Audit: GDPR Consent Checker](https://apify.com/offerastudio/cookie-tracker-audit): cookies and tracking tags that load before consent.
- [AI Crawler Access Checker: robots.txt & llms.txt](https://apify.com/offerastudio/ai-crawler-access-audit): which AI crawlers a site allows, plus llms.txt.
- [Structured Data Validator: Schema & Rich Results](https://apify.com/offerastudio/structured-data-validator): JSON-LD and Microdata checked against Google's rich result rules.
- [Website Change Monitor: Diffs, Prices & Alerts](https://apify.com/offerastudio/website-change-monitor): get a row only when a page changes, with a clean diff.
- [Policy Change Monitor: Privacy & Terms Tracker](https://apify.com/offerastudio/policy-change-monitor): privacy policy and terms changes, classified clause by clause.
- [SaaS Pricing Monitor: Track Competitor Plans](https://apify.com/offerastudio/saas-pricing-monitor): competitor pricing plans as structured data, with price-change diffs.
- [Sitemap Change Monitor: New & Removed URLs](https://apify.com/offerastudio/sitemap-change-monitor): new, removed and changed URLs from a site's sitemaps.
- [Site SEO Crawler: Broken Links & On-Page Audit](https://apify.com/offerastudio/site-seo-crawler-audit): site-wide crawl for broken links, redirects and on-page SEO issues.
- [Website Tech Stack Detector: Bulk Lead Filters](https://apify.com/offerastudio/website-tech-stack-detector): technologies used by websites, with filters for lead lists.
- [Domain Availability & Expiry Checker (RDAP)](https://apify.com/offerastudio/domain-whois-availability): domain availability, registrar and expiry dates from RDAP.
- [Status Page SLA Monitor: Uptime & Incidents](https://apify.com/offerastudio/status-page-sla-monitor): SaaS vendor uptime, incidents and a monthly SLA table from public status pages.

**Company data and compliance**

- [Company Contact Finder: Emails, Phones & Socials](https://apify.com/offerastudio/company-contact-finder): contact details published on company websites.
- [UK New Companies Feed: Companies House Daily](https://apify.com/offerastudio/uk-new-companies-feed): newly incorporated UK companies with sector filters.
- [EU VAT Number Validator: Bulk VIES Checker](https://apify.com/offerastudio/eu-vat-number-validator): bulk VAT checks with name, address and consultation number.
- [LEI Corporate Tree: GLEIF Parents & Subsidiaries](https://apify.com/offerastudio/gleif-lei-corporate-tree): LEI lookup with parents, subsidiaries and a KYC summary.
- [UK Company Distress Watch: Insolvency Alerts](https://apify.com/offerastudio/uk-company-distress-watch): administrations, liquidations and winding-up petitions from The Gazette.
- [IBAN Validator: Bulk Check & Bank Lookup](https://apify.com/offerastudio/iban-bank-validator): IBAN format and checksum, plus bank name and BIC where open data exists.
- [Sanctions Screening: OFAC, EU, UN & UK Lists](https://apify.com/offerastudio/sanctions-screening): names screened against official sanctions lists, with match scores.
- [OSHA & EPA Violation Monitor: Fines by Company](https://apify.com/offerastudio/osha-epa-violation-monitor): US OSHA and EPA enforcement cases and penalties by company.
- [Email List Precheck: Syntax, MX & Disposable Check](https://apify.com/offerastudio/email-list-precheck): cheap email list hygiene before a real verification.
- [UK Company Officer Changes: Director & PSC Alerts](https://apify.com/offerastudio/uk-company-officer-changes): director, owner, address and status changes for a watchlist of UK companies.
- [FDA Warning Letters Monitor: By Company & Subject](https://apify.com/offerastudio/fda-warning-letters-monitor): FDA warning letters by company and subject, with cited regulations.
- [Supplier Risk Report: Sanctions, VAT & Insolvency](https://apify.com/offerastudio/supplier-risk-report): one risk row per supplier from eight official registers, with changes since last run.
- [Brand Impersonation Domain Monitor: Look-alikes](https://apify.com/offerastudio/brand-impersonation-domain-monitor): look-alike domains and certificates that imitate your brand, with a risk score.

**Media and AI**

- [Audio & Video Transcriber: Podcasts, SRT, Speakers](https://apify.com/offerastudio/audio-video-transcriber): audio, video, podcasts and social links to text, SRT and VTT.
- [Podcast Mention Alerts: Brand Mentions by Second](https://apify.com/offerastudio/podcast-mention-alerts): where your brand is said in new podcast episodes, with the exact second.
- [News Brand Mentions Monitor: New Articles Only](https://apify.com/offerastudio/news-brand-mentions-monitor): new news articles about your brand, people or topics.
- [YouTube Channel Monitor: New Videos & Growth](https://apify.com/offerastudio/youtube-channel-monitor): new videos and view growth of the channels you watch.

**Market signals**

- [US WARN Layoff Notices: 12 States Daily Feed](https://apify.com/offerastudio/us-warn-layoff-notices): layoff and plant closure notices from official state sources.
- [US Product Recalls Monitor: FDA & CPSC Feed](https://apify.com/offerastudio/us-product-recalls-monitor): FDA and CPSC recalls in one feed, with severity.
- [EU Tenders Feed: TED Public Procurement Alerts](https://apify.com/offerastudio/eu-tender-feed): EU public tenders from TED with CPV, country and value filters.
- [Liquor License Openings: New Bars & Stores (US)](https://apify.com/offerastudio/liquor-license-openings): new US liquor licences from official state open data.
- [Clinical Trials Change Monitor: Status & Updates](https://apify.com/offerastudio/clinicaltrials-change-monitor): status, enrollment and results changes on ClinicalTrials.gov studies.
- [Career Site Jobs Monitor: ATS Jobs & New Roles](https://apify.com/offerastudio/career-site-jobs-monitor): open roles from company career sites, with new and closed roles since the last run.
- [App Reviews Monitor: App Store & Google Play](https://apify.com/offerastudio/app-store-reviews-monitor): app reviews from both stores, only new ones in monitor mode.
- [US Federal Contracts Feed: SAM.gov & USAspending](https://apify.com/offerastudio/us-federal-contracts-feed): SAM.gov contract opportunities with the buyer's award history.
- [Federal Register Monitor: US Rules & Notices Feed](https://apify.com/offerastudio/federal-register-monitor): new US rules, proposed rules and notices by agency or topic.
- [B2B Sales Trigger Feed: Hiring + Tech Leads](https://apify.com/offerastudio/b2b-sales-trigger-feed): companies hiring for a role and using (or not using) a technology, with contacts.
- [Local Business Leads: OpenStreetMap, No Website](https://apify.com/offerastudio/local-business-leads-osm): local businesses by city and category, including those with no website.
- [Solana Token Pair Monitor: New & Trending Pairs](https://apify.com/offerastudio/solana-token-pair-monitor): new and trending Solana pairs with liquidity, volume and safety flags.

### Feedback

Missing a field you want to track? Open an issue on the **Issues** tab.

# Changelog

This Actor's version history is a separate document: https://apify.com/offerastudio/grants-gov-opportunities/changelog.md

# Actor input Schema

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

Search phrases. Each phrase is searched on its own and the results are merged, so an opportunity matches if it contains any phrase. Leave empty for all opportunities.

## `eligibility` (type: `array`):

Only opportunities open to at least one of these applicant types.

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

Grants.gov funding activity categories.

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

Agency codes or names: HHS (all of HHS), HHS-NIH11, DOE, NSF, or part of a name such as "Forest Service". An opportunity matches if its agency matches any entry.

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

For example 93.847. An opportunity matches if it has any of them.

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

Posted = open for applications. Forecasted = announced in advance.

## `postedFrom` (type: `string`):

First posting date, for example 2026-10-01, or relative: "7 days" means 7 days ago.

## `postedTo` (type: `string`):

Last posting date, inclusive.

## `closingFrom` (type: `string`):

Earliest closing date, for example 2026-11-01, or relative: "+30 days" means in 30 days. Opportunities without a closing date (forecasts) are left out when a closing window is set.

## `closingTo` (type: `string`):

Latest closing date, inclusive.

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

Only opportunities whose award ceiling is at least this much. Needs one extra request per opportunity checked.

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

Stop after this many rows. You pay $0.002 for each.

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

All = every matching opportunity each time. New since last run = remembers what it has seen (in a named key-value store) and returns only new and changed opportunities; the first run saves a baseline.

## `includeUnchanged` (type: `boolean`):

Monitor mode: also return opportunities that did not change (you pay for them).

## `monitorName` (type: `string`):

Names the snapshot store, so you can edit the filters without losing it. Leave empty to name it after the filters.

## Actor input object example

```json
{
  "statuses": [
    "posted",
    "forecasted"
  ],
  "maxResults": 25,
  "mode": "all",
  "includeUnchanged": false
}
```

# Actor output Schema

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

No description

## `eligibility` (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 = {
    "statuses": [
        "posted",
        "forecasted"
    ],
    "maxResults": 25,
    "mode": "all"
};

// Run the Actor and wait for it to finish
const run = await client.actor("offerastudio/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 = {
    "statuses": [
        "posted",
        "forecasted",
    ],
    "maxResults": 25,
    "mode": "all",
}

# Run the Actor and wait for it to finish
run = client.actor("offerastudio/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 '{
  "statuses": [
    "posted",
    "forecasted"
  ],
  "maxResults": 25,
  "mode": "all"
}' |
apify call offerastudio/grants-gov-opportunities --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,offerastudio/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/jcpdqGr0zzVjq66YQ/builds/E9DrTlfQf7NIlb5b1/openapi.json
