Aggregated pricing-fairness benchmarks for 31 categories, built from 3,307 real contractor, home service and auto repair quotes that people uploaded to be scored. Free to download and reuse with attribution.
Download the CSV →Every row is one work category, aggregated across the quotes people have uploaded to QuoteScore to be checked. Each of those quotes was split into line items and scored 0-100 against regional pricing benchmarks, where a high score means the buyer was quoted at or below the market rate and a low score means specific lines came in above it.
What makes the file worth citing is that it is not survey data or industry estimates. It is what real quotes actually said, scored the same way for every category, which is why the categories can be ranked against each other at all.
What it is not: it is not a cost database. It will not tell you what a roof costs in your ZIP code. It tells you how often quotes in a category come in above market and by how much, in score terms. For per-job pricing, the cost guides are the right surface, and to check one specific quote, run it through the checker.
31 categories, 3,307 analyzed quotes. Ranked worst-average-score first, which is the order the file itself uses. This is a preview of the first rows; the CSV has all 31.
| Category | Quotes | Avg score | Median | Overpriced |
|---|---|---|---|---|
| Auto | 671 | 48.4 | 45 | 57% |
| Siding | 52 | 48.8 | 45 | 52% |
| Paving | 59 | 53 | 55 | 47% |
| Roofing | 285 | 53 | 55 | 44% |
| Plumbing | 239 | 53.6 | 55 | 47% |
| Windows | 89 | 54.1 | 65 | 40% |
| Concrete | 87 | 54.3 | 55 | 48% |
| Collision | 30 | 55.9 | 60 | 43% |
Generated live from the same query that renders the CSV, so this table and the file can never disagree. Cross-check the totals against the public API at /api/stats/public.
| Column | Type | Meaning |
|---|---|---|
category |
string | The work category the quote falls into, as classified during analysis (for example Roofing, HVAC, Auto). One row per category. |
n_quotes |
integer | How many analyzed quotes the row aggregates. Never below 5 — categories with fewer are omitted from the file entirely, which is what makes publishing it safe. |
avg_score |
number (0-100, one decimal) | Mean QuoteScore across the category. Higher is a better price for the buyer: 80-100 is at or below market, 30-49 is overpriced, 0-29 is a red flag. |
median_score |
number (0-100, one decimal) | Median QuoteScore across the category. Worth reading alongside the mean, since a handful of extreme quotes can pull the average without moving the typical case. |
share_flagged_overpriced |
number (0-1, four decimals) | Proportion of the category's quotes scoring below 50, the top of the Overpriced band. 0.31 means 31 percent of quotes in that category came in overpriced. |
5 columns, header row included, RFC 4180 quoted, UTF-8.
Free to use, share, and build on, including commercially, with attribution to QuoteScore (quotescore.ai). Attribution is the only condition. Copy this credit line:
QuoteScore Contractor Quote Benchmarks, QuoteScore (https://quotescore.ai), CC BY 4.0
Full license terms: creativecommons.org/licenses/by/4.0/
The file is generated on request from the live database and cached for an hour, so a download is never more than an hour behind the current data. New quotes are analyzed continuously, so both the category list and the numbers shift over time: a category appears once it reaches 5 analyzed quotes. If you are citing a specific figure, cite the date you downloaded it.
Every row aggregates at least 5 quotes. Categories below that threshold are dropped from the file entirely rather than rounded or masked, so no row can describe a small enough group to be traced back to one person.
No individual quote data of any kind leaves the database. The file contains no quote text, no free text, no company name, no city, state or ZIP, no email address, no analysis id, and no per-analysis timestamp. The only strings in it are category names.
Uploaded files themselves are deleted immediately after analysis. What is retained is the aggregate pricing pattern, which is what makes a published sample size possible in the first place. See our privacy policy and the methodology page.
Upload the quote you already have. Free, instant, no signup.
Check My Quote Free →