Google Maps Reviews API
Fetch up to 100 Google Maps reviews for a place by place ID, sorted the way you need, in one normalized response.
Provider network
Providers ranked by traffic
capped at $0.0441 per request1 result$0.000551 results$0.0225101 results$0.0441 capYou are charged for what comes back. Lower the limit to pay less - and no single request can cost more than the cap, however much comes back.
capped at $0.0105 per request1 result$0.006145 results$0.008389 results$0.0105 capYou are charged for what comes back. Lower the limit to pay less - and no single request can cost more than the cap, however much comes back.
Try it
Make your first request
{
"data": {
"items": [
{
"author": "Alex Rivera",
"createdUtc": 12.5,
"isLocalGuide": true,
"likes": 12500,
"origin": "example",
"ownerResponse": "Alex Rivera",
"ownerResponseAt": "Alex Rivera",
"placeId": "a1b2c3d4",
"publishedAgo": "2024-01-15T09:30:00Z",
"rating": 4.6,
"reviewId": "A short example description of this item.",
"reviewerId": "A short example description of this item.",
"reviewerReviewsCount": 12500,
"text": "A short example description of this item.",
"url": "https://example.com/page"
}
]
},
"found": true
}interface MapsReviewsResponse {
data: {
items: {
author?: string;
createdUtc?: number;
isLocalGuide?: boolean;
likes?: number;
origin?: string;
ownerResponse?: string;
ownerResponseAt?: string;
placeId?: string;
publishedAgo?: string;
rating?: number;
reviewId: string;
reviewerId?: string;
reviewerReviewsCount?: number;
text?: string;
url?: string;
}[];
} | null;
found: boolean;
}Full parameter and response reference - every field, type, and example for this endpoint.
Reference
Request, response, and price
Last verified 2026-09-16 · uptime and latency measured over 30dcurl -X POST https://api.getanyapi.com/v1/run/maps.reviews \
-H "Authorization: Bearer $ANYAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"limit":3,"placeId":"ChIJN1t_tDeuEmsRUsoyG83frY4"}'| Field | Type | Example value |
|---|---|---|
| Request body | ||
| placeId | string | "ChIJN1t_tDeuEmsRUsoyG83frY4"The Google Maps place ID to fetch reviews for (e.g. ChIJj61dQgK6j4AR4GeTYWZsKWw). |
| language | string | Two-letter language code for the review details (e.g. en). |
| limit | integer | 3Maximum number of results to return (1-100, default 100). |
| postedLimit | enum | Only return reviews posted within this window: 24h (past 24 hours), week (past 7 days), month (past month), or year (past year). Omit for no recency filter. |
| requireFields | array | Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `isLocalGuide` or `placeId`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a review that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge. |
| reviewsFilterString | string | Only return reviews whose text contains this keyword or phrase (case-insensitive). Omit to return all reviews (e.g. parking). |
| sort | enum | Order in which reviews are returned (e.g. newest). |
| Response | ||
| data | object | The reviews result, or null when not found. |
| data.items | object[] | Review records: reviewer, star rating, review text (empty when the reviewer left only a rating), publish date, likes, and owner response where present. Populated whenever the provider has data for the entity. |
| data.items[].author | string | Reviewer display name. Populated whenever the provider has data for the entity. |
| data.items[].createdUtc | number | UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds. Populated whenever the provider has data for the entity. |
| data.items[].isLocalGuidecan require | boolean | Whether the reviewer is a Google Local Guide. |
| data.items[].likescan require | integer | Number of likes on the review. |
| data.items[].origincan require | string | Source of the review (e.g. Google). |
| data.items[].ownerResponsecan require | string | Owner's reply text; empty when there is none. |
| data.items[].ownerResponseAtcan require | string | ISO 8601 timestamp of the owner's reply; empty when there is none. |
| data.items[].placeIdcan require | string | Google Maps place id the review belongs to. Echoes the requested placeId; a lane that does not repeat it per review omits it. |
| data.items[].publishedAgocan require | string | Human-relative publish time (e.g. '7 hours ago'). |
| data.items[].ratingcan require | number | Star rating the reviewer gave (1-5). |
| data.items[].reviewId | string | Stable Google review id. Populated whenever the provider has data for the entity. |
| data.items[].reviewerIdcan require | string | Stable Google id of the reviewer. |
| data.items[].reviewerReviewsCountcan require | integer | Total number of reviews the reviewer has written. |
| data.items[].textcan require | string | Review text; empty string when the reviewer left only a star rating. |
| data.items[].url | string | Direct URL to the review on Google Maps. Populated whenever the provider has data for the entity. |
| found | boolean | Whether reviews were found. |
| Price | ||
| Price per request | USD | $0.0035 |
| Price /1k req | USD | $3.50 |
FAQ
About the Google Maps Reviews API
The AnyAPI Google Maps Reviews API returns Google Maps reviews data as normalized JSON from one POST call to /v1/run/maps.reviews. Fetch up to 100 Google Maps reviews for a place by place ID, sorted the way you need, in one normalized response. AnyAPI routes each request across 3 sources and falls back automatically when one fails. It costs from $3.50 per 1,000 requests, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 100.0% of Google Maps reviews calls through AnyAPI succeeded, with a median response time of 7.6 seconds across 713 measured calls.