Google Local Services Ads Scraper — Leads
Pricing
$3.00 / 1,000 per business returneds
Google Local Services Ads Scraper — Leads
Scrape Google Local Services Ads advertisers - the vetted pros above the map pack - for any trade in any US metro: business name, type, city, phone, star rating, review count and breakdown, opening hours, highlights and Google's stable business IDs. No login.
Pricing
$3.00 / 1,000 per business returneds
Rating
0.0
(0)
Developer
Scrapers Delight
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
🛠️ Google Local Services Ads Scraper — vetted local pros, with phone numbers
Scrape the Local Services Ads that sit above the map pack — the vetted home-service and professional pros Google puts at the very top for "plumbers near me". One row per advertiser: business name, trade, city, phone, star rating, review count and full star breakdown, opening hours, highlights and Google's stable business IDs.
These are businesses already paying Google per lead — the highest-intent local-business list there is.
What does this actor do?
- 🏢
name,businessType,city— e.g. Radiant Plumbing, Air Conditioning, & Electrical · Plumbers · Austin - 📞
phone— in international format, ready to dial - ⭐
rating,reviewCountplusstarBreakdown(how many 1★ through 5★) - 🕐
hours— the full weekly table, e.g.{"Tuesday": "Open 24 hours", …} - ✨
highlights— e.g. 24/7 emergency services · Local business - 🆔
cid,bid— Google's stable identifiers (verified identical across repeat runs), so you can re-run and diff over time.pidis also returned but Google fills it with the placeholder9999999999for about 70% of advertisers — key your diffs oncid. - 🔗
profileUrl,bookingUrl,messagingUrl
Example input
{"services": ["plumber", "electrician", "roofer", "hvac"],"cities": ["Austin TX", "Denver CO", "Phoenix AZ"],"requirePhone": true,"minRating": 4,"maxItems": 500}
Every service is crossed with every city — 4 × 3 = 12 queries, up to 20 advertisers each.
Read this: the proxy setting is the whole mechanism
Google decides Local Services inventory from the requesting IP's location. Measured on the same URL in the same second:
| Lane | Response | Advertisers returned |
|---|---|---|
| Developer's home IP (non-US) | 200, 1,111 KB | 0 |
| Datacenter proxy | 200, 1,111 KB | 0 |
| Residential US | 200, 1,747 KB | 20 |
A non-US or datacenter IP does not error and does not get blocked — it gets a perfectly valid page containing an empty result list. That is why the proxy default here is residential US, and why you should not change it. If a run returns nothing, the log says so explicitly rather than pretending the city has no plumbers.
Field coverage — measured
Measured across eight repeat runs of the same query (plumber, Austin TX):
| Field | Fill |
|---|---|
name, businessType, city, phone, rating, reviewCount, starBreakdown, highlights, hours, cid, bid, profileUrl, searchQuery, scrapedAt | 100% |
messagingUrl | 85-100% across repeat runs |
bookingUrl | 65-80% across repeat runs — only advertisers with online booking wired up |
Nothing below 65%. Measured across eight repeats of the same query — the two link fields move run to run because Google rotates which advertisers show a booking/messaging button.
Who is this for?
Agencies and SaaS selling to home-service and legal SMBs (an LSA advertiser has a proven ad budget), lead-gen businesses, local-SEO teams tracking who holds the top slots, and market researchers comparing provider density and ratings across metros.
Honest limits
- 20 advertisers per query. That is what Google returns per service+city; there is no deeper pagination. Volume comes from more service × city combinations, and the actor de-duplicates by business ID across the whole run.
- US only. This actor pins every request to
hl=en-US&gl=usbehind a US residential IP, so it returns US metros only. - Google rate-limits. A burst of queries can draw a 429. The actor backs off hard and retries on a fresh IP, and reports how many it absorbed. Very large runs pace themselves and take longer.
- No "Google Guaranteed" / "Google Screened" badge field. The badge text is not present in the data the page ships, so it is not returned rather than guessed. Every advertiser in this surface is by definition a vetted Local Services advertiser.
- Ratings are Google's, aggregated across the business's reviews.
Pricing
| What | Price |
|---|---|
| Per business returned | $0.003 |
A 1,000-business multi-metro list costs $3. Filtered rows cost nothing.
FAQ
How many results per city? Up to 20 per service+city query. Use several trades and several cities for a bigger list.
Why did I get zero results? Almost always the proxy. Local Services results depend on a US IP — keep the residential US default.
Can I use my own proxy? Yes, but it must be residential US or Google returns an empty list.
What trades work? Anything Google runs Local Services for: plumber, electrician, HVAC, roofer, locksmith, garage door, house cleaning, pest control, lawn care, movers, and professional services like lawyers and realtors.
Are the phone numbers direct? They are the numbers Google publishes on the ad, in international format.
Can I track a competitor over time?
Yes — cid and bid are stable, so re-run on a schedule and diff rating and review count. There is
no position/rank field; rows arrive in Google's order but that order is not stamped on the row, and
the advertiser set itself rotates (13 of 20 businesses recurred between two runs a day apart).
Is there a badge field? No. The badge text is not in the page data, so nothing is invented. Presence in this list already means the business is a vetted Local Services advertiser.
Does it need a browser? No. The advertiser list is server-rendered into the page, so this is a plain HTTP fetch — fast and cheap.
Data source and fair use
Data comes from Google's public Local Services results pages. No login, no paywall and no private API is involved. The actor paces itself — 1.8 s between queries, and a hard back-off on a fresh IP if Google returns a 429. You are responsible for lawful outreach to the businesses returned.