Google Play Scraper — Apps, Reviews & ASO Data (Pay-Per-Event) avatar

Google Play Scraper — Apps, Reviews & ASO Data (Pay-Per-Event)

Pricing

Pay per event

Go to Apify Store
Google Play Scraper — Apps, Reviews & ASO Data (Pay-Per-Event)

Google Play Scraper — Apps, Reviews & ASO Data (Pay-Per-Event)

Extract Google Play Store data with no API key: search apps by keyword, pull full listing details for any package ID, and harvest user reviews with developer replies. 50+ flat fields per app and 15 per review. Pay-per-event: $0.005/run + $2.30/1000 app details + $1.15/1000 reviews. No monthly fee.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Arnas

Arnas

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Pull structured data straight out of the Google Play Storeno API key, no Google account, no headless browser. This is the Pay-Per-Event edition: there is no monthly rental and no minimum spend. You pay per run plus per record you actually keep — $0.005 to start a run, then $2.30 per 1,000 app details and $1.15 per 1,000 reviews on the Free tier.

Run it on the Apify platform for scheduling, REST API access, dataset exports (JSON, CSV, Excel, HTML), proxy rotation, monitoring, and native integrations with Make, Zapier, Google Sheets, Slack, and 5,000+ other tools.

What does Google Play Scraper do?

This actor reads Google Play's public listing and review pages and hands you back clean, flat JSON. It runs in one of three modes:

  • 🔍 Search — hand it keywords (e.g. fitness tracker) and get back the matching apps: title, package ID, developer, price, rating, icon, and store URL. Ideal for discovering apps in a niche.
  • 📱 Details — hand it package IDs (e.g. com.whatsapp) and get the full listing: 50+ fields including install ranges, the ratings histogram, in-app-purchase price range, developer contact details, changelog, screenshots, and content rating.
  • ⭐ Reviews — hand it package IDs and get user reviews: star rating, headline, body, reviewer name, thumbs-up count, app version, and the developer's public reply to each review. Paginates automatically and filters by star rating.

Every field lands in a single flat row — no nested objects to flatten — so the output drops straight into a spreadsheet, a database, or an LLM prompt.

Where do I find an app's package ID?

It's the id= value in any Google Play URL:

https://play.google.com/store/apps/details?id=com.spotify.music
^^^^^^^^^^^^^^^^^^
package ID

You can paste the whole URL into appIds too — the actor extracts the package ID for you. Common IDs: WhatsApp → com.whatsapp, Spotify → com.spotify.music, Instagram → com.instagram.android, TikTok → com.zhiliaoapp.musically.

Why use Google Play Scraper?

  • App Store Optimization (ASO) — See which apps rank for a keyword and study their metadata to inform your own listing.
  • Competitive intelligence — Track a competitor's rating drift, install-range jumps, changelog cadence, and review sentiment over time.
  • Market research — Build datasets of an entire app category across countries and languages.
  • Voice-of-customer / support — Pull 1-star reviews for your own app to triage complaints, and read how competitors reply to theirs.
  • Lead generation — Extract developer email, website, and legal-entity contact details from listings.

How to use Google Play Scraper

  1. Click Try for free on this actor's page.
  2. Pick a Mode: search, details, or reviews.
  3. Fill in the matching input:
    • Search → one or more Search terms.
    • Details / Reviews → one or more App IDs (package names or full Play Store URLs).
  4. Optionally set Country and Language for localized results, and Max results to cap cost.
  5. In reviews mode, choose a Review sort order and, if you want, a star-rating filter.
  6. Click Save & Start. Rows stream into the dataset as they're scraped.
  7. Export as JSON, CSV, Excel, or HTML — or read it from the Dataset API.

Input

ParameterTypeRequiredDescription
modestringNosearch, details, or reviews. Default search.
searchTermsarrayIn searchKeywords to search Google Play for.
appIdsarrayIn details / reviewsPackage names (com.whatsapp) or full Play Store URLs.
maxResultsintegerNoApps per search term, or reviews per app. Default 50.
countrystringNoISO 3166-1 alpha-2 storefront code. Default us.
languagestringNoISO 639-1 language code. Default en.
reviewSortstringNonewest, rating, or relevant. Default newest.
reviewScoreintegerNoKeep only reviews with this exact star rating (1–5); 0 = all.
customMapFunctionstringNoJS function body that transforms each row before it's saved.
proxyConfigurationobjectNoApify Proxy. Default: Apify Proxy datacenter, AUTO rotation.

Input examples

Search two niches, 20 apps each:

{ "mode": "search", "searchTerms": ["fitness tracker", "workout app"], "maxResults": 20, "country": "us" }

Full details for specific apps:

{ "mode": "details", "appIds": ["com.whatsapp", "com.telegram.messenger", "org.thoughtcrime.securesms"] }

Only the 1-star reviews for one app:

{ "mode": "reviews", "appIds": ["com.spotify.music"], "maxResults": 100, "reviewSort": "newest", "reviewScore": 1 }

Output

Results land in the run's default dataset — one row per app (search / details modes) or per review (reviews mode). Download as JSON, JSONL, CSV, Excel, or HTML.

Sample app record (details mode)

