Federal Grants Database | Grants.gov Data | $1.5 / 1K avatar

Federal Grants Database | Grants.gov Data | $1.5 / 1K

Pricing

from $1.05 / 1,000 opportunity scrapeds

Go to Apify Store
Federal Grants Database | Grants.gov Data | $1.5 / 1K

Federal Grants Database | Grants.gov Data | $1.5 / 1K

Find federal grants from Grants.gov with no login or API key: agency, deadlines, award ceiling and floor, eligibility, ALN codes and attachments. Filter by keyword, agency, applicant type or status. $1.50 per 1,000 records.

Pricing

from $1.05 / 1,000 opportunity scrapeds

Rating

5.0

(1)

Developer

Hriday Rungta

Hriday Rungta

Maintained by Community

Actor stats

1

Bookmarked

5

Total users

5

Monthly active users

11 days ago

Last modified

Share

Search federal grant opportunities from Grants.gov and get a clean, filterable dataset: agency, deadlines, award ceiling and floor, eligibility, ALN codes and attachments. No login, no API key, no browser.

This Actor reads the official public Grants.gov REST API (the search2 and fetchOpportunity endpoints behind the Grants.gov search page) and returns one flat record per funding opportunity. Filter by keyword, agency, funding category, applicant type and status, then export to CSV, JSON, Excel or Google Sheets, or schedule it for a daily feed of new grants.

Not affiliated with or endorsed by Grants.gov or HHS. The underlying data is free and public domain at grants.gov. This independent tool saves you the work of collecting, filtering and structuring it.

What you can do with this federal grants database

  • Find federal grants for your organization. Filter to opportunities open to nonprofits, small businesses, universities, tribes, counties, cities or individuals with the applicant-type filter.
  • Monitor new grant opportunities daily. Schedule a run with postedSince and get only what appeared since your last run, delivered to Slack, email or a sheet.
  • See forecasted grants before they open. Include the forecasted status to track announced opportunities ahead of the application window.
  • Triage by award size. Award ceiling, floor, expected number of awards and estimated total funding come with each record when full details are on.
  • Search by agency or program. NIH, NSF, DOE, USDA, EPA, NASA and more, or a single Assistance Listing Number (ALN, formerly CFDA).
  • Build a grants search tool, newsletter or CRM feed for a research office, consultancy or grant-matching product.

Why use this instead of the Grants.gov website or API

Grants.gov's search is free, and its API is public. This Actor adds what a recurring workflow needs.

Grants.gov websiteGrants.gov API directlyThis Actor
CostFreeFree$1.50 per 1,000 records
OutputWeb pagesNested JSON, two endpointsOne flat record, CSV/JSON/Excel
Full details (award ceiling, eligibility, attachments)Per-opportunity pageYou call fetchOpportunity per resultincludeDetails: true
Daily "new since" feedManualYou build itpostedSince plus an Apify Schedule

Input

FieldDefaultWhat it does
keywordnoneFull-text search. Grants.gov OR-matches multiple words and ignores quotes, so one specific term works best
oppStatusesposted, forecastedAny of posted, forecasted, closed, archived
agenciesallAgency codes such as HHS, NIH, NSF, USDA-FS, DHS-FEMA. Department codes expand to their sub-agencies
fundingCategoriesallCategory codes: HL Health, ED Education, ENV Environment, ST Science and Technology, and more
eligibilitiesallApplicant type codes: 00 state governments, 12 501(c)(3) nonprofits, 06 public universities, 23 small businesses, 99 unrestricted, and more
alnnoneOne Assistance Listing Number, for example 93.243
postedSincenoneKeep only opportunities opened on or after this date. Applied before billing
includeDetailsfalseFetch the full record for every result (same price per record)
maxItems200Cost cap. You are billed once per saved record
sortByopenDate|descSort expression. Keep newest first for postedSince runs

Example input: wildfire grants open to governments and nonprofits

{
"keyword": "wildfire",
"oppStatuses": ["posted", "forecasted"],
"agencies": ["USDA-FS", "DHS-FEMA", "DOI"],
"eligibilities": ["00", "01", "12"],
"includeDetails": true,
"maxItems": 100
}

Output

One record per opportunity. Real record from a test run (synopsis shortened, some attachments removed):

