Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use Google Places API (New), not a scraper. Resolve the business to a place ID, call Place Details with a field mask, and request only the fields your application needs. Reviews can be returned, but the documented material does not promise an export of every review. Google’s terms prohibit exporting or scraping Maps content for use outside its services, including copying and saving user reviews.

What “extract” should mean

For a software application, extraction means making an authorized Places API request and displaying the returned fields under Google’s attribution, linking, storage and ordering rules. It does not mean downloading Google Maps pages, harvesting listings with a headless browser, or building an off-platform archive of review text.

The Google Maps Platform terms language used in the archived agreement dated March 31, 2025 says: “Customer will not export, extract, or otherwise scrape Google Maps Content for use outside the Services.” Check the current agreement and any regional terms that apply to your account before launch, because policies and API behavior can change.

Choose the right Google API route

Route Use it for Important limits
Places API (New) Finding a place and retrieving selected details, including available rating and review fields, for an application Requires a field mask; requested fields map to billing tiers; attribution, direct Maps links, ordering notices and caching restrictions apply. The documented sources do not establish a complete review archive.
Business Profile APIs Authorized operations for a business profile you own or manage Separate eligibility, authorization and policy rules apply. A generic third-party integration should not assume access.

A scraping service is not a policy-safe substitute merely because it returns more rows. If the goal is a company’s own profile, verify that the account is an authorized owner or manager and review the current Business Profile API requirements.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Prerequisites and data flow

  • A Google Maps Platform project with Places API (New) enabled.
  • An API key or OAuth authorization configured for the API method you use. Google documents JSON and XML response formats.
  • A server-side component that keeps credentials out of browser JavaScript and logs request outcomes without storing prohibited content.
  • A decision about the minimum fields your UI actually needs.
  1. Find the place. Obtain a place ID with a supported source such as Text Search, Nearby Search, Geocoding, Routes, Address Validation or Autocomplete. Text Search and Autocomplete are common choices when a user enters a business name.
  2. Request details. Call the Place Details (New) resource at https://places.googleapis.com/v1/places/PLACE_ID.
  3. Set a field mask. Send the exact fields required by the application. A field mask is required; omitting it is an error and requesting broad data can move the request into a higher billing tier.
  4. Render lawfully. If reviews are shown to users, include author credit, the required Google Maps link for each review, ordering and filtering disclosure, and the other policy notices described below.

Finding a place ID

Your place-finding request should return a stable place ID that you then pass to Place Details. Keep the search stage separate from details retrieval so you can ask for details only after the user selects the intended result. This avoids confusing similarly named businesses and reduces unnecessary paid fields.

Autocomplete is useful for an interactive address or business picker. Text Search is suitable when you receive a complete query. Nearby Search is appropriate when the user supplies a location and category. Whatever endpoint you use, verify the selected result’s name and address before requesting reviews.

Place Details request with cURL

The following example requests common identity and review fields. Replace the placeholder values and adjust the mask to your product’s needs.

curl -X GET 
  'https://places.googleapis.com/v1/places/PLACE_ID' 
  -H 'X-Goog-Api-Key: YOUR_API_KEY' 
  -H 'X-Goog-FieldMask: displayName,formattedAddress,rating,userRatingCount,reviews,googleMapsUri'

The field names and availability should be checked against the current Place Details (New) reference for your API version. A response can contain a display name, formatted address, rating, rating count, reviews and a Maps URI when those fields are available and requested.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Python example

import os
import requests

place_id = "PLACE_ID"
api_key = os.environ["GOOGLE_MAPS_API_KEY"]
url = f"https://places.googleapis.com/v1/places/{place_id}"
headers = {
    "X-Goog-Api-Key": api_key,
    "X-Goog-FieldMask": (
        "displayName,formattedAddress,rating,userRatingCount,reviews,googleMapsUri"
    ),
}

response = requests.get(url, headers=headers, timeout=30)
response.raise_for_status()
place = response.json()
print(place.get("displayName"))
print(place.get("rating"), place.get("userRatingCount"))
for review in place.get("reviews", []):
    print(review)

Keep the key in an environment variable, restrict it in Google Cloud, and handle non-2xx responses before reading JSON. Do not write the returned review text to a permanent database unless the current terms expressly allow that use.

Node.js example

const placeId = process.env.PLACE_ID;
const apiKey = process.env.GOOGLE_MAPS_API_KEY;

const response = await fetch(
  `https://places.googleapis.com/v1/places/${encodeURIComponent(placeId)}`,
  {
    headers: {
      "X-Goog-Api-Key": apiKey,
      "X-Goog-FieldMask":
        "displayName,formattedAddress,rating,userRatingCount,reviews,googleMapsUri"
    }
  }
);

if (!response.ok) {
  throw new Error(`Place Details failed: ${response.status} ${await response.text()}`);
}

const place = await response.json();
console.log(place.displayName);
console.log(place.rating, place.userRatingCount);
console.log(place.reviews ?? []);

Does the API return every review?

