Picture an assistant walking down every street in a city. It walks into every gym, clinic and salon, and comes back with a card for each one: name, phone number, website, rating. The Google Maps Scraper Kit gets Claude to do a version of that on your own computer, and turns a city into a spreadsheet you can actually work from.

The rest of this guide covers the setup, the safety rules, the best ways to use a scrape, and how to turn a list into clients. Safety comes before the money, on purpose.

01. What the Kit Is

The short answer. The Google Maps Scraper Kit is a free, MIT-licensed toolkit that runs a Google Maps scraper on your own computer and lets Claude drive it. Name a business type and a city, gyms in Miami, and it returns a lead list: name, phone, email, website, category, address, rating and review count. It wraps an existing scraper by Georgios Komninos, and it is not a social media scraper.

The kit's CREDITS file says the wrapper pulls the official Docker image, doesn't modify the upstream code, and adds a Docker Compose setup, helper scripts, docs and a Claude skill. All scraping capability comes from upstream, gosom/google-maps-scraper by Georgios Komninos, MIT licensed since 2023. The wrapper itself is published under the account Mahanaicoach, also MIT licensed. On September 19, 2026, GitHub showed it at 632 stars, 108 forks, created June 21, 2026, one open issue, not archived. Those numbers move, they show whether it's maintained, not proof it works.

PieceWho provides it
Scraping engine and field extractionUpstream: gosom/google-maps-scraper, by Georgios Komninos
One-command Docker setupThe kit
Ready-to-run scripts, scrape.sh and scrape.pyThe kit
A Claude skill and four slash commandsThe kit
A trimmed lead list as the default outputThe kit's scripts, from upstream's ~34 raw fields

Sources: the kit's README, LICENSE and CREDITS.md · gosom/google-maps-scraper

It is not a social media scraper, and the README says so bluntly: it cannot touch Instagram, TikTok or YouTube. It reads Google Maps listings, and if you ask, it looks for social links on each business's own website. Claude isn't doing the scraping either, it works as an AI agent on top: it checks the scraper is running, looks up coordinates, starts the job, waits, downloads the file and shows you a table.

One claim worth labelling as the author's own: a chat AI fetching maps.google.com directly hits a consent wall and returns close to zero structured results, while the kit returns dozens to hundreds of clean rows per query. I have not repeated that test myself.

02. Set It Up in Three Steps

You need Docker Desktop. Claude Code and git are optional. Clone the original repo, not a fork, since not all of the 108 forks are documented.

Terminal · the three steps

git clone https://github.com/Mahanaicoach/google-maps-scraper-kit.git
cd google-maps-scraper-kit

# Step 1: start the scraper (Docker Desktop must be running)
docker compose up -d

# Step 2: check it is alive. It should print a JSON list, probably empty: []
curl http://localhost:8080/api/v1/jobs

# Step 3: run a first scrape. Arguments: keyword, latitude, longitude, depth
./scripts/scrape.sh "coffee shops in Austin TX" 30.2672 -97.7431 5

Step 1 starts the scraper at http://localhost:8080. Step 2 is a health check. Step 3 runs a real query, depth 5 to start. Skip the latitude and longitude if you want, scrape.py can geocode a city name for you.

Scrape With Claude

Open the folder in Claude Code and ask in plain English, for example "Scrape gyms in Miami and give me phones + websites." Behind the /scrape command, Claude checks the scraper is running, looks up coordinates, asks about social profiles, launches the job, waits, downloads a CSV and shows you a table.

The Four Slash Commands

CommandWhat it does
/scrape <business> in <city, ST> [depth]Runs one scrape, shows a clean table
/scrape-batch <keywords-file> [--city "City, ST"]Runs many queries in one job
/scrape-setupStarts the scraper, runs a health check
/scrape-jobs [list | delete <id>]Lists or deletes jobs

The Scripts, if You Skip Claude

scrape.sh (bash) handles one keyword. scrape.py (Python, standard library only) handles a single query, a batch file, and city-name geocoding. Add --full for every field, --socials for social profiles.

Terminal · scrape.py with a city name

python3 scripts/scrape.py "cafes in Austin TX" --city "Austin, TX" --depth 5

What You Get, and What It Costs

Default output: name, phone, email, website, category, address, rating, review count. Upstream captures about 34 raw fields, the kit strips the noise unless you add --full. --socials scans each business's own website for Instagram, Facebook and LinkedIn, in plain code, at zero AI token cost per the README, slower and partial. Email extraction is slower still, and the docs disagree on whether it's on by default, check the --no-email switch if a run drags. Both the kit and upstream are MIT licensed, no fee either way. If a site blocks a plain fetch, my Bright Data CLI guide covers that case.

