Grants.gov Federal Grant Search
Pricing
from $2.00 / 1,000 grant fetcheds
Grants.gov Federal Grant Search
Search and extract structured federal grant opportunity data from Grants.gov -- the U.S. government's central portal for over 1,000 grant-making agencies and more than $500 billion in annual federal funding.
Pricing
from $2.00 / 1,000 grant fetcheds
Rating
0.0
(0)
Developer
Ryan Clinton
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share

Federal funding intelligence for Grants.gov. Search opportunities, score fit, monitor changes, detect recurring programs, and build a historical funding-intelligence database from the official Grants.gov API -- the U.S. government's central portal for over 1,000 grant-making agencies and more than $500 billion in annual federal funding. Unlike a basic grant scraper, this actor adds deadline intelligence, fit scoring, change detection, program-level analytics, and recurring-funding detection, so grant teams prioritize opportunities instead of reviewing raw listings.
Unlike a scraper, this actor becomes more valuable over time. Every scheduled run builds historical grant, program, and agency intelligence that a one-off Grants.gov search can never produce.
No API key is required. No login. No web scraping. Every run delivers opportunity IDs, funding opportunity numbers, agency names, application open and close dates, CFDA/Assistance Listing numbers, and direct links to the full listing on Grants.gov.
Beyond the raw fields, this is federal funding intelligence, not just a search. Every opportunity is scored with a deterministic decision layer: how many days until the deadline, an urgency band, and a recommended action (apply-now, prepare, watch, or skip) so you triage a result set in seconds instead of reading every row. Turn on full detail and each opportunity is enriched with award ceiling/floor, cost-sharing, eligible applicant types, agency contacts, and the synopsis. Supply your organization profile and every opportunity gets a deterministic fit score with plain-English reasons and disqualifiers. Run a portfolio of searches in one go.
Name a watchlist and the actor gets smarter every scheduled run -- not with AI, with accumulated data. It flags exactly what changed (new postings, deadline shifts, award changes), and builds a funding-intelligence layer no single run can produce: a lifecycle stage, a stability score, deadline volatility, and recurrence detection that tells you whether an opportunity comes back every fiscal year and what month to expect it. A run-level portfolio summary, per-agency behaviour analytics, a funding-coverage trend, and an opt-in grant calendar give a grants director the one-record read they otherwise build by hand in a spreadsheet.
| Capability | Basic Grants.gov search | This actor |
|---|---|---|
| Search opportunities | Yes | Yes |
| Deadline intelligence (urgency + recommended action) | No | Yes |
| Fit scoring against your profile | No | Yes |
| Change detection across scheduled runs | No | Yes |
| Program intelligence (accrues over runs) | No | Yes |
| Recurring-grant detection | No | Yes |

Common jobs
| I want to... | Use |
|---|---|
| Find grants closing soon | Deadline filters (onlyClosingWithinDays) |
| Monitor new opportunities | Watchlists (watchlistName + emitOnlyChanges) |
| Score grants for my organization | Fit scoring (profile) |
| Find recurring federal grants | Historical + funding intelligence |
| Build an annual grant calendar | Calendar mode (calendarMode) |
| Compare agency behaviour | Agency analytics (agencyBehavior) |
| Track funding programs over years | Program intelligence (includeProgramIntelligence) |
| Build a federal funding pipeline | Program intelligence + watchlists |
| Run a portfolio of searches | Multi-search (searches) |
Why program intelligence matters
Most grant tools track opportunities. This actor tracks programs -- and that is the one thing a competitor cannot replicate by calling the same Grants.gov API tomorrow.
A single federal program (identified by its CFDA / Assistance Listing number) issues many opportunities over several years. A one-off search sees only today's listings; it cannot tell you whether a program is growing, shrinking, reliable, or about to lapse. Program intelligence accumulates observations across scheduled runs to reveal what no single API call can: recurrence patterns, award trends, extension and reopen rates, and funding stability per program.
The result is a proprietary asset that deepens every run. A competitor pointing a fresh scraper at Grants.gov starts from zero history; your watchlist has been banking it. That accumulated record -- "this program has issued 17 opportunities across 5 years, awards are trending up, deadlines rarely slip" -- is the difference between searching grants and running a federal funding intelligence operation.

Why use Grants.gov Federal Grant Search?
Finding relevant federal grants is a time-consuming process. The Grants.gov website offers basic search functionality, but extracting structured data at scale -- filtering by eligibility type, cross-referencing agency codes, or monitoring new postings across multiple funding categories -- requires manual effort that does not scale. Grant writers, nonprofit program managers, and government affairs teams often spend hours each week browsing listings, copying details into spreadsheets, and checking for deadline changes.
This actor eliminates that manual work by querying the official Grants.gov REST API directly and returning machine-readable JSON output. You can filter by any combination of keyword, federal agency, applicant eligibility type, funding instrument, funding category, and opportunity status. Schedule daily or weekly runs on the Apify platform to automatically monitor new grant postings, feed results into your CRM or project management tool via API, or export CSV files for collaborative grant evaluation with your team.

