SBA SubNet
Subcontracting opportunities posted by prime contractors.
Source, grain and coverage
Public SBA SubNet listings. This is not a complete inventory of subcontracting opportunities.
Public listings are incomplete and retained statuses can be historical. Prime UEIs, CAGEs, solicitation references, NAICS and deadlines can be absent. Name equality does not establish an exact entity or award relationship.
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/subnet-refresh/records?limit=2' \ -H "Authorization: Bearer $GOVBIZ_API_KEY"
The primary dataset is subcontract_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 →Subcontract Notices
subcontract_notices · Schema 1
One retained public subcontracting listing per listing_id.
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 · 22 fields
| Field | Type / unit | Meaning | Availability and filters |
|---|---|---|---|
listing_id | string | Publisher/scraper SubNet listing identity; source-generated fallback keys can change when content changes.Storage and value limits: Maximum 50 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 |
prime_company_name | string | SubNet advertiser/company label; not automatically an identified prime recipient.Storage and value limits: Maximum 500 characters; identifier rules can be narrower. | Values can be missingeq, in, is_null, contains |
prime_uei | string | Source UEI identifying the prime participant; missing/empty values cannot support an exact entity join.Storage and value limits: Maximum 12 characters; identifier rules can be narrower.Logical UEI length is 12; a wider varchar is not broader identity support. | Not collected; returned as unknowneq, in, is_null, contains |
prime_cage_code | string | Source CAGE identifier for the prime participant; not a UEI.Storage and value limits: Maximum 10 characters; identifier rules can be narrower.CAGE/NCAGE is ordinarily a 5-character code; wider storage is not a source format guarantee. | Not collected; returned as unknowneq, in, is_null, contains |
naics_code | string | Source industry classification code; link with the NAICS edition and declared precision.Storage and value limits: Maximum 6 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 |
naics_description | string | Industry classification description; it is not an award requirement narrative.Storage and value limits: Maximum 500 characters; identifier rules can be narrower. | Values can be missingeq, in, is_null, contains |
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 |
required_certifications | array | Advertised SubNet qualification labels; declarations in source text need source evidence.Storage and value limits: Array/list; no declared cardinality cap here; distinguish missing list, empty list and per-element nulls. | Values can be missingoverlaps, is_null |
location_state | string | Source location state geography in the associated record; labels are not global join keys.Storage and value limits: Maximum 2 characters; identifier rules can be narrower. | Values can be missingeq, in, is_null, contains |
location_city | string | Source location city geography in the associated record; labels are not global join keys.Storage and value limits: Maximum 200 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. | Not collected; returned as unknowneq, in, is_null, contains |
contact_name | string | Source public contact name label; scope is the associated public record, not every procurement at the agency.Storage and value limits: Maximum 200 characters; identifier rules can be narrower. | Values can be missingeq, in, is_null, contains |
contact_email | string | Source public contact email address; scope is the associated public record, not every procurement at the agency.Storage and value limits: Maximum 200 characters; identifier rules can be narrower. | Values can be missingeq, in, is_null, contains |
contact_phone | string | Source public 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 |
posted_date | date | SAM/SubNet posting date; current SAM mapper loses the clock-time component.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 |
response_deadline | date | Notice/listing response deadline; source may provide a time, but current SAM mapping retains only the date.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 |
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 |
source_url | string | Public provenance URL for the relation record; a generic landing URL is weaker than a record locator.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 |
first_seen_at | datetime | Earliest retained observation of the current source-key record.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 |
last_seen_at | datetime | Most recent retained observation, not proof of current availability.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 |
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 |