Google Play Store Scraper avatar

Google Play Store Scraper

Pricing

from $0.10 / 1,000 data

Go to Apify Store
Google Play Store Scraper

Google Play Store Scraper

Scrape Google Play Store apps by URL, app ID, keyword or developer: ratings, installs, prices, versions, developer contacts, screenshots and categories, plus optional reviews as nested lists or flat records.

Pricing

from $0.10 / 1,000 data

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Categories

Share

Google Play Store Scraper

Google Play Store Scraper extracts app data and reviews from the Google Play Store by app URL, app ID, search keyword, or developer. You get ratings, rating histograms, install counts, prices, versions, release notes, developer emails and addresses, categories, screenshots, and reviews as clean JSON, CSV, or Excel.

Mix app, search, and developer URLs with a keyword in one run, in the store country and language you choose, and get 50+ fields per app, full developer portfolios, and reviews 150 per page, nested under each app or as one record per review.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Apify Actor: parsebird/google-play-scraper. Scrapes the Google Play Store (play.google.com): app details, ratings, installs, prices, versions, developer contacts, categories, screenshots, and reviews. Call via ApifyClient: client.actor("parsebird/google-play-scraper").call(run_input={"startUrls": ["https://play.google.com/store/apps/details?id=com.instagram.android"], "search": "habit tracker", "country": "US", "lang": "en", "price": "free", "includeReviews": true, "reviewsSort": "NEWEST", "maxReviewPages": 2, "maxItems": 50}). Inputs: startUrls (array: app URLs like https://play.google.com/store/apps/details?id=com.instagram.android, search URLs like https://play.google.com/store/search?q=workout&c=apps, developer URLs like https://play.google.com/store/apps/developer?id=Supercell or /store/apps/dev?id=5700313618786177705, bare app IDs like com.instagram.android, numeric developer IDs; hl/gl URL params override lang/country per entry; category and top-chart URLs are not supported), search (string keyword, about 30 apps per search), country (two-letter code, default US), lang (default en), price (all, free, paid; search only), includeReviews (boolean, nests reviews under each app in reviewsList), onlyIncludeReviews (boolean, one dataset record per review, no app record), reviewsSort (NEWEST, RATING, HELPFULNESS), maxReviewPages (integer, 150 reviews per page; empty = all), maxItems (integer cap on records; nested reviews don't count, flat reviews do), customMapFunction (JavaScript function string to reshape records), outputConnector/deliverTarget/deliverMode/deliverMaxItems (optional delivery to Notion, Todoist and other apps via Apify MCP connectors). Output per app: inputSource (queryIndex, mode, appId, searchQuery, developerId, filters, paginationToken), title, appId, url, summary, description, installs, minInstalls, realInstalls, score, scoreText, ratings, reviews (review count), histogram, free, price, priceText, currency, offersIAP, inAppProductPrice, containsAds, developer, developerId, developerUrl, developerEmail, developerWebsite, developerAddress, developerLegalName, developerLegalEmail, developerLegalAddress, developerLegalPhone, privacyPolicy, genre, genreId, categories, contentRating, icon, headerImage, screenshots, video, released, updated (ms timestamp), lastUpdatedOn, version, androidVersion, recentChanges, country, lang, scrapedAt, reviewsList. Review fields: id, userName, userImage, score, text, date, thumbsUp, appVersion, replyText, replyDate, appId, appCountry, appLanguage. Pricing: pay per event (record saved, app detail, search, developer request, review page after the first). Full API spec: https://apify.com/parsebird/google-play-scraper/api. Get your token: https://console.apify.com/settings/integrations.

What is Google Play Store Scraper?

Google Play Store Scraper turns the Google Play Store into a dataset. Paste app links or app IDs, add a search keyword, or point it at a developer, and it returns the full app page data for every app it finds. It's an easy Google Play API alternative: you don't need a Google account, a developer account, an API key, or any code.

Use it to monitor competitors, track ratings and releases, research app store optimization (ASO) keywords, build lead lists of app developers, or analyze Google Play reviews.

What can Google Play Store Scraper do?

  • 🔗 Any Google Play entry point. App detail URLs, search URLs, developer URLs (?id=Supercell), numeric developer pages (/dev?id=…), bare app IDs like com.instagram.android, and a separate search keyword, all in one run.
  • 📱 Full app records everywhere. Apps found through search or a developer page get the same full record as a direct app lookup, not a short summary.
  • 🏢 Complete developer portfolios. Developer pages by name return every app the developer lists. In our October 2026 tests, Google LLC returned 90 apps and Microsoft Corporation 72.
  • 💬 Google Play reviews. Fetch reviews 150 per page, sorted by newest, rating, or helpfulness, with developer replies. Nest them under each app, or save one record per review for apps with huge review counts.
  • 📇 Developer contact data. Support email, website, address, privacy policy, and the legal name, email, address, and phone number Google Play publishes for the developer.
  • 🌍 Countries and languages. Set the store country and lang for the run, or override them per URL with gl and hl to mix regions in one run.
  • 🧩 Custom output. Reshape records with your own JavaScript function, or send results to Notion, Todoist, and other apps through Apify MCP connectors.
  • 📅 Scheduling, API, and integrations. Run on a timer with Apify Schedules, call it from the Apify API, and connect Google Sheets, Zapier, Make, Slack, or webhooks with Apify integrations.

What data can you extract from Google Play?

FieldDescription
title / appId / urlApp name, package name, and Google Play link
summary / descriptionShort description and full description as plain text
installs / minInstalls / realInstallsInstall badge (like 5,000,000,000+), its lower bound, and Google Play's unrounded install count
score / scoreText / ratings / reviewsAverage rating, rounded rating, number of ratings, and number of reviews
histogramNumber of 1- to 5-star ratings
free / price / priceText / currencyPrice in the store's currency
offersIAP / inAppProductPrice / containsAdsIn-app purchases, their price range, and ads
developer / developerId / developerUrlDeveloper name, ID, and Google Play developer page
developerEmail / developerWebsite / developerAddress / privacyPolicyDeveloper contact details and privacy policy
developerLegalName / developerLegalEmail / developerLegalAddress / developerLegalPhoneThe developer's legal business details, when Google Play shows them
genre / genreId / categoriesPrimary category and all categories
contentRating / contentRatingDescriptionContent rating (like Teen) and its reasons
version / androidVersion / recentChangesCurrent version, minimum Android version, and "What's new" text
released / updated / lastUpdatedOnRelease date, last update as a millisecond timestamp, and as text
icon / headerImage / screenshots / video / videoImageImage and video URLs
inputSourceWhich input produced the record: queryIndex, mode (detail, search, developer, review, unsupported, invalid), the app ID, search keyword or developer ID, the filters used, and the review paginationToken
reviewsListReviews when Include reviews is on: id, userName, userImage, score, text, date, thumbsUp, appVersion, replyText, replyDate, appId, appCountry, appLanguage

reviews is always the app's review count. The review texts are in reviewsList.

How to scrape Google Play

  1. Open Google Play Store Scraper on Apify Store and click Try for free.
  2. Add Google Play URLs or IDs: app, search, or developer links, or app IDs like com.instagram.android. You can also enter a Search keyword.
  3. Set the Country and Language, and a Price filter for searches if you need one.
  4. Turn on Include reviews or Only output reviews, pick a Review sort order, and set Max review pages per app.
  5. Set Max records to control the run size.
  6. Click Start and wait for the run to finish.
  7. Download the data as JSON, CSV, Excel, XML, or HTML from the Output tab, or read it with the API.

How much does it cost to scrape Google Play?

Google Play Store Scraper uses pay-per-event pricing, so you pay only for what the run does. Compute and proxy costs are included in the event prices.

EventWhen it's chargedFreeBronzeSilverGold
data-itemEach record saved: an app, or a review with Only output reviews$0.10 / 1,000$0.10 / 1,000$0.10 / 1,000$0.10 / 1,000
app-detailEach app page read for a full app record$0.90 / 1,000$0.90 / 1,000$0.90 / 1,000$0.90 / 1,000
search-queryEach search, from a keyword or a search URL (one search returns about 30 apps)$2.99 / 1,000$2.79 / 1,000$2.59 / 1,000$2.39 / 1,000
developer-queryEach request for a developer's app list$2.99 / 1,000$2.79 / 1,000$2.59 / 1,000$2.39 / 1,000
review-queryEach page of up to 150 reviews, from the second page of each app. The first page is free$13.99 / 1,000$12.99 / 1,000$11.99 / 1,000$10.99 / 1,000

Examples on the Free plan:

  • One app: $0.0009 + $0.0001 = $0.001
  • A keyword search with 30 apps: $0.00299 + 30 × $0.001 ≈ $0.033
  • Google LLC's 90 apps (2 developer requests): 2 × $0.00299 + 90 × $0.001 ≈ $0.096
  • One app with 1,500 nested reviews (10 pages, the first free): $0.001 + 9 × $0.01399 ≈ $0.13
  • 15,000 reviews as separate records (100 pages): 99 × $0.01399 + 15,000 × $0.0001 ≈ $2.89

Unsupported entries, like category URLs, are saved as error records for free. You can set a maximum cost per run in Apify Console. The Actor stops before it goes over and keeps everything collected so far.

Input

You need at least one entry in startUrls or a search keyword. If you give both, both are scraped. See the Input tab for every option.

ParameterTypeRequiredDefaultDescription
startUrlsarrayNo*—App, search, and developer URLs, bare app IDs, and numeric developer IDs
searchstringNo*—A search keyword. Runs as its own query
countrystringNoUSTwo-letter store country. A gl parameter on a URL overrides it for that entry
langstringNoenLanguage of the results. An hl parameter on a URL overrides it for that entry
pricestringNoallall, free, or paid. Applies to searches only
includeReviewsbooleanNofalseAttach reviews to every app in reviewsList
onlyIncludeReviewsbooleanNofalseSave reviews as separate records, without the app record. Implies includeReviews
reviewsSortstringNoNEWESTNEWEST, RATING, or HELPFULNESS
maxReviewPagesintegerNo—Review pages per app, up to 150 reviews each. Empty fetches every page
maxItemsintegerNo—Cap on records across all queries. Empty collects everything
customMapFunctionstringNo—JavaScript function that reshapes each record before it's saved
outputConnectorstringNo—MCP connector (Notion, Todoist, …) to send results to
deliverTargetstringNo—Where the connector writes, like a Notion page URL
deliverModestringNoperPostperPost (one record per item) or summary (one roll-up per run)
deliverMaxItemsintegerNo—Cap on records delivered in perPost mode

* Add at least one entry to startUrls or a search keyword.

Which URLs does Google Play Store Scraper accept?

https://play.google.com/store/apps/details?id=com.instagram.android
https://play.google.com/store/search?q=workout&c=apps
https://play.google.com/store/apps/developer?id=Supercell
https://play.google.com/store/apps/dev?id=5700313618786177705
com.instagram.android
5700313618786177705

Entries that resolve to the same query in the same region are scraped once. A bare number is read as a developer ID. To pass a developer name, use a developer URL.

Use the developer name for big portfolios. Google Play doesn't paginate the numeric developer page, so dev?id=5700313618786177705 returns only the developer's first 10 or so apps. The same developer by name, developer?id=Google+LLC, returns the full list.

Category and top-chart pages aren't supported. URLs like /store/apps/category/GAME_ACTION, /store/apps/top, or /store/apps/collection/… are saved as free error records so you can see which input wasn't used. To cover a category, search for a keyword that describes it:

{
"inputSource": {
"queryIndex": 0,
"mode": "unsupported",
"filters": { "country": "US", "lang": "en" },
"paginationToken": null
},
"error": true,
"code": "UNSUPPORTED_URL",
"entry": "https://play.google.com/store/apps/category/GAME_ACTION",
"message": "Google Play category and top-chart URLs are not supported. Use a search URL, a search keyword, an app detail URL or a developer URL instead."
}

Entries that aren't Google Play links or IDs get the code INVALID_ENTRY.

How do you scrape a single Google Play app?

{
"startUrls": ["https://play.google.com/store/apps/details?id=com.instagram.android"]
}

How do you search Google Play apps by keyword?

{
"search": "habit tracker",
"country": "US",
"lang": "en",
"price": "free",
"maxItems": 100
}

How do you scrape a developer's apps?

{
"startUrls": ["https://play.google.com/store/apps/developer?id=Supercell"]
}

How do you scrape Google Play reviews?

Turn on includeReviews to nest reviews under each app, and set maxReviewPages whenever a search or developer finds many apps. Otherwise every app pages through all of its reviews.

{
"startUrls": [
"https://play.google.com/store/apps/details?id=com.instagram.android",
"https://play.google.com/store/search?q=workout&c=apps",
"https://play.google.com/store/apps/developer?id=Supercell"
],
"search": "habit tracker",
"country": "US",
"lang": "en",
"price": "free",
"includeReviews": true,
"reviewsSort": "NEWEST",
"maxReviewPages": 2,
"maxItems": 50
}

An app and its nested reviews are one dataset record, and a record can hold at most 9 MB. That is roughly 15,000 reviews, depending on their length. When an app reaches that size, reviewsList stops and the log shows a warning. For apps with more reviews, use onlyIncludeReviews: each review is its own record, so there's no ceiling, and maxItems caps the number of reviews.

{
"startUrls": ["com.instagram.android"],
"onlyIncludeReviews": true,
"reviewsSort": "NEWEST",
"maxItems": 5000
}

How do you reshape records with a custom map function?

customMapFunction receives each record and returns what you want stored instead. With includeReviews, it gets the app before reviewsList is attached, so reviews pass through untouched. If the function throws, the original record is saved and the log shows a warning.

(object) => {
return {
appId: object.appId,
title: object.title,
score: object.score,
installs: object.installs,
};
}

How do you send Google Play results to Notion, Todoist, and more?

  1. Authorize a connector once in Apify Console → Settings → API & Integrations → MCP connectors. Any service whose MCP server offers non-destructive write tools works.
  2. Pick it in Send results to Notion, Todoist, ….
  3. Set Destination target. For Notion, paste a page URL and the Actor creates a typed database there, or paste an existing database URL to fill the columns it already has. Share the page with your connector first through Notion's ••• → Connections menu. For Todoist, paste a project URL or ID.
  4. Pick Write mode: perPost writes one record per app or review, and summary writes one roll-up for the run.

Lists like screenshots become comma-joined text, and long fields such as descriptions and reviews go into each row's page body. The connector only uses non-destructive write tools, so it can't delete or overwrite your data. Delivery runs after scraping and is best-effort: if it fails, the run still finishes with all results in the dataset, and the log explains why.

Output example

One app with includeReviews on. Lists are shortened here.

{
"inputSource": {
"queryIndex": 0,
"mode": "detail",
"appId": "com.instagram.android",
"filters": { "country": "US", "lang": "en", "reviewsSort": "NEWEST" },
"paginationToken": null
},
"title": "Instagram",
"appId": "com.instagram.android",
"url": "https://play.google.com/store/apps/details?id=com.instagram.android",
"summary": "Create & share photos, stories, & reels with friends you love",
"description": "Little moments lead to big friendships. Share yours on Instagram. \n—From Meta\n\nConnect with friends, find other fans, and see what people around you are up to ...",
"installs": "5,000,000,000+",
"minInstalls": 5000000000,
"realInstalls": 7795853010,
"score": 3.9899771,
"scoreText": "4.0",
"ratings": 169611066,
"reviews": 4548350,
"histogram": { "1": 31883535, "2": 5358410, "3": 7087192, "4": 13527282, "5": 111754621 },
"free": true,
"price": 0.0,
"priceText": "Free",
"currency": "USD",
"offersIAP": true,
"inAppProductPrice": "$0.19 - $10,000.00 per item",
"containsAds": true,
"developer": "Instagram",
"developerId": "Instagram",
"developerUrl": "https://play.google.com/store/apps/developer?id=Instagram",
"developerEmail": "instagram-android@meta.com",
"developerWebsite": "http://help.instagram.com/",
"developerAddress": null,
"developerLegalName": "Meta Platforms, Inc.",
"developerLegalEmail": "instagram-android@meta.com",
"developerLegalAddress": "1 Meta Way\nMenlo Park, CA 94025-1444\nUnited States",
"developerLegalPhone": "+1 650-853-1300",
"privacyPolicy": "http://instagram.com/legal/privacy/",
"genre": "Social",
"genreId": "SOCIAL",
"categories": [{ "name": "Social", "id": "SOCIAL" }],
"contentRating": "Teen",
"contentRatingDescription": null,
"icon": "https://play-lh.googleusercontent.com/yHi59jmO_lVamcyJ1i3rM1_E8bAiAspShnGjjURq05ipQQSUksO3QVEsXTegRSqul038-4YNA7O644XAcx251Q",
"headerImage": "https://play-lh.googleusercontent.com/YY6TNgNW4DfgqQ2VKuyHxGnDjXwYolSD9G83ZQK999LKAhB3mdQUQbGu3JEELWH57dkYYYNlvnMIZN36pYASLQM",
"screenshots": ["https://play-lh.googleusercontent.com/KWZZ4eVExx8xdzsZrw5O5Lmyz8amgpAyzm9R_Fs5StBLQrxpoO7hZsrbXU170fuP9dXOagS9vNflXbit6Aro"],
"video": "https://play.google.com/video/lava/web/player/yt:movie:nJevVI30wjU?autoplay=1&embed=play",
"videoImage": "https://play-lh.googleusercontent.com/YY6TNgNW4DfgqQ2VKuyHxGnDjXwYolSD9G83ZQK999LKAhB3mdQUQbGu3JEELWH57dkYYYNlvnMIZN36pYASLQM",
"released": "Apr 3, 2012",
"updated": 1791205105000,
"lastUpdatedOn": "Oct 5, 2026",
"version": "Varies with device",
"androidVersion": "Varies with device",
"recentChanges": null,
"country": "US",
"lang": "en",
"scrapedAt": "2026-10-10T11:46:47Z",
"reviewsList": [
{
"id": "9f2d0f14-a7d5-48b5-8ec3-c76472636beb",
"userName": "parasra nishar",
"userImage": "https://play-lh.googleusercontent.com/a/ACg8ocKp3A0ZHLx9GtLW0pKb8poQcGuRupElAFYz1tXpRznR9ODOjxk=mo",
"score": 5,
"text": "i happy for this platform",
"date": "2026-10-09T11:46:35Z",
"thumbsUp": 0,
"appVersion": "287.0.0.25.77",
"replyText": null,
"replyDate": null,
"appId": "com.instagram.android",
"appCountry": "US",
"appLanguage": "en"
}
]
}

With onlyIncludeReviews, each review is saved as its own record with an inputSource whose mode is review and whose paginationToken is the token that fetched its page (null on the first page).

Use the Google Play Store Scraper API

Call the Actor from your own code with the Apify API client. Find your token in Apify Console → Settings → Integrations.

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("parsebird/google-play-scraper").call(run_input={
"search": "budget planner",
"country": "US",
"lang": "en",
"maxItems": 30,
})
for app in client.dataset(run["defaultDatasetId"]).iterate_items():
print(app["title"], app["score"], app["installs"], app["developerEmail"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('parsebird/google-play-scraper').call({
startUrls: ['com.spotify.music'],
onlyIncludeReviews: true,
reviewsSort: 'NEWEST',
maxItems: 1000,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((review) => console.log(review.score, review.date, review.text));

You can also start runs over plain HTTP from the API tab, or connect the Actor to AI agents through the Apify MCP server.

Use cases

  • App store optimization (ASO). See which apps Google Play shows for your keywords in each country, with their ratings and installs.
  • Competitor monitoring. Schedule runs to track competitors' versions, "What's new" notes, prices, ratings, and installs.
  • Review analysis. Collect the newest or most helpful reviews to find bugs, feature requests, and sentiment trends.
  • Lead generation. Build lists of app developers with their emails, websites, addresses, and phone numbers.
  • Market research. Map a niche through keyword searches: who publishes, how apps are priced, and how many installs they have.
  • App databases. Enrich a catalog with icons, screenshots, categories, and content ratings.

How it works

  1. Each entry in startUrls, plus the search keyword, becomes its own query with its own country and language.
  2. Searches and developer pages return app IDs. The Actor then reads every app's public Google Play page for the full record.
  3. With reviews on, it pages through each app's public reviews, 150 at a time, in the sort order you chose.
  4. Records are saved in the order they were found, and the run stops at maxItems, maxReviewPages, or your maximum cost.

FAQ

Do I need a Google account or an API key? No. The Actor reads public Google Play pages that anyone can open without signing in.

How many apps does a search return? Google Play shows about 30 apps per search and doesn't offer more pages. When the keyword matches one app exactly, Google Play also shows rows of related apps, which are included. In our October 2026 tests, "habit tracker" returned 30 apps, "minecraft" 38, and "instagram" 23.

Why does a numeric developer ID return only about 10 apps? Google Play doesn't paginate the numeric developer page (/store/apps/dev?id=…). Use the developer's name URL (/store/apps/developer?id=Google+LLC) to get the whole portfolio.

How many reviews can I get? As many as Google Play serves for the app and store. Nested under an app, the 9 MB record limit stops at roughly 15,000 reviews. With onlyIncludeReviews there's no ceiling. In our test on Apify, 15,000 Instagram reviews as separate records took about 90 seconds.

Why does the same app show different data in different countries? Prices, availability, ratings, and reviews depend on the store country, and texts depend on the language. Use gl and hl on a URL, or country and lang, to choose them.

How long does a run take? In our October 2026 tests on Apify, 31 apps took about 6 to 9 seconds, 192 apps from two developer portfolios and a search took about 35 seconds, and one app with about 15,000 nested reviews took about 45 seconds.

Why was an app not found? The app isn't available in the selected country, the ID is wrong, or the app was removed. The log names it, and you aren't charged for it.

Can I schedule runs or export to Google Sheets? Yes. Use Apify Schedules for recurring runs and integrations for Google Sheets, Zapier, Make, Slack, and webhooks.

Something is missing or broken? Open an issue on the Issues tab. Feedback and feature requests are welcome there too.

The Actor collects only public information that Google Play shows to every visitor, like app pages and published reviews. It doesn't sign in or access any account data. Reviews include public usernames and profile images, and developer records can include contact details, which can be personal data, so handle them in line with laws such as the GDPR. You are responsible for how you use the data. Follow Google Play's Terms of Service and copyright rules when you republish descriptions or images. Read more in Apify's blog post Is web scraping legal?

Other scrapers you might like

ActorWhat it does
Apple App Store ScraperScrape Apple App Store apps, rankings, reviews, and similar apps
Apple Podcasts ScraperScrape Apple Podcasts episodes, show notes, audio URLs, and transcripts
Product Hunt ScraperCollect Product Hunt launches, upvotes, makers, and reviews
Similarweb ScraperGet website traffic, rankings, and audience data
Trustpilot Reviews ScraperCollect company reviews and ratings from Trustpilot