Skip to content

GSA Labor Rates

Updated

What federal contractors charge per hour on GSA Schedule contracts, by role, education, experience, and vendor, read from the awarded record.

What does a federal contractor bill per hour? On a GSA Multiple Award Schedule (MAS), the answer is on the record: every schedule holder's awarded labor rates are public. This page turns roughly 317,000 of them into percentile benchmarks by role, education level, years of experience, and vendor. As a first anchor, the median awarded ceiling rate runs about $183/hour for a Program Manager, $139 for a Software Engineer, and $123 for a Business Analyst. Every figure below is computed from awarded GSA Schedule labor categories, not a salary survey and not a single blended average.

How to find GSA labor rates

Every awarded GSA Schedule labor rate is public and free to read. Three GSA sites hold them, and each answers a different question.

  1. The going rate for a role: CALC+. At buy.gsa.gov/pricing, choose CALC+ Quick Rate for Hourly Labor Ceiling Prices. Search a labor category such as "Program Manager" and narrow it by education and years of experience. The tool reports the 25th percentile, median, and 75th percentile of the matching rates (or the average and standard deviation), lists each rate with its vendor and contract number, and exports the result. For a one-off "what does this role charge" question, it is the right tool.
  2. One vendor's full rate card: the GSA Advantage price list. Each contract number in CALC+ links to that vendor's published price list on GSA Advantage: every labor category on the contract with its ceiling rate, usually with the category descriptions and qualifications alongside.
  3. Everyone on a Special Item Number: GSA eLibrary. At gsaelibrary.gsa.gov, search a SIN (54151S is IT Professional Services) or a contractor name. The listing shows every contractor on that SIN, each with a "Terms & Conditions / Price List" link to the same published price list.

GSA's other pricing tools go further but are not open to everyone. Prices Paid (actual task-order rates from approved invoices), the CALC+ IGCE builder, and the Services Pricing Toolkit are restricted to users with a .gov or .mil email address. The ceiling-rate search above and the Bureau of Labor Statistics wage search are open to anyone.

How these rates are recorded, and why reading them is hard

Every rate starts as a line in a vendor's own price list. A company proposing a Multiple Award Schedule contract writes its own labor categories, the education and experience each one requires, and an hourly price for each. GSA negotiates those prices against what the company charges its commercial customers, seeking the price its most favored customer gets (GSAM 538.270-1). The contract then ties the rate to a named "basis of award" customer, so a later price cut to that customer has to reach the government too (GSAR 552.238-81). What comes out is a not-to-exceed ceiling, set to cover every order size, type, and region, which is why task orders are negotiated below it. CALC republishes those price lists as one searchable record: as of October 17, 2026, 317,033 rates from 6,487 vendors on 6,610 schedule contracts.

From there, five things make an honest read harder than it looks:

  • Every vendor names its own roles. There is no controlled vocabulary. The median vendor prices 22 distinct category names, the record holds 130,273, and 2,108 of them contain "program manager". A benchmark is only as good as the variants it pools, and pooling is a judgment, so we show how a pooled match breaks down by title instead of hiding it.
  • The out-year prices are already in the contract. Escalation is priced at award and changes only through a contract modification under the agreed economic price adjustment method (GSAR 552.238-120). 98% of rates carry a next-year price and 95% a second-year one. The typical step is 2.8%, the middle half runs 2.0% to 3.4%, and about one rate in seven does not rise at all. Escalation read this way is a fact from the record, not an assumption.
  • Industry comes from the SIN, and only partly. Rates are filed under Special Item Numbers, not NAICS codes. A SIN's leading digits follow NAICS, but 46% of rates sit under a SIN that resolves only to a five-digit family (IT Professional Services, 54151S, spans 541511 to 541519), and a quarter are listed under more than one SIN. A NAICS scope has to match the family, not claim a six-digit precision the record does not carry.
  • The same attribute arrives spelled several ways. Education comes as "HS", "High School", and "High School Equivalent"; clearance, business size, and worksite have their own variants. GSA's public API answers a filter value it does not recognize with results rather than an error, so a typo reads like a real answer. Every field has to be normalized before anything is counted.
  • Only today's prices exist. CALC carries the current awarded rates, not their history: when a schedule is modified, the old price leaves the record. A broad search also stops counting at 10,000 results. We take the full set daily, remove rows that appear twice, and report percentiles only where at least 20 rates match.

