Source catalog

SAM Opportunities

Federal contract notices published on SAM.gov.

← Source catalog

Source, grain and coverage

SAM Opportunities ↗

Includes explicit notice types, agencies, NAICS codes and set-asides. Verify deadlines and notice status with SAM.gov.

Retained notices can have missing descriptions, classifications and parent links. Earlier captures lost clock precision and are returned as dates. New captures preserve source clock precision and capture evidence. The current feed and retained versions do not establish exhaustive notice history.

Collection schedule: Daily.

Records describe public source observations. Missing values remain unknown; historical observations do not establish current status.

Definitions audited . Use source status and the returned watermarks to inspect current collection health.

REST and MCP access

Use a credential with search scope and enable that data domain in your workspace.

curl 'https://www.govbiz.ai/api/v2/catalogue/sources/sam-opportunities-refresh/records?limit=2' \
  -H "Authorization: Bearer $GOVBIZ_API_KEY"

The primary dataset is sam_notices. Select another dataset from this source with dataset_id. Supported field names can be used as exact filters; the versioned query endpoint also supports declared ranges and list operators.

Through canonical /mcp, use govbiz_discover_datasets, govbiz_describe_dataset, govbiz_search_records, and govbiz_get_evidence. Cross-source relationships use govbiz_get_related_records and require access to every involved domain.

API contracts · MCP setup · Workspace data domains

Query this source →

Sam Notices

sam_notices · Schema 1

One retained current notice per notice_id; current feed membership does not establish complete notice history.

Search modes: structured, lexical. History: Current retained projection; exact historical reconstruction is unsupported.

Measures: record_count. Monetary values use decimal strings with declared units. Unknown amounts do not become zero.