{
"appId": "com.whatsapp",
"title": "WhatsApp Messenger",
"summary": "Simple. Reliable. Private.",
"developer": "WhatsApp LLC",
"developerEmail": "android@support.whatsapp.com",
"developerWebsite": "http://www.whatsapp.com/",
"score": 4.64,
"scoreText": "4.6",
"ratings": 239669492,
"histogram1star": 9773822,
"histogram5star": 197121646,
"installs": "10,000,000,000+",
"minInstalls": 10000000000,
"maxInstalls": 12152872767,
"price": 0,
"priceText": "Free",
"free": true,
"currency": "USD",
"offersIAP": true,
"IAPRange": "$0.40 - $199.99 per item",
"containsAds": false,
"genre": "Communication",
"genreId": "COMMUNICATION",
"released": "Oct 18, 2010",
"updatedAt": "2026-07-25T02:25:41.000Z",
"version": "VARY",
"icon": "https://play-lh.googleusercontent.com/...",
"screenshots": ["https://play-lh.googleusercontent.com/..."],
"url": "https://play.google.com/store/apps/details?id=com.whatsapp&gl=us",
"scrapedAt": "2026-07-26T00:00:00.000Z"
}

Sample review record (reviews mode)

{
"reviewId": "9d041cca-a76b-4e40-9d3f-2f1c3a55c0e1",
"appId": "com.spotify.music",
"userName": "Jane D.",
"score": 4,
"scoreText": "4",
"text": "Great app but the ads are too frequent on the free tier",
"date": "2026-07-24T21:32:49.558Z",
"replyText": null,
"replyDate": null,
"thumbsUp": 7,
"version": "9.1.62.1601",
"scrapedAt": "2026-07-26T00:00:00.000Z"
}

Data table

FieldTypeDescription
appIdstringPackage name / app ID
titlestringApp name
summarystringShort tagline
descriptionstringFull listing description
developerstringDeveloper / publisher name
developerIdstringDeveloper page ID
developerEmailstringDeveloper contact email
developerWebsitestringDeveloper website
scorenumberAverage rating (1.0–5.0)
ratingsintegerTotal rating count
reviewsintegerTotal review count
histogram1starhistogram5starintegerRating distribution per star
installsstringHuman-readable install range (10,000,000+)
minInstalls / maxInstallsintegerNumeric install bounds
price / priceText / free / currencymixedPricing
offersIAP / IAPRangemixedIn-app purchases and price range
containsAdsbooleanWhether the app shows ads
genre / genreIdstringCategory
released / updatedAt / versionmixedRelease date, last update (ISO), version
recentChangesstringLatest changelog
icon / headerImage / screenshotsmixedMedia URLs
contentRatingstringAge rating
urlstringStore URL
searchTermstringThe keyword that surfaced the app (search mode)
reviewIdstringUnique review ID (reviews mode)
userName / userImagestringReviewer name and avatar
text / titlestringReview body and headline
datedatetimeReview timestamp (ISO)
replyText / replyDatemixedDeveloper's public reply
thumbsUpintegerHelpful votes
scrapedAtdatetimeWhen this row was emitted (ISO)

Pricing / How much does it cost to scrape Google Play?

This actor uses Pay-Per-Event pricing — no monthly rental, no compute-unit surprises.

EventFires whenFree tier
Actor startOnce per run$0.005
App detailPer app row (search or details mode)$2.30 / 1,000 ($0.0023)
ReviewPer review row (reviews mode)$1.15 / 1,000 ($0.00115)

Higher Apify subscription tiers get better per-record rates — see the Pricing tab on this actor's listing for the full table (Business Gold pays $1.20/1,000 app details and $0.60/1,000 reviews).

Cost examples (Free tier):

WorkloadCost
Search 2 terms × 25 apps$0.005 + 50 × $0.0023 = $0.12
Details for 20 apps$0.005 + 20 × $0.0023 = $0.051
200 reviews for 1 app$0.005 + 200 × $0.00115 = $0.235
100 apps + 50 reviews each$0.005 + 100 × $0.0023 + 5,000 × $0.00115 = $5.985

To enforce a hard ceiling, set Maximum charge per run before launching — the actor stops emitting new records once that limit is reached.

Tips and advanced options

  • Start small. Set maxResults: 10 to preview the data shape before a large run.
  • Search → details. Search results carry a smaller field subset. Feed the discovered appIds into details mode for the full 50+-field record.
  • Set country and language together for accurate localization — country: "de", language: "de" gives the German storefront.
  • Filter reviews by rating with reviewScore: 1 to collect only 1-star feedback for product research.
  • De-duplication is automatic — overlapping search terms won't emit (or bill for) the same app twice; reviews are de-duplicated by review ID across pages.
  • customMapFunction runs in the actor container and receives each row as item; return a transformed object. Errors fall back to the untouched row.

Errors and partial failures

A bad app ID, an app that doesn't exist in the chosen country, or a transient network error on one item does not abort the run. Each failure is written to a sidecar key-value store record named errors-YYYY-MM-DD.jsonl — check the Key-value stores tab on your run.

FAQ, disclaimers, and support

Do I need a Google account or API key? No. The actor reads publicly accessible Google Play pages.

Why are some fields null in search results? Google Play's search response carries fewer fields than a full listing. Use details mode with the package IDs to get everything.

Reviews returned fewer than I asked for? Google limits how many reviews are reachable on public pages, and a star-rating filter naturally reduces the yield. Try removing reviewScore or changing reviewSort.

Is this legal? Scraping publicly available data is broadly lawful (see hiQ Labs v. LinkedIn in the US), and Google Play listings are public. You remain responsible for complying with Google's Terms of Service, applicable copyright, and data-protection law (GDPR/CCPA) — especially when handling reviewer data. Don't collect personal data beyond what your use case needs.

How do I report a bug? Open an issue on this actor's Issues tab.