The federal contracting data layer

Federal Contract Pricing Benchmarks

What federal contracts actually pay, by NAICS, contract type, and set-aside, and where your own number ranks against them.

Pricing a federal bid starts with one question: what does a contract like this go for? The honest answer is not a single number. It is a distribution, read at the right scope, and this page gives it to you from the record itself: 9.8 million federal prime contract awards turned into percentile benchmarks by industry, contract type, and set-aside, plus a way to drop in your own value and see exactly where it ranks against real comparable contracts. Every figure below is computed from awarded contracts, not estimated.

What this is, and what it is not. This is a market read that helps your team make an informed pricing decision. It is not a win predictor. We do not score your probability of winning, tell you to bid or walk, or ask you to change how you work. We put the evidence in front of you, where your number sits and the real contracts behind it, and leave the call where it belongs: with you. Serious contractors do not outsource the bid decision to a black box; they want the facts, laid out, to decide for themselves.
On this page:

How much does a federal contract pay?

It depends far more on the contract's pricing type and scope than on the industry. Within a single NAICS code, the median award can run from tens of thousands of dollars for firm-fixed-price work to hundreds of millions for cost-reimbursement work. So the useful answer is a distribution, read for the right contract type at the right scope, not an industry-wide average.

As a concrete anchor: in computer systems design (NAICS 541512), the median firm-fixed-price contract is about $66,000, while the median time-and-materials contract is about $7.1 million and the median cost-plus-award-fee contract is about $207 million. Same industry code. The rest of this page shows how to read that correctly, and how to place your own number in it.

Why a single "average contract value" is wrong

Three things move a contract's value by one to three orders of magnitude before you even reach who won it. Miss any one and your benchmark is off by 5x to 100x.

1. There is no single "value"

Every award carries three different dollar figures, and they are routinely confused:

On a competed 8(a) IT award, those three figures can read $1.5M, $4.6M, and $8.6M for the same contract. Benchmark off the wrong one and you misprice by 3x. A benchmark that means anything has to say which figure it is using; the ones here use current total value, the full deal, unless you ask for another.

2. Contract pricing type swings it the most

Firm-fixed-price work is mostly defined, smaller buys. The staffed engagements, the ones with real labor content, live in the time-and-materials, labor-hour, and cost-reimbursement lines. Blend them into one "average" and you get a bimodal number that describes no real contract. This is the single biggest reason free averages mislead, and why every benchmark on this page is broken out by contract type.

3. Scope, not just industry, sets the range

A NAICS code is an industry, not a work-size. Inside 541512 firm-fixed-price, the product/service code splits the field into genuinely different sub-markets: IT business-application buys run a median near $25,000, while engineering-support engagements run near $2.25 million, roughly 90x apart, under the same NAICS. Set-aside is a value signal too, for the same reason: agencies route larger, deliberately scoped work through set-aside vehicles (see the set-aside table below).

The takeaway: a defensible federal-contract benchmark is a distribution, read at the right scope, for the right contract type, never a single average over an industry.

What contracts pay by industry (NAICS)

Median award value for the professional-services, engineering, and R&D codes most contractors compete in, split by pricing structure. The "fixed-price" column is firm-fixed-price work; the "services" column is the staffed time-and-materials and cost-reimbursement lines. Read the gap between the two: it is why a single blended number is meaningless.

NAICSIndustryFixed-price medianServices median
541512Computer systems design services$66,000$5.3M
541511Custom computer programming$490,000$3.3M
541519Other computer-related services$69,000$2.6M
541330Engineering services$441,000$2.5M
541715R&D, physical / engineering / life sciences$250,000$2.0M
541611Administrative management consulting$436,000$765,000
541990Other professional, scientific & technical$211,000$483,000
541620Environmental consulting$150,000$313,000
541380Testing laboratories$34,000$879,000
562910Remediation services$220,000$588,000
561210Facilities support services$35,000$543,000
561320Temporary help services$105,000$265,000
561612Security guards and patrol$730,000$20,000
238210Electrical contractors$81,000$63,000
541930Translation and interpretation$3,600$33,000

Median current total value, recent fiscal years. Security guards (561612) inverts the usual pattern: large fixed-price base contracts drawn down through small hourly task orders. That kind of sector nuance is exactly what a generic average erases, and why the benchmark reads each contract type separately.

What contracts pay by contract type

The same NAICS, computer systems design (541512), by contract pricing type. This is the spread a blended average hides, and the reason a comparable is only honest when it is read for one pricing type at a time.

Contract pricing typeMedian value
Firm fixed price$66,000
Cost plus incentive fee$216,000
Labor hours$3.5M
Cost plus fixed fee$6.1M
Time and materials$7.1M
Cost plus award fee$207M

From firm-fixed-price to cost-plus-award-fee, the median moves more than 3,000x, inside one industry code. Firm-fixed-price dominates by count (the small, defined buys); the cost and labor-based types carry the large staffed programs.

