Export public U.S. federal funding opportunities from Grants.gov to structured datasets. The Actor searches the public Grants.gov API, deduplicates opportunities by stable ID, and can enrich each row with public detail fields such as descriptions, contacts, funding amounts, eligibility text, and attachment metadata.
At a glance
- Primary job: Build repeatable exports and monitors for public Grants.gov opportunity notices.
- Input: Keyword plus optional agency/category/date-style filters and detail limits.
- Output: One dataset row per public opportunity.
- Best for: Grant writers, nonprofits, universities, consultants, public-sector sales teams, civic-tech analysts, and funding-intelligence workflows.
Who is this for?
- Grant writers and consultants tracking new federal funding opportunities for clients.
- Nonprofits and universities building recurring grant-alert exports.
- Public-sector sales and civic-tech teams monitoring federal program signals.
- Analysts and data teams feeding Grants.gov rows into spreadsheets, CRMs, dashboards, or RAG systems.
Common use cases
- Funding research: Search public opportunities by keyword and export structured rows.
- Monitoring: Schedule small repeat runs and compare stable
opportunityIdvalues over time. - CRM enrichment: Send agency, contact, date, and funding fields to downstream systems.
- Automation: Use Apify datasets, API, webhooks, or MCP-compatible tools.
Ready-to-run tasks
These task recipes cover distinct buyer workflows and can be copied directly into the Actor input. Publisher will create their public Examples after publication.
- Climate funding opportunities
- Commerce agency grants
- Grant deadline watch
- Nonprofit eligibility grants
Climate funding opportunities
{
"keyword": "climate",
"statuses": ["posted", "forecasted"],
"includeDetails": true,
"includeContacts": true,
"includeAttachments": true,
"maxItems": 10,
"maxDetailRequests": 10
}
Agency pipeline monitor
{
"keyword": "research",
"agencies": ["DOC"],
"includeDetails": false,
"includeContacts": false,
"includeAttachments": false,
"maxItems": 10,
"maxDetailRequests": 0
}
Deadline watch
{
"keyword": "education",
"includeDetails": true,
"includeContacts": true,
"includeAttachments": false,
"maxItems": 10,
"maxDetailRequests": 10
}
What data can you extract?
| Field | Description |
|---|---|
opportunityId |
Stable Grants.gov opportunity ID used for dedupe. |
opportunityNumber |
Public opportunity number. |
title |
Opportunity title. |
agencyCode, agencyName |
Agency identifiers/names from search or detail data. |
status, docType, category |
Source status/type/category fields. |
cfdaList |
Assistance listing / CFDA numbers. |
openDate, openDateIso, closeDate, closeDateIso |
Raw and normalized dates when parseable. |
fundingInstrument, fundingCategory, eligibility |
Public detail classifications when available. |
awardCeiling, awardFloor, estimatedTotalFunding |
Funding amount fields when Grants.gov exposes them. |
description |
Public synopsis or forecast description. |
contactName, contactEmail, contactPhone |
Public opportunity contact fields when requested and available. |
attachments |
Public attachment metadata only; files are not downloaded. |
sourceUrl, fetchedAt, warnings |
Source link, scrape timestamp, and row-level warnings. |
Input example
{
"keyword": "climate",
"statuses": ["posted", "forecasted"],
"includeDetails": true,
"includeContacts": true,
"includeAttachments": true,
"maxItems": 10,
"maxDetailRequests": 10,
"failOnSourceUnavailable": false
}
Example output
{
"opportunityId": "103313",
"opportunityNumber": "NOAA-OAR-CPO-2012-2003041",
"title": "Climate Program Office for FY 2012",
"agencyCode": "DOC",
"agencyName": "Department of Commerce",
"status": "posted",
"docType": "synopsis",
"cfdaList": ["11.431"],
"openDate": "07/06/2011",
"openDateIso": "2011-07-06",
"closeDate": "",
"closeDateIso": null,
"description": "Changing climate confronts society with significant economic...",
"contactEmail": "steve.j.drescher@noaa.gov",
"sourceUrl": "https://www.grants.gov/search-results-detail/103313",
"fetchedAt": "2026-07-28T00:00:00.000Z",
"warnings": []
}
Limits and caveats
- Public data only: This Actor returns public Grants.gov opportunity notices, not private applications, workspace data, or applicant-specific materials.
- No grant-fit advice: It does not score eligibility or recommend whether you should apply.
- Source semantics: Grants.gov may omit fields or use older date formats; raw fields are preserved and normalized fields are nullable.
- Attachments: V1 emits metadata only and does not download or parse attached files.
API usage
Node.js
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor("fetch_cat/grants-gov-opportunities-scraper").call({
keyword: "climate",
includeDetails: true,
maxItems: 10,
maxDetailRequests: 10
});
console.log(run.defaultDatasetId);
Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("fetch_cat/grants-gov-opportunities-scraper").call(run_input={
"keyword": "climate",
"includeDetails": True,
"maxItems": 10,
"maxDetailRequests": 10,
})
print(run["defaultDatasetId"])
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~grants-gov-opportunities-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keyword":"climate","includeDetails":true,"maxItems":10,"maxDetailRequests":10}'
MCP and AI agents
Use this Actor from MCP-compatible tools through the official Apify MCP Server.
claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/grants-gov-opportunities-scraper"
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/grants-gov-opportunities-scraper"
}
}
}
Example prompt: "Run Grants.gov Opportunities Scraper for climate opportunities and summarize upcoming deadlines."
Support
Open an issue from the Actor page if a run fails or output looks wrong. Include the run ID, input JSON, expected output, actual output, and one reproducible public URL or Grants.gov opportunity link.