Pulled 506 local listings from Google Maps. The rating field is useless (88% are 4.5+).

Discussion in 'Google' started by asphero hong, Nov 14, 2026 at 5:21 AM.

  1. #1
    Ran 12 searches (4 keyword variants x 3 Texas cities) to see what you can actually get out of Google Maps for a local service niche, and then looked at which fields are worth building a filter on.

    The ceiling is real. A single Maps query returns roughly 120 results, and paginating past that gives you the same listings back. So "scrape every plumber in Dallas" is not something one search can do. You have to multiply queries.

    What worked: same city, four phrasings that people actually type (roofing contractor / roofing company / roofer / commercial roofing). Each phrasing returns a different slice rather than a subset of the first one. 12 searches got me 506 unique listings after de-dupe.

    That is the easy part. Here is what the data actually looks like.

    Ratings are noise. 88.3% of the 506 sit between 4.5 and 5.0. Only 6.1% are below 3.5. If your targeting is "rating above 4", you have selected 94% of the market. It is not a filter, it is a formality.

    Review count is the real filter. Median 39 reviews, mean 122.8, and 53.8% have fewer than 50. That is roughly the line between "the owner answers the phone" and "there is a receptionist and somebody doing marketing". Splitting on review count actually changes who you are talking to.

    Contactability across the 506:

    • 91.9% have a website
    • 98.4% have a phone
    • 6.9% have a phone but no website

    That last group is the one nobody mentions. They are paying for a Google Business Profile and have no site, which usually means no SEO retainer, no ad spend, no agency. Depending on what you sell it is either your best list or your worst, but it is definitely the most differentiated slice in the file.

    Email hit rate: on a separate 52-listing sample with website crawling on, 29.2% of the ones that had a website exposed a real address. The rest you are guessing at, and guessing is how you end up in spam.

    One trap worth naming. De-duplicating on place_id gives you a clean file that is still wrong for outreach. In my 506, seven street addresses accounted for 17 records (virtual office suites downtown), and 17 brand names appeared at 36 different listings (multi-location chains). If you are counting companies, place_id is the wrong key. If you count physical locations, it is the right one. Mixing the two is how a 506-row list turns into an argument with a client about why three of the rows are the same company.

    Curious what the rest of you use as the actual qualification filter for local leads. Review count, no-website, or something I am not thinking of.
     
    Last edited: Nov 14, 2026 at 5:27 AM
    asphero hong, Nov 14, 2026 at 5:21 AM IP
  2. sarahk

    sarahk iTamer Staff

    Messages:
    29,135
    Likes Received:
    4,617
    Best Answers:
    124
    Trophy Points:
    665
    #2
    Yeah, I'm getting flak for having only 5* reviews, but in general people only review if it's really bad or really good.
     
    sarahk, Nov 14, 2026 at 5:36 AM IP
  3. WebProfitLab

    WebProfitLab Peon

    Messages:
    18
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    3
    #3
    From the contractor side, a few things the data can't show:
    Review count tracks the trade as much as company size. A roofer doing a handful of big jobs a month collects reviews far more slowly than a plumber running dozens of service calls a week, so a roofing company with 40 reviews can be bigger than a plumber with 150. I'd only compare review counts within one trade.
    Phone but no website often means referral-fed rather than struggling. Plenty of those owners are booked out through word of mouth. They're short on time, not leads, so a pitch for more leads misses them, while help with quoting, scheduling or follow-up might land.
    And what gets a contractor to reply is naming one specific thing on their own listing (no photos of finished work, reviews with no owner response, wrong hours) rather than sending a generic audit. It shows you actually looked.
     
    WebProfitLab, Nov 14, 2026 at 10:17 AM IP
  4. localseoservicesagency

    localseoservicesagency Peon

    Messages:
    6
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    1
    #4
    I've done the same kind of pull for trades work and I landed in almost the same place: rating is useless as a filter, review count is the first cut. What I stack on top of review count is recency and replies. A roofer with 40 reviews where the newest is eight months old and the owner never replies is a different prospect from one with 30 reviews, three in the last month, and the owner answering every one. The second business is alive and paying attention to its profile, which means it will usually take a call.

    The no-website slice is the one I spend the most time on too, but I qualify it one step further. Phone-only businesses that have uploaded photos recently are usually owner-operated and reachable, while a bare profile with no photos and no posts is often a listing somebody set up once and forgot. I check photos and posts before I call, because a dead profile usually means a dead number too.

    One thing that saved me arguments: I de-dupe on phone number, not place_id or name. Chains share names and suites share addresses, but the phone is usually the real business. When two listings share a number I treat them as one company and keep the stronger location.
     
    localseoservicesagency, Nov 14, 2026 at 12:18 PM IP
  5. asphero hong

    asphero hong Member

    Messages:
    24
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    38
    #5
    You're getting flak for the thing the data actually proves, which is a bit unfair. Of the 506, 88.3% sit at 4.5 or above, 6.1% are under 3.5, and the entire 3.5-4.4 band is 5.5%. Low scores barely exist. A 4.6 average is not a quality signal, it tells you who bothered to answer the prompt.
    WebProfitLab - the trade-by-trade point is the one my pull cannot answer, and it is the most useful thing in this thread. All 12 queries were roofing, so I have no baseline for a plumber's review curve. 40 reviews on a roofer against 150 on a plumber is not a comparison, and I would have made that mistake happily.
    On the no-website slice: 35 of 506, 6.9%. Small enough that hand qualification is the only honest way to use it, especially if they are referral-fed rather than short on work. The line about naming one specific thing on their own listing is worth more than the dataset.
    localseoservicesagency - recency is the gap in my pull. Rating and review count arrive together, but the date of the newest review does not, at least not without opening each profile. Are you pulling that per listing, or checking the ones you plan to call? Same question for owner replies, that field is not in anything I can read.
    The photos split makes sense because it is cheap to check. I had been treating all 35 as one group.
     
    asphero hong, Nov 14, 2026 at 10:42 PM IP
  6. ABlockShoes

    ABlockShoes Peon

    Messages:
    3
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    1
    #6
    Good dataset. The one signal I would add to your qualification filter is whether the owner replies to reviews. Rating and count are both lagging numbers, but an owner who answers — especially the unhappy ones — tells you the listing is actively managed, which usually means they will actually pick up the phone when you call. It is cheap to check and it splits the list fast.

    On the 6.9% with no website: I would not assume they are struggling. A lot of tradespeople in that bucket are referral-fed and simply never needed a site. The tell is whether they have photos and recent reviews. A profile with fresh photos and a review in the last month but no site is a working business that never got around to a website — a much warmer lead than a profile with no photos, no site, and reviews from two years ago.

    The one practical check before calling anyone on this list: does the phone number actually get answered? A surprising share of scraped numbers go to a dead line or a voicemail nobody checks. A 30-second call test saves a lot of wasted outreach.
     
    ABlockShoes, Nov 14, 2026 at 11:50 PM IP
  7. aiangels.io

    aiangels.io Greenhorn

    Messages:
    20
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    13
    #7
    On the 120 ceiling: the results also depend on where the map is centred, not only on the wording. Maps favours businesses close to the searcher, so running the same phrasing from a few centre points across the city (north, south, the suburbs) usually turns up listings that never show from a downtown centre. For a big metro, a small grid of centre points per phrasing is often a better next step than a fifth keyword variant.
    Two cleanup points once you multiply queries. De-dupe on the place ID rather than the name or phone, because one company can appear under slightly different names and some share a call-tracking number. And check the permanently closed and temporarily closed flags before counting, since closed listings can stay in results for a while and pad the no-website group.
     
    aiangels.io, Nov 15, 2026 at 1:09 AM IP
  8. veinpsyco

    veinpsyco Greenhorn

    Messages:
    32
    Likes Received:
    6
    Best Answers:
    0
    Trophy Points:
    8
    #8
    i would keep one row per place id and add a separate company group after checking the website and contact details rather than merging every shared phone number
    for the review recency gap start with a small manually checked sample from each review count band and keep unknown dates as unknown so missing data does not become a negative score
     
    veinpsyco, Nov 15, 2026 at 2:00 AM IP