Grants.gov Scraper — US Federal Grant Opportunities avatar

Grants.gov Scraper — US Federal Grant Opportunities

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Grants.gov Scraper — US Federal Grant Opportunities

Grants.gov Scraper — US Federal Grant Opportunities

Search and scrape US federal grant opportunities from Grants.gov by keyword, status, agency and category. Extract award amounts, deadlines, eligibility and agency contacts. No API key, no login.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Search, filter, and export thousands of live US federal grant opportunities straight from Grants.gov — keyless, structured, and ready for your pipeline.

What does this scraper do?

This actor turns the official Grants.gov portal — the single source of truth for US federal grant funding — into clean, structured data you can actually use. It talks directly to the public Grants.gov REST API (api.grants.gov/v1/api/search2 and fetchOpportunity), so there is no API key, no login, and no browser overhead. You give it a keyword, a status, or a set of agency, category, and eligibility filters, and it returns every matching grant opportunity as a row of JSON.

A single run yields hundreds to thousands of grants — there are 1,700+ opportunities posted at any given time. By default you get the core record for each grant (title, agency, status, dates, CFDA numbers, and a link). Flip on fetchDetails and each opportunity is enriched with the full record: award ceilings and floors, total estimated funding, eligibility, funding instrument, and agency contact details. It is the fastest way to build a federal-funding dataset without touching a single form.

Who is it for?

This scraper is built for anyone who needs federal grant data in bulk and machine-readable form:

  • Grant writers & consultants — build filtered opportunity pipelines for multiple clients at once, and never miss a deadline again.
  • Nonprofits & NGOs — track funding you are eligible for (501(c)(3), community orgs) across every federal agency in one place.
  • University research & sponsored-programs offices — feed opportunity data to faculty by department, category, and CFDA number.
  • Small businesses & startups seeking funding — surface SBIR/STTR, energy, and innovation grants without scanning dozens of agency sites.
  • GovTech & funding-intelligence platforms — power dashboards, newsletters, and CRMs with a reliable, refreshable federal-grants feed.

Use cases

  • Build a filtered grant pipeline by category — pull every open Health or Education grant, tag by CFDA number, and hand it to your team.
  • Monitor new opportunities from specific agencies — schedule a daily run scoped to NSF, HHS, or DOE and diff the results to catch new postings.
  • Deadline calendars — extract closeDate across all open grants and generate a rolling calendar of application deadlines.
  • Funding-landscape research — aggregate award ceilings and total funding across categories to map where federal money is flowing.
  • Feed a grants CRM or newsletter — push structured opportunities into HubSpot, Airtable, or a weekly email digest automatically.

Why use this scraper?

  • Keyless official data — pulls straight from the Grants.gov public API. No account, no key, no scraping fragile HTML.
  • Powerful filters — combine keyword, opportunity status, agency code, funding category, and applicant-eligibility filters for surgical targeting.
  • Optional full detail — enable fetchDetails to get real award amounts, total funding, eligibility, and agency contact emails.
  • Real numbers — award ceilings, floors, and estimated totals come back as actual numeric fields you can sort and sum.
  • Bulk export — one run returns hundreds to thousands of grants, exportable to JSON, CSV, Excel, or Google Sheets in one click.
  • Pay-per-result — you only pay for the grants you actually extract, so a broad research pull and a tight monitored query both stay cheap.

What data can you extract?

Every run returns a base record for each grant. Enable fetchDetails and each record is enriched with the fields in the second table below.

Base fields (always returned)

FieldDescription
opportunityIdInternal Grants.gov opportunity ID
opportunityNumberPublic funding opportunity number
titleGrant / opportunity title
agencyFull agency name
agencyCodeAgency code (e.g. DOI-NPS, HHS)
oppStatusposted / forecasted / closed / archived
docTypesynopsis (open grant) or forecast (upcoming)
openDateDate the opportunity opened
closeDateApplication deadline (may be null)
cfdaListArray of CFDA / Assistance Listing numbers
alnListArray of Assistance Listing Numbers
urlDirect link to the grant detail page
scrapedAtISO timestamp of extraction

Details fields (added when fetchDetails is true)

FieldDescription
descriptionFull opportunity description
awardCeilingMaximum award amount ($, numeric)
awardFloorMinimum award amount ($, numeric)
estimatedTotalFundingTotal program funding ($, numeric)
expectedNumberOfAwardsExpected number of awards (numeric)
costSharingWhether cost sharing / matching is required
fundingInstrumentGrant, cooperative agreement, etc.
fundingActivityCategoryFunding activity category
eligibilityEligible applicant types
additionalInfoUrlLink to additional program info
agencyContactEmailAgency point-of-contact email
postingDateDate the opportunity was posted
responseDateApplication response deadline

Sample record (base)

{
"opportunityId": "141593",
"opportunityNumber": "P12AC10113",
"title": "Vegetation Interns",
"agency": "National Park Service",
"agencyCode": "DOI-NPS",
"oppStatus": "posted",
"docType": "synopsis",
"openDate": "01/30/2012",
"closeDate": null,
"cfdaList": ["15.931"],
"url": "https://www.grants.gov/search-results-detail/141593",
"scrapedAt": "2026-07-26T10:39:45Z"
}

