How we rank contractors
Re-scored weeklyUpdated 1,393,205 businesses scored176,841 ranked lists0 paid placements in any ranking
Every business gets one CR Score from 0 to 100, built from 8 weighted factors and calculated separately for each trade and city. Ranks come from that score and nothing else. Paid placements never affect rank.
The CR Score in one line
Each factor is scored from 0 to 1, multiplied by its weight, and summed to a score out of 100.
- 35%Reputation
- 15%Credentials
- 10%Review volume
- 10%Recency
- 10%Availability
- 10%Trade focus
- 5%Proximity
- 5%Completeness
The eight factors
What each factor measures, how, and where the data comes from.
| Factor | Weight | How it’s measured | Source |
|---|---|---|---|
| Reputation | 35% | Google star rating, adjusted for how many reviews stand behind it: adj = v/(v+m)·R + m/(v+m)·C, m = 50, C = the review-weighted mean for the trade in that city. Part = adj / 5. | Google rating and review count |
| Credentials | 15% | Active state license for this trade 0.6, bond on file 0.2, workers’ compensation on file 0.2. Left out (not zero) where the state publishes no license file we load. | State license files (CSLB, TDLR, DBPR) |
| Review volume | 10% | log10(reviews + 1) divided by log10(the most reviews on the same list + 1). | Google review count |
| Recency | 10% | Share of the business’s reviews posted in the last 12 months. | Review dates |
| Availability | 10% | Four equal signals: weekly open hours, open Saturday, open Sunday, and 24/7 or same-day service. | Opening hours, Google attributes |
| Trade focus | 10% | How clearly this is the business’s trade: Google main category 1.0, the business name names the trade 0.7, only an additional category 0.5. The highest that applies. | Google main and additional categories, business name |
| Proximity | 5% | Distance from the city: 1.0 when the business is based in the city, falling in a straight line to 0 at the trade’s service radius. | Business coordinates |
| Completeness | 5% | Website, photos, description, opening hours and a claimed profile, 0.2 each. | Business profile |
35%Reputation
People judge “best” by rating first, but a rating resting on a handful of reviews is noisy.
15%Credentials
A license, bond and insurance are what protect a homeowner when a job goes wrong.
10%Review volume
A large review base is evidence of steady work. The log scale stops one huge company from flattening everyone else.
10%Recency
A strong rating from five years ago says less about the crew working today.
10%Availability
Whether someone can come out when you need them matters as much as how good they are.
10%Trade focus
A specialist roofer should outrank a general handyman who also lists roofing.
5%Proximity
Nearby crews can quote, start and return for warranty work more easily.
5%Completeness
Businesses that publish verifiable facts are easier to check and hold to account.
Emergency lists (for example emergency plumbers in a city) move 10 points from reputation to availability, and count only 24/7 or same-day signals.
How the star rating is adjusted
A perfect score from 9 reviews should not beat a near-perfect score from a thousand.
A business with few reviews is pulled toward the local average for its trade. As its reviews grow, its own rating takes over. At 50 reviews, its rating and the average count equally.
Worked example, using an example average of C = 4.4: a 5.0 from 9 reviews ranks below a 4.8 from 1,049.
| Order | Business | Google rating | Reviews | Weight on own rating | Adjusted rating |
|---|---|---|---|---|---|
| #1 | Business B | 4.8 | 1,049 | 95% | 4.78 |
| #2 | Business C | 4.6 | 140 | 74% | 4.55 |
| #3 | Business A | 5.0 | 9 | 15% | 4.49 |
Businesses A, B and C are illustrations, not real companies.
When data is missing
We never fill a gap with a guess.
If a factor’s input is missing, the factor is left out rather than set to zero or to an average. The score is calculated over the factors we could measure, and each business shows its coverage: the measured weight out of 100.
In score bars a measured factor is solid. A factor we have not collected yet is hatched:
Example only: no license file for this state and no review dates yet, so credentials and recency are hatched.
We never describe a business as unlicensed. “License verified” appears only when we matched an active license in a state file, with the month we checked. How we verify licenses
Who gets ranked
Some businesses are listed but not ranked; some are not listed at all.
- To be ranked for a trade, a business needs a confident trade match (focus 0.5 or more) and either 3+ Google reviews or a claimed profile.
- Everyone else who serves the city appears unranked in a compact “Also serving” table on the same page.
- Ties are broken by score, then weekly open hours, then completeness, then name.
| Rule | Effect | Businesses affected |
|---|---|---|
| Only trade evidence is the “General Contracting” fallback tag | Never ranked on that tag alone. | — |
| Trade focus below 0.5 | Listed in “Also serving”, not ranked. | — |
| Fewer than 3 reviews and not claimed | Listed in “Also serving”, not ranked. | — |
| Permanently closed | Removed from every list. | — |
| Featured or any paid status | Never read by the score; never changes a rank. | — |
Service areas and coverage
Contractors travel, so a city list includes businesses based nearby that serve it.
Each trade has a service radius. A business based inside the city scores 1.0 for proximity; one based elsewhere scores less the further away it is, reaching 0 at the radius. Every card says where the business is based and how far that is.
Credentials are scored only where a state publishes license records we load. Elsewhere the factor is left out, so a business is never marked down because its state keeps no public file.
| Trade | Radius | Emergency list |
|---|---|---|
| Roofers | 40 mi (64 km) | Yes |
| Plumbers | 25 mi (40 km) | Yes |
| Electricians | 25 mi (40 km) | Yes |
| HVAC contractors | 25 mi (40 km) | Yes |
| General contractors | 25 mi (40 km) | No |
| Painters | 15 mi (24 km) | No |
| Landscapers | 15 mi (24 km) | No |
| Handymen | 15 mi (24 km) | No |
| Kitchen remodelers | 25 mi (40 km) | No |
| Bathroom remodelers | 25 mi (40 km) | No |
| Flooring contractors | 25 mi (40 km) | No |
| Tile installers | 15 mi (24 km) | No |
| Drywall contractors | 15 mi (24 km) | No |
| Concrete contractors | 25 mi (40 km) | No |
| Fence contractors | 25 mi (40 km) | No |
| Deck builders | 25 mi (40 km) | No |
| Siding contractors | 40 mi (64 km) | No |
| Window installers | 40 mi (64 km) | No |
| Gutter installers | 25 mi (40 km) | No |
| Insulation contractors | 25 mi (40 km) | No |
| Solar installers | 40 mi (64 km) | No |
| Garage door repair companies | 25 mi (40 km) | Yes |
| Foundation repair companies | 40 mi (64 km) | No |
| Tree services | 25 mi (40 km) | Yes |
| Masonry contractors | 25 mi (40 km) | No |
| Water damage restoration companies | 40 mi (64 km) | Yes |
| Home builders | 40 mi (64 km) | No |
| Demolition contractors | 25 mi (40 km) | No |
Where the data comes from
- Google Business data: star rating, review count, review dates, categories, opening hours, coordinates and listed attributes.
- State license files: license number, classification, status, expiry, bond and workers’ compensation, loaded monthly.
- Business-submitted data: businesses that claim their profile can correct hours, trades and contact details. Changes are checked before they count.
A weekly job rescores the cities that were scored longest ago first. Scores are stored, not computed when you load a page, so a business’s number is the same on its profile and on every list it appears in. Each list shows the date it was last scored.
When a page shows a ranking
- A trade × city list is published and indexed with 10 or more rankable businesses. With 5–9 it is shown but kept out of search indexes; below 5 we point to the state list instead.
- Emergency lists need at least 3 businesses with 24/7 or same-day signals.
- We don’t publish a separate page when more than 70% of its top 10 matches its parent list; it becomes a section of the parent.
- The top 25 businesses appear in full; the rest of the ranked list appears in a compact table on the same page.
- Every “best” names its basis and date: best by CR Score, scored on a stated day.
What businesses can and cannot pay for
Businesses can pay for
- A Featured slot: a block labelled “Featured”, outside the ranked list, with at most 3 businesses per page, rotated daily at an equal price
- Pro profile tools: photos, a website link, review invites and profile stats
- Leads from the quote form on a page where they hold a Featured slot
Businesses can never pay for
- A higher rank, on any list
- A change to their CR Score or any factor in it
- Removal of a competitor, or of facts they dislike
Each Featured card also shows that business’s actual rank, so readers see where it really places. Featured businesses are left out of the ranked list’s structured data.
Found a wrong fact? Our editorial policy explains how to request a correction and how fast we act.