Core features
- Full-text keyword search -- query the entire Grants.gov database by keyword or phrase ("climate change", "STEM education", "rural broadband", "cybersecurity", "workforce development"), filterable by federal agency (HHS, NSF, DOE, EPA, DOD, USDA, ED, DOI, DOC, DOS), 17 applicant eligibility types, 23 funding categories, 4 funding instruments, and opportunity status (forecasted / posted / closed / archived)
- Up to 1000 results per run -- automatic pagination, with CFDA/Assistance Listing numbers and a direct Grants.gov link on every record
- Deadline triage on every record -- deterministic
daysUntilClose, anurgencyband, and arecommendedAction(apply-now / prepare / watch / skip) so a rule, agent, or human triages the set without reading each row - Full detail enrichment -- set
detailLevel: fulland each opportunity gainsawardCeiling/awardFloor,estimatedTotalFunding,costSharingRequired,eligibleApplicantTypes,fundingCategories, agency contacts, and the fullsynopsisDescription-- a first-pass go/no-go without opening Grants.gov - Deterministic grant-fit scoring -- supply a
profileand every opportunity gets afitScore(0-100), afitBand, plain-EnglishfitReasonsanddisqualifiers. No LLM; it scores only the dimensions your data backs and names the ones it could not check - Multi-search portfolios -- run a
searcheslist (or fan out acrossagencies/eligibilities/fundingCategories) in one run; results are deduplicated and each carriesmatchedSearches - Deadline filters + output profiles --
onlyClosingWithinDays/ date windows trim to the deadlines you care about;outputProfilereturnsstandard,minimal(for AI agents), oralert(a Slack/webhook-ready card) - No API key or registration required -- both the Grants.gov search and detail endpoints are free and open to the public
Intelligence features
The intelligence layer accumulates value every scheduled run -- with data, not AI -- which a one-off Grants.gov query can never replicate.