How to use

Option A — Broad open-grants pull

Grab every currently open and upcoming grant with no filters. Perfect for a full snapshot or a first exploration of the funding landscape.

  1. Leave keyword empty and oppStatus at the default (forecasted|posted).
  2. Set maxResults high enough to cover the current volume (e.g. 2000).
  3. Leave fetchDetails off for a fast, lightweight pull.
  4. Run the actor and export the dataset.
{
"oppStatus": "forecasted|posted",
"maxResults": 2000,
"fetchDetails": false
}

Option B — Keyword + agency + full details

Zero in on a topic from specific agencies and enrich every result with award amounts and eligibility.

  1. Set keyword (or a keywords array) to your topic.
  2. Add one or more agencies codes to scope the source.
  3. Optionally narrow with fundingCategories and eligibilities.
  4. Turn fetchDetails on to get award numbers and contact info.
{
"keyword": "clean energy",
"agencies": ["DOE", "NSF"],
"fundingCategories": ["EN", "ST"],
"eligibilities": ["25"],
"oppStatus": "posted",
"fetchDetails": true,
"maxResults": 500
}

Input parameters

ParameterTypeDefaultDescription
keywordstring""Search term. Empty = all grants.
keywordsarray[]Run several searches; overrides keyword.
oppStatusselectforecasted|postedforecasted|posted (open + upcoming), posted, forecasted, closed, archived, or forecasted|posted|closed|archived (all).
agenciesarray[]Agency codes, e.g. HHS, NSF, USAID, ED, DOE.
fundingCategoriesarray[]Category codes, e.g. ED (education), HL (health), EN (energy), AG (agriculture), ST (science).
eligibilitiesarray[]Applicant-eligibility codes, e.g. 25 (nonprofits 501c3), 12 (city govts), 21 (individuals).
fetchDetailsbooleanfalseEnrich each grant with the full record (one extra request per grant).
maxResultsinteger500Maximum number of grants to return.
proxyConfigurationobjectOptional. The API is open, so a proxy is not required.

Full input JSON

{
"keyword": "workforce development",
"keywords": [],
"oppStatus": "forecasted|posted",
"agencies": ["ED", "HHS"],
"fundingCategories": ["ED", "HL"],
"eligibilities": ["25", "12"],
"fetchDetails": true,
"maxResults": 500,
"proxyConfiguration": { "useApifyProxy": true }
}

Output example

Base mode

{
"opportunityId": "141593",
"opportunityNumber": "P12AC10113",
"title": "Vegetation Interns",
"agency": "National Park Service",
"agencyCode": "DOI-NPS",
"oppStatus": "posted",
"docType": "synopsis",
"openDate": "01/30/2012",
"closeDate": null,
"cfdaList": ["15.931"],
"url": "https://www.grants.gov/search-results-detail/141593",
"scrapedAt": "2026-07-26T10:39:45Z"
}

Details mode (fetchDetails: true)

{
"opportunityId": "358120",
"opportunityNumber": "DE-FOA-0003295",
"title": "Clean Energy Innovation Partnerships",
"agency": "Department of Energy",
"agencyCode": "DOE",
"oppStatus": "posted",
"docType": "synopsis",
"openDate": "05/12/2026",
"closeDate": "08/30/2026",
"cfdaList": ["81.087"],
"alnList": ["81.087"],
"url": "https://www.grants.gov/search-results-detail/358120",
"description": "Supports research and demonstration of next-generation clean energy technologies through university–industry partnerships.",
"awardCeiling": 2000000,
"awardFloor": 250000,
"estimatedTotalFunding": 15000000,
"expectedNumberOfAwards": 8,
"costSharing": "Yes, 20% non-federal match required",
"fundingInstrument": "Cooperative Agreement",
"fundingActivityCategory": "Energy",
"eligibility": "Nonprofits with 501(c)(3) status, public and state institutions of higher education",
"additionalInfoUrl": "https://www.energy.gov/clean-energy-innovation",
"agencyContactEmail": "clean.energy@ee.doe.gov",
"postingDate": "05/12/2026",
"responseDate": "08/30/2026",
"scrapedAt": "2026-07-26T10:41:12Z"
}

Tips for best results

  • Separate open from upcoming — use oppStatus: "posted" for grants you can apply to now, and "forecasted" for opportunities to plan ahead for.
  • Enable fetchDetails for money — award ceilings, floors, total funding, and eligibility only appear in details mode.
  • Use agency codes for precision — scoping to agencies: ["NSF"] is far faster and cleaner than filtering thousands of results after the fact.
  • Use category codes to segmentfundingCategories: ["HL"] gives you every health grant across all agencies at once.
  • Run multi-topic searches with keywords — pass an array like ["autism", "diabetes", "cancer"] to cover several themes in one run.
  • Watch closeDate for deadlines — sort by it to build a deadline calendar and prioritize what is closing soonest.
  • Raise maxResults for full coverage — the default is 500; there are 1,700+ open grants, so set it to 2000+ for a complete pull.
  • Cross-reference with cfdaList — the CFDA / Assistance Listing numbers let you match grants to SAM.gov and USASpending records.
  • Use forecasted to plan ahead — forecasted grants are announced before they open, giving you a head start on proposals.
  • Combine eligibility codes — filter to eligibilities: ["25"] so you only see grants your organization type can actually win.

