Skip to content

Discover NAICS codes

Find NAICS codes by current federal spending and small-business set-aside leverage, over the precomputed market rollup. Use this to pick which markets to profile with /api/v1/naics/{code}. Free with any key.

Parameters

All optional; each narrows the discovery. Unknown parameters return 400.

  • sector: 2-digit NAICS sector prefix (digits only).
  • prefix: any-length NAICS prefix (digits only).
  • min_market: minimum FY2025+ obligated dollars.
  • max_competitors: maximum distinct winning firms (find less-crowded markets).
  • set_aside_family: only codes with obligations in this family, one of total_small_business, 8a, sdvosb, wosb, hubzone, veteran, native.
  • keywords: match the NAICS description text.
  • sort_by: market (default), competitors, or setaside_pct.
  • sort_order: asc or desc (default).
  • limit: Results per page. Default 100; maximum 100 on the free trial and 1,000 on paid plans. Over the maximum returns 402. offset: pagination offset.

Response

A list of NAICS market rows, sorted by sort_by.

Field Meaning
naics_code / description The code and its title
market_obligated Trailing FY2025+ obligated dollars for the code. Can be negative (net of de-obligations).
competitor_count Distinct winning firms
setaside_total_share_pct Share of market_obligated won under ANY set-aside family combined
family_share_pct Share won under the specific set_aside_family you filtered to. null when set_aside_family isn't set. Combined with sort_by=setaside_pct, this is what the ranking uses , not setaside_total_share_pct.
tier thin / okay / rich, a coarse read on market_obligated
{
  "data": [
    {
      "naics_code": "541710",
      "description": "RESEARCH AND DEVELOPMENT IN THE PHYSICAL, ENGINEERING, AND LIFE SCIENCES",
      "market_obligated": 9048715054.99,
      "competitor_count": 47,
      "setaside_total_share_pct": 0.0,
      "family_share_pct": null,
      "tier": "rich"
    }
  ],
  "pagination": {"limit": 2, "offset": 0, "total": 5, "total_is_estimate": false, "has_next": true},
  "filters_applied": {"sector": "54", "min_market": 1000000000.0, "max_competitors": 500, "sort_by": "market", "sort_order": "desc"},
  "_sources": ["usaspending_fpds"]
}

With set_aside_family set, ranked by sort_by=setaside_pct:

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://govconapi.com/api/v1/naics?set_aside_family=sdvosb&sort_by=setaside_pct&limit=2"
{
  "data": [
    {
      "naics_code": "812199",
      "description": "OTHER PERSONAL CARE SERVICES",
      "market_obligated": -57709.5,
      "competitor_count": 4,
      "setaside_total_share_pct": 57.4,
      "family_share_pct": 94.1,
      "tier": "thin"
    },
    {
      "naics_code": "238170",
      "description": "SIDING CONTRACTORS",
      "market_obligated": 6502544.41,
      "competitor_count": 23,
      "setaside_total_share_pct": 97.1,
      "family_share_pct": 63.9,
      "tier": "okay"
    }
  ],
  "pagination": {"limit": 2, "offset": 0, "total": 398, "total_is_estimate": false, "has_next": true},
  "filters_applied": {"set_aside_family": "sdvosb", "sort_by": "setaside_pct", "sort_order": "desc"},
  "_sources": ["usaspending_fpds"]
}

Errors

  • 400: invalid sort_by, sort_order, sector, prefix, or set_aside_family.
  • 503: the market index is still being built; use GET /api/v1/naics/{code} for a single code meanwhile.

Example

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://govconapi.com/api/v1/naics?sector=54&min_market=1000000000&max_competitors=500&sort_by=market"

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.