toolzerhub API Docs

List place reviews

Returns a page of reviews, newest first, up to 20 per page via next_cursor paging. Complete corpus verified at 5,950 of 5,950, zero duplicate review ids. NO sort parameter — other orders reach as few as 143. Warm-up of roughly 35 seconds after idle; 503s are retryable with backoff.

1 credit / requestBilled only on success
GET
/v1/google-maps/reviews

Authorization

ApiKeyAuth
x-api-key<token>

In: header

Query Parameters

cid*string

Google place identifier from a search result's cid field. A Google Maps URL containing the ID is also accepted. Use the same cid with every cursor in a review walk.

Lengthlength <= 500
cursor?string

Cursor from the previous response. Omit for the first page, reuse the same cid, and stop when has_more is false rather than when a page contains fewer reviews than requested.

Lengthlength <= 400
count?integer

Reviews per page, up to 20. Higher values are rejected.

Range1 <= value <= 20
Default20
curl -X GET "https://example.com/v1/google-maps/reviews?cid=0x808587fb77f5f64d%3A0x25d564f177f99946" \  -H "x-api-key: YOUR_API_KEY"
{  "data": {    "reviews": [      {        "review_id": "ChZDSUhNMG9nS0VJQ0FnSURfeGV5RVh3EAE",        "place_ref": "0x0:0x25d564f177f99946",        "rating": 5,        "text": "Best espresso in the neighbourhood. Tiny room, huge care.",        "language": "en",        "created_at_us": 1747224000000000,        "updated_at_us": 1747224000000000,        "relative_time": "3 months ago",        "author": {          "name": "Alex Rivera",          "id": "112233445566778899000",          "avatar": "https://lh3.googleusercontent.com/a/example=s120-c-rp-mo-br100",          "profile_url": "https://www.google.com/maps/contrib/112233445566778899000",          "review_count": 87,          "photo_count": 412,          "local_guide_level": 7        },        "photos": [          {            "url": "https://lh5.googleusercontent.com/p/AF1QipExample",            "width": 4032,            "height": 3024          }        ],        "owner_response": {          "text": "Thank you for the kind words — see you next time!",          "created_at_us": 1755212345678901,          "updated_at_us": 1755212345678901,          "relative_time": "2 months ago",          "language": "en"        }      }    ],    "count": 20,    "next_cursor": "0x808587fb77f5f64d:0x25d564f177f99946|CAESY0NBRVFBUm9VUTJoa1p...",    "has_more": true,    "requested_cid": "0x808587fb77f5f64d:0x25d564f177f99946",    "usage_note": "Newest first, and walking every `next_cursor` returns the COMPLETE corpus — measured against Maps' own displayed count on four places: 338/338, 1722/1723, 1782/1782 and 5950/5950, zero duplicate review ids across 492 pages. Pages hold at most 20 reviews. Reviews with a null `text` are star-only ratings, not broken rows: they are ~25-40% of the corpus and Maps counts them too. `next_cursor` is bound to this `cid` and cannot be used with another place. Stop when `has_more` is false, not when a page comes back short — the last page is usually both full-ish and final."  }}