- Watchlist change detection -- name a watchlist and each run flags every opportunity
NEW,STATUS_CHANGED,REOPENED,DEADLINE_CHANGED,AWARD_AMOUNT_CHANGED,CONTACT_CHANGED, orUNCHANGED(withchangedFields+previousCloseDate);emitOnlyChangesreturns just what moved - Historical grant intelligence -- a per-opportunity
historicalInsightsblock accrues over runs:firstSeen,timesReopened,deadlineExtensions,averageOpenWindowDays,currentCycleNumber,renewalLikelihood-- tell a one-off from a grant that recurs every fiscal year - Funding intelligence -- a per-opportunity
fundingIntelligenceblock:lifecycleStage,stabilityScore+ band,deadlineVolatility, andrecurrence(appearsAnnual,averageReleaseMonth, and an honestexpectedNextReleasethat stays null until two annual cycles are observed -- no fabricated forecasts) - Program intelligence (the federal funding graph) -- set
includeProgramIntelligencefor aprogramrecord per CFDA: contributing agencies, average award, survival metrics, and cross-run history (timesObserved, first/latest observed year,cyclePattern,historicalAwardTrend) - Agency intelligence -- one concept covering how agencies behave and how funding moves:
agencyBehavior(award, deadline length, forecast-to-posted ratio, reopen frequency, peak/quiet month per agency),awardIntelligence(this run vs last),coverageTrend(is funding in your area growing or drying up), andfundingSeasonality(volume by federal fiscal quarter) - Portfolio summary + grant calendar -- a
portfolioSummarygives a director the one-record read;calendarModeemits acalendarmapping recurring annual programs to their expected release months -- the planning artifact grant offices build by hand in Excel
How to use Grants.gov Federal Grant Search
Using Apify Console
- Navigate to the Grants.gov Federal Grant Search actor page on Apify and click Try for free.
- Enter a search keyword in the Search Keyword field. This is the only required input -- for example, type "renewable energy" or "mental health services".
- Optionally apply filters: select a Funding Instrument, choose an Eligibility type matching your organization, enter an Agency code, pick an Opportunity Status, or select a Funding Category.
- Set the Maximum Results (1 to 100, default 25) and click Start to run the actor.
- When the run completes, open the Dataset tab to view, filter, or export results as JSON, CSV, Excel, or XML. Use the API tab to get the endpoint URL for programmatic access.
Using the API
Send a POST request to the Apify API with your input configuration to trigger the actor programmatically. See the API and Integration section below for Python, JavaScript, and cURL examples using actor ID DMC8HyLcbAQnzRGB5.
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
keyword | String | No* | "climate change" | Keyword or phrase to search for. *Required unless you supply searches. |
preset | Select | No | None | One-click buyer preset (nonprofit, small_business_sbir, university_research, local_government, climate, healthcare) that prefills eligibility / category / status. Your explicit filters always win |
fundingInstrument | Select | No | All | Funding instrument type: Grant, Cooperative Agreement, Procurement Contract, or Other |
eligibility | Select | No | All | Eligible applicant type (17 options including state/county/city governments, nonprofits, small businesses, individuals, tribal governments, universities) |
agency | String | No | -- | Federal agency code such as HHS, NSF, DOE, EPA, DOD, USDA, ED, DOI, DOC, DOS |
status | Select | No | All (Forecasted + Posted) | Opportunity status: Forecasted, Posted, Closed, or Archived |
fundingCategory | Select | No | All | Funding activity category (23 options including Agriculture, Health, Education, Energy, Environment, Science and Technology) |
searches | Array | No | -- | Multi-search portfolio. Array of objects, each with any of keyword, agency, eligibility, status, fundingInstrument, fundingCategory, name. Results are deduplicated across searches and tagged with matchedSearches |
agencies / eligibilities / fundingCategories | Array | No | -- | Fan-out: run the base search once per value (cross-product, capped at 20 searches) |
detailLevel | Select | No | search | search (index fields, fast) or full (enrich each opportunity with award, contacts, eligibility, synopsis via the keyless detail endpoint) |
profile | Object | No | -- | Grant-fit profile: any of organizationType (string), topics (string array), minAward (number), maxDeadlineDays (number), requiresNoCostShare (boolean). Award / cost-share / eligibility checks need detailLevel: full |
onlyClosingWithinDays | Integer | No | -- | Keep only opportunities whose deadline is within N days |
excludeClosingWithinDays | Integer | No | -- | Drop opportunities whose deadline is fewer than N days away |
closeDateFrom / closeDateTo | String | No | -- | Keep only opportunities closing within this date window (YYYY-MM-DD) |
postedDateFrom / postedDateTo | String | No | -- | Keep only opportunities posted within this date window (YYYY-MM-DD) |
maxResults | Integer | No | 25 | Maximum number of unique grant opportunities to return (1 to 1000) |
watchlistName | String | No | -- | Name this search to monitor it over time. Each run flags every opportunity NEW, STATUS_CHANGED, REOPENED, DEADLINE_CHANGED, AWARD_AMOUNT_CHANGED, CONTACT_CHANGED, or UNCHANGED. Leave empty for a one-shot search |
emitOnlyChanges | Boolean | No | false | Watchlist mode: return only the opportunities that changed since the last run (skip UNCHANGED) |
calendarMode | Boolean | No | false | Watchlist mode: also emit a calendar record mapping recurring annual programs to expected release months |
includeProgramIntelligence | Boolean | No | false | Emit a program record per CFDA / Assistance Listing number (agencies, average award, survival metrics; cross-run program history in watchlist mode) |
outputProfile | Select | No | standard | standard (all fields), minimal (decision fields, for agents), or alert (Slack/webhook-ready alert card) |
Example input
{"keyword": "renewable energy","fundingInstrument": "G","eligibility": "25","agency": "DOE","status": "posted","fundingCategory": "EN","maxResults": 50}
Tips for input
- Use agency codes, not full names. Enter "HHS" for Health and Human Services, "NSF" for National Science Foundation, "DOE" for Energy, "EPA" for Environmental Protection Agency, "DOD" for Defense, "USDA" for Agriculture, "ED" for Education, "DOI" for Interior, "DOC" for Commerce, or "DOS" for State.
- Combine keyword with eligibility for targeted results. Searching for "workforce development" with eligibility set to "Small businesses" returns only grants that small business applicants can apply for, including SBIR and STTR programs.
- Check forecasted opportunities early. Setting status to "Forecasted" reveals grants agencies plan to release soon, giving your team a head start on preparation before the application window opens.
- Use funding categories to narrow broad searches. If a keyword like "health" returns too many results, combine it with the Health funding category filter instead of relying on keywords alone.
Ready-to-run examples
One-click published examples (each opens a configured run you can start immediately):
- Federal Grants Closing Soon -- opportunities closing within 60 days, sorted by deadline urgency
- Federal Grants for Nonprofits -- grants a 501(c)(3) can apply for, fit-scored against your organization
- SBIR & Small Business Federal Grants -- small-business innovation funding with award amounts and contacts
- University Research Grants -- science and R&D funding for research offices
- Climate Change & Clean Energy Grants -- environment and clean-energy opportunities
- Recurring Federal Grants -- programs that recur every year, with CFDA-level history and award trends
- Grant Opportunity Monitor -- track grants for new postings, deadline shifts, and award changes
See all on the examples page.
Each of these is a distinct grant-operations job, not just a different filter.
Find grants closing soon -- surface only the deadlines you can still act on:
{ "keyword": "education", "onlyClosingWithinDays": 14, "outputProfile": "alert" }
Find new grants since the last run -- a scheduled, change-only monitor for webhook alerting:
{ "keyword": "rural broadband", "watchlistName": "broadband-weekly", "emitOnlyChanges": true }
Detect recurring federal grants -- learn which programs come back every fiscal year:
{ "keyword": "climate", "watchlistName": "climate-annual", "includeProgramIntelligence": true }
Build a federal grant calendar -- map recurring programs to their expected release months:
{ "keyword": "STEM education", "watchlistName": "stem-calendar", "calendarMode": true }
High-fit grant finder for a nonprofit -- score every opportunity against your organization:
{ "keyword": "workforce development", "eligibility": "12", "detailLevel": "full", "profile": { "organizationType": "nonprofit", "topics": ["workforce"], "maxDeadlineDays": 90, "requiresNoCostShare": true } }
Find SBIR / small-business grants -- federal small-business innovation funding:
{ "keyword": "small business innovation", "eligibility": "25", "status": "posted", "detailLevel": "full" }
Find university research funding -- science and R&D opportunities for research offices:
{ "keyword": "research", "fundingCategory": "ST", "agency": "NSF", "detailLevel": "full" }
Detect funding-growth areas -- track whether funding in your field is expanding over time:
{ "keyword": "cybersecurity", "watchlistName": "cyber-coverage", "includeProgramIntelligence": true }
Output
A normal Grants.gov search returns rows. This actor returns rows plus the decision: urgency, recommendedAction, fitScore, change detection, and recurrence intelligence -- so you automate decisions instead of manually reviewing opportunities. The full structure follows; most automations read only the decision fields.

