Skip to content

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.

  1. 35%Reputation
  2. 15%Credentials
  3. 10%Review volume
  4. 10%Recency
  5. 10%Availability
  6. 10%Trade focus
  7. 5%Proximity
  8. 5%Completeness
CR Score = Σ weight × partΣ measured weight × 100
Σ runs over the factors measured for that business. Unmeasured factors drop out of both sums.

The eight factors

What each factor measures, how, and where the data comes from.

CR Score factors, weights and data sources
FactorWeightHow it’s measuredSource
Reputation35%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
Credentials15%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 volume10%log10(reviews + 1) divided by log10(the most reviews on the same list + 1).Google review count
Recency10%Share of the business’s reviews posted in the last 12 months.Review dates
Availability10%Four equal signals: weekly open hours, open Saturday, open Sunday, and 24/7 or same-day service.Opening hours, Google attributes
Trade focus10%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
Proximity5%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
Completeness5%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.

Adjusted rating = vv + m · R + mv + m · C
v = review count · R = Google rating · C = review-weighted mean rating for the trade in that city · m = 50

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.

Worked example of the Bayesian adjustment
OrderBusinessGoogle ratingReviewsWeight on own ratingAdjusted rating
#1Business B4.81,04995%4.78
#2Business C4.614074%4.55
#3Business A5.0915%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:

85/100
75% of factors measured

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.
Exclusion rules
RuleEffectBusinesses affected
Only trade evidence is the “General Contracting” fallback tagNever ranked on that tag alone.—
Trade focus below 0.5Listed in “Also serving”, not ranked.—
Fewer than 3 reviews and not claimedListed in “Also serving”, not ranked.—
Permanently closedRemoved from every list.—
Featured or any paid statusNever 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.

Service radius by trade
TradeRadiusEmergency list
Roofers40 mi (64 km)Yes
Plumbers25 mi (40 km)Yes
Electricians25 mi (40 km)Yes
HVAC contractors25 mi (40 km)Yes
General contractors25 mi (40 km)No
Painters15 mi (24 km)No
Landscapers15 mi (24 km)No
Handymen15 mi (24 km)No
Kitchen remodelers25 mi (40 km)No
Bathroom remodelers25 mi (40 km)No
Flooring contractors25 mi (40 km)No
Tile installers15 mi (24 km)No
Drywall contractors15 mi (24 km)No
Concrete contractors25 mi (40 km)No
Fence contractors25 mi (40 km)No
Deck builders25 mi (40 km)No
Siding contractors40 mi (64 km)No
Window installers40 mi (64 km)No
Gutter installers25 mi (40 km)No
Insulation contractors25 mi (40 km)No
Solar installers40 mi (64 km)No
Garage door repair companies25 mi (40 km)Yes
Foundation repair companies40 mi (64 km)No
Tree services25 mi (40 km)Yes
Masonry contractors25 mi (40 km)No
Water damage restoration companies40 mi (64 km)Yes
Home builders40 mi (64 km)No
Demolition contractors25 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.