Federal Contract Market Map — Who Wins, HHI & Agency Mix avatar

Federal Contract Market Map — Who Wins, HHI & Agency Mix

Pricing

from $4.00 / 1,000 contractors

Go to Apify Store
Federal Contract Market Map — Who Wins, HHI & Agency Mix

Federal Contract Market Map — Who Wins, HHI & Agency Mix

Map any US federal contracting market from official USAspending data: vendors ranked by obligated dollars, market concentration (HHI), top-5 and top-10 share, agency mix, outlay ratio, median contract length and contracts expiring within a year. Server-side aggregation, no API key.

Pricing

from $4.00 / 1,000 contractors

Rating

0.0

(0)

Developer

宗諭 楊

宗諭 楊

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Share

Pick a federal contracting market — by NAICS code, keyword, agency, or vendor name — and get the map: who holds the dollars, how concentrated the market is, which agencies are buying, and which incumbents have contracts running out.

The data is official USAspending.gov. No API key, and the vendor ranking is aggregated server-side across the whole filtered universe, not estimated from a sample of awards.

What you get per vendor

FieldExample
rank / recipientName / uei1 / GENERAL DYNAMICS INFORMATION TECHNOLOGY / 067641597
obligatedAmount1,370,000,000
totalOutlays / outlayRatiohow much has actually been paid out against what was committed
shareOfFiltered / cumulativeShare0.1842 / 0.1842
medianContractMonthstypical contract length in this market
agencyCountInSample / topAgencyInSample / topAgencyShareInSample4 / Department of Defense / 0.81 — single-agency dependence
activeContractsInSample / expiringWithin12Monthsincumbency and what is coming up for rebid

And in SUMMARY:

FieldWhat it tells you
totalContractsInUniversehow many contracts match your filters at all
concentration.hhi + hhiReadingHerfindahl–Hirschman index with the DOJ/FTC reading: under 1500 unconcentrated, 1500–2500 moderate, over 2500 highly concentrated
top1Share / top5Share / top10Sharethe shape of the market in one line
topAgencieswhich agencies are actually buying

Two dataset views: Market map (the ranking and shares) and Incumbency (active and expiring contracts, agency concentration).

Uses

  • Market entry — HHI and top-5 share answer "is there room here" before you write a capture plan.
  • Competitor profile — put a vendor name in recipients and get its whole federal book of business: dollars, agency mix, contract lengths.
  • Teaming and subcontracting — topAgencyShareInSample finds the vendors locked into one agency and the ones spread across several.
  • Rebid timing — expiringWithin12Months points at incumbents with work coming up.

Input example

{
"naicsCodes": ["541511"],
"agencies": ["Department of Defense"],
"startDate": "2024-10-01",
"endDate": "2026-09-30",
"dateType": "new_awards_only",
"topRecipients": 200
}

At least one of naicsCodes, keywords, agencies or recipients is required — an unfiltered query is a request to aggregate the entire federal market, which is not a meaningful question.

The two things that make naive queries wrong

The date filter matches transactions, not contract periods. Filter on fiscal 2025–26 and you will still see a contract whose period of performance ended in 2017, because it received a modification inside your window. That is the API behaving as designed, and it is why dateType exists: choose New awards only when you mean "awarded in this period".

Different endpoints count different things. The contract count is measured in awards; the agency breakdown is measured in transactions. Dividing one by the other produces a number that looks like a percentage and means nothing. The levels each endpoint used are reported in SUMMARY.spendingLevels, and the Actor stops if one comes back unexpected.

How it handles its own limits

CheckWhat it catches
No filtersRejected with the reason, rather than attempting a whole-market aggregate.
Empty universeZero matching contracts is never returned as "this market has no vendors". A control query (NAICS 541511, same period) decides why: if it finds contracts, your filters are the problem and the run is refused with an explanation (no rows, so no per-row charge); if it finds none, the source is down and the run fails. Measured: an unknown NAICS code, a nonsense keyword and a misspelled agency name all come back from the API as 200 with zero contracts.
Start date too earlyThe search API reaches back only to 2007-10-01 and truncates silently before that, so an earlier startDate is refused.
Pagination ignoredIf page N returns page 1 again, the run stops. Page paging is verified to work here, but the same parameter is silently ignored by other public APIs, so it is checked rather than assumed.
Spending-level mismatchAn endpoint returning a different measurement level than expected stops the run instead of producing a mixed denominator.
Request failureA non-200 response is raised, not returned as an empty market.

Notes on the data

  • shareOfFiltered and hhi cover the vendors returned (topRecipients). The long tail is outside the denominator, so the concentration figures are an upper bound. Raise topRecipients for a tighter one.
  • Fields ending in InSample come from the sampled award pages, ordered by amount, not from every contract a vendor holds. The suffix is there to keep that visible in every row.
  • The NAICS field on individual awards is frequently empty, even when filtering by NAICS, so no derived field is built from it.
  • Dollar figures are obligations, not payments. outlayRatio is where payments show up.
  • This is a market-analysis tool, not bid advice.