# Google Local Services API | Local Services Ads & Lead Gen (`johnvc/google-local-services-api`) Actor

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.

- **URL**: https://apify.com/johnvc/google-local-services-api.md
- **Developed by:** [John](https://apify.com/johnvc) (community)
- **Categories:** Lead generation, SEO tools, MCP servers
- **Stats:** 17 total users, 16 monthly users, 100.0% runs succeeded, 3 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.70 / 1,000 business returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Google Local Services API | Local Services Ads & Lead Gen

> **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`).

```json
{
  "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

```json
{
  "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

1. [View on Apify Store](https://apify.com/johnvc/google-local-services-api?fpr=9n7kx3) and click **Try for free**.
2. Enter a service (e.g. "plumbers") and a US city (e.g. "Austin, TX").
3. 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](https://apify.com/johnvc/google-local-api?fpr=9n7kx3).

Prefer to start from code? The [example repo on GitHub](https://github.com/johnisanerd/Apify-GoogleLocalServices-API) 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](https://claude.ai/referral/uIlpa7nPLg) (free trial), [Claude Cowork](https://claude.ai/referral/uIlpa7nPLg) (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:

https://www.youtube.com/watch?v=jREWahDGhJM

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."*

### 💸 Pay per run with crypto (x402)

The Google Local Services API supports agentic payments via the [x402 protocol](https://docs.apify.com/platform/integrations/x402).
AI agents and MCP clients can pay for runs in USDC (on Base) with no Apify account or API token needed:
point your agent at the [Apify MCP server](https://mcp.apify.com/?tools=actors,docs,johnvc/google-local-services-api) and it can
discover, pay for, and run this Actor autonomously. Read the
[Apify x402 announcement](https://apify.com/change-log/pay-for-apify-actors-with-x402?fpr=9n7kx3) for details.

### 🔌 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](https://docs.apify.com/platform/integrations).

#### Scheduled LSA and lead monitoring with Tasks

Save one [task](https://docs.apify.com/platform/actors/running/tasks) per service and metro you track (for example "plumbers in Austin, TX" and "roofers in Dallas, TX"), then attach a single [schedule](https://docs.apify.com/platform/schedules) 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](https://docs.apify.com/platform/integrations/n8n), [Make](https://docs.apify.com/platform/integrations/make), and [Zapier](https://docs.apify.com/platform/integrations/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](https://www.npmjs.com/package/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:

```python
from apify_client import ApifyClient
from supabase import create_client

apify = 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](https://docs.apify.com/platform/integrations/webhooks) 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](https://apify.com/johnvc/google-local-api?fpr=9n7kx3) - the organic local pack inside Google Search, so you can compare sponsored LSA pros against the organic map results.
- [Yelp Reviews API](https://apify.com/johnvc/Yelp-Reviews-API?fpr=9n7kx3) - full review text and ratings for the same businesses, to score reputation.
- [Google Maps Directions API](https://apify.com/johnvc/google-maps-directions-api?fpr=9n7kx3) - 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](https://apify.com/mahogany_songbird/local-service-leads-scraper?fpr=9n7kx3), 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](https://docs.apify.com/platform/actors/running/tasks) for each service and city, then attach a [schedule](https://docs.apify.com/platform/schedules) 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](https://en.wikipedia.org/wiki/Web_scraping) breaks every time Google changes its markup and needs proxies and browser automation. This is a maintained [API](https://en.wikipedia.org/wiki/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](https://mcp.apify.com/) using the URL in the MCP section above. It works in [Claude Code](https://claude.ai/referral/uIlpa7nPLg) (free trial) and [Claude Cowork](https://claude.ai/referral/uIlpa7nPLg) (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](https://ads.google.com/local-services-ads/).

#### 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](https://apify.com/johnvc/google-local-api?fpr=9n7kx3) returns the latter.

#### How can I combine this with other local business data?

Pair it with the [Google Local API](https://apify.com/johnvc/google-local-api?fpr=9n7kx3) to compare sponsored versus organic local results, the [Yelp Reviews API](https://apify.com/johnvc/Yelp-Reviews-API?fpr=9n7kx3) to pull full reviews for the same businesses, and the [Google Maps Directions API](https://apify.com/johnvc/google-maps-directions-api?fpr=9n7kx3) 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](https://apify.com/johnvc/google-local-services-api/examples/hvac-leads?fpr=9n7kx3)
- [Electrician Leads from Google Local Services](https://apify.com/johnvc/google-local-services-api/examples/electrician-leads?fpr=9n7kx3)
- [Plumber Leads: Google Guaranteed Plumbers by Metro](https://apify.com/johnvc/google-local-services-api/examples/plumber-leads?fpr=9n7kx3)
- [Roofing Leads: Google Guaranteed Roofers by City](https://apify.com/johnvc/google-local-services-api/examples/roofing-leads?fpr=9n7kx3)
- [Solar Leads: Google Guaranteed Solar Installers](https://apify.com/johnvc/google-local-services-api/examples/solar-leads?fpr=9n7kx3)
- [Contractor Leads for Home-Service Pros by Metro](https://apify.com/johnvc/google-local-services-api/examples/contractor-leads?fpr=9n7kx3)
- [Personal Injury Lawyer Leads (Google Screened)](https://apify.com/johnvc/google-local-services-api/examples/personal-injury-lawyer-leads?fpr=9n7kx3)
- [Real Estate Agent Leads (Google Screened)](https://apify.com/johnvc/google-local-services-api/examples/real-estate-agent-leads?fpr=9n7kx3)
- [Tree Service Leads: Google Guaranteed Pros by City](https://apify.com/johnvc/google-local-services-api/examples/tree-service-leads?fpr=9n7kx3)
- [Locksmith Leads: Google Guaranteed Locksmiths](https://apify.com/johnvc/google-local-services-api/examples/locksmith-leads?fpr=9n7kx3)
- [Pest Control Leads from Google Local Services](https://apify.com/johnvc/google-local-services-api/examples/pest-control-leads?fpr=9n7kx3)
- [Painter Leads: Google Guaranteed Painters by City](https://apify.com/johnvc/google-local-services-api/examples/painter-leads?fpr=9n7kx3)
- [Landscaping Leads: Google Guaranteed Landscapers](https://apify.com/johnvc/google-local-services-api/examples/landscaping-leads?fpr=9n7kx3)
- [Junk Removal Leads from Google Local Services](https://apify.com/johnvc/google-local-services-api/examples/junk-removal-leads?fpr=9n7kx3)
- [Moving Leads: Google Guaranteed Movers by City](https://apify.com/johnvc/google-local-services-api/examples/moving-leads?fpr=9n7kx3)

***

### 🌐 About Alpha OSINT

This Actor is part of [Alpha OSINT](https://www.alphaosint.com), toolset of financial and operations data sources and APIs.
See the [Google Local Services API source page](https://www.alphaosint.com/sources/google-local-services-api/) for related tools and use cases.
For support or requests for this actor, please start a ticket [directly on our support page](https://apify.com/johnvc/google-local-services-api/issues/open?fpr=9n7kx3).

Last Updated: 2026.08.03

# Actor input Schema

## `query` (type: `string`):

REQUIRED (or use `queries`). The service to search for, e.g. 'plumber', 'electrician', 'hvac', 'personal injury lawyer', 'dentist', 'roofer'. Google supports a fixed list of about 109 service types; common phrasings and plurals are normalized automatically, and unsupported queries return the closest supported matches.

## `queries` (type: `array`):

Provide a list of services to search in one run, e.g. \['plumber', 'electrician', 'roofer']. Each query is one Local Services Ads listing for the same location.

## `location` (type: `string`):

The US city or district to search in, e.g. 'Austin, TX' or 'Brooklyn, NY'. Resolved internally to the Google place ID (one billed resolution for each unique location). Google Local Services Ads cover US locations only. Leave empty if you pass `dataCid` instead.

## `dataCid` (type: `string`):

Advanced: the decimal Google CID of a city or district level place, e.g. '6745062158417646970' for Austin, TX. When set, `location` is ignored and no location-resolution fee is charged.

## `jobType` (type: `string`):

Optional subcategory of the service, e.g. 'restore\_power' for electricians or 'unclog\_drain' for plumbers. Narrows the listing to providers offering that specific job.

## `language` (type: `string`):

Two-letter language code for the results, e.g. 'en' or 'es'. Defaults to 'en'.

## `maxResultsPerQuery` (type: `integer`):

Optional cap on how many businesses to return for each query (a listing typically returns up to about 20). Leave empty to return all businesses found.

## Actor input object example

```json
{
  "query": "plumber",
  "location": "Austin, TX",
  "language": "en"
}
```

# Actor output Schema

## `allResults` (type: `string`):

All dataset items from this run, including any no\_results or error rows.

## `businesses` (type: `string`):

The Local Services businesses table view.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "query": "plumber",
    "location": "Austin, TX",
    "language": "en"
};

// Run the Actor and wait for it to finish
const run = await client.actor("johnvc/google-local-services-api").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "query": "plumber",
    "location": "Austin, TX",
    "language": "en",
}

# Run the Actor and wait for it to finish
run = client.actor("johnvc/google-local-services-api").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "query": "plumber",
  "location": "Austin, TX",
  "language": "en"
}' |
apify call johnvc/google-local-services-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=johnvc/google-local-services-api",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/S4vytlD3hbgocTHi6/builds/Ka6BM6gZSxuVVg9rC/openapi.json
