Notices¶
Notices are individual SAM.gov notice records exposed at /api/notices/.
If you want “one row per solicitation/opportunity”, use Opportunities. For field definitions, see the Notices Data Dictionary.
Endpoints¶
GET /api/notices/(list + filtering + search)GET /api/notices/{notice_id}/(detail)
Filtering¶
Swagger is the canonical list of query parameters. These are the core filters most people use day-to-day. All date filters require YYYY-MM-DD format; invalid dates or inverted ranges return 400. See Date filters.
| Param | What it does |
|---|---|
search | Full-text search over notices (vector-backed). |
agency | Filter by agency or department (vector-backed). |
naics | Filter by NAICS. |
psc | Filter by PSC. |
set_aside | Filter by set-aside. |
notice_type | Filter by notice type (valid values are validated). |
solicitation_number | Filter by solicitation number (exact). |
posted_date_after, posted_date_before | Posted date range (YYYY-MM-DD). |
response_deadline_after, response_deadline_before | Response deadline range (YYYY-MM-DD). |
active | Filter active/inactive. |
Ordering¶
/api/notices/ does not support ordering=....
Pagination¶
Notices use standard page-number pagination:
page(default 1)limit(max 100)
Response Shaping¶
Notices support the ?shape= query parameter. When no ?shape= is provided, the endpoint returns a default shape.
Default shape (list): active,address(*),attachment_count,award_number,description,last_updated,meta(*),naics_code,notice_id,office(*),opportunity(*),place_of_performance(*),posted_date,psc_code,response_deadline,sam_url,set_aside,solicitation_number,title
Default shape (detail): adds archive(*), primary_contact(*), secondary_contact(*)
set_aside is available as a leaf (returns the description text) or as an expansion set_aside(code,description) for the structured form.
See Response Shaping for syntax and examples.
Notices shaping notes¶
- New leaf:
opportunity_idis available directly as a leaf (UUID). - Bare expand shorthand: common expansions can be requested without parentheses when the runtime must expand them for safety (e.g.,
officebehaves likeoffice(*), andopportunitybehaves likeopportunity(*)).
Examples:
# Leaf opportunity_id + bare office/opportunity expansions
/api/notices/?shape=notice_id,opportunity_id,office,opportunity&limit=1
SDK examples¶
import { ShapeConfig, TangoClient } from "@makegov/tango-node";
const client = new TangoClient({ apiKey: process.env.TANGO_API_KEY });
const resp = await client.listNotices({
agency: "DOD",
notice_type: "presol",
limit: 10,
shape: ShapeConfig.NOTICES_MINIMAL,
});
for (const n of resp.results) {
console.log(n.notice_id, n.title);
}