US Federal Grants (Grants.gov) avatar

US Federal Grants (Grants.gov)

Pricing

$5.00 / 1,000 grant opportunities

Go to Apify Store
US Federal Grants (Grants.gov)

US Federal Grants (Grants.gov)

US federal funding opportunities from the official Grants.gov API: forecasted, open, closed and archived grants with agency, deadlines, award amounts, eligibility and assistance listings. Filter by keyword, agency, applicant type, category and posting date.

Pricing

$5.00 / 1,000 grant opportunities

Rating

0.0

(0)

Developer

openrows

openrows

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

US federal funding opportunities from the official Grants.gov API — forecasted, open, closed and archived grants and cooperative agreements, with agency, deadlines, award amounts, eligibility and assistance listing (CFDA) numbers. Filter by keyword, agency, applicant type, funding category, funding instrument and posting date.

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

The Actor calls the documented, keyless Grants.gov API and delivers one clean row per opportunity that you can download as JSON, CSV or Excel, or pull through the API. Titles, codes, dates, amounts and categories are the values the API serves, put into standard formats (ISO dates, amounts as numbers, HTML entities decoded). The one free-text field, the eligibility notes, is an edited extract: converted from the agency's HTML to plain text, with e-mail addresses and phone numbers removed. Every row links to the original opportunity on Grants.gov. HTTP-only, no browser, so runs are fast.

Who it is for: grant consultants and grant writers, nonprofit development teams, university research offices, and anyone building a grant-alert feed or tracking federal funding by agency or topic. Set Posted since to the date of your previous run to get only new opportunities (see Tips for running it on a schedule).

What data you get

For every funding opportunity the Actor returns:

FieldDescription
urlThe opportunity's public page on Grants.gov
scrapedAtISO 8601 timestamp of the extraction
opportunityIdGrants.gov's numeric id
opportunityNumberThe funding opportunity number the agency assigned
titleOpportunity title
agencyCode, agencyNameThe posting agency (e.g. HHS-NIH11, National Institutes of Health)
topAgencyCode, topAgencyNameIts department (e.g. HHS, Department of Health and Human Services)
statusforecasted, posted, closed or archived
opportunityCategoryDiscretionary, Mandatory, Continuation, Earmark or Other
postingDate, closeDate, archiveDateDates as YYYY-MM-DD; closeDate is the application deadline
estimatedPostingDate, estimatedCloseDateForecasts only: when the agency expects to post the opportunity and its deadline
lastUpdatedDateWhen the agency last changed the record (ISO 8601, US Eastern offset)
awardCeiling, awardFloorLargest and smallest single award, numbers in USD
estimatedTotalFundingEstimated total program funding, number in USD
expectedNumberOfAwardsExpected number of awards
currencyUSD with full details; null when includeDetails is off
costSharingWhether cost sharing or matching is required
fundingInstrumentsGrant, Cooperative Agreement, Procurement Contract, Other
fundingCategoriesCategories of funding activity (Health, Education, Agriculture, …)
eligibleApplicantTypesApplicant types the opportunity is open to
eligibilityDescriptionEligibility notes, edited: HTML → plain text, e-mails and phones removed; original at url
assistanceListingNumbersAssistance Listing numbers (formerly CFDA)
additionalInfoUrlThe agency's link to the full announcement or program page

A field the agency left empty is null. With includeDetails: false only the search fields are filled (opportunityNumber, title, agencyCode, agencyName, status, postingDate, closeDate, assistanceListingNumbers); the rest are null.

The opportunity's description is not included, because agencies often name their staff in it as the contact for questions (see Data and compliance). Each row's url opens the opportunity on Grants.gov, where the full description is, and additionalInfoUrl links to the agency's own announcement when the agency gives one.

Input

