Google Maps Reviews Scraper & API — Ratings, Photos, Replies avatar

Google Maps Reviews Scraper & API — Ratings, Photos, Replies

Pricing

from $0.30 / 1,000 delivered reviews

Go to Apify Store
Google Maps Reviews Scraper & API — Ratings, Photos, Replies

Google Maps Reviews Scraper & API — Ratings, Photos, Replies

Scrape Google Maps reviews from business URLs or Place IDs. Extract review text, ratings, dates, photos and owner replies. Export CSV, Excel or JSON, or run via API. No Google login required. Paid plans: $0.30/1,000 reviews; Free: $2/1,000. Filtered scans cost extra.

Pricing

from $0.30 / 1,000 delivered reviews

Rating

0.0

(0)

Developer

Gaurav Kumar Choudhary

Gaurav Kumar Choudhary

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Scrape Google Maps reviews from public business URLs or Place IDs and export review text, star ratings, dates, photos and available owner replies to CSV, Excel or JSON. Use the simple input form without coding, or integrate the Google Maps reviews API into your application. No Google login or cookies required.

Start with 20 reviews: open the input form, replace the sample business URL, set Maximum reviews for each business to 20, and click Start. For an ordinary unfiltered run, 20 delivered reviews cost $0.04 on Free or $0.006 on a paid Apify plan, with no startup fee.

What makes this review scraper useful?

  • For business teams: paste Maps links and download a spreadsheet. No separate data-service subscription or key to configure.
  • For developers: use Place IDs, data IDs or CIDs, structured dataset rows and the Apify REST API. Continuation tokens are available when a full page has been delivered.
  • For reputation monitoring: choose newest reviews, date or rating filters, and available owner replies. Filtered requests have an additional attempt fee disclosed below.
  • For controlled spending: set review, request, time and filtered-scan limits. Completed results are retained if collection stops early; duplicate review IDs are skipped within a run.

Built for customer-feedback reporting, local SEO workflows and multi-location review analysis. It collects data for your analysis; it does not generate sentiment scores or improve a business's Google ranking automatically.

Pricing — understand the total before starting

Review pricing by Apify subscription

Your Apify planPer delivered reviewPer 1,000 delivered reviews
Free$0.002$2.00
Any paid plan$0.0003$0.30

Apify automatically selects the price from your subscription, not an editable input. Free-plan accounts can use available Apify credits; there is no separate zero-charge 1,000-review allowance or lifetime quota. Customers do not need an additional service token.

Additional fees and spending limits — all plans

  • Filtered API attempt: an additional $0.002 per attempt when using keyword, topic, date, star-rating, text-only, owner-reply-only or skip-review-ID filters. This is charged before each API attempt, including retries, empty/failed requests and CID-resolution calls in filtered runs. It is not a guarantee of matching reviews.
  • No startup fee. No filtered-scan surcharge for ordinary unfiltered collection. Choosing sort, language, reviewer details or image inclusion alone does not activate it. Error rows are not review results and do not incur review-result events.
  • Default Maximum filtered-scan charges is $0.05 (25 attempts). This excludes review charges; use Apify's overall spending limit too. Filtered API timeouts are capped at 30 seconds. Completed results are preserved when limits stop collection.

Examples: 1,000 ordinary reviews cost $2 on Free or $0.30 on a paid plan. A filtered run with 50 API attempts and 1,000 delivered matches costs $0.10 plus the review fee: $2.10 on Free or $0.40 on paid (increase the scan cap explicitly to permit 50 attempts). Two filtered attempts returning two matching reviews cost $0.008 on Free or $0.0046 on paid. Filtered calls returning zero matches still incur the attempt fee.

Quick start — no technical knowledge needed

  1. Open Google Maps, search for the shop, restaurant, hotel or other business, and open its business panel.
  2. Copy the full address-bar URL, or click Share → Copy link.
  3. Paste it into Google Maps business links. Remove the sample link first. You can add several businesses.
  4. Set Maximum reviews for each business; try 20 first. Select Newest first for recent feedback.
  5. Click Start. When the run finishes, open Output → Reviews.
  6. Download CSV or Excel for a spreadsheet, or JSON for nested photos, reviewer details and guided ratings.

Supported link forms include full Google Maps business URLs containing a Place ID/data ID/CID, maps.app.goo.gl, goo.gl/maps and g.page links that redirect to a recognized Google Maps business URL. A generic map/search/directions URL without a business identifier is not enough. If a share link cannot be resolved, paste the full URL from the business panel or use a Place ID.

{
"placeUrls": ["https://www.google.com/maps/place/?q=place_id:ChIJFTdlBPAoTIYRoJO88NsExVc"],
"maxReviewsPerPlace": 20,
"sort": "newest"
}

What you receive