None of this is exotic, and for a single role the free tools above are the right answer. Each step is a place to get a number quietly wrong, and a wrong rate looks exactly as confident as a right one.

What these rates are, and what they are not.

These are awarded not-to-exceed ceiling rates: the maximum a vendor may bill for a labor category on its schedule, fully burdened (they already include fringe, overhead, G&A, and fee). They are worldwide ceilings, so real task-order rates are typically negotiated somewhat below them. They are a market read for a should-cost or IGCE labor estimate, and a sanity check on a proposed rate. They are not your own cost build-up, not a wrap-rate calculator, and not a win predictor. The evidence goes in front of you; the bid decision stays with you.

What is a fair labor rate on a GSA schedule?

There is no single rate for a role, because a role is a range. Below is the awarded ceiling-rate distribution for the labor categories contractors compete on most, read as percentiles: the 25th, the median, and the 75th. The middle-half spread (p25 to p75) is the useful band. A rate at the 25th percentile is aggressive; the 75th is on the high side of the market.

Labor category Rates p25 Median p75
Subject Matter Expert 9,300 $158 $202 $255
Program Manager 7,600 $150 $183 $222
Data Scientist 1,100 $136 $168 $202
Project Manager 11,500 $125 $152 $184
Systems Engineer 4,800 $112 $139 $173
Software Engineer 3,400 $110 $139 $172
Cybersecurity / InfoSec Analyst 2,000 $105 $131 $163
Business Analyst 4,000 $99 $123 $153
Management Analyst 2,000 $93 $119 $156
Systems Administrator 2,000 $93 $115 $144
Technical Writer 4,000 $77 $96 $119
Help Desk / Support 2,200 $62 $81 $105

Median current-year not-to-exceed ceiling rate, in dollars per hour, from awarded GSA Schedule labor categories. Titles vary between vendors, so each row pools the awarded variants of the role (a "Program Manager" reads across "Program Manager II", "Senior Program Manager", and so on); the percentiles smooth over the naming noise. Rate counts are rounded.

Ceiling rate vs. the rate you will actually bill

The single most common misread of this data: a schedule ceiling rate is not the rate work is actually performed at. It is the awarded maximum. On a real task order, rates are negotiated down from the ceiling, and independent analyses put actual billed rates roughly 10 to 20 percent below the not-to-exceed ceiling, varying by order size, competition, and geography.

So read these numbers as the top of the band. For a competitive bid, the realistic target usually sits in the lower-middle of the range, around the 25th to 50th percentile, not at the ceiling. The ceiling tells you what the market has been allowed to charge; where you price inside it is the judgment.

What moves a labor rate: education and experience

Two things move a labor rate more than the title does. Both are on the record, and both are what a defensible should-cost estimate adjusts for.

Education

Across engineering and technical categories, the required education level steps the median ceiling rate up cleanly:

Minimum education Median rate
High school $89
Associate's $107
Bachelor's $138
Master's $186

Experience

The minimum years of experience a rate is priced at moves it further, roughly tripling from entry level to the most senior band:

Minimum experience Median rate
0 to 2 years $88
3 to 5 years $120
6 to 10 years $156
11 to 20 years $206
20+ years $236

Business size is a smaller but real factor: the median ceiling rate on other-than-small vendors runs about $136 against $125 on small businesses, the burden difference the large primes carry. This is why a benchmark is only honest when it is read against your own lane: your role, your education and experience floor, your business size.

How much to escalate year over year

A proposal has to price the option years, not just the base, and justify the escalation it applies. The awarded record answers that too. The typical year-over-year change in the ceiling rate is about 2.7 to 2.8 percent, and it holds roughly flat from the first option year into the second, measured as the median change across the awards that carry out-year pricing. That is a defensible starting escalation to build option-year rates from, tied to what the market actually awarded rather than a flat guess.

Read a competitor's rate card

Because the awarded rates carry the vendor, you can read one company's schedule rate card: what a specific competitor, or your own firm, has been awarded for a category. It is the fastest way to see where your number sits against a named incumbent. As a concrete example, Booz Allen Hamilton's awarded Program Manager rates run a median near $252/hour against a market median of about $183, the burden and positioning of a top-tier prime made visible. Scope any role to a vendor with the vendor filter on the endpoint.

