POST/api/v1/google-review-link
Supported input
- A full Google Maps URL for a specific place
- A maps.app.goo.gl Share link
- A legacy goo.gl/maps Share link
Request
Send one JSON object to the endpoint. Business names and bare Place IDs are not accepted.
curl -X POST https://productmate.com/api/v1/google-review-link \
-H "Content-Type: application/json" \
-d '{"maps_url":"https://www.google.com/maps/place/PRODUCTMATE/data=!1s0x47b18f1cae867bab:0xb6f8b3a3753ba1a2!8m2"}'
Response
{
"place_id": "ChIJq3uGrhyPsUcRoqE7daOz-LY",
"review_url": "https://search.google.com/local/writereview?placeid=ChIJq3uGrhyPsUcRoqE7daOz-LY",
"verification": "not_verified"
}
verification is always not_verified. Check the location before you give the link to a user.
Errors and recovery
invalid_request(400)
Send valid JSON with one non-empty maps_url string.unsupported_url(422)
Use the Share link from a specific Google Maps business.unsafe_redirect(422)
Use a Share URL that redirects only to Google Maps.upstream_unresolved(502)
Open the short URL and send its final full Maps URL.upstream_timeout(504)
Wait, retry once, or send the final full Maps URL.
Usage limits
The anonymous limit is approximately 20 requests per minute for each client IP. Shared agent-provider IP addresses share this allowance.
Content-Length: 16 KiB
maps_url: 8 KiB
short_url_resolution_deadline: 10 s
An edge-generated 429 response can have no JSON body or Retry-After header. Wait at least 60 seconds, then retry with increasing delays.
Find the correct Maps URL
- Open the exact business location in Google Maps.
- Check the branch name and address, then select Share.
- Copy the link and send it as maps_url.
Data use
Successful calls record the place identifier, language, time, and coarse business location when available. Resolved short URLs are cached for 24 hours.