Search wage determinations
Search federal wage determinations: the legally binding minimum wage and fringe schedules a federal contract is bound to, published by the Department of Labor through SAM.gov.
There are three kinds, from three statutes, and they are queried together here with a type filter:
- DBA, Davis-Bacon Act construction rates, by county and construction type (Building, Heavy, Highway, Residential). 68,737 records.
- SCA, Service Contract Act service-worker rates. 2,666 records.
- CBA, collective bargaining agreements that carry over to a successor contract under section 4(c) of the SCA. 18,630 records, each carrying a
cbablock with its contractor, union, and term.
Most of what you get back is not current
SAM keeps every superseded revision of a determination, not just the one in force. About 6% of Davis-Bacon records are currently active (4,235 of 68,737); the rest are history. Pass active_only=true for the determinations that actually govern a bid today. Without it, the default result is a revision archive sorted newest-modified first.
Quick start
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://govconapi.com/api/v1/wage-determinations/search?type=DBA&state=CA&active_only=true&limit=1"
{
"data": [
{
"wd_id": "CA20260022",
"wd_number": "CA20260022",
"wd_type": "DBA",
"revision_number": 5,
"is_active": true,
"publish_date": "2026-08-06",
"modified_date": "2026-08-06",
"construction_types": ["Building", "Heavy", "Highway"],
"locations": [{ "state": "CA", "county": "Los Angeles" }],
"total_locations": 1,
"locations_truncated": false
}
],
"pagination": { "limit": 1, "offset": 0, "total": 28, "total_is_estimate": false, "has_next": true },
"filters_applied": { "type": "DBA", "state": "CA", "active_only": true, "sort_by": "modified_date", "sort_order": "desc" },
"window": { "plan_window_days": null, "earliest_searchable": null, "clamped": false, "reason": "Wage determinations are compliance reference data, not time-series records, so they are not date-windowed: the full set is searchable on every plan. Use date_from / date_to to filter by the date a determination was last modified." },
"_sources": ["sam_wage_determinations"]
}
To answer the compliance question directly ("what applies in this county"), use /wage-determinations/by-location, which resolves county-specific and statewide coverage in one call.
locations[] is scoped to your filter, not the full nationwide list
When you pass state (and optionally county), the embedded locations[] array is narrowed to jurisdictions matching that filter, not every jurisdiction the determination applies to nationwide. total_locations is the determination's full nationwide location count; locations_truncated is true whenever the embedded array is narrower than that:
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://govconapi.com/api/v1/wage-determinations/search?wd_number=1996-0223&state=VA&active_only=true"
{
"data": [
{
"wd_id": "1996-0223",
"wd_number": "1996-0223",
"wd_type": "SCA",
"revision_number": 70,
"is_active": true,
"locations": [
{ "state": "VA", "county": "Accomack" },
{ "state": "VA", "county": "Albemarle" }
],
"total_locations": 3180,
"locations_truncated": true
}
]
}
This determination applies in 3,180 jurisdictions nationwide (total_locations); the embedded array here shows only its 96 Virginia counties, hence locations_truncated: true. To get the FULL, unscoped location list for one determination, use the single-record lookup , /wage-determinations/{wd_id} never filters locations[].
Parameters
| Param | Type | Description |
|---|---|---|
type |
string | DBA, SCA, or CBA. Invalid values return a 400 with the valid list. |
state |
string | 2-letter US state or territory code. Joins through the location index. |
county |
string | County-name substring (for example Cook). Wildcards are escaped and matched literally. |
wd_number |
string | WD-number substring (for example AK2026, 1994-2371, CBA-2025). |
active_only |
bool | Only currently-effective determinations. Default false. |
construction_type |
string | DBA only: Building, Heavy, Highway, or Residential. |
date_from / date_to |
date | ISO YYYY-MM-DD, bounding the determination's modified date. |
sort_by |
string | modified_date (default), publish_date, wd_number, or revision_number. |
sort_order |
string | asc or desc (default). |
limit / offset |
int | Page size (default 100; maximum 100 on the free trial, 1,000 on paid plans) and offset. |
fields |
string | Comma-list of response fields to return. |
modified_since is accepted as a hidden alias for date_from; sending both is a 400.
Response fields
| Field | Meaning |
|---|---|
wd_id |
Internal SAM identifier (the stable key for a single-record lookup). |
wd_number |
Human-readable WD number. DBA encodes state and year (CA2026...), SCA a year-sequence (2015-4567), CBA CBA-YYYY-N. |
wd_type |
DBA, SCA, or CBA. |
revision_number |
The determination's revision. |
is_active |
Whether this revision is currently in force. |
publish_date / modified_date |
Source dates. Roughly 27% of DBA records carry no modified date from the source, so a date_from filter will not return them. |
construction_types |
DBA only: the construction categories the rate schedule covers. |
locations |
The state and county jurisdictions the determination applies to. A statewide determination has a county of null. Scoped to your state/county filter, not the full nationwide list , see below. |
total_locations |
The determination's real, full nationwide location count (unaffected by your filter). |
locations_truncated |
true when locations[] above is narrower than total_locations because of your state/county filter. |
cba |
CBA only: contractor, union, covered services, and effective dates. Present on CBA rows, absent on DBA and SCA. Present on roughly 87% of CBAs overall; the rest return empty from the source. |
Errors
| Status | When |
|---|---|
400 |
Invalid type, sort_by, or sort_order; malformed date_from / date_to; unknown query parameter; both date_from and modified_since sent. |
401 |
Missing or invalid API key. |
422 |
limit below 1 or negative offset. A limit above your plan maximum is a 402. |
Examples
Track Davis-Bacon revisions issued in a state since a date:
GET /api/v1/wage-determinations/search?type=DBA&state=IL&date_from=2026-04-01&active_only=true
Find active CBAs in a jurisdiction, with contractor and union:
GET /api/v1/wage-determinations/search?type=CBA&state=DC&active_only=true
Look a determination up by number:
GET /api/v1/wage-determinations/search?wd_number=AK2026