LurkAPI
Docs · Google Maps reviews

Google Maps reviews

Up to 5 of a place's Google reviews in the order you pick (most relevant, newest, highest or lowest), with its rating breakdown.

1 credit per callFresh within 1 hourMCP tool: google_maps_reviews
GEThttps://api.lurkapi.com/v1/google/maps/reviews

Example responseView as markdown

When to use this

Use it to watch what customers say: sort=newest polled daily catches new reviews, sort=lowest surfaces complaints. Pass the place as place_id, cid or url.

Up to 5 reviews per sort, no pagination. Google shows signed-out visitors a limited view of Maps, and that's all it serves them; deeper review history needs a signed-in Google account, which we don't use. ratingCounts still covers every review.

Returns 404 not_found when Google has no such place.

Parameters

All parameters go in the query string.

ParameterDescription
place_id
stringoptional
The place's Google place id, e.g. ChIJ1S_Bov20RIYRe7MiR8tYawY (placeId in search results). Pass this, cid or url.
Example
ChIJCar0f49ZwokR6ozLV-dHNTE
cid
stringoptional
The place's cid, the number in maps.google.com/?cid=… (cid in search results).
url
stringoptional
A Google Maps link to the place: …/maps/place/…/data=…!1s0x…:0x…, …?cid=… or …?q=place_id:ChIJ…. Short maps.app.goo.gl links aren't read yet.
sort
stringoptional
Which reviews: relevant (Google's pick, default), newest, highest or lowest rated.
One of
relevantnewesthighestlowest
Default
relevant
Example
newest
language
stringoptional
Language of names, categories, hours and review text, e.g. en, de, pt-BR. Default en.
Default
en

Example request

Replace YOUR_API_KEY with your key, or set LURKAPI_KEY for the code. Get a free key.

Language

Example response

A real response from this endpoint, captured from the live API and trimmed to a couple of items. Strings over 96 characters (mostly signed media URLs) are cut short and end in ….

Show the example response (3 KB)
{
  "success": true,
  "credits_remaining": 999982,
  "credits_charged": 1,
  "placeId": "ChIJCar0f49ZwokR6ozLV-dHNTE",
  "name": "Katz's Delicatessen",
  "rating": 4.5,
  "reviewsCount": 56147,
  "sort": "newest",
  "ratingCounts": {
    "1": 1848,
    "2": 1441,
    "3": 3392,
    "4": 8902,
    "5": 40564
  },
  "reviews": [
    {
      "reviewId": "Ci9DQUlRQUNvZENodHljRjlvT210aE9EWTNhbFoyZDJaSFV6VllhRUpxVGxKelNsRRAB",
      "url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUN…",
      "rating": 5,
      "text": "Must try when in NY!! Remember to tip your cutter and to not lose your ticket.",
      "language": "en",
      "publishedAt": "2026-10-19T22:10:28.394Z",
      "author": {
        "name": "Pietro Parodi",
        "id": "104704096717639011291",
        "url": "https://www.google.com/maps/contrib/104704096717639011291?hl=en-US",
        "photo": "https://lh3.googleusercontent.com/a/ACg8ocIc_yJQNSyCLcP95BR2qPzie4IxgLEB…",
        "reviewsCount": 36,
        "photosCount": 111,
        "localGuide": true
      },
      "photos": [
        "https://lh3.googleusercontent.com/grass-cs/AABkmLcTccp1cyO9ifcyrpV2fC9z0…",
        "https://lh3.googleusercontent.com/grass-cs/AABkmLdgKILH-R_Igz-mXt-sgBbCL…",
        "https://lh3.googleusercontent.com/grass-cs/AABkmLdcg314NoszWXkixRxsTa1Yj…",
        "https://lh3.googleusercontent.com/grass-cs/AABkmLdZAhjv9YAmLIO1gK5lHCgWl…",
        "https://lh3.googleusercontent.com/grass-cs/AABkmLfjcYf08lB_AT1jMCK51VnNk…"
      ],
      "ownerResponse": null
    },
    {
      "reviewId": "Ci9DQUlRQUNvZENodHljRjlvT25SNlMxRjZWbEoxZDI1SmJqUjVaa3cwVWxocFpWRRAB",
      "url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUN…",
      "rating": 5,
      "text": "סנדוויץ׳ פסטרמה טעים בטירוף",
      "language": "iw",
      "publishedAt": "2026-10-19T22:04:07.220Z",
      "author": {
        "name": "Guy Avivit",
        "id": "113582222686806290670",
        "url": "https://www.google.com/maps/contrib/113582222686806290670?hl=en-US",
        "photo": "https://lh3.googleusercontent.com/a-/ALV-UjWsoDyW-h2oEv4FpHIuSx6BJIl25E_…",
        "reviewsCount": 27,
        "photosCount": 281,
        "localGuide": true
      },
      "photos": [
        "https://lh3.googleusercontent.com/grass-cs/AABkmLcDgsv3T4xrmoDOk_6X9fA3w…",
        "https://lh3.googleusercontent.com/grass-cs/AABkmLdKfP64Z1oa-8DDOalemnsCB…",
        "https://lh3.googleusercontent.com/grass-cs/AABkmLf3U8jB8tNx_bTqd-kbcw0Xn…",
        "https://lh3.googleusercontent.com/grass-cs/AABkmLfgYM9eaJcGE0hQYE9GWmLv2…",
        "https://lh3.googleusercontent.com/grass-cs/AABkmLeYncRy7Je5Ug-n1_kl0C9e3…",
        "https://lh3.googleusercontent.com/grass-cs/AABkmLcz9WeyZ3U9gcMDcMCba2q5-…",
        "https://lh3.googleusercontent.com/grass-cs/AABkmLcyk6UvgkLobMovrxiOsyGsd…",
        "https://lh3.googleusercontent.com/grass-cs/AABkmLe2OSEmPju0DccANIH9kfTdp…"
      ],
      "ownerResponse": null
    }
  ]
}

Response fields

Every field of a successful response. [] marks a list: a[].b is the b of each item in a. nullable fields can be null; optional fields can be missing.

Show all 33 fields
FieldTypeDescription
successtrueAlways true here; errors have success: false.
credits_remainingnumberYour balance after this call. On anonymous playground calls: free tries left today.
credits_chargednumberCredits this call cost; 0 on free endpoints. On anonymous playground calls: tries used (1).
placeIdstringnullableGoogle's place id (ChIJ…).
namestringThe place's name.
ratingnumbernullableAverage star rating, 1–5; null with no reviews.
reviewsCountnumbernullableHow many reviews Google counts.
ratingCountsobjectnullableHow many reviews gave each star rating; null when Google shows no breakdown.
ratingCounts.1number1-star reviews.
ratingCounts.2number2-star reviews.
ratingCounts.3number3-star reviews.
ratingCounts.4number4-star reviews.
ratingCounts.5number5-star reviews.
sortstringThe order these reviews are in.
reviewsobject[]Up to 5 reviews in sort order. For hotels Google mixes in reviews from partner sites (e.g. TrustYou), whose author.id is null.
reviews[].reviewIdstringThe review's id.
reviews[].urlstringnullableThe review on Google Maps.
reviews[].ratingnumbernullableStars given, 1–5 (hotel reviews from partner sites can be fractional).
reviews[].textstringnullableThe review text as written; null for a rating without text.
reviews[].languagestringnullableThe language the review was written in, e.g. en.
reviews[].publishedAtstringnullableWhen the review was posted, ISO 8601 (UTC).
reviews[].authorobjectWho wrote it.
reviews[].author.namestringnullableThe reviewer's public name.
reviews[].author.idstringnullableThe reviewer's Google Maps contributor id; null for a partner-site review.
reviews[].author.urlstringnullableThe reviewer's contributor page (a partner-site review links to that site).
reviews[].author.photostringnullableThe reviewer's profile picture.
reviews[].author.reviewsCountnumbernullableHow many reviews the reviewer has written.
reviews[].author.photosCountnumbernullableHow many photos the reviewer has posted.
reviews[].author.localGuidebooleanWhether the reviewer is a Google Local Guide.
reviews[].photosstring[]Photos attached to the review, 800 px wide.
reviews[].ownerResponseobjectnullableThe business owner's reply; null when there's none.
reviews[].ownerResponse.textstringThe owner's reply.
reviews[].ownerResponse.publishedAtstringnullableWhen the owner replied, ISO 8601 (UTC).

Caching and freshness

Responses are cached for up to 1 hour, so a repeat call within that window can return the same data. It still costs 1 credit.

Errors

Errors return { success: false, error, code, docs } with the HTTP status below. Validation errors, 401/402/429 rejections and 5xx failures are free; not_found is charged (how charging works). All error codes.

StatusCodeMeaning
401missing_api_keyNo API key. Send it in the x-api-key header.
401invalid_api_keyThe key is unknown or was revoked.
402insufficient_creditsNot enough credits for this call. Buy a pack or wait for tomorrow's top-up.
403account_suspendedThis account is suspended. Contact support@lurkapi.com. Never charged.
404not_foundThe endpoint, or the thing you asked for (ad, post, subreddit), doesn't exist. Charged when the platform was checked.
405method_not_allowedEndpoints take GET with query params.
429rate_limitedToo many calls at once. Wait for the retry-after seconds, then retry.
500internal_errorSomething broke on our side. Retry; 5xx errors are free.
502upstream_errorThe platform didn't give a usable answer. Retry; 5xx errors are free.
503upstream_busyAll our connections to the platform are busy. Retry in a few seconds; 5xx errors are free.
504upstream_timeoutThe platform took over 30 seconds to answer (90 for web pages). Retry; timeouts are free.

Use it in Claude

Once LurkAPI is connected to Claude, this endpoint is the google_maps_reviews tool. Ask in plain English, for example:

Ask Claude
Use LurkAPI's google_maps_reviews with place_id "ChIJCar0f49ZwokR6ozLV-dHNTE", sort "newest" and summarize what you find.

Claude calls google_maps_reviews with arguments like these, and each call costs 1 credit:

Tool arguments
{
  "place_id": "ChIJCar0f49ZwokR6ozLV-dHNTE",
  "sort": "newest"
}

Tool results are compact to save tokens: no nulls or empty lists, one URL per image or video, transcripts as plain text unless you pass timestamps=true. A result over 45,000 characters comes in parts: its _note gives the offset for the rest, and later parts are free for 15 minutes. trim=false returns the full response.

From the blog

All posts