Grants.gov Scraper: Federal Grant Opportunities Feed avatar

Grants.gov Scraper: Federal Grant Opportunities Feed

Pricing

from $4.00 / 1,000 opportunities

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

Grants.gov Scraper: Federal Grant Opportunities Feed

Federal grant database from Grants.gov: grant opportunities by keyword, agency and eligibility, with full details and new grant alerts for nonprofits.

Pricing

from $4.00 / 1,000 opportunities

Rating

0.0

(0)

Developer

Final Dynamics

Final Dynamics

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Every federal grant the US government opens for applications is posted on Grants.gov, the federal grant database nonprofits, schools and local governments search. This actor pulls those opportunities for the keywords and filters you choose and gives you one row per opportunity: who is offering it, when it opens and closes, and, if you want them, the full description, the award ceiling and floor, the estimated total funding, who is eligible and the program contact. Run it on a schedule with the "new only" mode and each run delivers just the opportunities you have not seen, plus, when you read the details, any whose posting changed.

Built for grant writers and consultants watching a field, nonprofits and universities tracking their funders, city and county staff who need the opportunities open to local governments, newsletter and alert publishers, and anyone who is tired of reading the Grants.gov search page by hand every week.

What you get

One row per opportunity. Every field is flat, so the dataset drops straight into Google Sheets, Airtable or a CRM.

FieldExample
opportunityId, opportunityNumber363868, O-NIJ-2026-172757
titleNIJ FY 2026 Invited to Apply - Adolescent Brain Cognitive Development
agencyCode, agencyNameUSDOJ-OJP-NIJ, National Institute of Justice
status, docTypeposted or forecasted; synopsis or forecast
openDate, closeDate2026-09-16, 2026-09-18
cfdaNumbers16.560 (Assistance Listing numbers, joined with ;)
urlDirect link to the opportunity on Grants.gov
isNewSinceLastRun, isUpdateSet in the "new only" mode
scrapedAtUTC timestamp

With includeDetails on, each row also carries:

FieldExample
descriptionThe full synopsis as plain text
awardCeilingUsd, awardFloorUsd, estimatedFundingUsd1900000, 0, 1900000
expectedAwards, costSharing3, false
applicantTypes, eligibilityDescriptionCounty governments; City or township governments, plus notes
fundingCategories, fundingInstrumentsScience and Technology and other Research and Development, Grant
contactName, contactEmail, contactPhoneThe program contact as published
postedDate, lastUpdatedDate, versionWhen it was posted and last changed
forecastPostingDate, forecastResponseDate, forecastAwardDate, forecastProjectStartDateEstimated dates on forecasted opportunities
detailFetchFailedtrue when the details could not be read after retries; the row is still delivered and not charged for details

Anything Grants.gov does not publish is null.

How to use it

Pick a keyword and filters, or none, and run. The default delivers everything posted in the last 7 days.

{
"keyword": "rural broadband",
"statuses": ["posted"],
"postedWithinDays": 30,
"includeDetails": true,
"maxResults": 200
}

A weekly feed of new and changed opportunities: set postedWithinDays: 14, newOnly: true, includeDetails: true, create a key-value store in Apify Console and select it as stateStoreId, then schedule the task weekly. Each run delivers opportunities you have not seen, and any you have seen whose posting changed (new close date, new funding, revised text), marked isUpdate: true. Rows a run delivers are remembered even when it stops at maxResults or a spending cap; a run that fails remembers nothing. Change detection reads the details of opportunities it has already delivered to see whether they changed, so those reads are charged even when nothing is delivered.

Only what your organisation can apply for: filter by applicant type, for example "eligibilities": ["01", "02"] for county and city governments, ["12"] for nonprofits with 501(c)(3) status, ["25"] for others. Filter by field with fundingCategories (ED education, EN energy, HL health, AG agriculture, CD community development, ST science and technology and so on) and by funder with agencyCodes (HHS-NIH11, USDA-NIFA, DOE-ARPAE...). The codes are the ones Grants.gov uses in its own search; any combination works, and empty lists mean no filter.

Forecasts too: add "forecasted" to statuses to see opportunities agencies plan to post, with their estimated posting, response and award dates, months before they open.

Any Grants.gov search, as a table: leave the filters empty, set postedWithinDays: 0 and maxResults to what you need. Results come newest first.

Quick start

No code needed; about two minutes from input to spreadsheet. For a longer walkthrough with example output, read the guide Build a federal grant tracker with new grant alerts.

  1. Open the example "New federal grant opportunities, last 14 days" on this actor's page, or paste one of the inputs above into the input form.
  2. Click Start and wait until the run shows Succeeded.
  3. Open the Output tab to see the opportunities as a table.
  4. Click Export, choose CSV or Excel, and download the file.
  5. In Google Sheets, choose File > Import > Upload and select the file.

Automate it

A weekly grant feed: keep postedWithinDays in the task (for example 14). Click Save as a new task, then add a schedule for that task under Schedules in Apify Console (for example every Monday at 07:00). To get only new and changed opportunities, turn on newOnly and select a key-value store as stateStoreId, as described above.

Into Google Sheets with n8n: add the Apify node with the On new Apify Event trigger, choose your task and the succeeded event, then add an Apify node with Get Dataset Items using the run's defaultDatasetId, and finish with a Google Sheets node that appends the rows. Every scheduled run then adds its opportunities to the same sheet. Make and Zapier have Apify integrations that work the same way.

Pricing

Pay per event. There are no platform usage charges on top.

EventPriceWhen
actor-start$0.01Once per run
opportunity$0.004Per opportunity row delivered
opportunity-detail$0.003Per opportunity page read, only with includeDetails

Examples: a week of new opportunities (about 40) without details costs $0.17; with details $0.29. A run that finds nothing costs $0.01.

Set a maximum charge on the run if you want a hard ceiling; the actor stops cleanly at the cap.

Good to know

  • The source is the official Grants.gov search API, the same one behind the public site, so what you get matches grants.gov exactly, including agencies' own typos.
  • Grants.gov lists federal opportunities only. State, foundation and corporate funding are not on it.
  • Dates are Grants.gov's own calendar dates (US Eastern). postedWithinDays counts those days, so a run at any hour sees the same window as the site.
  • Descriptions are plain text with the formatting removed; attachments are not downloaded. The url opens the full posting with its documents.
  • Closed and archived opportunities are searchable with "statuses": ["closed"] and "statuses": ["archived"], useful for seeing what a funder offered last year.
  • The actor is not affiliated with Grants.gov or any federal agency. Postings can be corrected or withdrawn after publication; the "new only" mode reports changes it can see.

FAQ

How do nonprofits find federal grants?

Set eligibilities to ["12"] for 501(c)(3) nonprofits, add a keyword for your field, and run. Schedule it with newOnly to receive new opportunities each week.

Does it include state or foundation grants?

No. Grants.gov lists federal opportunities only.

Can I get alerts for new grant opportunities?

Yes. Turn on newOnly, select a key-value store as stateStoreId, and schedule the task. Each run delivers opportunities you have not seen, and changed postings when you read details.

Questions or a search that does not behave? Open an issue on the actor page and include the input you used.