Each grant opportunity in the dataset follows this structure. Here is a realistic example showing two records from a "climate change" search:
[{"recordType": "opportunity","schemaVersion": "3.0.0","opportunityId": "352789","opportunityNumber": "EPA-OAR-OAP-24-06","title": "FY2024 Climate Pollution Reduction Grants Program for States","agencyCode": "EPA","agency": "Environmental Protection Agency","status": "posted","documentType": "Grants Notice","openDate": "04/01/2024","closeDate": "07/01/2024","cfdaNumbers": ["66.046"],"grantsGovUrl": "https://www.grants.gov/search-results-detail/352789","daysUntilClose": 5,"daysUntilOpen": null,"urgency": "closing-soon","recommendedAction": "apply-now","isOpen": true,"summary": "FY2024 Climate Pollution Reduction Grants Program for States from Environmental Protection Agency. Open, closes in 5 day(s). Apply now -- deadline is imminent.","changeFlag": "NEW"},{"recordType": "opportunity","schemaVersion": "3.0.0","opportunityId": "348210","opportunityNumber": "NOAA-OAR-CPO-2024-2007540","title": "Climate Adaptation Partnerships","agencyCode": "DOC-NOAA","agency": "Department of Commerce","status": "forecasted","documentType": "Grants Notice","openDate": null,"closeDate": null,"cfdaNumbers": ["11.431"],"grantsGovUrl": "https://www.grants.gov/search-results-detail/348210","daysUntilClose": null,"daysUntilOpen": null,"urgency": "forecasted","recommendedAction": "watch","isOpen": false,"summary": "Climate Adaptation Partnerships from Department of Commerce. Forecasted -- not yet open for applications. Watch for the posting.","changeFlag": "UNCHANGED"}]
The final record in every run is a recordType: "summary" rollup (also mirrored to the SUMMARY key-value store record):
{"recordType": "summary","schemaVersion": "3.0.0","keyword": "climate change","generatedAt": "2026-06-24T09:00:00.000Z","totalMatching": 1078,"returned": 25,"counts": { "open": 11, "closingSoon": 3, "closingThisMonth": 6, "forecasted": 4, "closed": 1, "undated": 0 },"topAgencies": [{ "agency": "Environmental Protection Agency", "count": 7 }],"nextDeadline": { "title": "FY2024 Climate Pollution Reduction Grants Program for States", "closeDate": "07/01/2024", "daysUntilClose": 5 },"agencyInsights": { "Environmental Protection Agency": { "opportunities": 7, "closingSoon": 2, "newThisRun": 1 } },"awardIntelligence": { "averageAwardCeiling": 1500000, "averageAwardCeilingPreviousRun": 900000, "changePercent": 66.7, "awardTrend": "increasing" },"portfolioSummary": { "totalOpportunities": 25, "newThisRun": 2, "closingSoon": 3, "highFit": 8, "strongOpportunities": 6, "estimatedFundingPool": 740000000 },"agencyBehavior": { "Environmental Protection Agency": { "opportunities": 7, "averageAwardCeiling": 1500000, "averageDeadlineLengthDays": 83, "forecastToPostedRatio": 0.28, "reopenFrequency": 0.14 } },"coverageTrend": { "current": 1078, "previous": 940, "changePercent": 14.7, "trend": "increasing" },"source": "Grants.gov","sourceApi": "search2 + fetchOpportunity","detailLevel": "full","watchlistName": "climate-weekly","newCount": 2}
In watchlist mode each opportunity also carries a historicalInsights block (accrued over scheduled runs):
{"firstSeen": "2024-04-12T08:00:00.000Z","runsSeen": 9,"timesReopened": 3,"deadlineExtensions": 2,"averageOpenWindowDays": 97,"currentCycleNumber": 4,"renewalLikelihood": "high","historicalPattern": "Reopened 3 time(s) since first seen on 2024-04-12; deadline extended 2 time(s).","firstSightFallback": false}

