Original public bid-tab analysis
Subcontractor Bidding Report 2026: Bidder Counts & Win Margins by Trade
Based on 9,801 classified public bid-tab projects from 10 portals across 16 states, this report compares subcontractor trade competition using generated, sample-labeled figures.
Executive summary
Trade-Level Competition, Not a Blended Market Average
Classified project sample
9,801
Sample: 10 portals, 16 states
Overall single-bid share
9.2%
Sample: 9,801 projects with bidder counts
Trades passing win-margin gate
6
Sample: 6 trades pass the median-winning-bid gate
Per-trade findings
Winning Bids, Bidder Counts, and Win Margins by Trade
| Trade | Projects | Median winning bid | Median bidders | Winner spread | Vs. estimate |
|---|---|---|---|---|---|
| Electrical | 322 | $115,162Sample: 320 | 3Sample: 322 | 18.6%Sample: 264 | Insufficient dataSample: 3 |
| HVAC and Mechanical | 255 | $136,000Sample: 255 | 3Sample: 255 | 17.7%Sample: 207 | Insufficient dataSample: 0 |
| Plumbing | 55 | Insufficient dataSample: 55 | Insufficient dataSample: 55 | Insufficient dataSample: 42 | Insufficient dataSample: 0 |
| Concrete | 957 | $800,700Sample: 957 | 4Sample: 957 | 7.9%Sample: 867 | Insufficient dataSample: 12 |
| Structural Steel | 54 | Insufficient dataSample: 54 | Insufficient dataSample: 54 | Insufficient dataSample: 41 | Insufficient dataSample: 2 |
| Sitework and Earthwork | 7,699 | $1,185,000Sample: 7,697 | 3Sample: 7,699 | 7.7%Sample: 6,986 | 6.5% below estimateSample: 6,390 |
| Roofing | 295 | $198,977Sample: 295 | 4Sample: 295 | 17.7%Sample: 255 | Insufficient dataSample: 0 |
| Drywall | 0 | Insufficient dataSample: 0 | Insufficient dataSample: 0 | Insufficient dataSample: 0 | Insufficient dataSample: 0 |
| Demolition | 164 | $177,646Sample: 164 | 5Sample: 164 | 15.7%Sample: 151 | Insufficient dataSample: 0 |
Bidder competition
How Many Competitors Appear on Public Bid Tabs
Overall bidder-count distribution
Sample: 9,801 classified projects with bidder counts.
Single-bid share by gated trade
9.2%
Overall sample: 9,801 projects with bidder counts.
Winner vs. estimate
The Estimate Variance Gate Passes for Sitework and Earthwork
Sitework and Earthwork has enough winning-bid and engineer-estimate pairs to publish this comparison. The generated median result is 6.5% below estimate, and the generated below-estimate share is 64.7% across 6,390 projects.
Methodology
Snapshots, Gates, and DOT Skew
The script reads committed bid-tab snapshots, dedupes projects by source portal and solicitation number, and classifies each project to at most one trade using conservative category and title patterns. The source corpus contains 17,055 projects and 71,701 joined bid rows.
Every metric reports its own sample. Winner spread is limited to complete rosters where joined bid rows match reported bidder count. Estimate variance requires both winning bid and engineer estimate fields.
The committed snapshots include many transportation and DOT-style bid tabs. That gives deeper public works coverage for sitework, roadway, paving, and related scopes than for some vertical-building trades.
For broader project-level context, compare this page with our general transportation bid statistics.
Next steps
Use Award Context With Live Bid Discovery
Citation
How to Cite This Report
ConstructionBids.ai. Subcontractor Bidding Report 2026: Bidder Counts & Win Margins by Trade. Generated from committed public bid-tab snapshots dated through July 2, 2026. https://constructionbids.ai/subcontractor-bidding-report-2026
FAQs
Questions About the Subcontractor Bidding Report
What does this subcontractor bidding report measure?
It measures public bid-tab projects classified by subcontractor trade. The report focuses on bidder counts, winning bids, winner-to-second spreads, and estimate variance where the generated dataset has enough sample depth to publish a figure.
How is this different from general transportation bid statistics?
The transportation statistics page looks at public works competition more broadly. This report narrows the lens to trade-level subcontractor patterns so bidders can compare competition by scope type instead of reading one blended market average.
Why are some trade metrics blank?
Each metric has its own data gate. If the snapshot corpus lacks enough winning bids, bidder counts, engineer estimates, or complete rosters for that metric, the page shows insufficient data instead of publishing a weak number.
Why does winner spread require a complete roster?
Winner spread compares the low bid with the second-lowest bid. A partial roster can distort that gap, so the script only counts projects where joined bid rows match the reported bidder count and enough priced bids are present.
Can this report price a live subcontractor bid?
No. It is historical context from public bid tabs, not a substitute for estimating the drawings, specifications, addenda, wage rules, schedule, site logistics, bond requirements, and risk on a specific opportunity.
Why does the methodology warn about DOT skew?
Several committed snapshots are transportation and DOT-style bid tabs. That gives deeper public works coverage for sitework and road-related scopes than for some vertical-building trades, so the page states that limitation directly.
Where can subcontractors find current bid opportunities?
Use Sub-Hub for live public bid discovery by trade, then verify documents, addenda, and submission rules on the original agency portal before bidding. This report is award context, not the live feed.