Google Maps API: Getting Started in 15 Minutes

By Serpent API Team··12 min read

Method note: The examples below were run against the live Serpent API on August 6, 2026. Field availability is dated and per-place; see the API reference for the current contract.

Short answer: get a Serpent API key, send one GET request with an X-API-Key header, and read the ranked local places from the JSON. You never provision Google Cloud, and a new account starts with 10 shared free calls.

This guide walks the exact flow I used to test the Serpent Google Maps API: an API key, a Quick search, a place detail, and paged reviews — with cURL, Python, and Node examples for each step. If you want the full field reference first, the place details audit covers what survives the public place view.

1. Get an API Key

Create an account, then copy a sk_live_... key from the API keys page. There is no Google Cloud project, no billing account, and no Google credential to rotate. You send the key in a header on every request:

X-API-Key: sk_live_your_api_key

Every new account gets a shared 10-call free pool usable across all four Maps endpoints plus every other endpoint — enough to run this whole guide without paying. The playground has a Maps tab with country and language dropdowns if you want to try requests in the browser first.

2. Quick Search

Search returns up to 20 ranked places. The only required parameter is q; add location and country to scope the ranking.

curl --get "https://apiserpent.com/api/maps/search/quick" \
  -H "X-API-Key: sk_live_your_api_key" \
  --data-urlencode "q=coffee shop" \
  --data-urlencode "location=Austin, TX" \
  --data-urlencode "country=us"
import requests

r = requests.get(
    "https://apiserpent.com/api/maps/search/quick",
    params={"q": "coffee shop", "location": "Austin, TX", "country": "us"},
    headers={"X-API-Key": "sk_live_your_api_key"},
    timeout=60,
)
data = r.json()
for place in data["results"]["places"]:
    print(place["name"], "|", place["rating"], "|", place["address"]["formatted"])
const res = await fetch(
  "https://apiserpent.com/api/maps/search/quick?q=coffee+shop&location=Austin%2C+TX&country=us",
  { headers: { "X-API-Key": "sk_live_your_api_key" } }
);
const data = await res.json();
for (const p of data.results.places) {
  console.log(p.name, p.rating, p.address.formatted);
}

The response carries the richest fields available per place — name, rating, address, phone, website, coordinates, categories, hours, and a canonical maps_url. Each result also includes a detail_status: complete when full enrichment finished, or core_only when only the ranked core record was returned within the request deadline.

3. Get a Place Detail

Each search result includes place_id and data_id. Pass either to the Place endpoint to fetch a single rich record:

curl --get "https://apiserpent.com/api/maps/place" \
  -H "X-API-Key: sk_live_your_api_key" \
  --data-urlencode "place_id=ChIJ..."
{
  "success": true,
  "place": {
    "place_id": "ChIJ...",
    "data_id": "0x...:0x...",
    "maps_url": "https://www.google.com/maps/place/...",
    "name": "Sample Coffee",
    "categories": ["Coffee shop", "Cafe"],
    "address": { "street": "...", "city": "Austin", "state": "TX", "postal_code": "78701", "country": "US", "formatted": "..." },
    "coordinates": { "latitude": 30.2672, "longitude": -97.7431 },
    "rating": 4.7,
    "opening_hours": { "hours": { "Monday": ["7:00 AM - 6:00 PM"] }, "is_open_now": true },
    "phone": "...",
    "website": "https://...",
    "business_status": "Open",
    "detail_status": "complete"
  }
}

The place record has up to 23 documented fields — identifiers, categories, structured address, coordinates, contact fields, rating, hours, status, amenities, links, ownership, and images. Fields Google does not expose for a place come back null: the honest-null contract, never fabricated data. For the measured coverage across four real businesses, see the place details audit.

4. Reviews with Pagination

The Reviews endpoint returns up to 20 reviews per page. Sort with sort=relevant|newest|highest|lowest, and continue with the opaque next_page_token:

curl --get "https://apiserpent.com/api/maps/reviews" \
  -H "X-API-Key: sk_live_your_api_key" \
  --data-urlencode "place_id=ChIJ..." \
  --data-urlencode "sort=newest"
import requests

place_id = "ChIJ..."
url = "https://apiserpent.com/api/maps/reviews"
headers = {"X-API-Key": "sk_live_your_api_key"}
next_token = None
seen = set()

while True:
    params = {"place_id": place_id, "sort": "newest"}
    if next_token:
        params["next_page_token"] = next_token
    data = requests.get(url, params=params, headers=headers, timeout=60).json()
    for review in data["results"]["reviews"]:
        if review["review_id"] not in seen:
            seen.add(review["review_id"])
            print(review["rating"], "|", review["relative_date"], "|", review["text"]["original"][:80])
    next_token = data.get("next_page_token")
    if not next_token:
        break

Tokens are bound to the place and sort order and expire after 15 minutes, so page through promptly. A full Python guide — including dedupe and owner replies — is in Google Maps Reviews API in Python.

5. More Than 20 Places

Two options to widen the result set:

Country and language are two-letter codes (us, gb, de, jp; en, fr, ja, ...). You can also search by lat/lng coordinates, and zoom (3–21, default 14) tunes the map extent.

Honest Field Limits

Because the API returns the public place view, a few fields are not guaranteed on every record. In the August 2026 samples, review_count, price_range, popular_times, review_distribution, and absolute review dates were absent for some places, and phone was missing roughly one place in three. The contract is explicit: those fields come back null rather than being invented. Plan your schema around that and the data stays trustworthy. The full 23-field place table and 9-field review table are in the API reference.

FAQ

Do I need a Google Cloud API key to use this API?

No. You use a Serpent API key (sk_live_...) in the X-API-Key header. You never provision Google Cloud services or manage Google billing.

How do I page through more than 20 places?

Use the Deep endpoint for up to 100 places, or pass start=20/40/60/80 on Quick to offset into the ranked list.

Are all place fields always present?

No. Fields like price_range, popular_times, and review_count are null when not available for a place. Absence is honest, never fabricated.

Related Posts