OptionTypeDefaultDescription
keywordstring-Free-text search. Empty lists every opportunity matching the other filters, newest first.
statusesarray["posted", "forecasted"]Any of forecasted, posted, closed, archived
postedSincestring-Only opportunities posted on or after this date, YYYY-MM-DD
includeDetailsbooleantrueFetch each opportunity's full record (one extra API call per result)
maxItemsinteger50Stop after this many results (max 10,000). Also your cost cap.
agenciesarray-Agency codes. A department code (HHS, USDA, DOD, …) includes all its sub-agencies; HHS-NIH11 narrows
eligibilitiesarray-Grants.gov applicant-type codes, e.g. 12 nonprofits with 501(c)(3), 23 small businesses, 21 individuals
fundingCategoriesarray-Category codes, e.g. HL Health, ED Education, ST Science and Technology, AG Agriculture
fundingInstrumentsarray-G Grant, CA Cooperative Agreement, PC Procurement Contract, O Other
maxRequestsPerCrawlintegerderived from maxItemsSafety cap on API requests per run (search pages plus one detail call per result)
proxyConfigurationobjectApify datacenterProxy settings

Large runs. With details on, the Actor fetches about one opportunity per 1.2 seconds (it stays polite to the API), roughly 1,000 per 20 minutes. For runs above a few thousand results, raise the run timeout in the run options.

The code lists for eligibilities, fundingCategories and fundingInstruments are Grants.gov's own, taken from the API; the input form shows them by name. Values inside one filter are combined with OR, different filters with AND. An empty input returns the 50 newest posted and forecasted opportunities.

Example input — open health grants for nonprofits posted since 1 September 2026:

{
"statuses": ["posted"],
"fundingCategories": ["HL"],
"eligibilities": ["12", "13"],
"fundingInstruments": ["G"],
"postedSince": "2026-09-01",
"maxItems": 100
}

Output example

A real row from a local run on 2026-09-27 (posted and forecasted opportunities; this one is a forecast, so the estimated dates are filled and closeDate is null):

{
"url": "https://www.grants.gov/search-results-detail/363963",
"scrapedAt": "2026-09-27T10:27:18.576Z",
"opportunityId": 363963,
"opportunityNumber": "HHS-2027-ACL-NIDILRR-ARCP-0300",
"title": "Advanced Rehabilitation Research Training (ARRT) Program - Community Living and Participation",
"agencyCode": "HHS-ACL",
"agencyName": "Administration for Community Living",
"topAgencyCode": "HHS",
"topAgencyName": "Department of Health and Human Services",
"status": "forecasted",
"opportunityCategory": "Discretionary",
"postingDate": "2026-09-25",
"closeDate": null,
"archiveDate": "2027-09-30",
"estimatedPostingDate": "2026-10-05",
"estimatedCloseDate": "2026-12-07",
"lastUpdatedDate": "2026-09-25T13:03:22-04:00",
"awardCeiling": 250000,
"awardFloor": 245000,
"estimatedTotalFunding": 250000,
"expectedNumberOfAwards": 1,
"currency": "USD",
"costSharing": false,
"fundingInstruments": ["Grant"],
"fundingCategories": ["Science and Technology and other Research and Development"],
"eligibleApplicantTypes": [
"Public and State controlled institutions of higher education",
"Private institutions of higher education"
],
"eligibilityDescription": "Public and State controlled institutions of higher education; Private institutions of higher education. Foreign entities are not eligible to compete for, or receive, awards made under this announcement.",
"assistanceListingNumbers": ["93.433"],
"additionalInfoUrl": "https://acl.gov/grants/open-opportunities"
}

A run summary (items pushed, items skipped by category, the number of matching opportunities Grants.gov reported, API requests made, failed requests by category, stop reason) is stored in the run's key-value store under the key OUTPUT.

Pricing

Pay per result. You are charged per result and nothing else: no platform usage, no compute units. Search pages, retries and failed requests are free. The current rate is on the Pricing tab of this Actor — that is the only place it is set, so no figure is repeated here.

  • maxItems caps the number of results, and therefore the cost, of a run.
  • The run also stops when it reaches the maximum total charge you set for the run in Apify Console or through the API.

