Google Maps Scraper
Google Maps Extractor · Google Maps Lead Scraper · Google Maps Lead Extractor
Python SDK to scrape Google Maps places and export leads (name, phone, website, emails, and more) through a hosted Agent HTTP API. Powered by GMaps Lead Finder. This is not a local browser crawler — jobs run in the cloud scrape-and-enrich pipeline.
- PyPI:
google-maps-scraper-sdk - Import:
gmaps_scraper - CLI:
gmaps-scraper(orpython -m gmaps_scraper)
Get an API key
- Sign in at gmapsleadfinder.com.
- Use a plan with Agent API (Growth or higher) — see Pricing.
- Open Account → API key and copy your
gmf_…key.
export GMF_API_KEY=gmf_your_key_here
Never commit API keys or embed them in public frontends.
Install
pip install google-maps-scraper-sdk
Requires Python 3.10+. Uses the standard library only (no third-party HTTP dependencies).
Configuration
| Variable | Required | Description |
|---|---|---|
GMF_API_KEY |
Yes | Bearer key (gmf_…) |
GMF_BASE_URL |
No | Default https://gmapsleadfinder.com |
You can also pass credentials in code:
from gmaps_scraper import Client
client = Client(api_key="gmf_…", base_url="https://gmapsleadfinder.com")
Quickstart
from gmaps_scraper import Client
client = Client() # reads GMF_API_KEY
me = client.me()
print(me["plan"], me["creditsRemaining"])
# Google Maps scraper helper: create job → poll → fetch all rows
rows = client.scrape("dentists in Austin TX")
for row in rows[:5]:
print(row.get("Name"), row.get("Phone"), row.get("Website"), row.get("Emails"))
CLI:
gmaps-scraper me
gmaps-scraper scrape "dentists in Austin TX" --out leads.json
gmaps-scraper scrape "dentists in Austin TX" --out leads.csv
Client API
me()
Returns plan and credits: plan, creditsLimit, creditsUsed, creditsRemaining.
create_job(keyword)
Queues a single-keyword Google Maps lead scrape. Body is exactly one search query (city + category works best).
Returns: jobId, keywordCount, creditsRemaining.
get_job(job_id)
Poll job status until completed, partial, or failed (also queued / running while in progress).
get_results(job_id, *, limit=100, cursor=None)
Paginated place rows as { column_header: string } objects. Follow nextCursor until null. limit is 1–500.
scrape(keyword, *, poll_interval_ms=2000, timeout_ms=600_000, result_limit=100)
High-level Google Maps extractor: creates a job, polls to a terminal status, then returns all result rows.
CLI reference
gmaps-scraper me
gmaps-scraper scrape "<keyword>" [--out path.json|path.csv]
gmaps-scraper scrape "<keyword>" [--poll-interval-ms 2000] [--timeout-ms 600000]
# Prefer module form if the npm CLI is also installed (same binary name):
python -m gmaps_scraper me
python -m gmaps_scraper.cli scrape "coffee shops in Austin TX" --out leads.csv
Errors
| HTTP | Exception | Meaning |
|---|---|---|
| 400 | BadRequestError |
Invalid request (e.g. not exactly one keyword) |
| 401 | AuthenticationError |
Missing or invalid API key |
| 402 | InsufficientCreditsError |
No credits remaining |
| 403 | PlanNotAllowedError |
Plan cannot use Agent API (need Growth+) |
| 404 | NotFoundError |
Job not found |
| 409 | JobConflictError |
Another job is already running for this user |
| — | TimeoutError |
Local poll timeout in scrape() |
| other | ApiError |
Base / unexpected API failure |
Limits
- Exactly one keyword per API job.
- Only one running job per user at a time (web UI, HTTP API, and MCP share the lock) →
409if busy. For multiple keywords, scrape sequentially. - 1 credit = 1 place row; enrich is included.
- Agent API requires Growth or higher.
- Empty email/social cells mean nothing public was found — contacts are never invented.
Links
| Resource | URL |
|---|---|
| Website | https://gmapsleadfinder.com |
| Pricing | https://gmapsleadfinder.com/pricing |
| HTTP API docs | https://gmapsleadfinder.com/docs/api |
| Agent & MCP | https://gmapsleadfinder.com/docs/agent |
| OpenAPI | https://gmapsleadfinder.com/openapi-agent.yaml |
| Get API key | https://gmapsleadfinder.com/account#api-key |
| PyPI | https://pypi.org/project/google-maps-scraper-sdk/ |
| Source / examples | https://github.com/google-maps-lead-scraper/google-maps-scraper |
| Python guide | https://github.com/google-maps-lead-scraper/google-maps-scraper/blob/main/docs/python.md |
Prefer Remote MCP for Claude / Cursor / Codex? See the Agent docs.
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file google_maps_scraper_sdk-0.1.1.tar.gz.
File metadata
- Download URL: google_maps_scraper_sdk-0.1.1.tar.gz
- Upload date:
- Size: 10.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cac025d0b9c7df3832d1ed6ed37e556b327604dd1d0a6d9bc8c98e9bd2191a58
|
|
| MD5 |
06dafe13b243c0a5a2d6188d728bd34a
|
|
| BLAKE2b-256 |
d8a4c6fd162828aeeec7fb9a774664514d92be3886f03426b9e7af2dc16db5fd
|
File details
Details for the file google_maps_scraper_sdk-0.1.1-py3-none-any.whl.
File metadata
- Download URL: google_maps_scraper_sdk-0.1.1-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1bf2d270ef732d26ab2188aa3ac55a7125d0b601aa7e8a4882a1920f602a0075
|
|
| MD5 |
789107de7d9e18acbdf90caa6ee70dc0
|
|
| BLAKE2b-256 |
0d8c955ee6b315bf6b5bffa5da1f320f98f6e26640b6be1933a65b4e5c706553
|