No API key is required for the Grants.gov public search API; send a POST request to https://api.grants.gov/v1/api/search2 with a JSON body containing searchParameters such as keyword, oppStatus ('posted', 'forecasted', 'closed'), agencyCode, and CFDANumber.
Parse the response opportunityList array; each entry includes oppNumber, title, agencyName, openDate, closeDate, and a synopsis field with funding opportunity description.
To retrieve full opportunity details including package attachments and CFDA codes, call GET https://api.grants.gov/v1/api/opportunities/{oppId} using the oppId from the search results.
For S2S applicant workflows (automated application submission), a separate PKI certificate-based S2S registration is required; consult the Applicant System-to-System documentation at grants.gov/system-to-system.
Use the GetOpportunityList SOAP web service for legacy S2S integrations; the REST search2 endpoint is the current preferred approach for opportunity discovery.
Filter results by awardFloor, awardCeiling, and eligibilities fields to pre-qualify opportunities for specific applicant types (nonprofits, state governments, small businesses).
Known gotchas
The public search2 endpoint is unauthenticated and has no API key rate limits currently, but implement polite request spacing to avoid being blocked; the POST API is limited to 500 requests per hour per the api.data.gov gateway.
Grants.gov opportunity data is the authoritative source for federally-funded grants, but cooperative agreements and other federal financial assistance instruments may have different submission pathways not covered by the standard apply workflow.
Attachment documents (full solicitations) linked in opportunity details may be hosted on agency-specific systems (NSF, NIH FastLane/RPPR, etc.) and require separate authentication — Grants.gov is the discovery layer, not always the submission layer.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp