Best Google Maps MCP server for Claude Code: a local list
Looking for a Google Maps MCP server for Claude Code usually means you want one thing: a list. A city, a category, and a table you can work with — names, addresses, ratings, distances. Actionway does it in two calls, and we ran them while writing this: one geocode at $0.01 per run to turn a city name into coordinates, one places search at $0.04 per run to get the businesses around them. Thirteen rows came back. Two things about that response are worth knowing before you build on it.
连接你的 AgentThe two calls
A places search needs coordinates, not a city name, so the first call converts one into the other. That is the geocode step, and it is the part people skip and then wonder why their query returns nothing useful. With the Actionway Skill installed, Claude Code makes both calls in a single turn: it geocodes the city, feeds the coordinates into the search, and hands back a table.
你这样问
Find pet grooming businesses within 8km of downtown Austin, Texas, with addresses and ratings.
One geocode at $0.01 per run, one places search at $0.04 per run. Both are synchronous, so the answer arrives in the same reply rather than as a job to wait on.
Austin resolved to 30.267153, -97.743061 — the formatted address came back as "Austin, TX, USA". That pair of numbers is what the search takes, along with the category and a radius in metres. We asked for 8,000 metres and got thirteen businesses, the furthest 7,159 metres out.
| Name | Rating | Distance | Address |
|---|---|---|---|
| FRESH PAWS GROOMING | 4.9 | 1,368 m | 1210 E Cesar Chavez St, Austin, TX 78702 |
| Lobo Austin, LLC | 5.0 | 1,336 m | 1507 Nueces St, Austin, TX 78701 |
| Barkin' Creek Dog Kitchen & Bath | 4.6 | 797 m | 91 Red River St Ste 150, Austin, TX 78701 |
| Gajeel's Grooming Studio | 5.0 | 1,670 m | 1621 E 6th St #1125, Austin, TX 78702 |
| Paws on Chicon | 4.9 | 2,387 m | 1301 Chicon St #102, Austin, TX 78702 |
| Fluff 'n' Buff Dog Grooming | 4.9 | 7,159 m | 2715 Rogge Ln, Austin, TX 78723 |
Each row also carries a place id, latitude and longitude, a category list, and a Google Maps link. That is the difference that matters for anything downstream: the agent can sort by distance, filter by rating, write a CSV, or drop the coordinates onto a map, because the numbers arrived as numbers. Nothing had to be parsed out of a page first.
The two things that went wrong
That is worth designing around rather than discovering later. If you want businesses that are open, run the search in their local business hours, not yours. If you want a list of businesses that exist, ignore the opening field entirely — it is a snapshot, not an attribute of the business. We nearly wrote a paragraph about Austin's pet groomers all being closed before checking what time it was where they are.
The second one is subtler. Three of our thirteen rows were the same chain — one at 797 metres rated 4.6, one at 3,116 metres rated 4.9, one at 3,570 metres rated 4.8. Three real branches, three real addresses, three different ratings. The instinct with a lead list is to deduplicate by name, and here that would have thrown away two locations and kept an arbitrary one. Deduplicate on place id, or on the address, and keep the branches.
Why this is not a scraper
"Google Maps scraper" is the phrase people search for, and it is worth being clear that this is a different thing. A scraper opens the map in a browser, scrolls the results panel, and reads text out of the page. It breaks when the layout changes, it trips bot detection, and the data arrives as strings that still have to be cleaned. The call above is a structured request that returns structured data, so there is no layout to break, no CAPTCHA to meet, and no cleaning step.
There is a practical consequence too. Because the rating and the distance come back as numbers rather than as text, "sort these by rating and drop anything under 4.5" is one more sentence to the agent rather than a parsing exercise. The list stays a list, and the agent's job stays the part it is good at — deciding what to do with it.
What it is actually good for
Building a prospect list
A city plus a category is a lead list: name, address, rating, and a maps link per row. Ask for it as a CSV and the agent writes the file into your project.
Checking density before you commit
How many of these already exist within a kilometre of an address? Geocode the address, search around it with a small radius, count the rows.
Filling in an address you half know
Geocode on its own resolves a rough address to a formatted one with coordinates, which is the cheaper call of the two and often all you need.
Not for social platform locations
A platform's own location tags are keyword records, not verified places. If you need a real address, this is the call; if you need what people tagged, that is a different question.
Set it up once
npm install --global @actionway/cli@latest
actionway init
mkdir -p "$HOME/.claude/skills"
cp -R "$HOME/.actionway/skill/actionway" "$HOME/.claude/skills/actionway"You need Node.js 20 or newer and an Actionway account. There is also a Remote MCP route if you would rather not install anything locally — same calls, same prices, set up as a connector instead; the routes comparison covers what changes. Codex users copy the same folder into ~/.codex/skills/actionway, and the get started page lists the steps per client.
Maps calls sit next to the rest of the catalog on one balance, so the same session that builds a prospect list can also pull a company's financials or generate the artwork for whatever you send them. Every call is priced before it runs, and an empty wallet stops the job before anything is charged.
常见问题
Can Claude Code search Google Maps?Not on its own. With the Actionway Skill installed it geocodes a location for $0.01 per run and searches places around it for $0.04 per run, returning names, addresses, ratings, distances, and maps links as structured rows.
Is this scraping Google Maps?No. It is a structured request that returns structured data — no browser, no page parsing, no bot detection. Ratings and distances arrive as numbers, so sorting and filtering them is a sentence rather than a cleaning step.
Why did every business come back as closed?Opening status is evaluated when you call. Our run happened at four in the morning Austin time, so all thirteen rows read as closed. Run during local business hours if that field matters, or ignore it and use the rest of the row.