What contracts pay by set-aside

The same NAICS (541512), by set-aside, using current total value. Set-aside work runs far larger at the median than the open field, mostly a selection effect: agencies route substantial, deliberately scoped services work through these vehicles. The lesson for a bidder is to benchmark against your own lane, not the open-market number.

Set-asideMedian value
No set-aside$76,000
8(a) sole source$2.4M
Small business (total)$2.5M
8(a) competed$4.6M
Service-disabled veteran-owned (SDVOSB)$5.9M

Why the biggest industries pay the least per contract

The NAICS codes with the most federal contracts are not the lucrative ones. They are commodity supply codes bought in enormous volumes of tiny purchase orders. The highest-count industries and their median firm-fixed-price value:

NAICSIndustryContractsMedian
423450Medical, dental & hospital equipment1,100,000+$283
311991Perishable prepared food manufacturing894,000$474
424210Drugs and druggists' sundries637,000$1,247
444110Home centers327,000$28

Over a million medical-equipment "contracts" at a $283 median: these are commissary and depot micro-purchases, the long tail of routine federal buying. Anyone benchmarking on raw counts drowns in sub-$1,000 supply transactions. The services work contractors compete for lives in a smaller, higher-value slice, which is exactly why it needs its own scoped view.

How to benchmark federal contract pricing by hand

You do not need us to do this. The award data is public, and the method is not a secret. Here is the actual workflow, step by step, so you can run it yourself, and so you can see exactly what one API call is standing in for. Every one of these steps is a place the naive version goes wrong.

  1. Find a source, which just got harder. The award data is public, but the ground is shifting. FPDS.gov, the system of record for two decades, was decommissioned in February 2026 and now redirects to SAM.gov; its long-standing ATOM data feed is being retired during 2026 in favor of a new SAM.gov Contract Awards API that integrators are still adapting to. USAspending's REST API remains, but its search endpoint returns nothing for key fields like NAICS, total value, and contract type, so you re-fetch each award from a second endpoint to fill them in, which for a NAICS with tens of thousands of contracts is a lot of paginated calls. Either way, you are now integrating against a moving target.
  2. Filter to your comparable set. NAICS, awarding agency, and ideally the product/service code (PSC) and set-aside. NAICS alone is too broad; it mixes very different work under one code.
  3. Pick the right value figure, and know why. Each award reports three different dollar amounts: what has been funded so far, the current value of the full deal, and the ceiling if every option is exercised. They diverge several-fold on multi-year awards. Choose the wrong one and your whole benchmark is off.
  4. Collapse modifications to the contract. Awards arrive as transactions: a base action plus every modification, each its own row. Aggregate them to one record per contract first, or a heavily-modified contract counts dozens of times and skews everything.
  5. Segment by contract pricing type. Firm-fixed-price, time-and-materials, cost-plus: within one NAICS these differ by 1,000x or more (see the table above). A blended distribution describes no real contract. Split them.
  6. Drop the noise. A meaningful share of transactions are funding-only actions worth nothing, or negative deobligations, and a few carry sentinel values in the billions. Left in, they wreck a mean and distort the tails.
  7. Compute percentiles, not an average. Read the median and the spread around it per segment, and require enough contracts in each cell to mean something. A "median" of a handful of awards is noise, not a benchmark.
  8. To place your own bid, rank it. Count how many comparable contracts fall at or below your number, then pull the nearest ones so you can judge whether they actually match your scope.
  9. Repeat next quarter. The award record updates continuously. Last quarter's spreadsheet is already stale, so the whole exercise is standing, not one-time.

That is days of work, per bid, that goes out of date. Two API calls return the same result, kept current: the benchmark endpoint for the distribution, the position endpoint for your rank plus the real comparables. If maintaining that pipeline is worth your time, the data is public and the steps above are the whole method, genuinely, go build it. If not, that is exactly what this is for.

The pricing benchmark: what a contract like this goes for

The benchmark endpoint returns the value distribution for a NAICS, segmented by contract pricing type and scopable by set-aside and product/service code. You get percentiles, never a single average, so one billion-dollar mega-vehicle cannot distort the picture.

GET /api/v1/pricing/benchmark?naics=541512&set_aside=8A "combined": { "sample_size": 331, "percentiles": { "p10": 519810, "p25": 1869701, "p50": 4613999, "p75": 12065454, "p90": 28736615 } } // plus a separate percentile block for each contract pricing type

Read the range, not a point. In this segment the middle half of contracts spans roughly $1.9M to $12M; the median alone hides that. Full benchmark API reference.

Price position: where does my number sit?

This is the endpoint that replaces the whole workflow. Pass your own contract or bid value and the same scope, and it returns your percentile rank, plus the actual comparable contracts nearest your number, so an 80th-percentile you can see is justified once you look at the deals around it.

