GovGazette Opportunities API
The Opportunities API from GovGazette — 2 operation(s) for opportunities.
The Opportunities API from GovGazette — 2 operation(s) for opportunities.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/govgazette-com:govgazette-com-opportunities-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: GovGazette Opportunities API
version: 0.1.0
servers:
- url: https://govgazette.com
tags:
- name: Opportunities
paths:
/api/v1/opportunities/research:
get:
operationId: get_api_v1_opportunities_research
parameters:
- in: query
name: generation
required: false
schema:
description: Retained generation UUID from search_opportunities.
type:
- string
- 'null'
- in: query
name: id
required: true
schema:
description: Stable opportunity ID returned by search_opportunities.
type: string
responses:
'200':
content:
application/json:
schema:
$defs:
AwardAvailability:
properties:
artifact_http_status:
format: uint16
maximum: 65535
minimum: 0
type:
- integer
- 'null'
check_interval_seconds:
format: uint64
minimum: 0
type: integer
checked_at:
type:
- string
- 'null'
inventory_http_status:
format: uint16
maximum: 65535
minimum: 0
type:
- integer
- 'null'
latest_release_date:
type:
- string
- 'null'
latest_release_url:
type:
- string
- 'null'
max_check_age_seconds:
format: int64
type: integer
state:
type: string
required:
- state
- check_interval_seconds
- max_check_age_seconds
type: object
AwardCoverage:
properties:
dataset:
type: string
freshness:
$ref: '#/components/schemas/AwardFreshness'
source_date:
type: string
source_url:
type: string
required:
- dataset
- source_date
- source_url
- freshness
type: object
AwardFreshness:
properties:
age_state:
type: string
age_warning_after_days:
format: int64
type: integer
effective_source_date:
type:
- string
- 'null'
source_age_days:
format: int64
type:
- integer
- 'null'
upstream:
$ref: '#/components/schemas/AwardAvailability'
warning:
type:
- string
- 'null'
required:
- age_state
- age_warning_after_days
- upstream
type: object
AwardSummary:
properties:
data:
$ref: '#/components/schemas/JsonObject'
id:
type: string
title:
type: string
url:
type: string
vendor_url:
description: Vendor path when an exact recipient UEI is available.
type:
- string
- 'null'
required:
- id
- title
- data
- url
type: object
BriefRequirements:
properties:
scope:
type: string
source:
anyOf:
- $ref: '#/components/schemas/JsonObject'
- type: 'null'
description: Notice provenance for the retained text.
text:
type: string
required:
- text
- scope
type: object
ExclusionCoverage:
properties:
freshness:
$ref: '#/components/schemas/SourceFreshness'
description: Fresh, stale, unknown or unavailable, with age and the 24-hour warning policy.
observed_at:
description: Observation time does not replace the official source timestamp.
type:
- string
- 'null'
scope:
type:
- string
- 'null'
sha256:
type:
- string
- 'null'
source_date:
type:
- string
- 'null'
source_url:
type:
- string
- 'null'
status:
description: Present as unavailable when no SAM coverage exists in this generation.
type:
- string
- 'null'
required:
- freshness
type: object
FreshnessState:
enum:
- fresh
- stale
- unknown
- unavailable
type: string
JsonObject:
description: Source-specific JSON map. The envelope is stable; map keys vary by official source.
type: object
RecordDetail:
properties:
award_coverage:
description: Award snapshot age and latest official release evidence.
items:
$ref: '#/components/schemas/AwardCoverage'
type:
- array
- 'null'
collection:
description: Absent for curated reference records.
type:
- string
- 'null'
coverage:
anyOf:
- $ref: '#/components/schemas/ExclusionCoverage'
- type: 'null'
description: Present for exclusions, including explicit source-age warnings.
data:
$ref: '#/components/schemas/JsonObject'
generation:
type: string
id:
type: string
text:
type: string
text_has_more:
description: Whether another text chunk is available.
type:
- boolean
- 'null'
text_length:
description: Total text characters; absent from internal brief notices.
format: uint
minimum: 0
type:
- integer
- 'null'
title:
type: string
required:
- generation
- id
- title
- text
- data
type: object
SourceFreshness:
properties:
attention_required:
type: boolean
evaluated_at:
description: UTC time when age was evaluated; source and observation dates are unchanged.
type: string
max_age_seconds:
description: Explicit warning threshold for this daily snapshot. Not a scheduler promise.
format: int64
type: integer
source_age_seconds:
description: Age of the official source timestamp, never the import or enrichment timestamp.
format: int64
type:
- integer
- 'null'
state:
$ref: '#/components/schemas/FreshnessState'
warn_age_seconds:
description: Early-warning boundary, separate from the stale-source boundary.
format: int64
type: integer
warning:
description: User-facing warning, or null when within the warning threshold.
type:
- string
- 'null'
required:
- state
- evaluated_at
- max_age_seconds
- warn_age_seconds
- attention_required
type: object
$schema: https://json-schema.org/draft/2020-12/schema
properties:
comparison_awards:
items:
$ref: '#/components/schemas/AwardSummary'
type: array
generation:
type: string
linked_awards:
items:
$ref: '#/components/schemas/AwardSummary'
type: array
next_steps:
items:
type: string
type: array
notice:
$ref: '#/components/schemas/RecordDetail'
relationship_basis:
type: string
requirements:
$ref: '#/components/schemas/BriefRequirements'
required:
- generation
- notice
- linked_awards
- comparison_awards
- relationship_basis
- requirements
- next_steps
type: object
description: Source-backed result
'400':
description: Invalid request
summary: Read a cited opportunity research brief
x-openai-isConsequential: false
tags:
- Opportunities
/api/v1/opportunities/search:
get:
operationId: get_api_v1_opportunities_search
parameters:
- in: query
name: active
required: false
schema:
description: Filter by source active status; this does not mean the response deadline is open.
type:
- boolean
- 'null'
- in: query
name: after
required: false
schema:
description: Last notice ID from next_after in the preceding page.
type:
- string
- 'null'
- in: query
name: agency
required: false
schema:
description: Agency code on the source notice.
type:
- string
- 'null'
- in: query
name: generation
required: false
schema:
description: Retained generation UUID from a prior result for a consistent snapshot.
type:
- string
- 'null'
- in: query
name: limit
required: false
schema:
description: Maximum notices to return, from 1 to 50; defaults to 25.
format: uint
maximum: 50
minimum: 1
type:
- integer
- 'null'
- in: query
name: naics
required: false
schema:
description: Two- to six-digit NAICS industry code from a notice or the NAICS reference collection.
type:
- string
- 'null'
- in: query
name: q
required: false
schema:
default: ''
description: Plain-language keywords; empty returns notices matching the other filters.
type: string
- in: query
name: set_aside
required: false
schema:
description: Official set-aside code from a notice or the set-asides reference collection.
type:
- string
- 'null'
- in: query
name: state
required: false
schema:
description: State or territory code for the place of performance.
type:
- string
- 'null'
responses:
'200':
content:
application/json:
schema:
$defs:
JsonObject:
description: Source-specific JSON map. The envelope is stable; map keys vary by official source.
type: object
OpportunityQuery:
additionalProperties: false
properties:
active:
description: Filter by source active status; this does not mean the response deadline is open.
type:
- boolean
- 'null'
after:
description: Last notice ID from next_after in the preceding page.
type:
- string
- 'null'
agency:
description: Agency code on the source notice.
type:
- string
- 'null'
generation:
description: Retained generation UUID from a prior result for a consistent snapshot.
type:
- string
- 'null'
limit:
description: Maximum notices to return, from 1 to 50; defaults to 25.
format: uint
maximum: 50
minimum: 1
type:
- integer
- 'null'
naics:
description: Two- to six-digit NAICS industry code from a notice or the NAICS reference collection.
type:
- string
- 'null'
q:
default: ''
description: Plain-language keywords; empty returns notices matching the other filters.
type: string
set_aside:
description: Official set-aside code from a notice or the set-asides reference collection.
type:
- string
- 'null'
state:
description: State or territory code for the place of performance.
type:
- string
- 'null'
type: object
OpportunitySummary:
properties:
content_hash:
description: Hash of retained notice content for change detection.
type: string
data:
$ref: '#/components/schemas/JsonObject'
id:
type: string
summary:
type: string
title:
type: string
url:
type: string
required:
- id
- title
- summary
- content_hash
- data
- url
type: object
$schema: https://json-schema.org/draft/2020-12/schema
properties:
filters:
$ref: '#/components/schemas/OpportunityQuery'
description: Applied search filters.
generation:
type: string
items:
items:
$ref: '#/components/schemas/OpportunitySummary'
type: array
next_after:
description: Last record ID for the next page, or null at the end.
type:
- string
- 'null'
scope:
description: Limits of this retained official-notice search.
type: string
required:
- generation
- items
- filters
- scope
type: object
description: Source-backed result
'400':
description: Invalid request
summary: Find opportunities using structured filters
x-openai-isConsequential: false
tags:
- Opportunities
components:
schemas:
OpportunitySummary:
type: object
description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
x-ae-placeholder: true
ExclusionCoverage:
type: object
description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
x-ae-placeholder: true
AwardCoverage:
type: object
description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
x-ae-placeholder: true
BriefRequirements:
type: object
description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
x-ae-placeholder: true
RecordDetail:
type: object
description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
x-ae-placeholder: true
AwardFreshness:
type: object
description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
x-ae-placeholder: true
JsonObject:
type: object
description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
x-ae-placeholder: true
SourceFreshness:
type: object
description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
x-ae-placeholder: true
AwardAvailability:
type: object
description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
x-ae-placeholder: true
OpportunityQuery:
type: object
description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
x-ae-placeholder: true
FreshnessState:
type: object
description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
x-ae-placeholder: true
AwardSummary:
type: object
description: Referenced by this document but never defined in it. API Evangelist added this empty placeholder so the document resolves; the shape is unknown and is NOT a claim about the API.
x-ae-placeholder: true