Field definitions and supported filters · 62 fields
FieldType / unitMeaningAvailability and filters
notice_idstringSource SAM notice identifier; amendments and related notices can have different IDs.Storage and value limits: Maximum 100 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
titlestringPublic record title/heading; meaning follows the relation grain.Storage and value limits: Maximum 500 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
agency_codestringStored source agency identifier; namespace can be CGAC, FPDS, top-tier or publisher-specific and must be declared.Storage and value limits: Maximum 50 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
agency_namestringSource agency name; a label whose scope can be department, bureau or office.Storage and value limits: Maximum 255 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
naics_codestringSource industry classification code; link with the NAICS edition and declared precision.Storage and value limits: Maximum 10 characters; identifier rules can be narrower.Require a classification edition; do not join broad prefixes as exact identities.Values can be missingeq, in, is_null, contains
set_aside_typestringLegacy storage field carrying the SAM CSV SetASideCode; canonical source code is set_aside_code, while set_aside carries the publisher label.Storage and value limits: Maximum 100 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
set_aside_codestringPublisher SAM SetASideCode, including the explicitly documented legacy set_aside_type projection when the canonical column is empty.Storage and value limits: Maximum 20 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
ptypestringLegacy short SAM procurement notice-type code; preserve raw and decoded values.Storage and value limits: Maximum 2 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
solicitation_numberstringSource solicitation reference; qualify by issuer and dates before relating records.Storage and value limits: Maximum 100 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
response_deadlinetemporalNotice/listing response deadline; source may provide a time, but current SAM mapping retains only the date.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision.Current mapper discarded time of day; audited non-null values are all midnight. Date-only values lack a clock. Inspect precision; date filter bounds use UTC.Values can be missingeq, in, is_null, gte, lte
posted_datetemporalSAM/SubNet posting date; current SAM mapper loses the clock-time component.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision.Current mapper discarded time of day; audited non-null values are all midnight. Date-only values lack a clock. Inspect precision; date filter bounds use UTC.Values can be missingeq, in, is_null, gte, lte
descriptionstringSource description in the relation context; distinguish from generated interpretation.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
poc_emailstringSource primary notice point of contact email address; scope is the associated public record, not every procurement at the agency.Storage and value limits: Maximum 255 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
poc_namestringSource primary notice point of contact name label; scope is the associated public record, not every procurement at the agency.Storage and value limits: Maximum 255 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
estimated_valuedecimal / USDEstimated/source-extracted dollar value; SAM can populate it from a regex, so its evidence class must be disclosed.Storage and value limits: Precision 15, scale 2; absolute value below 10^13; rounding on assignment; checks can narrow the range.Values can be missingeq, in, is_null, gte, lte
place_of_performance_statestringSource state/territory of the place of performance; distinct from recipient legal address.Storage and value limits: Maximum 2 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
parent_notice_idstringIntended parent SAM notice identifier; currently absent from every active row.Storage and value limits: Maximum 100 characters; identifier rules can be narrower.Not collected; returned as unknowneq, in, is_null, contains
statusstringRelation-specific source or operational status; use check constraints where declared and the producer mapping elsewhere.Storage and value limits: Maximum 20 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
last_updateddatetimeCurrent SAM load/update timestamp; separate from published posting date.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision.Values can be missingeq, in, is_null, gte, lte
activebooleanStored active flag; true does not imply a live deadline or complete current verification.Storage and value limits: Boolean physical type; defaults/omitted source fields can still mean unverified or not collected.Values can be missingeq, in, is_null
departmentstringSource department label from the SAM notice extract.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
sub_tierstringSource sub-tier organization label from SAM.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
fpds_codestringSAM source FPDS organization code, separate from the department CGAC field.Storage and value limits: Maximum 20 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
officestringSource buying/contracting office label from SAM.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
aac_codestringActivity Address Code identifying a contracting office in the source notice.Storage and value limits: Maximum 20 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
notice_typestringSource notice-type label used for public filtering and lifecycle interpretation.Storage and value limits: Maximum 100 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
base_typestringSource base notice classification; distinct from the current notice_type.Storage and value limits: Maximum 100 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
archive_typestringSource rule/category describing how a notice is archived.Storage and value limits: Maximum 50 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
archive_datedatePublisher archive date, separate from close/deadline.Storage and value limits: Calendar date without time of day or timezone; source precision can be month/quarter instead.Values can be missingeq, in, is_null, gte, lte
set_asidestringSAM published set-aside label retained from the source extract.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
classification_codestringSAM source product/service classification field; validate its source code set.Storage and value limits: Maximum 20 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
pop_streetstringSource place-of-performance street address.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
pop_citystringSource city of the place of performance; distinct from recipient legal address.Storage and value limits: Maximum 100 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
pop_statestringSource place-of-performance state/territory.Storage and value limits: Maximum 10 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
pop_zipstringSource postal code of the place of performance; distinct from recipient legal address.Storage and value limits: Maximum 20 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
pop_countrystringSource country of the place of performance; distinct from recipient legal address.Storage and value limits: Maximum 10 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
award_numberstringAward instrument reference published in a SAM award notice.Storage and value limits: Maximum 100 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
award_datedateSource award date when supplied; the associated source record defines its precision.Storage and value limits: Calendar date without time of day or timezone; source precision can be month/quarter instead.Values can be missingeq, in, is_null, gte, lte
awardeestringSAM awardee source text/representation; not automatically a UEI.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
award_amountdecimal / USDRelation-specific source award amount; SAM/SBIR/USAspending amounts have different grains.Storage and value limits: Precision 15, scale 2; absolute value below 10^13; rounding on assignment; checks can narrow the range.Values can be missingeq, in, is_null, gte, lte
poc_titlestringSource primary notice point of contact published role/title; scope is the associated public record, not every procurement at the agency.Storage and value limits: Maximum 100 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
poc_phonestringSource primary notice point of contact telephone text; scope is the associated public record, not every procurement at the agency.Storage and value limits: Maximum 50 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
poc_faxstringSource primary notice point of contact fax text; scope is the associated public record, not every procurement at the agency.Storage and value limits: Maximum 50 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
secondary_contact_titlestringSource secondary notice contact published role/title; scope is the associated public record, not every procurement at the agency.Storage and value limits: Maximum 100 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
secondary_contact_namestringSource secondary notice contact name label; scope is the associated public record, not every procurement at the agency.Storage and value limits: Maximum 255 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
secondary_contact_emailstringSource secondary notice contact email address; scope is the associated public record, not every procurement at the agency.Storage and value limits: Maximum 255 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
secondary_contact_phonestringSource secondary notice contact telephone text; scope is the associated public record, not every procurement at the agency.Storage and value limits: Maximum 50 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
secondary_contact_faxstringSource secondary notice contact fax text; scope is the associated public record, not every procurement at the agency.Storage and value limits: Maximum 50 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
org_typestringSAM notice source organization category.Storage and value limits: Maximum 50 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
office_statestringSource contracting-office state label, distinct from place of performance.Storage and value limits: Maximum 10 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
office_citystringSource office city geography in the associated record; labels are not global join keys.Storage and value limits: Maximum 100 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
office_zipstringSource office zip geography in the associated record; labels are not global join keys.Storage and value limits: Maximum 20 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
office_countrystringSource contracting-office country label.Storage and value limits: Maximum 10 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
additional_info_linkstringAdditional public information link from SAM; not an instruction to fetch arbitrary external content.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
sam_linkstringPublic SAM record URL from the source extract.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
posted_date_rawstringOriginal publisher posting text retained without timezone inference.Storage and value limits: Public result budgets apply.Historical rows without these fields remain unknown.Values can be missingeq, in, is_null
posted_date_precisionstringinstant when an explicit timezone was supplied; otherwise date_only_timezone_unknown, parse_failed or unknown.Storage and value limits: Public result budgets apply.Historical rows without these fields remain unknown.Values can be missingeq, in, is_null
response_deadline_rawstringOriginal publisher deadline text, retained without discarding the clock or offset.Storage and value limits: Public result budgets apply.Historical rows without these fields remain unknown.Values can be missingeq, in, is_null
response_deadline_precisionstringinstant when an explicit timezone was supplied; otherwise date_only_timezone_unknown, parse_failed or unknown.Storage and value limits: Public result budgets apply.Historical rows without these fields remain unknown.Values can be missingeq, in, is_null
source_sha256stringSHA-256 of the retained raw SAM CSV capture.Storage and value limits: Public result budgets apply.Historical rows without these fields remain unknown.Values can be missingeq, in, is_null
source_row_numberintegerLogical CSV record index with the header at index 1; not a physical text-line number.Storage and value limits: Public result budgets apply.Historical rows without these fields remain unknown.Values can be missingeq, in, is_null
source_retrieved_atdatetimeActual observation time of the retained source capture; separate from posting and response dates.Storage and value limits: Public result budgets apply.Historical rows without these fields remain unknown.Values can be missingeq, in, is_null

