Skip to content

Standardized federal agency names for SAM.gov data

Updated

SAM.gov writes the whole contracting-office path into the agency field, so one agency shows up as many separate strings, and the largest agencies as hundreds. This free crosswalk maps every raw string to one canonical name, so your searches and analysis don't split a single agency into many.

  • Raw agency strings ~3,600
  • Canonical agencies 175
  • Departments 84
  • Updated Daily

What's in the crosswalk

One row per raw agency string seen in SAM.gov data, with the canonical name it maps to and how often it appears.

The problem: one agency, many strings

The Department of the Army alone accounts for 788 raw strings. Two of them are the same contracting office, separated by one ampersand. The crosswalk maps every one of them back to a single canonical name.

DEPT OF DEFENSE.DEPT OF THE ARMY.AMC.ACC.MISSION INSTALLATION CONTRACTING COMMAND.419TH CSB.W6QM MICC-FT DRUM
DEPT OF DEFENSE.DEPT OF THE ARMY.AMC.ACC.MISSION & INSTALLATION CONTRACTING COMMAND.419TH CSB.W6QM MICC-FT DRUM
DEPT OF DEFENSE.DEPT OF THE ARMY.AMC.ACC.ACC-CTRS.ACC RI.W6QK ACC-RI
DEPT OF DEFENSE.DEPT OF THE ARMY.AMC.ACC.ACC-CTRS.ACC-NJ.W6QK ACC-PICA

All map to canonical: DEPT OF THE ARMY

What each row holds

Field What it holds
raw_agency_text Agency string from SAM.gov, exactly as it appears
canonical_agency Standardized agency name
department Parent department the agency sits under
confidence Confidence in the mapping, 0 to 1
frequency Number of records filed under this exact string

The whole mapping is free: GET /api/agency-crosswalk returns every row as JSON with no key, and the comparison with the Federal Hierarchy endpoint shows a complete row and says which of the two to reach for.

What this fixes

Inconsistent agency strings quietly break search and aggregation. The crosswalk gives you one name to group and filter on.

Scattered Navy contracts

Navy records sit under 142 different strings, one per command and contracting office. The crosswalk maps them to one standard name so you can pull them together.

Miscounted agencies in analysis

A spreadsheet grouping by raw agency name splits one department across many rows. Joining on the canonical name collapses those variants back into a single agency.

Search that misses results

Matching one spelling literally misses the rest: Air Force notices are filed under 490 distinct office paths. The crosswalk lists the raw strings behind each canonical name, so you can match all of them. On the query side the API does this for you, and it reads short agency names the crosswalk itself does not store: ?agency=FEMA and the full agency name return the same set of opportunities.

Need the underlying contract data?

This crosswalk is built from the same contract data the GovCon API serves: opportunities, awards, subawards and the SAM entity registry. To normalize agency strings in your own code rather than by hand, the agency crosswalk endpoint returns the canonical name, the department hierarchy and the USASpending codes.

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.