A google maps reviews api lets you pull review data from a business listing into your own app or dashboard. The official Places API returns up to 5 reviews per request by default, and you’ll pay per call based on the data fields you ask for. This guide covers the setup steps, pricing tiers, limits, and the workarounds that matter when you need more than five records.
How the API pulls reviews from Google Maps
The Places API is a web service by Google that returns details about locations, including their ratings and written feedback. Developers use it to show customer opinions inside apps, websites or internal dashboards without building a separate review system. It’s built for software teams who need structured location data tied to a specific place ID.
When you send a Place Details request, the server answers with a JSON object containing the business name, address, rating, and an array of review entries. Each entry holds the author’s name, star rating, text snippet, and timestamp. You don’t get every single review a business has ever received; the standard response caps out at 5.
The common mix-up here is treating this like a bulk export tool. It isn’t a scraper or a database dump. It’s a lookup service designed to give you a representative sample of what customers think. If you’re building a local directory or adding a small widget to a storefront page, those 5 records are usually enough to show recent sentiment.
Setting up the Places API for reviews
You’ll need a Google Cloud project with billing enabled before you can make any calls. Follow these steps to get your first response.
- Go to the Google Cloud Console and create a new project, or select one you already run.
- Open the navigation menu, find “APIs & Services,” and click “Library.” Search for “Places API” and enable it for your project.
- Head to “Credentials” in the left sidebar. Click “Create Credentials” and choose “API key.” Copy the string it gives you.
- Restrict that key immediately. Click its name, select “Restrict key,” and limit it to the Places API only. Set an IP or HTTP referrer restriction if you’re calling it from a server or browser.
- Install the client library if you want one. Run
npm install @googlemaps/google-maps-services-jsfor Node.js, or use plain HTTP requests. - Find the place ID for the business you want. Use the Place Autocomplete or Text Search endpoint with your API key and the business name.
- Send a Place Details request using that place ID. Include
reviewsin yourfieldsparameter so you don’t pay for data you won’t read. - Parse the JSON response. Look inside the
result.reviewsarray to access the author names, star counts and text blocks.
The judgment call here is field selection. If you ask for every available field—photos, opening hours, website—you’ll jump from the basic data tier to a higher pricing tier per request. Only request the exact fields your interface needs to display.
Places API settings and limits
These figures apply to the standard Places API (New) using the reviews field mask. Check the official Places API pricing page for current rates, as costs shift when Google updates its billing model.
| Situation | What to use | How long | What to watch for |
|---|---|---|---|
| Pulling basic reviews | Place Details with reviews field |
Returns instantly, under 1 second | Max 5 reviews returned per call |
| Finding the place ID first | Text Search or Autocomplete | Takes about 1-2 seconds total | Text Search costs more than Autocomplete |
| High-volume app traffic | Server-side calls with restricted keys | Ongoing, monitor daily quotas | Billing spikes if you request extra fields |
| Translating review text | Add language parameter to request |
Same speed as standard request | Not all languages are supported equally |
| Hitting rate limits | Default quota or requested increase | 100 queries per second default | Exceeding this returns HTTP 429 errors |
| Testing locally | Your restricted API key in dev mode | Until your free monthly credit runs out | Free $200 monthly credit covers limited testing |
If you’re pulling data for just one store, the free $200 monthly credit usually covers it. If you’re running a multi-tenant SaaS platform checking hundreds of listings daily, you’ll burn through that credit in the first week. Adjust your caching strategy accordingly.
Getting clean data from the API
The difference between a reliable integration and a broken one comes down to how you handle the response structure. Don’t assume every field exists in every response. A business might have zero reviews, meaning the reviews array will be missing entirely rather than empty. If your code tries to loop over a missing array, your app crashes. Always check if the key exists before iterating.
Caching is where you save money and keep your app fast. Store the JSON response in your own database or memory cache instead of hitting the endpoint every time a user loads a page. Reviews don’t change by the minute. Fetch them once, save the result, and set a timer to refresh that record later.
Pay attention to the text length too. The API sometimes truncates longer reviews, ending them with an ellipsis. If you need the full text for sentiment analysis, you’ll hit a wall here. The truncated version is fine for a website widget, but it’s useless for training a machine learning model.
Handling pagination and missing fields
There’s no pagination for reviews in the standard Place Details response. You get what the server hands back, up to that 5-item limit. Don’t write code looking for a “next page” token for reviews—it doesn’t exist in this endpoint. If you see a next_page_token in search results, that applies to finding more places, not more reviews for a single place.
Filter out reviews flagged as spam if you’re displaying them publicly. The API includes a profile_photo_url and a relative time description like “a month ago.” Convert that relative time into a real date on your server so your frontend doesn’t have to guess the math every time the page loads.
When the API returns unexpected results
Things go wrong when the setup is slightly off, or the target listing behaves differently than expected. Here is how to match the symptom to the fix.
| What you notice | What it usually means | What to do first |
|---|---|---|
| Empty reviews array | The business has no reviews yet | Check the place ID against Maps directly |
| HTTP 403 Forbidden error | Your API key lacks permission or is restricted | Verify key restrictions in Cloud Console |
| Only 2 or 3 reviews return | The listing simply has very few reviews | Confirm total count on the live Maps page |
| Bill jumps unexpectedly | You requested premium fields like photos | Remove unused fields from your request mask |
| HTTP 429 Too Many Requests | You exceeded the queries-per-second quota | Implement exponential backoff in your code |
| Review text ends abruptly | Long reviews are truncated by design | Accept the limit or link out to Maps |
If you get a 403 error right after creating your key, you probably set an HTTP referrer restriction that doesn’t match where you’re running the code. Remove the referrer restriction temporarily to test, then add the correct domain back once it works. Leaving it open permanently is how leaked keys drain billing accounts.
Usage rules and billing thresholds
Every call to the Places API requires an active billing account attached to your project. The service is inexpensive relative to the alternative thanks to a recurring monthly credit that covers a specific number of requests depending on the SKU you trigger. Once that credit is gone, your card gets charged automatically.
The Terms of Service strictly prohibit scraping, storing data indefinitely without reason, or using the content outside of a map-based or location-based application context. You can’t take the reviews and build a standalone product that competes with their core services. You also can’t sell the raw data to third parties.
For enterprise limits beyond the default 100 queries per second, you must submit a quota increase request through the Cloud Console. Automated systems that hammer the endpoint faster than allowed will get blocked. If your architecture requires processing thousands of locations simultaneously, contact the sales team to discuss a custom agreement rather than trying to bypass the rate limiter.
Keeping your integration stable
Once your script pulls data successfully, you need to manage how often it asks again. Don’t ping the endpoint on every page load. Save the response to your database with a timestamp. Read from your database when users visit the page.
Set a refresh schedule based on how active the business is. A busy restaurant might need a weekly update to catch new feedback. A quiet rural shop could easily wait a month. Write a background job that checks the timestamp and only fetches fresh data when the interval passes.
Monitor your billing dashboard weekly during the first month. You’ll spot runaway loops or forgotten test scripts eating into your credits before they cost real money. If a review disappears from the live listing, it will vanish from your next API pull too, so don’t treat your cached copy as permanent legal evidence.
When the Places API is the wrong choice
This approach fails if you need historical data going back years. The endpoint only serves the most recent handful of reviews. If you’re doing academic research on long-term reputation trends, you’ll have to look at licensed datasets or manual collection methods approved by an institutional review board.
It’s also the wrong fit if you need reviews from competitors’ platforms like Yelp or TripAdvisor. This service only returns what users post on Google. Trying to merge different platforms through one vendor’s tool won’t work.
Finally, if you need thousands of reviews for a single location to train an AI model, the 5-item hard cap makes this unusable. You’d spend more money making thousands of identical requests than the data would be worth. For bulk extraction at scale, businesses typically negotiate direct data licensing agreements rather than relying on public-facing developer tools.
Frequently asked questions
How many reviews does the Places API return?
It returns a maximum of 5 reviews per Place Details request. This limit applies to the standard endpoint regardless of how many total reviews the business has on its live profile. You can’t adjust this number via parameters.
Is the Places API free to use?
Yes, up to the monthly credit that Google applies to every billing account, which makes it inexpensive relative to the alternative. That credit covers a set number of requests depending on which data fields you include. After the credit runs out, you pay per request based on current tier pricing.
Can I get reviews for any business?
Yes, as long as the business has a valid place ID and a public listing on Maps. You can’t fetch reviews for unlisted locations, private addresses, or listings that have been removed or suspended by the platform.
Why are some review texts cut off?
Longer reviews are truncated by the server before they reach you. The text ends with an ellipsis to indicate missing words. There’s no parameter available to request the full original text block through this specific endpoint.
How often should I fetch new reviews?
Fetch them only when your cached data expires. For active businesses, pulling once a week keeps your display reasonably fresh. For inactive ones, once a month is plenty. Never query the endpoint on every single user page view.
Do I need a special license for commercial use?
No separate license is needed beyond agreeing to the standard Terms of Service when you enable billing. However, you must follow their display requirements, which include showing the data within the context of a map or location service and retaining required attributions.
Conclusion
Choosing the right fields and caching the responses turns a simple lookup into a stable feature. Keep your API key locked down, watch your billing dashboard while you test, and stick to the 5-review limit when designing your interface. The tool does exactly what it promises when you don’t ask it to be something it isn’t.