GET /api/v1/pricing/position?naics=541512&psc=R425&value=2200000 "position": { "percentile_rank": 47, "n_comparable": 670, "interpretation": "Your value of $2,200,000 is at the 47th percentile of 670 comparable contracts (47% at or below yours, 53% above)." }, "comparable_sample": [ { "recipient_name": "MICROSOFT CORPORATION", "value": 2205707, "type_of_contract_pricing": "FIRM FIXED PRICE", "awarding_sub_agency_name": "Defense Information Systems Agency", "description": "DLIFLC MICROSOFT UNIFIED SUPPORT" }, { "recipient_name": "CYBERDATA TECHNOLOGIES, INC.", "value": 2193279, "type_of_contract_pricing": "FIRM FIXED PRICE", "awarding_sub_agency_name": "Internal Revenue Service", "description": "APPLICATION O&M, DEVELOPMENT & DATABASE ADMINISTRATION" } // ... the contracts nearest your number, each with a link to the full record ]

That is the difference between a number and a decision. The rank tells you where you stand; the contracts tell you whether standing there is justified. The judgment stays yours. Full position API reference.

Price-to-win, IGCE, and price analysis: where this fits

Contractors and contracting officers reach for historical award values under several names. They are the same market read, put to different uses:

In every case the value is the historical distribution read at the right scope. That is what these endpoints return, and the reason to use the pricing-type and PSC filters rather than a raw NAICS average.

Plans and access

The pricing endpoints are on every paid plan; both share one daily call quota, counted across the benchmark and position endpoints together.

See full pricing.

Frequently asked questions

How much does a federal contract pay?

It depends far more on the contract's pricing type and scope than on the industry code. In one NAICS, the firm-fixed-price median can be tens of thousands of dollars while cost-reimbursement work runs into the hundreds of millions. The honest answer is a distribution read at the right scope, which is what the benchmark returns.

What is the average federal contract value by NAICS?

There is no single meaningful average per NAICS, because a NAICS mixes contract types and work-sizes that differ by orders of magnitude. The useful figure is a median (and the interquartile range) read separately for each contract pricing type and scope. The tables above show those medians for the most-competed services codes.

What is price-to-win in government contracting?

Price-to-win is the competitive pricing judgment a capture team makes about the number most likely to win a specific bid, factoring in the market range, competitor behavior, the evaluation method, and the team's own cost structure. Historical comparable-award values are a core input to it, but not the entire analysis.

How do I find comparable contracts to price a federal bid?

Traditionally you pull historical awards from the public federal award data (now consolidating into SAM.gov, with USAspending as the other source), filter to your NAICS, agency, and contract vehicle, extract the awarded values, and normalize for scope and duration. The position endpoint does this in one call: it returns the comparable set for your scope and the specific contracts nearest your value.

Is this the same as FAR 15.404-1 price analysis?

It maps to it. Comparing a proposed price to the prices at which the same or similar items have previously sold is a codified price-analysis method, and it is also how a contractor sanity-checks a bid or builds an independent government cost estimate. The benchmark is that comparison, computed for you.

Why use percentiles instead of an average?

A small number of billion-dollar mega-vehicles will drag any average into fantasy. The median and the interquartile range are robust to those outliers, so they describe the contract you are actually pricing rather than the tail.

Does contract type really change the price that much?

Yes. Within computer systems design (NAICS 541512), the median moves from about $66,000 for firm-fixed-price to about $207 million for cost-plus-award-fee. Firm-fixed-price carries the small, defined buys; the cost and labor-based types carry the large staffed programs. Comparing across types is the most common pricing mistake.

What is the difference between obligated, current, and potential contract value?

Obligated value is the money placed on the contract to date, which undercounts a multi-year award still funding. Current total value is the full deal, base plus exercised options. Potential value adds every unexercised option, the ceiling. For "what a contract like this is worth," current total value is the right anchor.

Can I just build this from the public data myself?

You can; the underlying award data is public. It is a multi-day pull-filter-normalize exercise per bid, made harder by an active transition: FPDS.gov was decommissioned in February 2026 and its data feeds are being retired during 2026 as contract-award access consolidates into SAM.gov, so the DIY pipeline is now a moving target. These endpoints collapse the work into one call and keep it current. If building and maintaining that pipeline is worth your time, do it; if you want the answer defensibly in one request, use the API.

Does it tell me whether I will win, or whether to bid?

No, by design. It reports where your number sits in the historical field and shows the real comparable contracts behind that. It does not score win probability or make the bid decision. That judgment depends on the specific competition and your own strategy, and it stays with your team.

Where does the data come from and how fresh is it?

Awarded federal prime contracts, 9.8 million of them, refreshed daily from the federal award record. Values are surfaced as the system of record reports them.

Related guides