Check My Quote Free →

The contractor quote pricing dataset

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 →
CC BY 4.0 · no signup, no API key · covers 2026-02-18 to 2026-08-03

What this dataset is

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.

What is in it right now

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.

CategoryQuotesAvg scoreMedianOverpriced
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.

Field dictionary

ColumnTypeMeaning
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.

License and how to cite it

CC BY 4.0

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/

How it is updated

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.

Why this can be published at all

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.

Using it

Check a quote against this data

Upload the quote you already have. Free, instant, no signup.

Check My Quote Free →