Do not design your data model around an assumption that Place Details is a complete review export. The official material confirms that review fields are available, but it does not establish a universal maximum or a guarantee that every review is returned. Treat the response as the set of reviews made available for that request and API version.

If your product needs a larger or historical corpus, stop and obtain legal and policy advice rather than switching to a page scraper. More rows from an unofficial service do not change Google’s restrictions.

Displaying reviews correctly

Author credit and source link

Credit each review author using the attribution data returned by the API. Give the end user a direct route to the individual review on Google Maps using its googleMapsUri. Do not hide the source behind an internal URL or present the text as your company’s own content.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Ordering and filtering notice

Reviews default to relevance ordering. If your interface sorts, filters or searches them, show a clear notice explaining the ordering and the criteria applied. A user should be able to tell whether they are seeing relevance order, a selected language, a date range or another filter.

Recommended context

  • Show the relative publish time supplied for the review.
  • Explain when text has been translated.
  • Provide a way to report content.
  • Tell users that Google checks for fake content but does not verify that reviews are genuine.

France and French territories

For France and French territories, the API returns a review visit month and year that must be displayed alongside the review. Confirm the current regional policy before releasing a localized interface.

Caching, retention and security

Place IDs are exempt from the API’s caching restrictions, but that exception does not authorize indefinite storage of review text or other Maps content. Treat returned content as subject to Google’s pre-fetching, caching and storage rules. Request data when needed, retain only what your permitted use requires, and avoid redistributing it through exports, feeds or backups.

  • Keep API credentials on a server, never in public source code.
  • Restrict keys by API and, where practical, by server IP or application.
  • Log place IDs, status codes and latency rather than full review payloads.
  • Set timeouts and bounded retries for transient failures.
  • Recheck Google’s current terms, field reference and regional requirements before changing retention or refresh schedules.

Common errors and fixes

400: missing or invalid field mask

Cause: Place Details (New) requires a field mask, or a field name is not valid for the API version. Fix: send X-Goog-FieldMask with documented names and remove experimental or misspelled fields.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

403: key, API or billing configuration

Cause: Places API (New) is not enabled, the key is restricted incorrectly, or the project is not authorized for the request. Fix: check the project selected in Google Cloud, API restrictions, credentials and the account’s billing or quota status.

404 or empty result

Cause: an incorrect, stale or mistyped place ID, or a result that no longer resolves. Fix: run the place-finding step again, let the user confirm the name and address, and do not silently substitute a similarly named place.

Reviews missing from an otherwise valid response

Cause: the reviews field was omitted, unavailable for that result or not included in the response for the current API behavior. Fix: verify the field mask and inspect the raw response; do not claim that an empty array means the business has no reviews.

429 or intermittent 5xx responses

Cause: quota pressure or a temporary service failure. Fix: use exponential backoff with a retry limit, cache only what current policy permits, and expose a temporary-unavailable state instead of creating duplicate requests.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Attribution or policy review failure

Cause: the UI displays text without author credit, a Maps link, or the required ordering and translation explanations. Fix: treat attribution as a release requirement and test every review card, including translated and localized variants.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Performance and cost decisions

Field selection is both a latency and billing decision. Ask for identity fields during search only when needed, then request details after selection. Keep the field mask narrow, because Google maps fields to pricing tiers. The available material does not provide a current price table; check the live billing documentation for your project before forecasting spend.

Use request coalescing so simultaneous page loads for the same place do not create duplicate calls. Apply client-side pagination to your own interface, but do not imply that pagination creates access to reviews the API did not return. Monitor status codes, quota consumption and response latency, and set an explicit budget alert in your cloud project.

Or skip the browser setup

If you only need a visual record of a Maps page or another URL, ScreenshotNeo makes a single HTTP request instead of requiring Playwright or Selenium. It accepts consent banners like a visitor and removes more than 60 known consent platforms, newsletter popups and chat widgets before capture; each cleanup step can be disabled. Bot checks, blank pages, timeouts, failed loads and cache hits are not billed, and the response identifies the result with X-Page-Verdict and X-Billed headers. This is for capturing a page image or PDF, not for extracting review data into an external database.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

cURL:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python:

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

Node.js:

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

See the ScreenshotNeo documentation for request options. It also provides an MCP server with take_screenshot, get_page_info and capture_pdf tools for Claude, Cursor and other MCP clients. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. Create a free ScreenshotNeo account.

Frequently Asked Questions

Can I store a place ID permanently?

Google’s policy treats place IDs as an exception to the API’s caching restrictions, but that exception does not grant permission to retain review text or other Maps content indefinitely.

Is Business Profile API the same as Places API?

No. Business Profile APIs serve authorized owners or managers of a profile and have separate eligibility and policy requirements; Places API is the general place-search and details route.

What should I do when Google changes a field name?

Pin your client library or API behavior where practical, monitor the current Place Details (New) reference, and test field masks in a staging project before deploying changes.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The Bottom Line

Resolve a place ID, request only documented fields through Places API (New), and display reviews with attribution and a Google Maps link. Do not scrape Maps pages or treat the response as a guaranteed complete review archive.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.