Output fields
| Field | Type | Description |
|---|---|---|
recordType | String | opportunity, summary, or error -- branch on this to separate grants from the run rollup |
schemaVersion | String | Output-contract version (currently 3.0.0) |
opportunityId | String | Unique Grants.gov identifier for the opportunity |
opportunityNumber | String | Agency-assigned funding opportunity number (FON) |
title | String | Full title of the grant opportunity |
agencyCode | String | Abbreviated code for the funding agency (e.g., EPA, HHS, NSF) |
agency | String | Full name of the funding agency |
status | String | Current status: forecasted, posted, closed, or archived |
documentType | String | Type of notice (e.g., Grants Notice, Modification) |
openDate | String | Date the application window opened (MM/DD/YYYY) |
closeDate | String | Application deadline date (MM/DD/YYYY) |
cfdaNumbers | Array | CFDA / Assistance Listing program numbers associated with the opportunity |
grantsGovUrl | String | Direct URL to the full opportunity listing on Grants.gov |
daysUntilClose | Integer / null | Whole days until the deadline; negative if past, null if undated |
daysUntilOpen | Integer / null | Whole days until a forecasted opportunity is expected to open; null if already open |
urgency | String | closing-soon (<=7 days), closing-this-month (<=30), open, forecasted, undated, or closed |
recommendedAction | String | apply-now, prepare, watch, or skip |
isOpen | Boolean | True when applications can be submitted now |
summary | String | Plain-English one-line summary (<=280 chars) an agent can quote verbatim |
changeFlag | String | Watchlist mode: NEW, UNCHANGED, STATUS_CHANGED, REOPENED, DEADLINE_CHANGED, AWARD_AMOUNT_CHANGED, or CONTACT_CHANGED (the single most-significant change) |
changedFields | Array | Watchlist mode: every field that changed since the last run (status, closeDate, awardCeiling, contactEmail) |
previousCloseDate | String / null | Watchlist mode: the deadline recorded on the prior run |
matchedSearches | Array | Multi-search mode: the named search(es) this opportunity matched |
fitScore | Integer / null | 0-100 deterministic fit against your profile (null when no profile or nothing checkable) |
fitBand | String / null | strong (≥75) / moderate (≥50) / weak / unfit (any hard disqualifier) |
fitReasons | Array | Plain-English reasons the opportunity fits your profile |
disqualifiers | Array | Plain-English reasons it fails your profile (deadline passed, award too low, cost-share required, etc.) |
synopsisDescription | String / null | Full opportunity description (detailLevel: full) |
awardCeiling / awardFloor | Integer / null | Maximum / minimum award in USD (detailLevel: full) |
estimatedTotalFunding | Integer / null | Estimated total program funding in USD (detailLevel: full) |
expectedNumberOfAwards | Integer / null | Expected number of awards (detailLevel: full) |
costSharingRequired | Boolean / null | Whether cost-sharing / matching is required (detailLevel: full) |
eligibleApplicantTypes | Array | Applicant types eligible to apply (detailLevel: full) |
grantorContactName / grantorContactEmail / grantorContactPhone | String / null | Agency point of contact (detailLevel: full) |
additionalInfoUrl | String / null | Agency program / funding-description link (detailLevel: full) |
historicalInsights | Object | Watchlist mode: cross-run lifecycle (firstSeen, timesReopened, deadlineExtensions, averageOpenWindowDays, currentCycleNumber, renewalLikelihood, historicalPattern, firstSightFallback) |
fundingIntelligence | Object | Watchlist mode: lifecycleStage, stabilityScore + stabilityBand, deadlineVolatility, extensionsObserved, and recurrence (appearsAnnual, historicalCycles, averageReleaseMonth, expectedNextRelease) |
Use cases
- Grant writers and consultants -- search for open federal funding opportunities matching client eligibility profiles and program areas, then export structured data for proposal planning
- Nonprofit organizations -- monitor new grant announcements from agencies like HHS, ED, or USDA to stay ahead of application deadlines and prioritize funding opportunities
- State and local government agencies -- track available federal grants for infrastructure, public health, education, or emergency management programs across multiple funding categories
- Small businesses -- identify SBIR, STTR, and other procurement opportunities from DOD, DOE, NSF, and other agencies using the small business eligibility filter
- University research offices -- scan for new funding announcements in science, technology, health, and education categories to alert faculty and research teams
- Policy researchers and journalists -- analyze federal funding patterns by agency, category, and status for investigative reporting or academic study
- Government affairs teams -- monitor grant programs relevant to their industry sectors at corporations and trade associations
- CRM and pipeline integration -- feed grant opportunity data directly into Salesforce, HubSpot, or custom grant management systems via the Apify API
- Competitive intelligence -- track which agencies are funding which categories and how program priorities shift across fiscal years
- Grant aggregator platforms -- build searchable grant databases or email digest services by running scheduled searches across multiple keywords and categories
- Fiscal year planning -- analyze forecasted and posted opportunities at the start of each fiscal year to align your organization's proposal pipeline with available federal funding
API & Integration
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run_input = {"keyword": "climate change","eligibility": "12","status": "posted","maxResults": 50,}run = client.actor("DMC8HyLcbAQnzRGB5").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['opportunityNumber']} - {item['title']}")print(f" Agency: {item['agency']} | Closes: {item['closeDate']}")print(f" URL: {item['grantsGovUrl']}")
JavaScript
import { ApifyClient } from "apify-client";const client = new ApifyClient({ token: "YOUR_API_TOKEN" });const run = await client.actor("DMC8HyLcbAQnzRGB5").call({keyword: "STEM education",agency: "ED",fundingCategory: "ED",maxResults: 25,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((item) => {console.log(`${item.opportunityNumber} - ${item.title}`);console.log(` Agency: ${item.agency} | Status: ${item.status}`);});
cURL
curl -X POST "https://api.apify.com/v2/acts/DMC8HyLcbAQnzRGB5/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"keyword": "rural broadband","fundingInstrument": "G","status": "posted","maxResults": 25}'
Integrations
- Zapier -- trigger automated workflows when new grant opportunities are found
- Make (Integromat) -- build multi-step scenarios routing grant data to your CRM or project management tools
- Google Sheets -- export results directly for collaborative grant tracking and team evaluation
- Webhooks -- POST results to your endpoint on run completion for real-time alerting
- Slack / Email -- connect via Zapier or Make to notify your grants team when new opportunities match criteria
- REST API -- call the actor programmatically from any language using the Apify API endpoints
Use in Dify
Drop this actor into Dify workflows via the Apify plugin's Run Actor node. Each opportunity returns scored and classified as structured JSON -- a recommendedAction (apply-now / prepare / watch / skip), an urgency band, and an isOpen boolean -- plus the changeFlag (NEW / STATUS_CHANGED / REOPENED / UNCHANGED) your downstream node branches on. A generic Grants.gov scraper pointed at the same API returns raw opportunity rows; this returns the decision.
- Actor ID:
ryanclinton/grants-gov-search - Sample input (weekly monitor for new clean-energy grants a nonprofit can act on):
{"keyword": "renewable energy","eligibility": "12","status": "posted","maxResults": 50,"watchlistName": "clean-energy-weekly","outputProfile": "minimal"}
A Dify if/else node routes each record on the stable enums without parsing prose:
recommendedAction == "apply-now"-> send a Slack alert to the grants team (deadline within 7 days)recommendedAction == "prepare"-> create a task in the proposal trackerrecommendedAction == "watch"-> log the forecasted opportunity for laterchangeFlag == "NEW"-> notify only on opportunities that appeared since the last run
Opt-in modes Dify workflows can lean on: set watchlistName and a scheduled Dify run only acts on changeFlag == "NEW" records (the rest are UNCHANGED), and outputProfile: "minimal" trims each record to the decision fields so the LLM context stays lean. The run-level summary record's newOpportunities[] array is usable verbatim in a digest node -- no LLM rewriting needed.
How it works

The actor follows a straightforward pipeline: validate input, build the API request, call Grants.gov, paginate if needed, transform the results, and push to the dataset.
- The actor receives your input parameters -- keyword, optional filters for agency, eligibility, funding instrument, funding category, and opportunity status.
- It constructs a POST request body matching the Grants.gov REST API specification, mapping your input selections to the API's expected field codes (e.g., eligibility code "12" for nonprofits with 501(c)(3) status, funding category code "EN" for Energy).
- A POST request is sent to
https://api.grants.gov/v1/api/search2with a JSON body containing the search keyword, row count, and any active filter parameters. - The API returns matching grant opportunities along with a total hit count, faceted metadata, and error code for validation.
- The actor checks the API response error code. If non-zero, it throws a descriptive error with the API's message and code.
- If more results are requested than a single response contains, the actor paginates using
startRecordNumoffsets, incrementing by the number of records received until the requested count is reached or no more results are available. - Each raw
oppHitrecord is transformed into a clean output object with standardized field names, a constructed Grants.gov URL (https://www.grants.gov/search-results-detail/{id}), and extracted CFDA number arrays. - Each opportunity is scored with the deterministic decision layer --
daysUntilClose,urgency,recommendedAction,isOpen, and a one-linesummary-- computed purely from the deadline, open date, and status the API returns. No model, no randomness; the same input always yields the same decision. - When a
watchlistNameis set, each opportunity is diffed against the prior run stored in a named key-value store and taggedNEW,STATUS_CHANGED,REOPENED, orUNCHANGED. - Records stream to the dataset as they are scored, followed by a single
summaryrollup record (also mirrored to theSUMMARYkey-value store record), ready for export in JSON, CSV, Excel, or XML or for programmatic access via the Apify API.
Input Keywords & Filters|vBuild POST Request Body|vPOST api.grants.gov/v1/api/search2|vParse Response + Check Error Code|vPaginate if Needed (startRecordNum)|vTransform oppHit --> Clean JSON|vScore: urgency + recommended action + summary|vWatchlist diff (NEW / CHANGED / REOPENED)|vStream records + summary rollup --> Apify Dataset
Performance & cost
| Scenario | Results | Approx. Time | Memory | Estimated Cost |
|---|---|---|---|---|
| Quick keyword lookup | 10-25 | 5-10 seconds | 128 MB | ~$0.001 per run |
| Filtered agency search | 25-50 | 8-15 seconds | 128 MB | ~$0.002 per run |
| Full extraction | 100 | 15-30 seconds | 256 MB | ~$0.005 per run |
| Daily scheduled monitor | 25 per run | 5-10 seconds | 128 MB | ~$0.03 per month |
| Hourly deadline tracker | 50 per run | 10-15 seconds | 128 MB | ~$0.72 per month |
The Grants.gov API is completely free with no rate limits documented for normal usage. You pay only for Apify platform compute time. The actor completes quickly because it calls a single REST API endpoint with server-side filtering -- no web crawling or browser rendering is involved.
Memory usage is minimal because the actor processes JSON responses in memory without launching a browser. For most use cases, 128 MB is sufficient. The 256 MB estimate for full 100-result extractions provides a comfortable margin.
Limitations
- 100 records per API request -- the Grants.gov API returns up to 100 records per request, so the actor paginates automatically and the
searchesportfolio mode runs each search separately;maxResults(up to 1000) caps the unique total. - Keyword search only -- the API does not support advanced query syntax such as boolean operators, phrase matching, or field-specific search. Use the filter parameters,
searches, oragencies/eligibilities/fundingCategoriesfan-out to broaden coverage instead. - Full descriptions require detail mode -- the search index returns summary metadata (title, dates, agency, CFDA numbers); set
detailLevel: fullto add the synopsis, award amounts, eligibility, and agency contacts via the keyless detail endpoint (one extra request per opportunity). - Date format is MM/DD/YYYY -- open and close dates are returned in U.S. date format as provided by the Grants.gov API; the date-window filters accept YYYY-MM-DD.
- API availability depends on Grants.gov -- the actor relies on the official government API. During government shutdowns, maintenance windows, or unexpected outages, results may be temporarily unavailable.
Responsible use
- Respect Grants.gov terms of service. This actor uses the official public API as intended. Avoid running excessively frequent requests that could burden the government infrastructure.
- Verify opportunity details on Grants.gov. Always confirm deadlines, eligibility requirements, and application instructions by visiting the official listing page before submitting any grant application.
- Do not use scraped data to misrepresent eligibility. Grant fraud is a federal offense. Ensure your organization genuinely qualifies for any opportunity before applying.
- Schedule responsibly. Daily or weekly monitoring runs are appropriate for most use cases. Avoid scheduling runs more frequently than every few hours unless you have a specific operational need.
- Attribute data appropriately. When sharing or publishing grant data obtained through this actor, note that the source is Grants.gov, maintained by the U.S. Department of Health and Human Services.
FAQ
How is this different from Grants.gov? Grants.gov helps you find opportunities. This actor helps you prioritize, monitor, compare, score, and track them over time. It adds a deterministic decision layer (urgency, recommended action, fit score), change detection across scheduled runs, and program-level intelligence that accumulates historical funding patterns no single search can show.
What data source does this actor use?
The official Grants.gov REST API at api.grants.gov, maintained by the U.S. Department of Health and Human Services. Grants.gov is the single access point for over 1,000 federal grant programs across all agencies.
Do I need a Grants.gov API key? No. The Grants.gov API is completely free and open with no authentication, API key, or registration required.
How current is the data? Grants.gov is updated in real time by federal agencies. The actor fetches live data directly from the API on each run, so results reflect the latest posted opportunities.
What does each opportunity status mean? Forecasted means the agency plans to release the opportunity but has not yet opened applications. Posted means the application window is currently open. Closed means the deadline has passed. Archived means the opportunity has been moved to long-term storage.
What are CFDA numbers / Assistance Listing numbers? CFDA (Catalog of Federal Domestic Assistance) numbers -- now officially called Assistance Listing numbers -- are unique identifiers assigned to federal assistance programs. They help you track specific funding programs across fiscal years and link related opportunities together.
Can I search for grants from a specific agency? Yes. Enter the agency code in the Agency field. Common codes include HHS (Health and Human Services), NSF (National Science Foundation), DOE (Department of Energy), EPA (Environmental Protection Agency), DOD (Department of Defense), USDA (Department of Agriculture), ED (Department of Education), DOI (Department of the Interior), DOC (Department of Commerce), and DOS (Department of State).
What eligibility types are supported? The actor supports all 17 Grants.gov eligibility types: state governments, county governments, city or township governments, special district governments, independent school districts, public/state-controlled institutions of higher education, Native American tribal governments (federally recognized), public housing authorities, Native American tribal organizations, nonprofits with 501(c)(3) status, nonprofits without 501(c)(3), private institutions of higher education, individuals, for-profit organizations, small businesses, others, and unrestricted.
What funding categories are available? All 23 Grants.gov categories: Agriculture, Arts, Business and Commerce, Community Development, Consumer Protection, Disaster Prevention and Relief, Education, Employment/Labor/Training, Energy, Environment, Food and Nutrition, Health, Housing, Humanities, Infrastructure Investment and Jobs Act (IIJA), Information and Statistics, Income Security and Social Services, Law/Justice/Legal Services, Natural Resources, Other, Opportunity Zone Benefits, Regional Development, Science and Technology and R&D, and Transportation.
Can I find SBIR/STTR grants for small businesses? Yes. Set the Eligibility filter to "Small businesses" and optionally filter by agency (DOD, DOE, NSF, HHS, and NASA are the largest SBIR/STTR funding agencies) to find opportunities specifically available to small business applicants.
How do I monitor for new grants on a schedule? On the Apify platform, open the actor's Schedules tab and create a new schedule (e.g., daily at 8:00 AM). Configure your search keyword and filters, then set up a webhook or Zapier integration to receive notifications when new results appear in the dataset.
Can I get more than 100 results?
Yes. The Grants.gov API returns up to 100 records per request, so the actor paginates automatically up to your maxResults (up to 1000 unique opportunities). To broaden coverage further, use the searches portfolio list or the agencies / eligibilities / fundingCategories fan-out to run several searches in one go -- results are deduplicated across them.
What happens if the Grants.gov API is down? The actor will return an error message indicating the API could not be reached. This can happen during government shutdowns, scheduled maintenance, or unexpected outages. Retry the run after the API is restored.
Does this actor support boolean or advanced search queries? No. The Grants.gov API accepts plain keyword strings only -- it does not support boolean operators (AND, OR, NOT), phrase matching with quotes, or field-specific query syntax. To narrow your results, use the filter parameters (agency, eligibility, funding category, status) instead of trying to construct complex keyword queries.
Can I use this actor to track grant deadlines automatically?
Yes. Schedule the actor to run daily with status set to "posted" and your relevant keyword and filters. Each run captures current closeDate values for all matching opportunities. Combine this with a Zapier or Make integration to send alerts when a deadline is approaching or when new opportunities appear that were not in the previous run.

Build a federal funding intelligence stack
This actor is the grants layer of a wider public-sector toolkit. Run the siblings alongside it to follow federal money from the bill that authorizes it to the award that spends it.
| Need | Actor |
|---|---|
| Find grant opportunities (this actor) | ryanclinton/grants-gov-search |
| Track legislation that creates or modifies programs | ryanclinton/congress-bill-search |
| Track agency notices, rules, and proposed regulations | ryanclinton/federal-register-search |
| See where the money was actually awarded | ryanclinton/usaspending-search |
| Search NIH-funded research grants in depth | ryanclinton/nih-research-grants |
| Find related open government datasets | ryanclinton/datagov-dataset-search |