Why use an API instead of browser automation
Rolling your own Google Maps scraper means running headless browsers, rotating proxies to avoid blocks, and constantly fixing selectors every time Google changes its markup. It's a maintenance treadmill that breaks at the worst possible moment.
A managed API removes all of that. MapsHarvest handles the scraping infrastructure, the proxies, and the parsing. You send a JSON request describing what you want, and you get back structured, deduplicated business data — the same engine that powers the dashboard, callable from any language.
The core endpoints
Every request authenticates with a Bearer token (Authorization: Bearer mh_live_...). All requests and responses are JSON.
/scrapeStart a scrape. Pass a query, states, and optional filters; get back a job_id immediately.
/jobs/{id}Poll a job's status, progress, cities completed, and rows collected.
/jobs/{id}/downloadDownload the finished results as CSV, XLSX, or JSON.
/jobs/{id}/stopStop a running job early. Leads already collected stay available to download.
A complete example
Start a scrape, wait for it to finish, then download the CSV — three calls:
# 1. Start a scrape
JOB=$(curl -s -X POST https://api.mapsharvest.com/scrape \
-H "Authorization: Bearer mh_live_..." \
-H "Content-Type: application/json" \
-d '{"query":"dentist","states":"Florida","max_total_results":500}' \
| jq -r .job_id)
# 2. Poll until completed
until [ "$(curl -s https://api.mapsharvest.com/jobs/$JOB \
-H 'Authorization: Bearer mh_live_...' | jq -r .status)" = "completed" ]; do
sleep 5
done
# 3. Download the results
curl -s https://api.mapsharvest.com/jobs/$JOB/download \
-H "Authorization: Bearer mh_live_..." -o leads.csvFull Python and Node.js examples, every parameter, and response schemas are in the API documentation.
What people build with it
Agencies automating client lead gen
Wire the API into your onboarding so a new client's lead list is generated automatically the moment their niche and territory are set — no manual scraping per account.
SaaS data enrichment
Call the API from your product to enrich records with live business data — phone, website, rating, hours — on demand instead of shipping a stale database.
Scheduled data pipelines
Trigger scrapes on a cron from your own backend, drop the CSV into your warehouse or CRM, and keep a continuously refreshed dataset without anyone clicking a button.
Internal tools & dashboards
Give your sales ops team a one-click 'pull leads' button that hits the API behind the scenes and returns a ready-to-dial list.
Getting an API key
API access is included on the Growth and Scale plans. Generate a key from the Integrations tab in your dashboard, keep it secret, and pass it as a Bearer token on every request. Prefer no-code? You can also POST results to any webhook — Zapier, Make, n8n — or push straight to Airtable without writing a line of code.
Automate your Google Maps lead gen
Read the full API reference, or start free with 50 credits — no credit card.