Analyze customer reviews of your locations on Google Maps
Collect Google Maps reviews for your locations as JSON: text, stars, date and owner replies, newest first, to find what customers complain about.
If you run a restaurant group, a clinic network or a retail chain, each location has its own Google Maps reviews, and each tells you something different: slow service at one branch, a rude manager at another. Reading them across ten or fifty places is not something a person does every week. Lovely Router collects them. Send place IDs or links, get one JSON object per review, pay per review from a prepaid balance. Call it from a script, a dashboard job or an AI agent with one API key.
Hand it to your AI agent
Copy this prompt into Claude Code, Cursor, Codex or any coding agent. It tells the agent where the docs are and how to use your API key.
Analyze customer reviews of your locations on Google Maps. Use the Lovely Router data tools: each returns JSON and is billed per result.
- Docs (read first): https://lovelyrouter.com/docs/tools/find.md and https://lovelyrouter.com/docs/tools/run.md
- Plan first: POST https://lovelyrouter.com/v1/tools/suggest with `{"task": "<my task in plain words>"}` (free). It returns the tools to run in order, each with an example `input`, the `input_required` fields, an estimated cost and a ready-made `run` request. Replace the example values with my task's; if a field is unclear, read the tool with GET https://lovelyrouter.com/v1/tools/<id>. To browse instead, POST https://lovelyrouter.com/v1/tools/discover searches the catalog.
- Show me the plan and its estimated cost (`total_est_cost_usd`) before running anything large.
- Run: POST https://lovelyrouter.com/v1/tools/<id>/run with `{"input": {...}, "max_results": N}`. A 200 has the finished run with `items`; a 202 means it is still running, so poll the `poll` path until `status` is `succeeded`, `failed`, `timed_out` or `stopped`.
- Only delivered results are billed. Keep max_results small on the first run, check the output, then scale up.
- If you support MCP, connect https://lovelyrouter.com/mcp instead (Streamable HTTP, same key; https://lovelyrouter.com/docs/tools/mcp.md) and use suggest_tools, get_tool and run_tool.
- Auth: read my API key from the LOVELY_API_KEY environment variable and send it as `Authorization: Bearer $LOVELY_API_KEY`. Never print or commit the key. If it is not set, ask me to create one at https://lovelyrouter.com/app/keys.
- Billing is prepaid: every call is charged to my balance, so test with a small request before running anything large.
- Every docs page is plain Markdown; the full index is https://lovelyrouter.com/llms.txt.
My task: <the inputs (links, keywords or accounts) and how many results you need>How it works
Collect your place IDs
Use the place ID of each location, a 27-character ID starting with
ChIJorGhIJ, or the Google Maps place link.Run the tool with a cap
Send them to
POST /v1/tools/google-maps-reviews/runwithmaxReviewsandmax_results. ChoosereviewsSortto get the newest, the lowest ranked or the most relevant first.Group and read
Group reviews by place and week. Count low stars, then have a model summarize what the complaints share.
Get reviews with one request
Google Maps reviews takes placeIds or startUrls. maxReviews caps reviews per place, and max_results caps the whole run:
curl https://lovelyrouter.com/v1/tools/google-maps-reviews/run \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-H "content-type: application/json" \
-d '{
"input": {
"placeIds": ["ChIJN1t_tDeuEmsRUsoyG83frY4"],
"maxReviews": 3,
"reviewsSort": "newest"
},
"max_results": 3
}'A run still going after 60 seconds returns 202; Run a tool shows how to poll.
What each review holds
| Field group | What you get |
|---|---|
| Rating | The stars given |
| Content | The review text |
| Timing | The date of the review |
| Response | The owner's reply, if there is one |
Use language to get reviews in a chosen language. Pair the output with a model to translate or classify reviews in the same job.
Recipes
Run each location with reviewsSort set to newest, keep the reviews from the last seven days with one or two stars, and send them to the branch manager.
Filter for reviews with no owner reply and hand the list to whoever handles customer care.
Collect 200 reviews per location, ask a model to tag each by theme such as wait time, staff, cleanliness or price, and compare branches.
Set reviewsSort to lowestRanking to see what the angriest customers wrote, before you read the average ones.
Run a rival's place ID with lowestRanking and see which complaints repeat, then decide whether you can do better on those points.
Prefer plain words? Connect the MCP server and tell Claude Code or Cursor: "Read the 100 newest reviews for each place ID in places.txt, flag anything with one or two stars, and group the complaints by theme. Set max_results to 1000."
Pair it with other review and local sources
Google Maps is one place customers talk. Others fill in the picture:
Reviews of a Google Maps place (by place ID or URL): text, stars, date, owner replies.
Find local businesses on Google Maps by keyword and location: name, address, phone, website, rating, review count, opening hours, coordinates.
Trustpilot reviews of a company by domain: stars, text, date, reply.
Reviews of Tripadvisor hotels, restaurants and attractions: rating, title, text, date, trip type.
google-maps-placesfinds the place IDs and basic data for the locations you want to monitor.trustpilot-reviewsreads reviews of a company by domain, with stars, text, date and reply.tripadvisor-reviewscovers reviews for restaurants, hotels and attractions.
For the wider workflow, see review monitoring.
What you pay
You pay per review: starting a run holds its maximum cost, the per-call fee plus the per-review fee times max_results, and the run settles to what it returned. The rest of the hold goes back to your balance. A run that fails or times out pays only for the reviews it delivered, and a run refused at the start costs nothing.
Pulling 300 reviews a week is billed as 300 reviews a week. There is no subscription and no monthly minimum: top up from $5, and one balance pays for tools and models. The card above shows today's price; pricing lists every tool.
Frequently asked questions
Where do I find a place ID?+
A place ID is a 27-character string starting with ChIJ or GhIJ. You can also pass Google Maps place links in startUrls instead. google-maps-places can help you find places.
How many reviews can I get?+
maxReviews caps reviews per place, and one run can return up to 500 reviews in total via max_results. For more, start several runs.
Can I get the newest reviews only?+
Yes. Set reviewsSort to newest. Other options are mostRelevant, highestRanking and lowestRanking.
Does it include the owner's reply?+
Yes, the owner replies are part of what each review holds when one exists.
Do I need a subscription?+
No. You add credit to a prepaid balance and each run draws it down. Failed runs pay only for the results they delivered, and nothing renews automatically.
Monitoring reviews across platforms? See review monitoring, the tool catalog, and pricing.