POST /api/grantsgov/opportunities
Price: 10 credits
Full record of a US federal funding opportunity by its UUID: agency, assistance listing, dates, eligibility, award sizes, the funding and category classifications, the description, and the application documents attached to it.
Only the UUID resolves here. A funding opportunity number such as L26AS00045 does not — find its UUID through grantsgov/opportunities/search first. `description` and `close_note` are returned in full, not truncated the way the page shows them. Award figures are what the grantor announced for the whole programme: `program_funding` is the pot, `award_minimum` and `award_maximum` bound a single award, so do not read either as a per-applicant guarantee. A forecasted opportunity is not open yet and has no posted, close or archive date at all — its timing is the grantor's own estimate, in the `estimated_*` fields and `fiscal_year`, and every one of those dates can still move.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)opportunity_id string required — Opportunity UUID as it appears in the simpler.grants.gov opportunity URL (examples: "35158e43-744a-4d27-91cf-b29f61374259"; minLength: 1)@type string (default: "GrantsgovOpportunity")opportunity_id string requiredopportunity_title string requiredurl string requiredagency string nullableassistance_listing_number string nullableassistance_listing_title string nullablefunding_opportunity_number string nullablelegacy_opportunity_id string nullablestatus string nullableclose_date string nullableclose_note string nullableposted_date string nullablearchive_date string nullableestimated_post_date string nullableestimated_application_due_date string nullableestimated_due_date_description string nullableestimated_award_date string nullableestimated_project_start_date string nullablefiscal_year integer nullableforecast_posted_date string nullablelast_updated_date string nullableversion string nullabledescription string nullableeligibility_note string nullableeligible_applicant_groups array (default: [])@type string (default: "GrantsgovEligibleApplicantGroup")name string requiredapplicants array (default: [])grantor_contact string nullablegrantor_email string nullableadditional_information_url string nullableprogram_funding number nullableexpected_award_count integer nullableaward_minimum number nullableaward_maximum number nullablehas_cost_sharing boolean nullablefunding_instrument_type string nullableopportunity_category string nullableopportunity_category_explanation string nullablefunding_activity_category string nullablefunding_activity_category_explanation string nullabledocuments array (default: [])@type string (default: "GrantsgovOpportunityDocument")name string requiredurl string requireddescription string nullableupdated_at_text string nullable422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — No opportunity exists under that UUID Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.