Google Local Services API | Local Services Ads & Lead Gen
Pricing
from $3.70 / 1,000 business returneds
Google Local Services API | Local Services Ads & Lead Gen
Search Google Local Services Ads: Google Guaranteed and Google Screened home-service pros with ratings, reviews, and phone numbers as clean JSON. Built for local SEO agencies, home-services lead gen, and competitor tracking. Pay per business returned. MCP-ready for Claude and AI agents.
Pricing
from $3.70 / 1,000 business returneds
Rating
5.0
(1)
Developer
John
Maintained by CommunityActor stats
3
Bookmarked
13
Total users
12
Monthly active users
18 hours ago
Last modified
Categories
Share
Search Google Local Services Ads - the "Google Guaranteed" pros above the map pack - and get clean, structured JSON back.
Google Local Services Ads are the sponsored home-service listings that appear at the very top of Google when someone searches "plumbers near me": vetted businesses carrying the Google Guaranteed or Google Screened badge, with ratings, review counts, and phone numbers. This API returns that listing for any service in any US city, as flat JSON rows ready for lead-gen pipelines, local SEO dashboards, and AI agents.
No browser automation, no proxies to configure, no HTML to parse.
What you get for every business
| Field | Description |
|---|---|
| Identity | Business name, business type (e.g. Electrician), profile link, thumbnail |
| Trust badges | googleGuaranteed and googleScreened booleans, plus the raw badge text |
| Reputation | Average star rating and total review count |
| Contact | Phone number in international format |
| Coverage | Service area, years in business, recent bookings nearby |
| Hours | Current open status and the weekly hours table |
| IDs | Stable business IDs (cid, bid, pid) plus the place dataCid for repeat runs |
| Summary | A one-line human-readable summary built for AI agents |
Use cases
- Home-services lead generation - pull every Google Guaranteed plumber, electrician, roofer, or HVAC company in a metro, with phone numbers.
- Local SEO and LSA monitoring - track which businesses hold the top Local Services slots for your clients' keywords, week over week.
- Competitor tracking - watch a competitor's rating, review velocity, and badge status across the cities they serve.
- Market research - compare provider density, ratings, and years-in-business across cities before entering a market.
- Agency prospecting - find home-service businesses that are NOT yet running Local Services Ads by diffing against business directories.
Lead generation for contractors and home-service pros
Pull a ready-to-call list of vetted providers for any trade in any US metro. Because every row carries the Google Guaranteed or Google Screened badge, a rating, a review count, and a phone number, the output drops straight into a lead-gen workflow:
- HVAC leads - every Google Guaranteed HVAC company in a metro, with phone numbers.
- Roofing leads - roofers with badges, ratings, and direct contact details.
- Plumbing leads - plumbers holding the top Local Services slots for a city.
- Contractor and electrician leads - general contractors, electricians, and more across the ~109 supported service types.
- Solar leads - Google Guaranteed solar installers with ratings, review counts, and direct phone numbers.
- Real estate agent leads - Google Screened agents in metros where Local Services runs for real estate.
- Personal injury lawyer leads - Google Screened legal pros in metros where LSA runs for legal.
This is lead generation for contractors without the ad spend: you read the same vetted-provider listing Google shows searchers, then work it however you like.
Input
Provide at least one service query, plus a location (or a dataCid).
{"queries": ["plumbers", "electricians"],"location": "Austin, TX"}
| Parameter | Type | Notes |
|---|---|---|
query / queries | string / array | The service(s) to search, e.g. "plumber", "electrician", "hvac", "dentist", "personal injury lawyer". At least one required. Google supports a fixed list of about 109 service types; plurals and common phrasings are normalized automatically ("plumbers" works), and unsupported queries return the closest supported matches so you can retry. |
location | string | US city or district, e.g. "Austin, TX". Resolved internally to the Google place ID. |
dataCid | string | Advanced: pass the decimal Google place CID directly and skip location resolution (and its fee). Every result row includes the dataCid, so you can copy it from a previous run. |
jobType | string | Optional service subcategory, e.g. restore_power for electricians. |
language | string | Two-letter language code, default en. |
maxResultsPerQuery | integer | Optional cap per query; a listing typically returns up to about 20 businesses. |
Note: Google serves Local Services Ads for US locations only.
Example output
{"result_type": "local_services_ad","query": "electrician","location": "Austin, TX","dataCid": "6745062158417646970","businessName": "Tejas Electric","badge": "GOOGLE GUARANTEED","googleGuaranteed": true,"googleScreened": false,"rating": 5.0,"reviews": 255,"phone": "+15128587689","businessType": "Electrician","serviceArea": "Austin","yearsInBusiness": 8,"hours": { "currently": "Open 24 hours" },"profileLink": "https://www.google.com/localservices/profile?cs=0&q=Tejas+Electric","summary": "Tejas Electric - Electrician - serving Austin - 5.0 stars (255 reviews) - Google Guaranteed","fetched_at": "2026-07-06T15:37:00+00:00"}
Pricing
Pay-per-event: you are charged for each business returned, so cost scales with the data you actually receive.
| Event | When it is charged |
|---|---|
| Business returned | Once for every Local Services business row in your dataset |
| Location resolved | Once for each unique location string resolved to a Google place. Skipped entirely when you pass dataCid directly |
Tip: after the first run for a city, copy the dataCid from any result row and use it in future runs to avoid the resolution fee.
How to get started
- View on Apify Store and click Try for free.
- Enter a service (e.g. "plumbers") and a US city (e.g. "Austin, TX").
- Run it and download your results as JSON, CSV, or Excel, or read them via the API.
Looking for the organic map pack instead of the sponsored Local Services listing? Use the Google Local API.
Prefer to start from code? The example repo on GitHub has a Python quick-start plus MCP install guides for Claude, Cursor, and ChatGPT.
๐ Use this API from Claude (MCP)
Add this actor as a tool in Claude Code (free trial), Claude Cowork (free trial), or any other MCP client, via the hosted Apify MCP server. Use this actor-specific URL:
https://mcp.apify.com/?tools=actors,docs,johnvc/google-local-services-api
Setup walkthrough:
Apify MCP integration docs: https://docs.apify.com/platform/integrations/mcp
Then ask things like: "Pull every Google Guaranteed electrician in Austin with their phone numbers and put them in a table."
๐ Integrations: Monitor Local Services Ads and Automate Lead Gen
A single run is a snapshot of who holds the Local Services slots today. The value compounds when you run it on a schedule and watch the leads, badges, and rankings change. The Apify platform turns this API into a lead pipeline. See all Apify platform integrations.
Scheduled LSA and lead monitoring with Tasks
Save one task per service and metro you track (for example "plumbers in Austin, TX" and "roofers in Dallas, TX"), then attach a single schedule that runs them all. From the Actor, open Actions, then Schedule. Useful cron values: 0 6 * * 1 for a Monday-morning pull, 0 7 1 * * for the first of each month, 0 */12 * * * twice a day. One schedule can drive a whole city-and-service matrix, so your lead lists and competitor badges stay current.
n8n, Make, and Zapier
Route new businesses straight into your CRM or a sheet. n8n, Make, and Zapier follow the same pattern: schedule trigger, run the Actor, filter for a new phone number or a badge change, then push to Slack, a CRM, or Google Sheets. In n8n, install the dedicated community node n8n-nodes-google-local-services-api (Settings, Community Nodes) to run this API in any workflow; it also works as an AI Agent tool.
Store leads and badge history in Supabase
Keep every run so you can chart review velocity and badge changes over time. The no-code path is the n8n Actor node into a Supabase node. In code:
from apify_client import ApifyClientfrom supabase import create_clientapify = ApifyClient("<APIFY_TOKEN>")supabase = create_client("<SUPABASE_URL>", "<SUPABASE_KEY>")run = apify.actor("johnvc/google-local-services-api").call(run_input={"queries": ["plumbers", "electricians"], "location": "Austin, TX"})rows = []for b in apify.dataset(run["defaultDatasetId"]).iterate_items():rows.append({"query": b.get("query"),"location": b.get("location"),"business_name": b.get("businessName"),"google_guaranteed": b.get("googleGuaranteed"),"google_screened": b.get("googleScreened"),"rating": b.get("rating"),"reviews": b.get("reviews"),"phone": b.get("phone"),"data_cid": b.get("dataCid"),})supabase.table("lsa_leads").insert(rows).execute()
Use it from an AI agent (MCP)
The dedicated MCP section above shows how to add this API to Claude, Cursor, or any MCP client. An agent can then answer "which Google Guaranteed HVAC companies in Phoenix gained reviews this month?" and write the list to a sheet.
Webhooks
Add an Apify webhook on ACTOR.RUN.SUCCEEDED to push each finished run into your own lead system.
๐ Related Tools
Combine Local Services Ads with more of the local-business stack:
- Google Local API - the organic local pack inside Google Search, so you can compare sponsored LSA pros against the organic map results.
- Yelp Reviews API - full review text and ratings for the same businesses, to score reputation.
- Google Maps Directions API - distance and drive time between a pro and a job site for service-area analysis.
Comparing lead tools? Some alternatives scrape the Google Maps pack rather than the Local Services Ads program, such as this local service leads scraper, which returns Maps listings without the Google Guaranteed or Google Screened badge. This API reads the Local Services Ads listing itself, with the vetted-provider badges and lead-gen phone numbers.
FAQ
Can I schedule this to monitor Local Services Ads?
Yes, and it is where the value is. Save a task for each service and city, then attach a schedule from Actions, then Schedule. Use 0 6 * * 1 for a weekly Monday pull or 0 7 1 * * for a monthly snapshot. One schedule can drive a whole city-and-service matrix. See the Integrations section above for the full monitoring recipe.
Should I use an API or a web scraper for Local Services Ads?
Use the API. A brittle web scraper breaks every time Google changes its markup and needs proxies and browser automation. This is a maintained API: send a service and a city, get clean JSON rows with the badges, ratings, and phone numbers, and let the Apify platform handle scale and reliability.
Can I use this Local Services API with the Apify API?
Yes. The Apify API runs the Actor, schedules it, and returns datasets programmatically. Use the apify-client package for Python or Node.js, or call the REST endpoint directly.
Can I use Local Services Ads data through an MCP server?
Yes. Add the Actor to any MCP client (Claude, Cursor, and others) through the hosted Apify MCP server using the URL in the MCP section above. It works in Claude Code (free trial) and Claude Cowork (free trial).
How do I get more HVAC, roofing, or plumbing leads?
Search the trade and the metro (for example "queries": ["hvac"], "location": "Phoenix, AZ"). You get back the Google Guaranteed and Google Screened providers with ratings, review counts, and phone numbers: a ready-to-call lead list. Schedule it per city to catch new providers as they earn a badge.
How do I get real estate agent or solar leads?
Search the trade and the metro, for example "queries": ["real estate agent"], "location": "Miami, FL" or "queries": ["solar"], "location": "Phoenix, AZ". Real estate agents and other professional services come back with the Google Screened badge; solar installers and home-service trades come back Google Guaranteed. Either way you get ratings, review counts, and phone numbers, ready to work as a lead list.
How much do HVAC, solar, or moving leads cost?
That depends on how you get them. Paid Local Services Ads leads and third-party lead brokers charge per lead, often tens of dollars each for high-value trades. This API instead charges per business row returned, so you read the same vetted-provider listing Google shows searchers and pay for the data, not per phone call. You then work the list yourself with no per-lead ad spend. See the Pricing section above for how billing scales with the businesses returned.
How do I get Google Guaranteed or Google Screened?
Those badges are earned through Google's own verification: a background check and license and insurance checks for the provider, run by Google. This API does not enroll a business; it reads which businesses currently hold each badge. Use it to see who is verified in a market and to track badge changes over time. Learn more at Google Local Services.
Why did I get no results for my city?
Google Local Services Ads only run in the United States, and only for service categories where Google has vetted providers. Try a larger nearby metro or a more common service term (e.g. "plumber" instead of a niche specialty).
Which services can I search for?
Google runs Local Services Ads for a fixed set of about 109 service types across home services (plumber, electrician, hvac, roofer, landscaper, pest control...), legal (personal injury lawyer, immigration lawyer, dui lawyer...), health (dentist, chiropractor, optometrist...), pets, beauty, auto, and education. Plurals and common phrasings are normalized automatically. If a query is not supported, the run returns a no_results row listing the closest supported service types, so agents can self-correct and retry.
What is the difference between Google Guaranteed and Google Screened?
Google Guaranteed covers home services (plumbers, electricians, HVAC) and includes a money-back guarantee for consumers. Google Screened covers professional services (lawyers, financial planners) and verifies licenses and background checks. Both are returned by this API with a dedicated boolean field.
How is this different from the Google Local / Maps pack?
The Local Services listing is a separate, sponsored program with vetted-provider badges and lead-gen phone numbers. The map pack is the organic local result. This API returns the former; the Google Local API returns the latter.
How can I combine this with other local business data?
Pair it with the Google Local API to compare sponsored versus organic local results, the Yelp Reviews API to pull full reviews for the same businesses, and the Google Maps Directions API for service-area drive times.
Can I look up one specific business?
Not yet. Per-business profile lookups (via the cid/bid/pid IDs each row includes) are on the roadmap. If you need this, open an issue on the actor page.
๐ก Example tasks
Ready-to-run configurations for common use cases. Open one, change the inputs, and run:
- HVAC Leads: Google Guaranteed HVAC Companies by City
- Electrician Leads from Google Local Services
- Plumber Leads: Google Guaranteed Plumbers by Metro
- Roofing Leads: Google Guaranteed Roofers by City
- Solar Leads: Google Guaranteed Solar Installers
- Contractor Leads for Home-Service Pros by Metro
- Personal Injury Lawyer Leads (Google Screened)
- Real Estate Agent Leads (Google Screened)
- Tree Service Leads: Google Guaranteed Pros by City
- Locksmith Leads: Google Guaranteed Locksmiths
- Pest Control Leads from Google Local Services
- Painter Leads: Google Guaranteed Painters by City
- Landscaping Leads: Google Guaranteed Landscapers
- Junk Removal Leads from Google Local Services
- Moving Leads: Google Guaranteed Movers by City
Last Updated: 2026.07.27