Integrations

Because every run produces a clean dataset, you can wire it into almost anything:

  • Google Sheets — push new grants into a shared spreadsheet for your team.
  • Slack — post an alert when a new opportunity from a watched agency appears.
  • Zapier / Make — trigger multi-step automations (create a task, send an email, update a CRM) on each new grant.
  • Webhooks — get an HTTP POST the moment a run finishes so downstream systems stay in sync.
  • Schedule — run the actor daily or weekly and diff the output to detect new postings automatically.

API usage

Run the actor programmatically with the Apify API. Replace <YOUR_TOKEN> with your Apify API token.

cURL

curl -X POST "https://api.apify.com/v2/acts/logiover~grants-gov-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"keyword": "clean energy",
"agencies": ["DOE", "NSF"],
"oppStatus": "posted",
"fetchDetails": true,
"maxResults": 500
}'

Node.js (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_TOKEN>' });
const run = await client.actor('logiover/grants-gov-scraper').call({
keyword: 'clean energy',
agencies: ['DOE', 'NSF'],
oppStatus: 'posted',
fetchDetails: true,
maxResults: 500,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("<YOUR_TOKEN>")
run = client.actor("logiover/grants-gov-scraper").call(run_input={
"keyword": "clean energy",
"agencies": ["DOE", "NSF"],
"oppStatus": "posted",
"fetchDetails": True,
"maxResults": 500,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Use with AI agents (MCP)

This actor works as a tool for AI agents through the Apify Model Context Protocol (MCP) server. Once connected, an assistant like Claude can call the Grants.gov Scraper on your behalf — searching, filtering, and enriching grant opportunities in response to natural-language requests, then reasoning over the structured results. That means you can ask for a curated funding shortlist and get one back without writing any code.

Example prompt: "Find all currently open Department of Energy and NSF grants related to clean energy that nonprofits are eligible for, include the award ceilings and deadlines, and give me the five with the largest total funding."

FAQ

Is this scraper keyless?

Yes. It uses the public Grants.gov REST API, so there is no API key, no account, and no login required to extract data.

Is it limited to US federal grants?

Yes. Grants.gov is the official portal for US federal government funding opportunities, so every result is a federal grant, cooperative agreement, or related instrument.

How many grants can I get per run?

As many as match your filters, up to maxResults. With no filters there are typically 1,700+ open opportunities, and thousands more once you include closed and archived statuses.

What is the difference between posted, forecasted, and closed?

posted grants are open and accepting applications now. forecasted grants are announced in advance but not yet open. closed grants have passed their deadline, and archived grants are older records kept for reference.

Do I get award amounts?

Yes, when you enable fetchDetails. Details mode returns awardCeiling, awardFloor, estimatedTotalFunding, and expectedNumberOfAwards as numeric fields.

What are CFDA numbers?

CFDA (Catalog of Federal Domestic Assistance) numbers — now called Assistance Listing Numbers — uniquely identify each federal program. They let you cross-reference a grant against SAM.gov and USASpending.gov data.

How do eligibility codes work?

Each applicant type has a code — for example 25 for nonprofits with 501(c)(3) status, 12 for city or township governments, and 21 for individuals. Add them to the eligibilities array to only see grants your organization type can apply for.

Can I export the data?

Yes. Results are stored in a standard Apify dataset and can be exported to JSON, CSV, Excel, HTML, or RSS, or pushed to Google Sheets and other tools in one click.

How fresh is the data?

The actor reads Grants.gov live at run time, so results reflect the current state of the portal. Schedule the actor to keep your dataset continuously up to date.

Grants.gov is US government open data in the public domain. See the "Is it legal?" section below for details.

Which agency and category codes are supported?

Any code Grants.gov recognizes. Common agency codes include HHS, NSF, USAID, ED, and DOE; common category codes include ED (education), HL (health), EN (energy), AG (agriculture), and ST (science).

Yes — see the "Related scrapers" section for other US government and public-data actors from logiover.

Grants.gov is operated by the US federal government, and the funding-opportunity data it publishes is open government data in the public domain. There are no copyright restrictions on US federal works, and this actor accesses only the public, unauthenticated Grants.gov API — the same endpoints the official website uses. You are free to collect, analyze, and redistribute this data. As always, use the results responsibly and in line with Grants.gov's terms of use and applicable law.

Explore more US government and public-data actors from logiover:

  • SEC EDGAR Scraper — US public-company filings, financials, and disclosures.
  • USASpending Scraper — federal spending, awards, and contract data.
  • NHTSA Scraper — vehicle safety, recalls, and complaints data.
  • ClinicalTrials Scraper — registered clinical studies and trial metadata.
  • FDA Scraper — drug, device, and food regulatory data.
  • Federal Register Scraper — federal rules, notices, and public comment records.