Tips

  • Start with maxItems: 20 to check the fields before a large run.
  • To collect only new opportunities, set postedSince to the date of your previous run. Results come newest first and the run stops at the first opportunity older than that date. A schedule in Apify Console starts every run with the same input, so update the date before each run, or start each run through the API with the date in its input.
  • Turn includeDetails off for a faster run with the search fields only (about 100 opportunities per API call instead of one call per opportunity). The price per result is the same either way.

Limitations

  • Only what Grants.gov publishes. Opportunities an agency announces elsewhere, and awards already made, are not in this data.
  • status is the status at run time; a forecast becomes a posted opportunity, and a posted one closes, on Grants.gov's schedule.
  • With details on, the Actor makes one API call per opportunity, at about one call per second, so a run of several thousand opportunities takes an hour or more.
  • When many departments are combined with closed or archived statuses, the agency list is longer than one Grants.gov search accepts. The Actor then sends it as several searches and returns the results batch by batch, each newest first, rather than one list sorted across all of them.
  • Attachments (full announcement PDFs, application packages) are not downloaded; additionalInfoUrl and url link to them.

Source caveats. What Grants.gov says about the data, and what we saw in it:

  • The Grants.gov API is provided "as is" and "as available", with no warranty that it is error-free or uninterrupted (API terms of service).
  • Amounts and dates are as each agency entered them. Agencies often leave award amounts empty, and some enter 0 where no figure applies; both are passed through as the source gives them (null for empty or "none", 0 for 0).
  • Deadlines are stored as dates; the time of day, when an agency gives one, is in the announcement.

Data and compliance

This Actor collects publicly available, non-personal data only:

  • It uses the official, documented Grants.gov API, which needs no account or key, and does not bypass access controls.
  • It does not collect names, e-mail addresses, phone numbers, addresses or any other field that identifies a person. Grants.gov records carry an agency contact block — the name, e-mail and phone of the government employee handling the opportunity. That block is never read, and neither is the record's free-text agency-name field, where agencies often type the contact person's name.
  • The description text is not included. Agencies often name their own staff inside an opportunity's description, as the contact for questions: in 156 opportunities checked on 2026-09-27, 7 descriptions (4.5 %) still named an agency employee after e-mail addresses and phone numbers had been removed. Names in running text cannot be removed reliably, so the Actor does not output the description at all. The url of each row leads to the full text on Grants.gov.
  • eligibilityDescription is converted from the agency's HTML to plain text, and e-mail addresses and phone numbers are removed from it. It is therefore an edited extract, not the verbatim Grants.gov text; the url of each row leads to the original. In 141 opportunities checked on 2026-09-27, no eligibility note named a person except inside an institution's name (for example a tribal college named after a historical figure).
  • It identifies itself with a plain User-Agent and sends no headers that imitate a browser.
  • It sends at most two requests at a time, waits at least one second between requests, and stops instead of working around a block.

Program titles are kept as published, including programs named after a person (for example "John R. Justice Formula Grant Program").

How robots.txt is handled

This Actor talks to one host only: the Grants.gov API at api.grants.gov, through its two documented endpoints (search2 and fetchOpportunity). That host is an API gateway and serves no robots.txt (the address answers HTTP 403, as it does for any path the API does not define); the Grants.gov website's own robots.txt allows all crawlers. The Actor therefore does not fetch robots.txt, and the run summary shows robots.respected: false. The API's terms of service set no numeric limits on calls; they reserve the right to impose them ("may be subject to certain limitations on access, calls, or use as set forth within this Agreement or otherwise provided by HHS") and to block a user who tries to exceed or circumvent them. The Actor keeps to the modest request rate above and records a block instead of working around it.

Removal requests. If you believe this Actor exposes data it should not, open an issue on the Actor's Issues tab and state the URL(s) concerned. Requests are answered there, and the fields or pages in question are removed.

You are responsible for using the extracted data in line with the Grants.gov API terms of service — including its attribution notice, quoted at the top of this page — and the laws that apply to you.

Support

Report bugs and request fields on the Issues tab of this Actor. Include the run ID.