Using It Outside the US

Every example in the docs is a US city. The README never mentions an Indian city, and I have not run the kit on one. Run one query at depth 5 for your city first, open the CSV, and check the results are really in your city before a bigger run.

03. Stay Safe First

Scraping Google Maps conflicts with Google's terms, and the kit's own README says so. I'm not a lawyer, and this is not legal advice. The Maps Platform terms, section 3.2.3(a), "No Scraping", say the customer will not export, extract, or otherwise scrape Google Maps Content for use outside the Services. The practical risk the README describes is a temporary block on your IP address, not a banned Google account, usually clearing in minutes to hours, with no published hard threshold.

  • Run one job at a time.
  • Start at depth 5, raise it only when you need to.
  • Avoid big jobs back to back unless you use proxies.
  • Add proxies (socks5, socks5h, http, https) for large or repeated runs.
  • Treat every row as a lead to verify, and don't resell raw Google data, both from the kit's skill file.

The scraper binds to 127.0.0.1 only, so other devices on your network can't reach it. Claude's own rule is "warn, don't block": it flags the risk, suggests proxies, then runs a large scrape anyway, refusing only clearly abusive use. The tool won't stop you. You have to.

Scraped phone numbers and emails can be personal data. In India, the DPDP Act's Rules were notified November 13, 2025, but the main business duties, notice and consent, don't start until May 2027, per law firm AZB's summary, so build the habit now. TRAI's rules on commercial calls and texts apply today, under the Telecom Commercial Communications Customer Preference Regulations, amended February 12, 2025. GDPR and CAN-SPAM apply if you contact people in the EU or US.

What I'd do: one-to-one messages, from my own name, to a business contact, with an easy way to say no. No bulk blasts. Keep the file on your own machine, delete what you don't use, never sell it.

Sources: Google Maps Platform terms · the kit's skill file · AZB on the DPDP rollout · PIB, DPDP Rules notified · MeitY, the DPDP Act · TRAI, unsolicited commercial communication · TRAI, Second Amendment 2025 · WhatsApp Business Messaging Policy

04. The Best Ways to Use It

A list is not a business. Here are eight ways to turn a scrape into paid work, ranked from safest to most speculative, each with the fields that make it work.

  1. Sell one narrow automation to one niche in one city. Sourced, Leads Sniper. Fields: category, city. Pick a specific vertical, not "local businesses" everywhere. Watch out: a wide keyword list dilutes your pitch as much as your CSV.
  2. Missed-call and booking automation for phone-first businesses. Sourced, one vendor's US claims. Fields: phone, category. GrowwStacks markets AI receptionists to this exact segment, its numbers are US marketing claims, not a benchmark for you. Offer: catch the call that goes unanswered, book the slot.
  3. Reputation and review-reply offers for ratings under 4.0 with many reviews. Sourced, Leads Sniper. Fields: rating, review count. Offer: draft replies for the owner to approve. Watch out: read the reviews first, an old dip differs from a recent slide.
  4. Website or booking offers for listings with no website. Sourced, Leads Sniper. Fields: website, blank. Offer: a booking link or a one-page site. Watch out: no website can mean the owner chose that on purpose.
  5. Local SEO audits for listings under 20 reviews. Sourced, Leads Sniper. Fields: review count. Offer: a short audit on visibility versus a nearby competitor. Watch out: low reviews can just mean a new business.
  6. Market and competitor mapping before you pick a niche or city. Idea. Fields: the full CSV across an area. One broad scrape shows which niches are crowded and which are thin. Watch out: keep it to one pass and go slow.
  7. Partnership and referral lists. Idea. Fields: category, socials. Businesses serving the same customer without competing, a gym and a physio, can send each other work. Watch out: this needs a real conversation, not a cold pitch.
  8. Score and draft in one session with Claude. Sourced, per the X posts in section 07. Give Claude the CSV, ask it to rank prospects and draft an opener for each. Watch out: an AI score is still a guess, check the top few by hand.

Read the Spreadsheet for Signals

Three rules of thumb from Leads Sniper, using only columns the kit returns. Prompts to look closer, not verdicts.

Signal in your CSVWhat it may suggestWhere the idea comes from
Under 20 reviewsA new or quiet business, low visibilityLeads Sniper
Rating under 4.0A possible reputation problemLeads Sniper
No websiteA web or booking opportunityLeads Sniper, booking angle is my read
Phone listedTest how the phone is handled after hoursGrowwStacks
Email presentA written route for a first messageMy read
Socials foundWhere the business is activeMy read
Many reviews, good ratingA busy business, many enquiriesMy read

