google maps · reviews
Google Maps place reviews (top, guest view). GET /v1/google-maps/reviews accepts your x-api-key header. Costs credits that scale with the request (see parameters) per successful fresh call; failures and opt-in cache hits (cache_max_age) are free. Native path: GET /api/v1/web/google-maps/reviews. Same request parameters and JSON shape as the reference API, so you can switch by changing the base URL.
Request parameters
Reviews Google Maps shows a logged-out visitor (the top “most relevant” set, usually ~5) plus total count and star histogram. Google serves logged-out users a “limited view” — the full review list, sorting and pagination (listugcposts) return PERMISSION_DENIED without sign-in, so this endpoint is not paginated. With a search API key configured, returns the full review list (20 per page, sortable, paginated) via a Google results API; otherwise the ~5 reviews logged-out Maps shows.
| Parameter | Type | Required | Description |
|---|---|---|---|
place_id | string | No | Google place_id (ChIJ…), Google feature id (0x…:0x…), or numeric CID. One of place_id or url is required. |
url | string | No | Google Maps place URL (google.com/maps/place/… or maps.app.goo.gl/…). |
language | string | No | Interface/content language code. |
region | string | No | Two-letter country code. |
limit | integer | No | How many reviews you need (default 20). Up to 5 with default order uses the free logged-out path (1 credit); more uses the full review API at 2 credits per 20 reviews. Range: 1–100. |
sort | string | No | Review order (full mode). Allowed: most_relevant, newest, highest_rating, lowest_rating. |
cursor | string | No | Pagination cursor from the previous page (full mode). |
source | string | No | auto (default): full reviews when available; guest: logged-out Maps only. Allowed: auto, guest. |
freshness | string | No | 24h (default), 1h, 7d, or live. Accepted cache hits are free; live forces refresh except simultaneous requests may share newly fetched data. |
Code examples
Set SIGNALSHELF_BASE_URL and SIGNALSHELF_API_KEY on your server.
curl "$SIGNALSHELF_BASE_URL/v1/google-maps/reviews?" \
-H "x-api-key: $SIGNALSHELF_API_KEY"const response = await fetch(process.env.SIGNALSHELF_BASE_URL + "/v1/google-maps/reviews?", {
headers: { 'x-api-key': process.env.SIGNALSHELF_API_KEY },
});
const body = await response.json();
if (!response.ok) throw new Error(body.error.message);
console.log(body.data, body.meta);import os, requests
response = requests.get(
os.environ['SIGNALSHELF_BASE_URL'] + "/v1/google-maps/reviews?",
headers={'x-api-key': os.environ['SIGNALSHELF_API_KEY']},
timeout=30,
)
response.raise_for_status()
print(response.json())Response and pagination
The response contains data and meta. data includes platform, resource, sample:false, provider, and the public source payload. Lists return data.items; individual resources return data.data.
Author feeds include data.next_cursor. Return it unchanged in cursor for the next page. Feed entries can include reposts. Single-post lookups resolve the handle to a DID first. Deleted or moderated posts may be unavailable.
meta includes event_id, mode, cache, credits_charged, fetched_at, age_seconds, and duration_ms. A fresh successful result costs one credit; accepted cached results and failures cost zero.
Availability and failures
Implementation is not a continuous availability guarantee. Source rate limits, retention, deleted content, restrictions, and regional availability apply. This is an independent SignalShelf contract, not a drop-in competitor response format.
400: invalid parameters. 401: missing/revoked key. 402: insufficient credits. 404: missing public resource. 429: SignalShelf throttle. 502/503: upstream failure or rate limit, with credit restored.