Skip to content

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

SerpKite
Get API key
Docs menu / Google Place Details

Google Place Details

One place by place_id, cid or fid (or a Yandex Maps oid): address, country, time zone, structured weekly hours, phones, website, description and photos.

POST https://api.serpkite.com/v1/place Credits: 1 per place Try in playground
View as Markdown

The full Google Maps listing of one place, identified by place_id, cid or fid (all three come back from /v1/maps and /v1/places): address, country, coordinates, time zone, categories, opening hours as text and as structured weekly_hours, website, local and international phone, rating, description and up to 10 photos, in language.

results holds the place, or is empty (not charged) when no place has that identifier. A max_age cache hit costs half, and so does the place in a batch.

Request body

Send a JSON object with Content-Type: application/json. The same parameters also work as a query string on GET /v1/place. JSON arrays are rejected: to run many queries at once, use POST /v1/batches at half price. Unknown parameters return 400 invalid_request with a message that names the replacement; see strict validation.

ParameterTypeDefaultDescription
place_idstringGoogle place ID ("ChIJ…"). One of place_id, cid or fid is required; place_id wins, then fid, then cid.
cidstringPlace and reviews: Google customer ID of the place (decimal).
fidstringPlace and reviews: Google feature ID of the place ("0x…:0x…").
oidstringYandex Maps organisation ID (digits): looks the place up on Yandex Maps instead of Google, and implies engine=yandex. Not combined with place_id, cid or fid. See Yandex Maps.
countrystringusCountry code (ISO 3166-1 alpha-2): Google's regional view of the listing.
languagestringenLanguage of the address, categories, hours and description (en, ru, de…).
formatstringjsonResponse format. markdown is LLM-ready prose; compact is JSON with only the fields agents need. One of: json, compact, markdown.
fieldsstringComma-separated projection, e.g. results.title,results.link,knowledge_graph. Cuts tokens.
max_ageintegerAccept a cached result up to this many seconds old. Cache hits cost 50% of the credits.

Example request

Authenticate with Authorization: Bearer $SERPKITE_API_KEY (GET requests may pass ?api_key= instead). The official SDKs read SERPKITE_API_KEY for you. See Authentication.

curl https://api.serpkite.com/v1/place \
  -H "Authorization: Bearer $SERPKITE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"place_id":"ChIJ94DTm1cDdkgRibmgxzXy2EQ","country":"gb"}'

Response fields

FieldTypeDescription
requestobjectThe normalised request, with defaults filled in: endpoint, engine, q, country, language, location, num, page, device, autocorrect…
results[]arrayThe place (one item): title, address, country (ISO code, upper case), latitude, longitude, timezone (IANA), 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 (with engine=yandex: oid and yandex_maps_url instead of the Google IDs and URL). Fields the map doesn't show for a place are absent.
results[].opening_hoursobjectHours as Google displays them, keyed by English weekday, in language: {"Monday": "7:30 am–6 pm", "Sunday": "Closed"}.
results[].weekly_hoursobjectThe same hours as data: monday … sunday, each a list of {open, close} local times (HH:MM, 24-hour, in timezone). Closed is [], open 24 hours is [{"open":"00:00","close":"24:00"}], a midnight close is "24:00", and an interval past midnight has next_day: true (17:30–03:00). Days Google doesn't list are absent.
results[].photos[]arrayUp to 10 photos: url (public, fetchable server-side without cookies; at most 1600 px on the long side), width, height, source (business or visitor, when Google says).
metaobjectrequest_id, credits_used, cached, cached_at, engine (the provider that answered), route (provider attempts, see Search providers), latency_ms, parse_quality (ok, partial, empty), resolved_urls; llm (provider, model, input_tokens, output_tokens) and warnings when an AI step ran or failed.

Every billed response also carries credit and latency headers (X-Credits-Used, X-Credits-Remaining, X-Request-Id…).

Example response

200 OK · illustrative
{
  "request": {
    "endpoint": "place",
    "engine": "google",
    "place_id": "ChIJ94DTm1cDdkgRibmgxzXy2EQ",
    "country": "gb",
    "language": "en"
  },
  "results": [
    {
      "title": "Monmouth Coffee Company",
      "address": "2 Park St, London SE1 9AB",
      "country": "GB",
      "latitude": 51.5055334,
      "longitude": -0.0914069,
      "timezone": "Europe/London",
      "rating": 4.5,
      "rating_count": 3039,
      "type": "Coffee shop",
      "types": [
        "Coffee shop",
        "Cafe"
      ],
      "website": "http://www.monmouthcoffee.co.uk/",
      "phone_number": "020 7232 3010",
      "international_phone_number": "+44 20 7232 3010",
      "description": "Fair-trade coffee & gourmet treats in the cafe & whole or freshly ground beans bagged to take home.",
      "opening_hours": {
        "Monday": "7:30 am–6 pm",
        "Sunday": "Closed"
      },
      "weekly_hours": {
        "monday": [
          {
            "open": "07:30",
            "close": "18:00"
          }
        ],
        "sunday": []
      },
      "photos": [
        {
          "url": "https://lh3.googleusercontent.com/…=w741-h472-k-no",
          "width": 741,
          "height": 472,
          "source": "business"
        }
      ],
      "google_maps_url": "https://maps.google.com/?cid=4960981302344989065",
      "place_id": "ChIJ94DTm1cDdkgRibmgxzXy2EQ",
      "cid": "4960981302344989065",
      "fid": "0x487603579bd380f7:0x44d8f235c7a0b989"
    }
  ],
  "meta": {
    "request_id": "req_01J8ZK4M6Q2V7",
    "credits_used": 1,
    "cached": false,
    "engine": "google",
    "latency_ms": 1034,
    "parse_quality": "ok",
    "resolved_urls": true
  }
}

Errors

Errors use one shape: {"error":{"code","message","request_id"}}. Errors are never billed. Full list in Errors.

StatusCodeMeaning
400invalid_requestA parameter is missing or invalid.
401unauthorizedThe API key is missing, invalid or revoked.
402insufficient_creditsYour balance is too low. Buy a pack or wait for the monthly free grant.
429rate_limitedToo many requests per second for your plan. Retry after the Retry-After header.
503upstream_errorGoogle could not be fetched or parsed. Not billed; retry after Retry-After.

Notes

  • Addresses, categories, hours text and descriptions follow language: with language: "ru" a Moscow café has type: "Ресторан" and opening_hours like {"Monday": "24 часа в сутки"}. weekly_hours, country and timezone are the same in every language.
  • Use max_age to re-check a listing (hours, phone, website) at half price from the cache.