explaingit

ayyouboss0011/sherlockmaps

Analysis updated 2026-06-24

60PythonAudience · dataComplexity · 3/5LicenseSetup · moderate

TLDR

Open-source Google Maps scraper that drives Chromium via Playwright to pull business listings, runnable as a CLI, REST API on port 8000, or Python library.

Mindmap

mindmap
  root((SherlockMaps))
    Inputs
      Search prompt
      Config overrides
    Outputs
      JSON results
      CSV exports
      REST API responses
    Use Cases
      Build a local leads list
      Enrich a CRM with maps data
      Audit business categories
    Tech Stack
      Python
      Playwright
      Chromium
      FastAPI
      Docker
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Scrape a list of restaurants or shops in a city into JSON or CSV for a sales prospect list.

USE CASE 2

Run the REST API in Docker and queue scrape jobs from another app or a no-code tool.

USE CASE 3

Import the Python crawler into a script and run several queries in one browser session.

USE CASE 4

Export deduplicated maps results with phone, website, hours, and ratings for analysis.

What is it built with?

PythonPlaywrightChromiumFastAPIDocker

How does it compare?

ayyouboss0011/sherlockmaps0xh4ku/manga-pdf-to-epubegoist-machines/lodedb
Stars606060
LanguagePythonPythonPython
Setup difficultymoderatemoderateeasy
Complexity3/52/53/5
Audiencedatageneraldeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Docker is the recommended path because Playwright needs a Chromium browser, scraping Google Maps may violate Google's terms of service.

MIT license: use, modify, and ship the code for any purpose, including commercial, as long as you keep the copyright notice.

In plain English

SherlockMaps is an open-source Google Maps scraper that pulls business information off the public Google Maps website. You give it a search term like "restaurants berlin" and it drives a real Chromium browser through Google Maps using Playwright, an automation library that controls browsers programmatically. For each listing it finds, it extracts the company name, category, address, phone number, website, star rating, number of reviews, Plus Code, opening hours, and attributes such as wheelchair accessibility. Results are deduplicated by name plus website, and obviously invalid website URLs are filtered out. There are three ways to run it. The command-line mode takes a PROMPT environment variable and prints results to standard output, with optional output formats including JSON, CSV, a human-readable pretty print, or saving to a timestamped file. The REST API mode runs as a persistent server on port 8000, with a /crawl POST endpoint that queues jobs asynchronously, status and history endpoints, and an interactive docs page at /docs. The Python library mode lets you import GoogleMapsCrawler from core.crawler and use it as a context manager, calling crawl() multiple times with different search terms in one session. Docker is the recommended path: a docker compose up brings up the API server with Playwright and the Chromium browser already set up inside the container, so you do not have to install Python dependencies on your own machine. The README also documents a direct install path, where you create a Python 3.9 or newer environment, pip install requirements, and then run playwright install chromium to fetch the browser binaries. The API surface is broad: there are endpoints for health checks, job queue status, statistics, fetching results in bulk, exporting results, clearing results, and reading or updating configuration at runtime. Chrome profile data persists between runs, which helps with session state. The license is MIT. The README does not address legal or terms-of-service questions about scraping Google Maps, which a non-technical reader should consider before using the tool at scale, since Google's terms restrict automated access to Maps data.

Copy-paste prompts

Prompt 1
Show me a docker compose setup for SherlockMaps and a curl command to POST a /crawl job for dentists in Madrid.
Prompt 2
Write a Python script using SherlockMaps GoogleMapsCrawler that runs 10 city queries and writes one CSV per city.
Prompt 3
Help me add a rate limit and a retry loop to SherlockMaps so I do not get my IP blocked by Google.
Prompt 4
Build a small dashboard that calls the SherlockMaps API status and history endpoints and shows job progress.

Frequently asked questions

What is sherlockmaps?

Open-source Google Maps scraper that drives Chromium via Playwright to pull business listings, runnable as a CLI, REST API on port 8000, or Python library.

What language is sherlockmaps written in?

Mainly Python. The stack also includes Python, Playwright, Chromium.

What license does sherlockmaps use?

MIT license: use, modify, and ship the code for any purpose, including commercial, as long as you keep the copyright notice.

How hard is sherlockmaps to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is sherlockmaps for?

Mainly data.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.