Skip to content

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), or most_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 returns 402.

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.

A REST API and MCP server for U.S. federal procurement data.

Get a free key, emailed instantly, or follow the quickstart.

Found something wrong, missing or confusing on this page?

Press Ctrl + Enter to send a note. Highlight text first and it travels with your note.