Grants.gov Scraper: Federal Grant Opportunities Feed avatar

Grants.gov Scraper: Federal Grant Opportunities Feed

Pricing

$1.50 / 1,000 grant opportunities

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

Grants.gov Scraper: Federal Grant Opportunities Feed

New and open U.S. federal grant opportunities from the official Grants.gov API: title, agency, deadline, award ceiling and floor, eligibility, Assistance Listings, full description. Daily feed with dedupe and filters. Not endorsed or certified by HHS.

Pricing

$1.50 / 1,000 grant opportunities

Rating

0.0

(0)

Developer

Scott Williams

Scott Williams

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Security

Limited permissions

Share

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

This Grants.gov scraper turns the official, keyless Grants.gov API into a clean daily feed of U.S. federal grant opportunities. Each record has the title, agency, posted and closing dates, award ceiling and floor, estimated total funding, expected number of awards, eligible applicants, Assistance Listing (ALN, formerly CFDA) numbers, the full description, the announcement file list and a link to the official opportunity page.

Use it as a federal grant alert for a nonprofit, university research office, city or grant consultant, to watch forecasted grants before they open, to screen opportunities by award size or applicant type, or to feed a funding calendar, CRM or spreadsheet.

What you get

  • New and open federal grants: posted (open for applications) and forecasted opportunities by default; closed and archived on request.
  • Only new or changed on a schedule: each opportunity is returned once, and again if its status changes (forecast to posted) or its closing date changes (deadline extension). The memory is kept per stateKey, so several schedules can run side by side.
  • Full detail (on by default): one extra API call per opportunity adds the description, eligibility text, award ceiling and floor, funding totals, forecast dates and attachments. Turn it off for a fast list of search fields only.
  • Filters: keyword, agencies (a top-level code such as HHS includes every sub-agency; HHS-NIH11 is one office), applicant types, funding categories, funding instruments (grant, cooperative agreement, procurement contract, other), ALN numbers, open-for-applications only, minimum award ceiling and minimum total funding.
  • Polite by design: at most 2 requests a second, back-off on 429 and 5xx responses, and an immediate stop on 403.

Input example

{
"statuses": ["posted", "forecasted"],
"postedWithinDays": 7,
"agencies": ["HHS", "NSF"],
"eligibilities": ["12", "06"],
"minAwardCeiling": 100000,
"openForApplicationsOnly": true,
"maxItems": 500
}
  • postedWithinDays (default 7, U.S. Eastern dates) keeps daily runs small. Set 0 for the whole list.
  • Eligibility codes: 12 = 501(c)(3) nonprofits, 06 = public universities, 20 = private universities, 23 = small businesses, 00 = state governments. The full lists are in the input form.
  • minAwardCeiling and minTotalFunding use the detail fields, so they need includeDetails on (the default).

Output example

A record from a run on 2026-10-31 (description, eligibility text and attachments shortened here):

{
"source": "Grants.gov",
"opportunityId": "364178",
"opportunityNumber": "G27AS00081",
"title": "Cooperative Agreement for affiliated Partner with the Californian Cooperative Ecosystem Studies Unit",
"status": "posted",
"docType": "synopsis",
"agencyCode": "DOI-USGS1",
"agencyName": "Geological Survey",
"topAgencyCode": "DOI",
"topAgencyName": "Department of the Interior",
"postedDate": "2026-10-30",
"closeDate": "2026-11-30",
"alnNumbers": ["15.808"],
"alnPrograms": ["U.S. Geological Survey Research and Data Collection"],
"category": "Discretionary",
"fundingInstruments": ["Cooperative Agreement"],
"fundingCategories": ["Science and Technology and other Research and Development"],
"eligibilityText": "This financial assistance opportunity is being issued under a Cooperative Ecosystem Studies Units (C ...",
"description": "This Notice of Funding Opportunity (NOFO) is for a U.S. Geological Survey (USGS) National and Regional Climate ...",
"estimatedTotalFunding": 480000.0,
"awardCeiling": 480000.0,
"awardFloor": 1.0,
"expectedAwards": 1,
"costSharing": false,
"lastUpdatedDate": "2026-10-30",
"attachments": [{"folder": "Full Announcement", "fileName": "G27AS00081.docx"}],
"url": "https://www.grants.gov/search-results-detail/364178",
"detailFetched": true,
"parseError": null
}

sample_output.json has more full records (a posted grant, a forecast, one with the agency contact on, and one without details).

All fields: source, opportunityId, opportunityNumber, title, status, docType, agencyCode, agencyName, topAgencyCode, topAgencyName, postedDate, closeDate, alnNumbers, alnPrograms, category, fundingInstruments, fundingCategories, eligibleApplicants, eligibilityText, description, estimatedTotalFunding, awardCeiling, awardFloor, expectedAwards, costSharing, fiscalYear, estimatedPostDate, estimatedCloseDate, estimatedAwardDate, estimatedProjectStartDate, archiveDate, lastUpdatedDate, version, additionalInfoUrl, attachments, url, detailFetched, parseError, scrapedAt, plus agencyContact when includeAgencyContact is on.

  • Dates are YYYY-MM-DD. Money is in U.S. dollars. A missing value is null, never 0.
  • Forecasts have no closeDate; use estimatedCloseDate and the other estimated dates.
  • Agency contact: includeAgencyContact adds agencyContact (the grants officer or help desk the agency publishes for applicants: name, e-mail, phone). It is off by default.

Each run also writes a RUN_SUMMARY record: read, saved, skipped as already seen, filtered out, HTTP requests and why it stopped.

Price

Pay per event: $0.0015 per grant opportunity saved ($1.50 per 1,000). The Actor sets no start fee or other events. Records that could not be parsed are saved free.

Empty input {} and the prefilled input stop at 6 opportunities (the maxItems default), so they cost at most $0.009. Raise maxItems for a full daily feed. maxItems and the run's maximum cost setting cap your spend.

FAQ and limits

  • Is there a Grants.gov API key to get? No. The search2 and fetchOpportunity endpoints are public and keyless.
  • Why is awardCeiling null? The agency did not set one. That is common, and the minimum-ceiling filter drops those records.
  • The ALN filter: Grants.gov's documented aln search field is ignored by the API, so this Actor sends the working cfda field. API callers may pass aln (a string, comma list or array) as an alias for alnNumbers; both are merged.
  • Closed and archived opportunities are available, but a large archive pull is slow at 2 requests a second. Turn off details for big historical lists.
  • Grants.gov sometimes republishes one opportunity under a new id; those appear as separate records.
  • Source down: if Grants.gov is unreachable or keeps answering with errors and no records were saved, the run writes one free status record (recordType: "status", not charged) instead of failing.
  • Nothing new: if "only new since last run" is on and every opportunity found was already delivered by an earlier run with the same stateKey, the run writes one free status record (recordType: "status", status: "warning", message starting "Not charged: no new items since last run") instead of an empty dataset.
  • Invalid input: if the input cannot be used (for example an unknown status, an agency or Assistance Listing code in the wrong format, or a field of the wrong type), nothing is fetched and the run still ends SUCCEEDED with one free record {"recordType": "status", "type": "status", "status": "error", "statusRow": true, "charged": false, "message": "Invalid input, nothing was fetched or charged: <reason>", ...}. No opportunities are charged.

Data source and attribution

Data comes from the Grants.gov search2 and fetchOpportunity APIs. This product uses the Grants.gov API but is not endorsed or certified by the U.S. Department of Health and Human Services. Content is passed on unchanged except for formatting (HTML to plain text, dates to ISO format). Text is complete unless you set descriptionMaxChars, which trims it and marks the cut with " ...".