Contracting Offices
Two surfaces over one rollup of federal award data (FPDS via USASpending), trailing three years:
GET /api/v1/offices?naics={code}: the contracting offices that buy a NAICS, ranked, each row carrying that office's own obligations, average number of offers, single-bidder share, and set-aside share.GET /api/v1/offices/{office_code}: how one office buys overall (its obligations, competition posture, set-aside lean) and the NAICS it actually buys, top by dollars.
Both are factual only, no score. They exist because our other buyer views stop one level too high: /naics/{code} reports the top buyers as departments ("Department of the Army"), and /naics/{code}/competition reports competition market-wide for the NAICS. Neither tells you which specific contracting office to target, or how competitive that one office is, and the market-wide average routinely hides it (janitorial, NAICS 561720, reads 35% single-bidder market-wide via /naics/561720/competition, yet individual offices in that same market run anywhere from 0% to 100%). These endpoints resolve the buyer down to the office and report competition per office. Free, included on every plan. Full guide: /contracting-office-intelligence.
Discovery: GET /api/v1/offices?naics={code}
Which offices buy this NAICS, ranked, each with its own win-facts.
Parameters
naics: 2 to 6 digits. Required. A shorter prefix is not expanded; the code is matched as stored on the award (6 digits is the normal case).sort:biggest(default, by obligations),most_open(fewest single-bidder awards first), ormost_setaside(highest set-aside share first).limit: Results per page. Default 100; maximum 100 on the free trial and 1,000 on paid plans. Over the maximum returns402.
Unknown parameters return 400. An office must have obligated more than $250,000 in the NAICS over the trailing three years to appear (a floor that keeps de-obligation noise and trivial one-off buys off the list).
Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://govconapi.com/api/v1/offices?naics=541512&limit=3"
Real response (IT services, top three offices by obligations):
{
"naics_code": "541512",
"sort": "biggest",
"offices": [
{
"office_code": "36C10B",
"office_name": "TECHNOLOGY ACQUISITION CENTER NJ (36C10B)",
"sub_agency": "Department of Veterans Affairs",
"department": "Department of Veterans Affairs",
"obligated": 6724467870.0,
"contracts": 292,
"vendors": 68,
"avg_offers": 4.0,
"single_bidder_pct": 17,
"setaside_pct": 33
},
{
"office_code": "47QFCA",
"office_name": "GSA FAS AAS FEDSIM",
"sub_agency": "Federal Acquisition Service",
"department": "General Services Administration",
"obligated": 6472942132.0,
"contracts": 86,
"vendors": 29,
"avg_offers": 3.5,
"single_bidder_pct": 8,
"setaside_pct": 0
},
{
"office_code": "75FCMC",
"office_name": "OFC OF ACQUISITION AND GRANTS MGMT",
"sub_agency": "Centers for Medicare and Medicaid Services",
"department": "Department of Health and Human Services",
"obligated": 3573609704.0,
"contracts": 198,
"vendors": 93,
"avg_offers": 4.0,
"single_bidder_pct": 32,
"setaside_pct": 44
}
],
"_sources": ["usaspending_fpds"]
}
Read across the three rows: all three are large IT buyers, but they buy differently. VA's Technology Acquisition Center and CMS both run heavy set-aside programs (33% and 44%), so a small business with the right certification has a real lane at either. GSA FEDSIM buys full-and-open (0% set-aside) with only 8% single-bidder, a large but genuinely contested arena. The facts are on the row; the targeting call is yours.
Profile: GET /api/v1/offices/{office_code}
How one office buys, overall, and the NAICS it actually buys. Takes no query parameters; passing any returns 400. An unknown office code returns 404.
Example
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://govconapi.com/api/v1/offices/36C10B"
Real response (abbreviated top_naics for length):
{
"office_code": "36C10B",
"office_name": "TECHNOLOGY ACQUISITION CENTER NJ (36C10B)",
"sub_agency": "Department of Veterans Affairs",
"department": "Department of Veterans Affairs",
"obligated": 13934976994.0,
"contracts": 1744,
"avg_offers": 3.0,
"single_bidder_pct": 38.0,
"setaside_pct": 49.0,
"top_naics": [
{ "naics_code": "541512", "obligated": 6724467870.0, "contracts": 292 },
{ "naics_code": "541519", "obligated": 3963242705.0, "contracts": 1066 },
{ "naics_code": "541511", "obligated": 1385423547.0, "contracts": 73 },
{ "naics_code": "511210", "obligated": 1200921077.0, "contracts": 51 }
],
"data_as_of": "2026-08-21",
"_sources": ["usaspending_fpds"]
}
The office code is the same awarding_office you already see on /api/v1/recompetes rows and on award records, so a recompete or an award hands you straight into this profile.
Field reference
| Field | Meaning |
|---|---|
office_code |
The FPDS contracting-office code (e.g. 36C10B). Stable identifier, matches awarding_office elsewhere in the API. |
office_name |
The office's name as reported on its awards. |
sub_agency / department |
The sub-agency and top-level department the office sits under. |
obligated |
Sum of positive federal obligations (USD) over the trailing three years, for this office (profile) or this office-and-NAICS (discovery). |
contracts |
Distinct contracts (by contract award unique key). |
vendors |
Distinct vendors (by UEI) the office bought this NAICS from. Discovery rows only. |
avg_offers |
Average number of offers received, over actions that recorded competition. A read on how contested the office's buys are. |
single_bidder_pct |
Share of competed actions that drew exactly one offer. High means the office's awards tend to be effectively locked to a single bidder; low means genuinely contested. |
setaside_pct |
Share of actions carrying any set-aside. High means a small-business-heavy office. |
top_naics |
Profile only: the NAICS the office buys most, by obligations (up to eight). |
data_as_of |
The date the rollup was last rebuilt. |
_sources |
Always ["usaspending_fpds"]. |
How the facts are derived
- Single-bidder share counts actions where exactly one offer was received, over actions that recorded any competition. A
null/unrecorded offer count (common on task orders competed at the vehicle level) is excluded from the denominator, never treated as a single bidder. - Set-aside share counts actions carrying any set-aside type other than "no set aside," over all actions.
- Average offers averages the recorded offer counts over competed actions only.
- Percentages are derived from stored counts at request time, so an office's overall rate (profile) correctly re-aggregates across the NAICS it buys, rather than averaging pre-rounded rates.
- The rollup covers the trailing three years of award actions and rebuilds daily.
Errors
| Status | When |
|---|---|
400 |
naics is not 2 to 6 digits; an unknown query parameter is sent; sort is not one of biggest / most_open / most_setaside. |
401 |
Missing or invalid API key. |
404 |
The office code has no award activity on record (profile endpoint). |
503 |
The office rollup is being rebuilt. Retry shortly. |
Notes
- Not windowed. These are aggregate lookups, not date-filtered searches, so no plan history window applies.
- Free. Both endpoints are included on every plan, including the free tier.
- Passthrough on source values. Office names and codes are surfaced as FPDS reports them; we do not re-canonicalize them.
Cross-links
- /contracting-office-intelligence: the full guide, with worked examples.
- NAICS Market and NAICS Competition: the market-wide view these endpoints break down to the office.
- Recompete Watchlist: every recompete row carries the
awarding_officethat keys into an office profile. - GovCon Contacts: turn a targeted office into its named contracting officers.