Scope a rate to your industry (NAICS)

A labor category means something different under an IT schedule than under an engineering or logistics one. Each rate carries the Special Item Number (SIN) it was awarded under, and SINs are aligned to NAICS, so you can scope a role to your solicitation's industry: an "engineer" rate under IT systems design (NAICS 541512) reads differently from one under engineering services (541330). That crosswalk, SIN to NAICS, is one of the pieces the free tools leave you to assemble by hand.

Wrap rates, SCA floors, and where CALC fits

Three rate concepts get conflated constantly. Getting them straight is half of pricing labor:

  • Fully burdened / wrap rate. Your direct labor (an employee's base wage) loaded with fringe, overhead, and G&A, plus fee. The "wrap rate" is that multiplier. The GSA ceiling rates on this page are already fully burdened prices, not raw wages, so they are what a wrapped rate is ultimately compared against, not a substitute for computing your own.
  • SCA / Service Contract Labor Standards. A Department of Labor wage determination sets a mandatory minimum wage plus fringe for non-exempt service workers by locality. That is a floor, and it sits well below a burdened schedule ceiling. Do not confuse a wage-determination minimum with a market rate.
  • CALC ceiling rate. The awarded not-to-exceed price on a GSA schedule, which is what this data is. GSA's CALC+ tool also has a separate mode built on Bureau of Labor Statistics wage data; these figures are the awarded-contract mode, real prices from real schedules, not modeled from BLS wages.

The labor-rate endpoint

Pass a labor category and, optionally, an education level, experience range, NAICS, or vendor. The endpoint returns the awarded ceiling-rate distribution as percentiles, the typical out-year escalation, real comparable rates, and, when your match pools several title variants, how it breaks down so you can narrow it.

GET /api/v1/pricing/labor-rates?labor_category=Program%20Manager&education_level=BA&min_experience=5&max_experience=15

"rate_distribution": {
  "sample_size": 5259,
  "unit": "USD_per_hour",
  "percentiles": { "p10": 127.99, "p25": 154.67, "p50": 184.76, "p75": 221.56, "p90": 264.78 }
},
"escalation": {
  "basis": "median year-over-year change in awarded ceiling rate",
  "median_next_year_pct": 2.6, "median_second_year_pct": 2.7
},
"category_breakdown": [
  { "labor_category": "Program Manager", "sample_size": 1336, "median": 182.42 },
  { "labor_category": "Program Manager II", "sample_size": 318, "median": 197.21 }
]

Scope it to one vendor's rate card with &vendor=booz%20allen, or to an industry with &naics=541512. A query with too few rates comes back with the nearest real category names to search instead, so a typo does not dead-end. Full labor-rate API reference.

Where this fits: should-cost, IGCE, price-to-win

Labor rates are one half of pricing a services bid. Contract value is the other. Contractors and contracting officers reach for both under several names:

  • Should-cost / IGCE labor. An independent government cost estimate for a services requirement is built category by category: the labor mix, the hours per category, and a defensible loaded rate for each. These awarded ceilings are the standard reference for that rate. GSA's own CALC+ IGCE tool builds one, for users with a .gov or .mil email address.
  • Price-to-win labor build-up. A capture team's target rate for each labor category on a bid. The awarded market range is a core input; your cost structure and the competition do the rest. This serves the input, not the whole judgment.
  • FAR 15.404-1 price analysis. Comparing a proposed rate to rates for the same labor previously awarded is a codified reasonableness method. This is that comparison, computed.

For the other half, what a contract like this is worth as a whole, see the federal contract pricing benchmarks: award-value distributions by NAICS, contract type, and set-aside, with a price-position read. Labor rate plus contract value is the full should-cost picture, and both are read from the same awarded record.

Plans and access

The labor-rate endpoint is on every paid plan. Unlike the contract-value benchmark and position endpoints, which are Pro, this is on every paid plan: raw rates are a base dataset. It runs under the standard per-key rate limit (1,000 requests per hour on paid plans), enough to price a full labor mix, not a handful of lookups.

  • Developer: included.
  • Pro: included.
  • Free: not included; upgrade to unlock.

See full pricing.

Frequently asked questions

How do I find GSA labor rates?

GSA publishes every awarded schedule labor rate for free. Search a role in CALC+ Quick Rate for Hourly Labor Ceiling Prices at buy.gsa.gov/pricing for the going rate with its percentiles. Open a vendor's contract number to read its full price list on GSA Advantage. Search a Special Item Number in GSA eLibrary to list every contractor on it, each with a link to its price list. The steps and their limits are above.

What is the average GSA labor rate for a program manager in 2026?

Across awarded GSA Schedule labor categories, the median not-to-exceed ceiling rate for a Program Manager is about $183 per hour, with the middle half of awards running roughly $150 to $222. A Software Engineer runs about $139 at the median, a Data Scientist about $168, and a Business Analyst about $123. These are fully burdened ceiling rates; actual billed rates on task orders typically run 10 to 20 percent below.

What is the difference between a ceiling rate and the actual awarded rate?

A ceiling rate is the not-to-exceed maximum a vendor may bill for a labor category on its GSA schedule. The actual rate on a task order is negotiated down from that ceiling and, by independent analyses, tends to land 10 to 20 percent lower, depending on order size, competition, and geography. Use the ceiling as the top of the band, not the expected price.

What is a fully burdened or wrap rate?

A fully burdened rate is an employee's direct labor cost loaded with fringe, overhead, and general and administrative expense, plus fee. The "wrap rate" is the multiplier applied to base labor to reach it. GSA ceiling rates are already fully burdened prices, so they are what a wrapped rate is compared against, not a way to compute your own wrap rate.

How do I find a competitor's GSA Schedule labor rates?

Awarded schedule rates are public and carry the vendor, so a competitor's rate card is readable. Doing it by hand across a role means filtering the awarded data to that vendor and clustering their category variants. The labor-rate endpoint does it in one call with a vendor filter, returning that vendor's rate distribution for the category.

How do I build an IGCE for labor?

An independent government cost estimate for labor is built category by category: identify the labor mix, the hours per category (the level of effort), and a defensible loaded hourly rate for each, then sum hours times rate with documented rationale. Awarded GSA ceiling rates are a standard basis for the rate. GSA's CALC+ IGCE tool builds the estimate, but it is open only to users with a .gov or .mil email address.

What is GSA CALC / CALC+?

CALC is the Contract-Awarded Labor Category tool, now branded CALC+, which publishes awarded not-to-exceed ceiling rates from GSA Multiple Award Schedule contracts. It has two modes: an awarded-contract mode (real schedule prices) and a separate mode built on Bureau of Labor Statistics wage data. The rates on this page are the awarded-contract mode.

How much should I escalate labor rates year over year?

The awarded record shows a typical year-over-year increase of about 2.7 to 2.8 percent, roughly flat from the first option year into the second, measured as the median change across the awards that carry out-year pricing. That is a defensible starting point for option-year escalation, tied to awarded data rather than a flat assumption.

How is an SCA wage determination different from a GSA schedule rate?

A Service Contract Act (now Service Contract Labor Standards) wage determination is a Department of Labor minimum wage plus fringe for non-exempt service workers in a locality. It is a mandatory floor and sits well below a fully burdened schedule ceiling. A wage-determination minimum is not a market rate.

Why use percentiles instead of an average?

A single average hides the spread and is pulled around by outliers. The median and the interquartile range (p25 to p75) describe the rate you are actually pricing, and the band is what tells you whether a proposed rate is aggressive or high.

Are these rates fully burdened, and do they include profit?

Yes. GSA ceiling rates are fully burdened not-to-exceed prices: they already include fringe, overhead, general and administrative expense, and fee. They are prices, not raw wages.

Can I just build this from GSA CALC myself?

You can; GSA publishes the data free through CALC+ and a public API, and for a one-off lookup that is the right tool. The work is in doing it repeatably: clustering the hundred-thousand-plus distinct category names, working around the 10,000-result cap, crosswalking SIN to NAICS, adding escalation math, reading competitors by vendor, and keeping a whole labor mix current every quarter. The endpoint collapses that into one call and keeps it fresh.

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

Awarded GSA Multiple Award Schedule labor categories, roughly 317,000 ceiling rates from about 6,500 vendors, from GSA's Contract-Awarded Labor Category data, refreshed daily.

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.