Under 20 reviews can also mean a new business. No website can mean the owner doesn't want one. Check by hand before you pitch.

Let Claude Build the Shortlist

Give Claude the CSV and ask it to rank, using only what's in the file.

Prompt · paste into Claude with your CSV attached

Read the attached CSV of [niche] businesses in [city]. The columns are name, phone, email, website, category, address, rating and review count. Shortlist the best 15 prospects for one offer: [one offer, for example missed-call handling]. Use only what is in the CSV, do not guess anything about a business. For each one give the name, one line on why it made the list quoting the exact fields (for example: rating 3.8, 14 reviews, no website), and one thing to check by hand before contact. Flag any row that looks like a duplicate, a different category, or a chain rather than an independent business.

Claude can only reason over what's in the file. If it says a business "seems busy on weekends," it made that up.

Source for the qualifier rules and the niche advice: Leads Sniper, "How Agencies Use Google Maps Scrapers to Get Clients" (vendor blog, June 16, 2026)

05. Turn a List Into Clients

Send something small and true before you ask for a meeting, follow up a few times, ask good questions, and quote one setup fee plus one monthly fee.

The Offer, by Niche

NicheLook forOne automation to offer
Real estateFew reviews, thin websiteFast follow-up on new enquiries, with a booking
ClinicsPhone-led, appointment-basedMissed-call callbacks and reminders. Read the privacy guide first.
SolarIndependent, low reviewsQuote follow-up and site-survey booking
GymsNo booking link on siteTrial-class booking and follow-up
SalonsSocials found, no websiteAppointment booking and reminders
RestaurantsHigh reviews, rating near 4.0Draft review replies for owner approval
Law firmsIndependent, phone and email listedIntake and consultation booking. Same privacy note.

Pick the niche you understand best, and ignore the rest until the first one works.

Send the Example, Not the Pitch

A two-line audit, or a demo built from a business's own public details, beats a pitch because it shows you did the work. My method: find the business, research it, build a demo, send it instead of pitching, from landing clients in festive season. Nothing in it is voice-specific. Write only what you actually checked.

Three Short Messages

Fill every bracket with something true. One-to-one, from your own name, with an easy way to say no.

Email · first touch

Subject: A quick idea for [Business Name]

Hi [First Name],

I found [Business Name] on Google Maps while looking at [niche] in [City]. I noticed [one thing you actually checked].

I build small automations for [niche] businesses. One that may fit is [one automation], so that [the specific problem] stops happening.

I made a short example using only your public details: [link]. Would you take a look?

If this isn't for you, tell me and I won't write again.

[Your Name], [your phone number]

DM or message · on a public business channel, or after they reply

Hi [First Name], this is [Your Name]. I came across [Business Name] while looking at [niche] in [City] and noticed [one thing you actually checked]. I made a short example of [one automation] using only your public details: [link]. Want me to send anything else, or would you rather I didn't message again?

Call opener · about twenty seconds

Hi, is that [First Name]? I'm [Your Name]. I looked at [Business Name] on Google Maps and noticed [one thing you actually checked]. I have a short example of how [one automation] could handle that. Can I send it to you on [WhatsApp or email]?

Follow Up Four Times, Then Stop

  1. Day one: the email, with your example.
  2. A few days later: a short call or message with one new observation.
  3. About a week later: one useful tip, no ask.
  4. Another week later: a polite last note, then stop.

Stop at once if anyone says no.

Three Objections

"We already have staff for that." This handles the one job they don't have time for, like the reply at 9pm. Can I show you on your own enquiries?

"I'm not sure it will sound human." Fair. Don't take my word for it, read the example first.

"We have no budget." Let's make it smaller: one automation, a small setup fee, a short first month with a clear stop.

The Discovery Call: Five Questions

  1. What happens today when a new enquiry comes in? Who sees it first?
  2. What happens to enquiries that arrive after hours, or while the phone is busy?
  3. How many enquiries do you get in a normal week, and what is one worth to you?
  4. What have you already tried, and what happened?
  5. Who else has to say yes, and what would make this an easy yes for them?

Write their answers down in their words. Question three gives you the two numbers your price rests on, from the owner, not from me or a vendor.

One Setup Fee, One Monthly Fee

Keep the proposal to one page: one narrow automation, one setup fee, one monthly fee, and what's in and out. I'm not giving you my numbers, your market sets yours. One reference point, clearly labelled: GrowwStacks, a vendor blog, prices an AI receptionist at about $5,000 a year, a US marketing claim, not a benchmark for India.