One dataset row represents one review. Fields include reviewId, rating, original text, available translatedText, publication/edit dates, helpful votes, review/photo links, available owner replies, guided review details, place name/address/rating/review count and input provenance.

Reviewer profile details are off by default. Turn on Include public reviewer profile details if you need the available public name, profile link, Local Guide status and contribution counts. Only use collected data for lawful purposes and respect privacy, retention and deletion obligations. There are no private contact details or identity verification services here.

Missing fields remain empty; a rating-only review can legitimately have no text. Hotel results can include third-party review sources, so inspect source rather than assuming every record is a native Google review. Business details and topics may be unavailable when starting from a continuation page.

The SUMMARY output shows page/request counts, duplicates skipped, topics, per-place outcomes, limits and safe errors. It distinguishes the total business review count from the number actually collected.

Developer inputs

Use one or combine several input lists:

InputFormatNotes
placeUrlsArray of URL stringsEasiest option for business users
placeIdsArray of Google Place IDsDirect lookup; clear the example URL
dataIdsArray of 0xHEX:0xHEX stringsDirect review lookup
cidsArray of quoted numeric stringsRequires an additional business-ID lookup
startUrlsInline [{"url":"https://…"}]Alternative URL-list format; not remote list sources
{
"placeUrls": [],
"dataIds": ["0x864c28f004653715:0x57c504dbf0bc93a0"],
"maxReviewsPerPlace": 40,
"maxReviews": 40,
"maxRequests": 3,
"sort": "newest",
"includeReviewerDetails": true
}

API example (Python)

Set your Apify token in an environment variable. Customers do not need a separate data-service key.

import os
import requests
response = requests.post(
"https://api.apify.com/v2/acts/gauravlabs~google-maps-reviews-api/runs",
headers={"Authorization": "Bearer " + os.environ["APIFY_TOKEN"]},
json={
"placeUrls": [],
"dataIds": ["0x864c28f004653715:0x57c504dbf0bc93a0"],
"maxReviewsPerPlace": 40,
"maxReviews": 40,
"sort": "newest"
},
timeout=30,
)
response.raise_for_status()
run = response.json()["data"]
print(run["id"]) # Poll GET /v2/actor-runs/{id} until finished.
# Then read GET /v2/datasets/{defaultDatasetId}/items with authentication.

The start endpoint is asynchronous: it returns a run, not completed reviews. Follow the run until SUCCEEDED; inspect failures and SUMMARY before consuming the default dataset. Apify datasets support pagination when downloading large result sets.

Filters and incremental collection

Get reviews for a specific date range — no page tokens needed

Paste a business link, fill Reviews from date and Reviews through date, keep Newest first, and click Start. The Actor follows review pages automatically and returns only reviews whose publication dates fall inside your range. You do not need to supply or manage nextPageToken for a normal date-range run.

For example, to request reviews published October 1–20, 2026:

{
"placeUrls": ["https://www.google.com/maps/place/?q=place_id:ChIJFTdlBPAoTIYRoJO88NsExVc"],
"reviewsSince": "2026-10-01",
"reviewsUntil": "2026-10-20",
"sort": "newest",
"maxReviewsPerPlace": 100,
"maxFilteredScanCostUsd": 0.05
}

Both dates are optional. Date-only inputs include the entire UTC day; ISO timestamps must include a timezone and are inclusive. Reviews without valid publication timestamps are skipped. This filters publication dates, not owner-reply dates or last-edit dates.

Cost and coverage: there is no direct jump to a historical date. The Actor may need to scan newer pages first, at the existing $0.002 per filtered API attempt, plus delivered-review fees. With a start date and newest sorting, it processes the whole current page and stops before requesting another page once the observed date order has passed the start date. It also checks available last-edit timestamps. Missing, invalid or out-of-order dates disable this optimization for that business to avoid silently skipping possible matches. SUMMARY reports dateBoundaryReached or why the optimization was disabled.

Review, request, scan-spend and time limits remain in force, so a wide or old range may return partial results or no matches. End-date-only searches cannot use a start-date cutoff. Check SUMMARY for limits and partial; completion under observed newest-first ordering is not proof that every historical review exists in the source. Advanced continuation tokens remain optional for manually resuming a limited run, not a prerequisite for date filtering.

  • Sort by newest, most relevant, highest rating or lowest rating.
  • keyword is a case-insensitive literal substring filter on original review text, applied locally. It is not fuzzy or semantic search. topicId selects a returned topic from the first-page SUMMARY using the review service. These two cannot be used together.
  • Minimum/maximum stars, text-only, owner-reply-only, reviewsSince and reviewsUntil filters are applied before delivery. Date filtering requires newest sort and skips reviews without parseable dates. Selective filters can consume many pages without yielding many matches.
  • skipReviewIds lets a scheduled run skip IDs from a previous export. Scheduling alone does not automatically remember prior reviews.
  • nextPageToken resumes one business with the same identifiers, sort, language and filters. Copy it from SUMMARY. Tokens may expire. If a page was partially delivered, resume is not offered because a cursor would skip the remaining rows; rerun with a larger limit and skip already delivered IDs instead.

