Grants.gov Scraper: Federal Grant Opportunities avatar

Grants.gov Scraper: Federal Grant Opportunities

Pricing

from $0.49 / 1,000 opportunities

Go to Apify Store
Grants.gov Scraper: Federal Grant Opportunities

Grants.gov Scraper: Federal Grant Opportunities

Scrape Grants.gov federal grant opportunities with award amounts, deadlines, eligibility, ALN and attachments; look up by number or monitor new grants. This product uses the Grants.gov API but is not endorsed or certified by the U.S. Department of Health and Human Services.

Pricing

from $0.49 / 1,000 opportunities

Rating

0.0

(0)

Developer

Automation Craft

Automation Craft

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

0

Monthly active users

4 days ago

Last modified

Share

Grants.gov Scraper: Federal Grant Opportunities

Grants.gov Scraper turns the US federal government's list of grant funding opportunities into clean rows: every forecasted, posted, closed and archived opportunity, with award amounts, dates, eligibility, description, contacts, attachments and the agency's own amendment history. It reads the official Grants.gov API, needs no login and no API key, and can watch a search for you: run it on a schedule with a monitor name and each run delivers only what is new or amended since the last one.

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

What it does

  • Search like Grants.gov does: keywords (OR, AND, "exact phrases", -exclusions, wild*cards), status, agency or whole department, funding category, funding instrument, eligible applicant type and Assistance Listing (CFDA) number, plus what Grants.gov cannot filter: a posted date window from any date to any date (Grants.gov offers only "posted in the last N days"), a closing date window and a minimum award ceiling.
  • Look up exact opportunities by number (PAR-25-274), Grants.gov id (357305) or Grants.gov link. A number shared by several opportunities returns each of them.
  • Full records by default: award ceiling and floor, estimated total funding, expected awards, cost sharing, eligible applicants (names and codes), eligibility text, description as plain text, agency contact, every attachment with its download link, application packages, related opportunities, revision number and days until the close date.
  • Revision rows: one free row per amendment Grants.gov keeps in the record (which fields changed, before and after, with the agency's comment).
  • Monitor: a scheduled run with the same monitor name delivers and charges only opportunities that are new to it or that Grants.gov amended to a higher revision. A run that finds nothing new delivers a free status row.
  • Honest misses: an id or number Grants.gov does not have, a code that does not exist and an empty search each get a free status row that says so, and every run ends with a summary row with its counters.
  • List mode: switch full records off for the short list row at a lower price (a run delivers up to 100,000 rows; the largest list run tested on the platform delivered 600 rows in 2 seconds).

Quick start

  1. Press Start with the example input (the 10 newest posted opportunities about health), or clear every field to get the 100 newest open opportunities (forecasted and posted) as full records.
  2. Or type a keyword ("rural broadband"), pick statuses, agencies or categories, and set Maximum opportunities.
  3. To read exact opportunities, paste opportunity numbers, ids or Grants.gov links into the Lookup section.
  4. To get only new and amended opportunities every day, give the search a Monitor name and schedule the task.
  5. Export the dataset as JSON, CSV or Excel, or read it through the Apify API.

What you get

One row per opportunity (type: "opportunity"). The fill rates below were measured on 150 live records on 2026-10-10 (50 posted, 40 forecasted, 30 closed, 30 archived, from 134 agencies in 23 departments and from several years), by running the Actor's own row builder over them (research/fill/fill-rates.json); amounts count when above zero. Forecasts have no close date yet: they carry the estimated post, close and award dates and the fiscal year instead. The sample spreads over agencies and years; the 300 newest open opportunities of one real run (7kMwWCHPRCZCLpiyg, 2026-10-10: 193 posted, 107 forecasted) differ: posted close date 99%, award ceiling 76%, attachments 65%, application packages 90%, contact e-mail 98%; forecasted estimated close date 91%, estimated award date 97%, award ceiling 43%, attachments 1%.

FieldWhat it isFilled (posted / forecasted / closed / archived)
opportunityId, opportunityNumber, title, urlidentity and the public Grants.gov page100%
status, documentType, fundingTypeforecasted, posted, closed or archived; synopsis or forecast; discretionary, mandatory and so on100%
agencyCode, agencyName, topAgencyCode, topAgencyNamethe posting agency and its department100%
postedDate, closeDate, daysUntilClose, archiveDate, originalCloseDatedates as YYYY-MM-DD (US Eastern)close date 86% / 0% / 100% / 97%
estimatedPostDate, estimatedCloseDate, estimatedAwardDate, estimatedProjectStartDate, fiscalYearforecast datesforecasts: close 88%, award 55%
awardCeiling, awardFloorthe largest and smallest single award, in US dollars (numbers)ceiling 74% / 65% / 90% / 87%, floor 50% / 48% / 73% / 63%
estimatedTotalFunding, expectedNumberOfAwardsprogram sizefunding 44% / 68% / 53% / 53%, awards 68% / 75% / 70% / 77%
costSharingwhether cost sharing or matching is required100%
fundingInstruments, fundingCategories, eligibleApplicants (with ...Codes)Grants.gov's own names and codes100%
eligibilityTextthe agency's additional eligibility text68% / 83% / 57% / 70%
assistanceListings, assistanceListingNumbersAssistance Listing (CFDA) numbers and program titles98% / 100% / 100% / 97%
descriptionthe synopsis or forecast text, as plain text100%
contactName, contactDetails, contactEmail, contactPhonethe agency contacte-mail 94% / 100% / 80% / 97%
attachments, attachmentCountevery file with folder, name, type, size and download link82% / 33% / 70% / 83%
applicationPackagespackage and competition ids, opening and closing dates64% / 0% / 3% / 0%
relatedOpportunitieslinked opportunities4% / 5% / 10% / 0%
revision, versionsInHistory, lastUpdatedAt, lastChangeCommentthe amendment count and the last changerevision 100%, last update 100% / 100% / 100% / 80%, comment 52% / 23% / 67% / 30%, history 54% / 20% / 57% / 30%
monitorChangewith a monitor: new or revisedmonitor runs

A shortened real row (posted 2026-10-09):

{
"type": "opportunity",
"opportunityId": "360905",
"opportunityNumber": "RFA-CA-28-013",
"title": "Carcinogen Hazard Assessment Monographs Program (CHAMP) (R01 Clinical Trial Not Allowed)",
"url": "https://www.grants.gov/search-results-detail/360905",
"status": "posted",
"agencyName": "National Institutes of Health",
"topAgencyName": "Department of Health and Human Services",
"postedDate": "2026-10-09",
"closeDate": "2027-02-09",
"awardCeiling": 700000,
"awardFloor": 700000,
"estimatedTotalFunding": 800000,
"expectedNumberOfAwards": 1,
"costSharing": false,
"fundingInstruments": ["Grant"],
"fundingCategories": ["Health"],
"assistanceListingNumbers": ["93.393", "93.396", "93.399"],
"contactEmail": "ncidccpsegrpnofos@mail.nih.gov",
"attachmentCount": 1,
"revision": 3,
"lastUpdatedAt": "2026-10-09T08:47:44-04:00"
}

Other rows in the same dataset: revision (one amendment, free, only when Revision rows is on), searchResult (the short list row, when Full records is off), status (a miss, an empty search or a stop, free) and one summary at the end (counters, coverage, billing and the Grants.gov notice). The dataset has three views: Opportunities, Revisions and Status rows.

How much does it cost to scrape Grants.gov?

You pay per opportunity delivered, plus a small fee per run. Misses, empty searches, records that fail your filters, revision rows and status rows are free; a run that delivers nothing costs only its start fee (charged once more if you resurrect the run).

EventFree planBronzeSilverGold
Opportunity (a full record)$0.69 / 1,000$0.69 / 1,000$0.59 / 1,000$0.49 / 1,000
Search result (a list row, full records off)$0.20 / 1,000$0.20 / 1,000$0.18 / 1,000$0.16 / 1,000
Actor start (once per run, and once more if you resurrect it)$0.0025$0.0025$0.0025$0.0025

Platinum and Diamond plans pay the Gold price. The Actor start fee has no plan discount. The Store pricing card shows these same prices per 1,000 events: "$0.69 / 1,000" on the Opportunity row means one opportunity costs 0.069 cents.

Examples at the Bronze price: the 100 newest open opportunities cost $0.0715; all open opportunities as full records (about 1,500) about $1.04; a daily monitor that finds 10 new opportunities $0.0094 a day; 10,000 list rows $2.0025.

Input

FieldWhat it does
keywordGrants.gov keyword search: words joined with OR, AND, "exact phrase", -word, wild*
statusesforecasted, posted, closed, archived (empty: forecasted and posted)
agenciesagency codes: a department (HHS) includes its sub agencies, a sub agency (HHS-NIH11) is that one; checked against Grants.gov's list
fundingCategories, fundingInstruments, eligibleApplicantsGrants.gov's codes, matched when the opportunity carries any of them
assistanceListingsAssistance Listing (CFDA) numbers such as 93.866
postedWithinDays or postedFrom / postedToposted date window (US Eastern dates)
closingWithinDays or closingFrom / closingToclose date window; forecasts have no close date and are left out
minAwardCeilingminimum award ceiling in US dollars, checked on the full record
sortBynewest (default), oldest, closingSoonest, closingLatest, agency, title, number
opportunitieslookup: opportunity numbers, ids or Grants.gov links (search fields are left aside)
includeDetailsfull records (default) or the short list row
includeRevisionHistoryadds the free revision rows
maxItemsthe most paid rows one run delivers (default 100)
monitorNameremembers what this search delivered; later runs deliver only new and amended opportunities

Every value is checked before any opportunity is read: an unknown field, a date that does not exist, a code Grants.gov does not use (agency codes are checked against Grants.gov's own list) or a number in the wrong form stops the run with a free status row that names the problem.

How the monitor works

Give a search a monitor name and schedule it. The first run delivers what the search finds. Every later run walks the whole search again (the open opportunities are two list calls) and delivers, and charges for, only the opportunities that are new to the monitor, or whose list row changed (status, close date, number, title or posted date) and whose record Grants.gov amended to a higher revision. A forecast that becomes posted, an extended deadline and a renumbered opportunity are delivered with monitorChange: "revised"; a deadline that passes (posted to closed) is not an amendment and is not delivered. A monitor name belongs to one search: the same name with other settings gets a free status row. The monitor watches at most 20,000 opportunities (the open ones are about 1,500) and never forgets an opportunity it delivered, so it never bills the same version twice; its memory holds up to 60,000 opportunities.

What this Actor does NOT do

  • It does not see amendments that change only the text or the amounts of an opportunity in a monitor run: those show up in the record's revision history the next time it is delivered, or in a run without a monitor.
  • It does not download attachment files: each attachment carries its direct download link and the folder's zip link.
  • It does not score how well an opportunity fits you, and it calls no AI model: it delivers the record as Grants.gov publishes it.
  • It does not cover private foundations, state grant portals or SAM.gov contract opportunities: only Grants.gov.
  • It does not use the Simpler.Grants.gov API, which needs a personal API key.
  • It does not order results by award ceiling, award floor or relevance: it offers the sort keys of the Grants.gov API (posted date, close date, agency, title, number), and every row carries the amounts to sort on.
  • It has no webhook input: Apify's own run webhooks and integrations send the results wherever you want.
  • It has no cost sharing filter and no maximum award filter: Grants.gov cannot filter on either, and every row carries costSharing, awardCeiling and awardFloor to filter on.
  • It does not hide the agency contact: contactName, contactDetails, contactEmail and contactPhone are the public points of contact the agency publishes with each opportunity, and some name a person.

API examples

curl -X POST "https://api.apify.com/v2/acts/automation_craft~grants-gov-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keyword": "rural broadband", "statuses": ["posted"], "maxItems": 20}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('automation_craft/grants-gov-scraper').call({ agencies: ['HHS-NIH11'], closingWithinDays: 30 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("automation_craft/grants-gov-scraper").call(run_input={"opportunities": ["PAR-25-274", "357305"]})
items = client.dataset(run["defaultDatasetId"]).list_items().items

FAQ

Do I need a Grants.gov API key or account?

No. The Actor reads the official Grants.gov API endpoints that need no key and no login. You only need an Apify account.

How do I get alerts for new federal grants?

Save your search as a task with a monitor name and schedule it (daily, for example). Each run delivers only the opportunities that are new or amended since the last run, so an Apify integration (Slack, e-mail, Google Sheets, a webhook) receives just those.

Can I search by CFDA or Assistance Listing number?

Yes. Put the numbers (for example 93.866) in Assistance Listing numbers. Grants.gov's documented aln parameter is ignored by its own API; this Actor sends the parameter that works and checks every row against your numbers.

Is there a limit on how many opportunities I can export?

Grants.gov sets no limit: its search returns every match. Set Maximum opportunities to what you need (up to 100,000 per run); list rows are the fastest way to export many opportunities, and a large export can be split by status or posted date. The largest runs tested on the platform delivered 600 list rows in 2 seconds and 300 full records in 64 seconds.

Which grants close soon?

Set Closing within the next N days (30, for example) and the order Closing soonest first. Every row also carries daysUntilClose.

Why does this Actor run with limited permissions?

It needs nothing beyond its own storage: it reads the public Grants.gov API, writes to its own dataset and, when you give a monitor name, keeps that monitor's memory in a named key-value store it creates itself. Limited permissions are the least privilege that does that.

Changelog

  • 0.1 (2026-10-11): the Opportunity price is 0.69 / 0.69 / 0.59 / 0.49 per 1,000 (Free / Bronze / Silver / Gold).
  • 0.1 (2026-10-10): first release.

More data tools by Automation Craft