SAM Opportunities
Federal contract notices published on SAM.gov.
Source, grain and coverage
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
| Field | Type / unit | Meaning | Availability and filters |
|---|---|---|---|
notice_id | string | Source 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 |
title | string | Public 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_code | string | Stored 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_name | string | Source 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_code | string | Source 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_type | string | Legacy 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_code | string | Publisher 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 |
ptype | string | Legacy 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_number | string | Source 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_deadline | temporal | Notice/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_date | temporal | SAM/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 |
description | string | Source 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_email | string | Source 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_name | string | Source 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_value | decimal / USD | Estimated/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_state | string | Source 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_id | string | Intended 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 |
status | string | Relation-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_updated | datetime | Current 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 |
active | boolean | Stored 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 |
department | string | Source 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_tier | string | Source 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_code | string | SAM 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 |
office | string | Source 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_code | string | Activity 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_type | string | Source 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_type | string | Source 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_type | string | Source 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_date | date | Publisher 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_aside | string | SAM 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_code | string | SAM 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_street | string | Source 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_city | string | Source 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_state | string | Source 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_zip | string | Source 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_country | string | Source 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_number | string | Award 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_date | date | Source 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 |
awardee | string | SAM 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_amount | decimal / USD | Relation-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_title | string | Source 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_phone | string | Source 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_fax | string | Source 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_title | string | Source 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_name | string | Source 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_email | string | Source 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_phone | string | Source 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_fax | string | Source 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_type | string | SAM 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_state | string | Source 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_city | string | Source 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_zip | string | Source 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_country | string | Source 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_link | string | Additional 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_link | string | Public 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_raw | string | Original 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_precision | string | instant 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_raw | string | Original 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_precision | string | instant 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_sha256 | string | SHA-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_number | integer | Logical 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_at | datetime | Actual 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
| Field | Type / unit | Meaning | Availability and filters |
|---|---|---|---|
id | string | GovBiz 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_id | string | Source 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_hash | string | SHA-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_at | datetime | Time 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_type | string | Source 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 |
title | string | Public 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_number | string | Source 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_code | string | Stored 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_name | string | Source 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_code | string | Source 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_code | string | Product 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_date | datetime | SAM/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_deadline | datetime | Notice/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_locator | json | Structured 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_at | datetime | GovBiz 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 |