Source: GrowwStacks, "How to Sell AI Receptionists to Local Businesses With Cold Calls" (vendor blog, November 6, 2025)

Your Numbers

I don't have reply or close rates to give you. Fill this in as you go.

StageWhat to countYour number
Leads scrapedRows after removing duplicates 
ShortlistedRows that passed your checks 
MessagedContacted one-to-one 
RepliedAny reply, including "no" 
Calls bookedOn your calendar 
Clients wonSigned and paid 
Reply rateReplied ÷ messaged 
Call rateCalls booked ÷ replied 
Close rateClients won ÷ calls booked 

The formula: clients = messaged x reply rate x call rate x close rate. Change one thing at a time.

06. Run It Across Several Cities

Once one city works, keep the niche, the offer and the message, and change only the city, with /scrape-batch. Same discipline: one job at a time, start small, no big runs back to back.

cities.txt · one query per line

gyms in Austin TX
gyms in Denver CO
gyms in Miami FL

Run /scrape-batch cities.txt, or add --city "City, ST". Keep the file short, add proxies before you make it long. /scrape-jobs list shows your jobs, /scrape-jobs delete <id> clears old ones. Same message across cities lets you see whether the place or the pitch is the variable.

07. What People Are Doing With It

X and LinkedIn are login-walled for my tools, so I say what I could read, not what I couldn't.

  • @leoxbtt on X, in Spanish, describes the kit as a city and business type in, a clean database of names, phones, emails, websites and ratings out. I could read the start of the post through a search result.
  • Aaron (@IAmAaronWill) on X describes a different setup, not this kit: every morning, three Telegram messages with leads scraped, scored, and DM openers already drafted.
  • Alex Vacca (@itsalexvacca) on X has a thread titled "here's how you can scrape unlimited leads using claude." I could only see the title.
  • A LinkedIn post by codewithpp, "AI-Powered Lead Generation Workflow for Google Maps." I can confirm it exists, nothing more.

The shape across all four is the same: scrape, score, draft. A machine can do all three, so none of them sets you apart. Check an AI's score by hand. The offer you chose and the message you sign your name to are what set you apart.

A scraper can hand you a list of dentists. It cannot tell one of them why you deserve a reply. That part was always yours.

08. Related Guides

The two repos behind this kit: the Google Maps Scraper Kit and gosom/google-maps-scraper, the scraper it wraps.

09. FAQ

Is the Google Maps Scraper Kit free?

Yes. The kit's code is MIT licensed, and so is the scraper it wraps, gosom/google-maps-scraper by Georgios Komninos. You need Docker Desktop. Claude Code is optional, the two included scripts run without it. The --socials option runs in plain code, at zero AI token cost per the README.

Does the Google Maps Scraper Kit run on my computer?

Yes. docker compose up -d starts the scraper at http://localhost:8080 on your own machine, bound to 127.0.0.1 only, per the README. Claude, if you use it, drives that local scraper. Requests go out from your own internet connection, so your IP is what can get rate-limited.

Will I get banned for scraping Google Maps?

The docs describe the risk as a temporary IP rate limit or block, usually clearing in minutes to hours, not a ban on your account, with no published hard threshold. They recommend one job at a time, starting at depth 5, and proxies for large runs. That is the author's description, not a guarantee.

Is scraping Google Maps legal?

I'm not a lawyer, and this is not legal advice. Google's Maps Platform terms, section 3.2.3(a), say the customer will not export, extract, or otherwise scrape Google Maps Content for use outside the Services. Scraped phone numbers and emails can be personal data. India's DPDP Act main duties start May 2027, TRAI's rules already cover commercial calls and SMS, and GDPR and CAN-SPAM apply in the EU or US.

Can the Google Maps Scraper Kit find emails and social profiles?

Yes, with limits. Email extraction is available but slower, and the docs disagree on whether it is on by default, so check the setting if a run is slow. --socials finds Instagram, Facebook and LinkedIn by scanning a business's own website, slower and partial. The kit cannot touch Instagram, TikTok or YouTube.

How many leads will I get from one Google Maps search?

There is no fixed number. The README says the kit returns dozens to hundreds of clean rows per query, the author's claim, and the real count depends on depth, area and category. Run one query at depth 5, count the rows, and check them before you plan around a number.

More guides like this live on the free resources hub. Want help choosing your niche and first offer? Book a call with me.

10. Sources

// Free newsletter

I send out guides like this every week

Real setups, real sources, no hype. Drop your email and I'll send you the next one.