Limits, reliability and cost controls

The collector requests up to 20 reviews per page, follows only returned continuation tokens and deduplicates review IDs within a run. It stops on repeated pages/cursors, request/page/review caps, filtered-scan charges or the time budget. It does not promise every historical review, unlimited extraction or exhaustive coverage. No AI sentiment analysis or automatic email outreach is included.

Requests are sequential. Transient service/network failures can be retried once; invalid input, access and capacity errors are not repeatedly retried. Partial completed results are retained and marked in SUMMARY. A business with no reviews can finish successfully with an empty dataset; lookup failures are reported separately, not disguised as review rows.

Default and maximum memory are 256 MB. maxRequests counts API requests, short-link redirect hops, CID lookups and retries. Increase Apify's run timeout together with maxRunSecs for larger batches. Dense filters, duplicate inputs, sparse pages and failures can increase cost per delivered review. Overall spending limits stop additional chargeable work; a filtered attempt paid before a request is still charged if that request later fails.

Practical uses

  • Track recent customer feedback for your own locations.
  • Compare review themes, ratings and owner responsiveness across businesses.
  • Feed structured reviews into your own sentiment-analysis or reporting workflow.
  • Build local SEO reporting and reputation-monitoring integrations.

Example: collect recent reviews for several locations

Add each business URL to placeUrls, choose sort: "newest", and set maxReviewsPerPlace to your desired sample size. Export the results and group them by placeName or inputUrl. An ordinary unfiltered export does not incur the filtered-scan surcharge. Adding reviewsSince or skipReviewIds does activate it.

Example: investigate one- and two-star feedback

Set maximumRating to 2 and sort to newest. Use onlyWithText if you need written comments rather than rating-only entries. Set maxFilteredScanCostUsd and Apify's overall run spending limit before starting: selective filters may scan many pages and still return few matching reviews.

Frequently asked questions

Can I export Google Maps reviews to Excel or CSV without coding?

Yes. Paste business links, start the Actor, then download the Reviews dataset as Excel, CSV or JSON. JSON preserves nested photos and optional reviewer details more naturally than a spreadsheet.

Is this a Google reviews API for developers?

Yes. Start runs using the Apify REST API or SDK, poll the run status, then fetch the dataset. You can supply Place IDs, data IDs, CIDs or supported business URLs. This is an independent service, not an official Google API.

Can I scrape reviews for multiple businesses?

Yes. Provide several business URLs or IDs. Set both a per-business review limit and a whole-run limit. Businesses are processed sequentially; large jobs also need suitable request and time budgets.

Does it include owner replies, review photos and reviewer names?

Available owner-reply text and review photos are included by default. Public reviewer profile details are optional and off by default. Fields can be missing, and exact owner-reply timestamps are not guaranteed. Follow applicable privacy and data-retention requirements.

Is there a free trial or an extra API key to buy?

Free Apify accounts can use available platform credits at $2 per 1,000 delivered reviews; paid Apify accounts pay $0.30 per 1,000. Filtered API attempts cost an additional $0.002 each on either plan. There is no separate zero-charge 1,000-review trial and no additional service key required from customers.

Will it return every review or find businesses for me?

It follows available review pagination for the businesses you supply, subject to your limits and data availability. It does not guarantee a complete historical archive or search for businesses by city or keyword. Generic Maps search URLs without a business identifier are not review inputs.

Help with a run or integration

Open this Actor's Issues tab with your run ID, a non-sensitive input example and the expected output. Do not post API tokens, credentials or private customer data. For a specific reporting or integration requirement, describe the required fields and workflow so we can assess support; unsupported features are not promised.

Troubleshooting

OutcomeWhat to do
PLACE_ID_NOT_IN_URLOpen the business panel and copy the full Maps URL, or provide a Place ID/data ID
MAPS_LINK_UNAVAILABLEReplace the share link with its full business URL
REQUEST_LIMIT / TIME_BUDGETIncrease limits carefully or collect fewer reviews
FILTERED_SCAN_COST_LIMITThe additional scan budget was reached; increase it explicitly to scan more pages
REQUEST_REJECTEDCheck identifiers, topic, keyword and continuation settings
SERVICE_ACCESS_UNAVAILABLE / SERVICE_CAPACITY_UNAVAILABLEContact the developer with your run ID; no secret credentials are exposed
Fewer reviews than requestedCheck SUMMARY, filters, available pagination and per-place limits

This is an independent tool, not affiliated with or endorsed by Google. Availability and fields depend on the public listing and current service responses. Search-ranking placement is not guaranteed.