{
"id": "364082",
"number": "G27AS00072",
"title": "Cooperative Agreement for Affiliated Partner with the Rocky Mountains Cooperative Ecosystem Studies Unit (CESU)",
"agencyCode": "DOI-USGS1",
"agency": "Geological Survey",
"department": "Department of the Interior",
"openDate": "2026-10-14",
"closeDate": "2026-11-14",
"oppStatus": "posted",
"docType": "synopsis",
"alns": ["15.808"],
"synopsis": "The spread of invasive grasses, such as cheatgrass, adds fine fuels to the landscape that increase wildfire occurrence and frequency...",
"awardCeiling": 375000,
"awardFloor": 1,
"expectedAwards": 1,
"estimatedFunding": 375000,
"costSharing": false,
"fundingInstruments": ["Cooperative Agreement"],
"eligibleApplicants": ["Others (see text field entitled \"Additional Information on Eligibility\" for clarification)"],
"categoryOfFunding": ["Science and Technology and other Research and Development"],
"opportunityCategory": "Discretionary",
"lastUpdated": "2026-10-14",
"attachments": [
{ "name": "Full Announcement.docx", "url": "https://apply07.grants.gov/grantsws/rest/opportunity/att/download/355263" }
],
"detailsFetched": true,
"sourceUrl": "https://www.grants.gov/search-results-detail/364082",
"scrapedAt": "2026-10-21T05:54:35.965Z"
}

Without includeDetails you get the basic fields only: id, number, title, agencyCode, agency, openDate, closeDate, oppStatus, docType, alns, sourceUrl, scrapedAt. Details add synopsis, award ceiling, floor, expected awards, estimated funding, cost sharing, funding instruments, eligible applicants, eligibility description, category of funding, opportunity category, department, archive date, last updated date and attachments.

Only organisation-level data is collected. Agency contact names, emails and phone numbers are deliberately left out, and any email or phone number that appears inside the free-text fields (synopsis, eligibilityDescription) is replaced with [redacted].

Daily "new grants since yesterday" feed

  1. Create an Apify Schedule (for example every morning).
  2. Set postedSince to yesterday's date. A fixed date in a saved input does not move on its own, so update it, or use a small maxItems with newest-first order.
  3. Keep sortBy at openDate|desc. Results arrive newest first, so the Actor stops paging as soon as a whole page is older than postedSince and a daily run costs only the handful of new records.
  4. Add an integration (Slack, email, Google Sheets, webhook) on the schedule.

Records older than postedSince are skipped before billing, so they cost nothing.

Pricing

Pay per event: $0.0015 per opportunity record ($1.50 per 1,000). No start fee.

RunRecordsCost
Default maxItems200$0.30
Daily "new since yesterday" feedabout 20 to 100about $0.03 to $0.15
Everything posted and forecasteda few thousanda few dollars

includeDetails does not change the per-record price. Set maxItems as your cost cap.

Integrations and scheduling

  • Apify Schedules: daily or weekly runs for a rolling feed.
  • Webhooks: call your endpoint when a run finishes.
  • Make, n8n, Zapier: push new opportunities to Slack, email, Airtable, a CRM or a newsletter tool.
  • Google Sheets: export the dataset or sync it with the Apify integration.
  • API and MCP: call the Actor from code or from an AI agent and read the dataset as JSON.

Limits worth knowing

  • Grants.gov OR-matches each word in a keyword and does not support quoted phrases. Use one precise term and narrow with agencies, fundingCategories or aln.
  • Unknown agency or ALN codes return zero results instead of an error, so a typo looks like "no matches".
  • This Actor lists opportunities (grants you can apply for). It does not list who won them: for awards, use the USASpending Actor below.
  • Data is as current as Grants.gov at the moment of the run. The Actor does not add to it or correct it.

FAQ

Is there a Grants.gov API alternative that returns flat data?

This Actor uses the same official endpoints and returns flat records with the detail fields merged in. It is a convenience layer over the public API, not a separate data source.

How do I find federal grants for my nonprofit?

Set eligibilities to 12 (501(c)(3) nonprofits) and oppStatuses to posted, then add a keyword, agency or funding category for your field.

How do I get new grant opportunities every day?

Use an Apify Schedule with postedSince set to yesterday, or a small maxItems with newest-first order, and connect an integration to deliver the results.

Can I see grants before they open?

Yes. Include forecasted in oppStatuses.

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

No. The endpoints used are public and need no authentication. The Actor never logs in.

Why did my agency filter return zero results?

Grants.gov returns an empty set for unknown codes instead of an error. Department codes such as HHS, USDA or DOD expand to their sub-agencies automatically. A specific sub-agency uses the PARENT-CHILD form, for example HHS-NIH11 or USDA-NIFA.

Can I get contact emails or phone numbers?

No. Agency contact persons are intentionally omitted, and emails and phone numbers inside description text are redacted.

Can I get closed or archived opportunities?

Yes. Add closed or archived to oppStatuses. Use maxItems and postedSince to bound large historical pulls.

What happens if a request fails?

Network errors, 5xx and 429 responses are retried with backoff. If a details call fails, the basic record is still saved with detailsFetched: false.