Skip to content

New AI assistant answers: ChatGPT, Gemini, Copilot and AI Mode by API

SerpKite
Get API key

POST /v1/maps · /v1/place · /v1/reviews

Google Maps Scraper API

Everything people run a Google Maps scraper for, without running one: search a category in a city, get every business's phone, website, rating, hours and coordinates, then pull details and reviews by place_id. SerpKite handles the browsers, proxies and parsing.

Get a free API key Try in playground
1 credit per page of results 2,500 free credits, no card Failed calls are free

Overview

What the Google Maps Scraper API does

Scraping Google Maps yourself means headless browsers, rotating proxies, infinite scroll and a parser that breaks whenever the layout changes. The Google Maps Scraper API is the same data as a plain HTTP call: POST /v1/maps with a query such as dentist and a location (or ll coordinates) returns the businesses Google Maps lists there, with title, address, phone, website, rating, rating_count, type, opening hours, latitude, longitude and the place_id, cid and fid to look each one up later.

For a full lead record, send the place_id to /v1/place for structured weekly hours, international phone number, time zone and photos, and to /v1/reviews for the reviews, 10 per credit. To cover a whole city, queue one search per neighbourhood or grid point with POST /v1/batches at half the credits and collect the results by webhook. Duplicates are easy to drop by place_id.

Only public, logged-out Maps data is collected, and failed or empty searches cost nothing.

What you get

places[] array
position, title, address, country, latitude, longitude, timezone, rating, rating_count, price_level, type, types, website, phone_number, international_phone_number, opening_hours, weekly_hours, description, thumbnail_url, google_maps_url, place_id, cid, fid.
request object
Echo of the normalized request (endpoint, engine, q, country, language, page…), handy for logging.
meta object
request_id, credits_used, cached, engine, latency_ms, resolved_urls and parse_quality. parse_quality=empty means the call was not billed.

Request

curl https://api.serpkite.com/v1/maps \
  -H "Authorization: Bearer $SERPKITE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q":"coffee roasters","location":"Berlin, Germany"}'

Response (illustrative, placeholder domains)

200 OK · application/json
{
  "request": {
    "endpoint": "maps",
    "engine": "google",
    "q": "coffee roasters",
    "location": "Berlin, Germany",
    "country": "de",
    "language": "en",
    "page": 1
  },
  "results": [
    {
      "position": 1,
      "title": "Example Coffee Roasters",
      "address": "Beispielstraße 12, 10115 Berlin, Germany",
      "latitude": 52.5321,
      "longitude": 13.3849,
      "rating": 4.7,
      "rating_count": 1284,
      "price_level": "€€",
      "type": "Coffee roasters",
      "types": [
        "Coffee roasters",
        "Cafe"
      ],
      "website": "https://roasters.example.com",
      "phone_number": "030 0000000",
      "international_phone_number": "+49 30 0000000",
      "country": "DE",
      "timezone": "Europe/Berlin",
      "opening_hours": {
        "Monday": "8 am–6 pm",
        "Saturday": "9 am–5 pm",
        "Sunday": "Closed"
      },
      "weekly_hours": {
        "monday": [
          {
            "open": "08:00",
            "close": "18:00"
          }
        ],
        "saturday": [
          {
            "open": "09:00",
            "close": "17:00"
          }
        ],
        "sunday": []
      },
      "place_id": "ChIJLU7jZClu5kcR4PcOOO6p3I0",
      "cid": "10219612364826466528"
    }
  ],
  "meta": {
    "request_id": "req_01J8ZK4M6Q2V7",
    "credits_used": 1,
    "engine": "google",
    "cached": false,
    "latency_ms": 812,
    "resolved_urls": true,
    "parse_quality": "ok"
  }
}

Every response also carries X-Credits-Used, X-Credits-Remaining, X-Cache and X-Tokens-Estimate headers. Run this query in the playground

Reference

Parameters

The parameters /v1/maps accepts, in the JSON body or the query string.

Google Maps Scraper API parameters
Name Type Default Description
q required string – The search query. Required. Up to 2,048 characters.
country string us Country to search from, as a two-letter ISO code (us, gb, de, in…). Defaults to the country a location ends in.
language string en Interface language, as a language code with an optional region (en, de, pt-BR, zh-TW…).
location string – Canonical location for local results, e.g. "Austin, Texas, United States". Ending in a country name also sets country.
ll string – Map point and zoom as "@lat,lng,zoomz", e.g. @52.52,13.40,14z (zoom defaults to 14z). Searches the map there wherever the request comes from. Overrides location.
page integer 1 Results page, 1–10. Each page is billed separately.
format string json Response format. markdown is LLM-ready prose; compact is JSON with only the fields agents need. Values: json, compact, markdown.
fields string – Comma-separated projection, e.g. results.title,results.link,knowledge_graph. Cuts tokens.
max_age integer – Accept a cached result up to this many seconds old. Cache hits cost 50% of the credits.

Full reference, error codes and headers are in the /v1/maps reference. Queue up to 100 requests at half price with POST /v1/batches.

Use cases

What people build with the Google Maps Scraper API

01

Lead generation

Build prospect lists by category and city with phone numbers, websites and ratings.

02

Local market research

Count competitors, compare ratings and map coverage across neighbourhoods.

03

Reputation monitoring

Track a chain's ratings and new reviews location by location.

04

Directory enrichment

Fill in missing phones, websites, hours and coordinates for an existing business list.

Pricing

Google Maps Scraper API pricing

Cost per call

1 credit

per page of results

  • From $0.60 per 1,000 calls at volume.
  • Credits never expire. No subscription.
  • Failed, empty and blocked calls are refunded.
  • 2,500 free credits = 2,500 calls, then 1,000 credits a month.

For reference: Serper lists Google searches at $1.00 per 1k on its entry tier and $0.30 at its best tier, and its credits expire after 6 months. SerpKite credits cost $1.00 to $0.60 per 1k.

See all pricing
Google Maps Scraper API cost per pack
Pack Price Per 1k credits Per 1k calls Calls per pack
Starter $10 $1.00 $1.00 10,000
Growth $50 $0.80 $0.80 62,500
Pro $300 $0.60 $0.60 500,000

FAQ

Google Maps Scraper API: common questions

Start building

Start with the Google Maps Scraper API

2,500 free credits, then 1,000 every month. No credit card.