Sam Notice Versions

sam_notice_versions · Schema 1

One retained notice-version observation per id, linked by notice_id and observed_at.

Search modes: structured, lexical. History: Retained observation/version queries.

Measures: record_count. Monetary values use decimal strings with declared units. Unknown amounts do not become zero.

Field definitions and supported filters · 15 fields
FieldType / unitMeaningAvailability and filters
idstringGovBiz surrogate row identifier; interpret together with its relation, not as a source-native key.Storage and value limits: 128-bit identifier; JSON string; does not prove source identity.Values can be missingeq, in, is_null, contains
notice_idstringSource SAM notice identifier; amendments and related notices can have different IDs.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
source_hashstringSHA-256 identity of observed public evidence.Storage and value limits: Fixed width 64 characters; identifier rules can be narrower.Values can be missingeq, in, is_null, contains
observed_atdatetimeTime the collector observed this record/version/evidence.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision.Values can be missingeq, in, is_null, gte, lte
notice_typestringSource notice-type label used for public filtering and lifecycle interpretation.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
titlestringPublic record title/heading; meaning follows the relation grain.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
solicitation_numberstringSource solicitation reference; qualify by issuer and dates before relating records.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
agency_codestringStored source agency identifier; namespace can be CGAC, FPDS, top-tier or publisher-specific and must be declared.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
agency_namestringSource agency name; a label whose scope can be department, bureau or office.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Values can be missingeq, in, is_null, contains
naics_codestringSource industry classification code; link with the NAICS edition and declared precision.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Require a classification edition; do not join broad prefixes as exact identities.Values can be missingeq, in, is_null, contains
psc_codestringProduct and Service Code classification; it is not a NAICS industry code.Storage and value limits: No declared field-length cap here; API/output budgets must apply; empty and null differ.Classification overlap is contextual, not record identity.Values can be missingeq, in, is_null, contains
posted_datedatetimeSAM/SubNet posting date; current SAM mapper loses the clock-time component.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision.Values can be missingeq, in, is_null, gte, lte
response_deadlinedatetimeNotice/listing response deadline; source may provide a time, but current SAM mapping retains only the date.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision.Values can be missingeq, in, is_null, gte, lte
source_locatorjsonStructured evidence locator such as file, sheet, row, page or source field mapping.Storage and value limits: Nested producer-specific structure; no fixed public field contract; redact and project known subfields.Values can be missingis_null
created_atdatetimeGovBiz row/version creation time.Storage and value limits: Instant with timezone only if declared; otherwise local/producer time must be explicitly interpreted. Do not invent clock precision.Values can be missingeq, in, is_null, gte, lte