Google Play Store Scraper: Apps, Reviews, Charts & ASO avatar

Google Play Store Scraper: Apps, Reviews, Charts & ASO

Pricing

$2.00 / 1,000 results

Go to Apify Store
Google Play Store Scraper: Apps, Reviews, Charts & ASO

Google Play Store Scraper: Apps, Reviews, Charts & ASO

Scrape Google Play Store app details, uncapped reviews with star and device filters, keyword search, ranked top charts, developer portfolios, similar apps, permissions, data safety, and ASO keyword data. Flat $2 per 1,000 results, every country and language.

Pricing

$2.00 / 1,000 results

Rating

0.0

(0)

Developer

Sourabh Kumar

Sourabh Kumar

Maintained by Community

Actor stats

0

Bookmarked

13

Total users

0

Monthly active users

5 hours ago

Last modified

Features

Limited permissions

Share

Google Play scraper: reviews, app details, top charts and more

Get Google Play data in 10 ways: reviews, app details, keyword search, top charts, developer catalogues, similar apps, permissions, data safety, keyword ideas and keyword rank. Paste app links, IDs or keywords, press Start, and download a clean spreadsheet.

$2 per 1,000 results. No per-run fee, no proxy setup, no login.

Works in every country and language Google Play serves. Prices come in the local currency of the country you pick.


Top use cases


Pick a mode

Set Mode (mode), paste your entries into URLs, package ids, or keywords (urls), then fill the section with the mode's name if it has one. Other sections are ignored.

You wantmodePaste into
Reviews of an appreviewsurls (app links or IDs like com.spotify.music)
Full details of an appapp-detailsurls (app links or IDs)
Apps for a search termsearchurls (keywords or Play search links)
A top charttop-chartsTop charts options (chartType, category)
Every app by a developerdeveloper-portfoliourls (developer links, numeric IDs, exact names, or one of their apps)
Apps similar to an appsimilar-appsurls (app links or IDs)
An app's permissionspermissionsurls (app links or IDs)
An app's data-safety labeldata-safetyurls (app links or IDs)
Keyword ideas (ASO)keyword-suggestionsurls (seed keywords)
Your app's rank for keywords (ASO)keyword-rankurls (your app) + keywords

Every mode can be scheduled. Run it daily and you have a review monitor, a chart tracker or a keyword rank tracker.


Why this Google Play scraper?

  • 📝 Every review, not a sample: reads an app's whole review list, filtered by stars, device and date.
  • 🏆 Deep charts and searches: top charts to 200 apps, and up to about 250 results where Google has them.
  • 🔎 Rows you can trust: a search returns Google's results in Google's order, never the "Similar apps" block beside them.
  • 🌍 Any country and language: local prices, local charts, local review sets.
  • 🛠️ ASO tools built in: keyword ideas from Play's own search box, and your app's rank for each keyword.
  • 🔒 Privacy data: permissions and the data-safety label, including "no information provided".
  • 💳 You pay only for rows you get: a missing app or an empty result is reported, never billed.

1. Reviews: every review of an app

Paste app links or IDs.

Get one row per review: star rating, title, text, author, date, helpful votes, app version, the developer's reply, Google's topic tags and a link that opens the review on Play.

OptionFieldDefaultWhat it does
Max results per unitmaxResults1000Reviews per app. 0 = every review
Reviews sortsortBy22 newest, 1 most relevant, 3 highest rated
Reviews star filterstarRatingallOnly reviews with this rating (1 to 5)
Reviews device filterdeviceTypephonephone, tablet, watch, chromebook or car
Reviews sincesinceDatenoneA date (2026-06-01) or "7 days", "2 weeks", "3 months"
LanguagelanguageenReviews are picked by language

Input

{
"mode": "reviews",
"urls": ["com.spotify.music"],
"sortBy": 1,
"maxResults": 40
}

Output (one real row, selected fields)

{
"reviewId": "c5de7d25-db91-4088-b575-32040d2f3fc3",
"packageId": "com.spotify.music",
"rating": 1,
"title": null,
"text": "I usually love Spotify, I even have premium, but recently it has been SO testy when I try to open it. Sometimes it will work fine, but most of the time it just opens to a black screen and no matter if I reset the app, or even my phone, nothing really helps it. When it does this, if it eventually opens, everything is incredibly slow to load. I'm very disappointed.",
"userName": "Sam Hatcher",
"date": "2025-05-06T04:36:58.000Z",
"thumbsUp": 2248,
"appVersion": "9.0.40.391",
"replyText": "Hi. Have you tried a quick reinstall? If that doesn't help, we'd recommend reaching out to our Customer Service at support.spotify.com. Just search “Contact Us”, and they'll be happy to help.",
"replyDate": "2025-05-06T05:26:01.000Z",
"replyAuthor": "Spotify AB",
"criterias": [
{ "criteria": "vaf_phase1_learning_piano", "rating": 2 },
{ "criteria": "vaf_phase1_equalizer", "rating": 3 },
{ "criteria": "vaf_phase1_fitness_app_integration", "rating": 2 }
],
"deviceType": "phone",
"url": "https://play.google.com/store/apps/details?id=com.spotify.music&reviewId=c5de7d25-db91-4088-b575-32040d2f3fc3",
"country": "us",
"language": "en"
}

Google picks reviews by language, not country: two countries with the same language give the same reviews, so each app is read once.


2. App details: the full record of an app

Paste app links or IDs. Add several countries to compare prices and ratings.

Get one row per app and country: name, developer and contacts, rating and star breakdown, installs, price (with sale price and end date), in-app purchases, category, content rating, version, update date, chart position, whether it can be installed or is still pre-registration, Play Pass, screenshots and video, permissions, similar apps and the developer's other apps.

Input

{
"mode": "app-details",
"urls": ["com.duolingo"]
}

Output (one real row, selected fields)

{
"packageId": "com.duolingo",
"name": "Duolingo: Learn Languages",
"developer": "Duolingo",
"developerId": "6957685454452609502",
"rating": 4.7462745,
"ratingCount": 51771886,
"reviewCount": 969052,
"installs": "500,000,000+",
"price": 0,
"currency": "USD",
"free": true,
"available": true,
"preregister": false,
"offersIAP": true,
"iapRange": "$0.99 - $239.99 per item",
"category": "Education",
"categoryId": "EDUCATION",
"contentRating": "Everyone",
"updatedOn": "2026-11-09T16:42:17.000Z",
"releasedOnDate": "2013-05-29T12:18:00.000Z",
"summary": "Make language learning fun with Spanish, French, English, chess, math & music.",
"chartRank": "#1",
"chartLabel": "top free education",
"playPass": false,
"originalPrice": null,
"discountPercent": null,
"saleEndsAt": null,
"developerEmail": "super-support@duolingo.com",
"url": "https://play.google.com/store/apps/details?id=com.duolingo&hl=en&gl=us",
"country": "us",
"language": "en"
}

description is plain text; descriptionHTML keeps Google's formatting. price and free are null for an unreleased app with no price yet.


3. Search: apps for a keyword

Paste keywords or Play search links. A link with &price=1 (free) or &price=2 (paid) keeps that filter.

Get one row per app, in Google's order: the search term, position, name, developer, rating, installs, price and category.

Input

{
"mode": "search",
"urls": ["habit tracker"],
"maxResults": 30
}

Output (one real row, selected fields)

{
"searchTerm": "habit tracker",
"position": 1,
"packageId": "org.isoron.uhabits",
"name": "Loop Habit Tracker",
"developer": "Álinson S Xavier",
"rating": 4.7203126,
"installs": "5,000,000+",
"price": 0,
"free": true,
"category": "Productivity",
"url": "https://play.google.com/store/apps/details?id=org.isoron.uhabits&hl=en&gl=us",
"country": "us"
}

4. Top charts: the ranked list for a category

Fill the Top charts options section: a chart and a category id such as GAME, GAME_PUZZLE, COMMUNICATION, or APPLICATION for all apps. A pasted category link works too.

Get one row per app with its rank (up to 200), the chart, the chart's category, the app's own genre, rating, installs and price.

OptionFieldDefaultWhat it does
Chart typechartTypeTop freeTop free, Top grossing, Top paid or New free
Categorycategoryall appsA Play category id
Max results per unitmaxResults50Apps per chart, up to 200. 0 = 200

Input

{
"mode": "top-charts",
"chartType": "topgrossing",
"category": "GAME",
"maxResults": 200
}

Output (one real row, selected fields)

{
"chartType": "topgrossing",
"category": "GAME",
"rank": 1,
"packageId": "com.scopely.monopolygo",
"name": "MONOPOLY GO!",
"developer": "Scopely",
"appCategory": "Board",
"rating": 4.5939174,
"installs": "100,000,000+",
"price": 0,
"currency": "USD",
"country": "us"
}

5. Developer portfolio: every app by a developer

Paste a developer link, a numeric developer ID, the developer's exact name, or any one of their apps.

Get one row per app: the developer, position, name, rating, installs, price and category. Up to 150 apps for a numeric ID, 100 for a name.

Input

{
"mode": "developer-portfolio",
"urls": ["5700313618786177705"]
}

Output (one real row, selected fields)

{
"developerId": "5700313618786177705",
"position": 1,
"packageId": "com.google.android.apps.youtube.unplugged",
"name": "YouTube TV: Live TV & more",
"developer": "Google LLC",
"rating": 3.7776847,
"installs": "10,000,000+",
"category": "Entertainment",
"country": "us"
}

6. Similar apps: an app's competitors

Paste app links or IDs.

Get Google's full "Similar apps" list for each app, in Google's order. Often 100 or more per app. The developer's "More by" list is kept apart (it is in app details as moreByDeveloper).

Input

{
"mode": "similar-apps",
"urls": ["com.todoist"],
"maxResults": 50
}

Output (one real row, selected fields)

{
"sourcePackageId": "com.todoist",
"position": 1,
"packageId": "com.socialnmobile.dictapps.notepad.color.note",
"name": "ColorNote Notepad Notes",
"developer": "Notes",
"rating": 4.875933,
"installs": "100,000,000+",
"category": "Productivity",
"country": "us"
}

7. Permissions: what an app asks for

Paste app links or IDs.

Get one row per permission group, as Play's permissions list shows it. groupKey stays the same in every language.

Input

{
"mode": "permissions",
"urls": ["com.duolingo"]
}

Output (one real row, selected fields)

{
"packageId": "com.duolingo",
"group": "Identity",
"groupKey": "perm_identity",
"permissions": ["find accounts on the device"],
"country": "us",
"language": "en"
}

8. Data safety: what an app collects and shares

Paste app links or IDs.

Get one row per app: whether the developer filled in the form, what data is collected or shared, for what purpose, which items are optional, the security practices and the privacy policy link.

Input

{
"mode": "data-safety",
"urls": ["com.simplemobiletools.calculator"]
}

Output (one real row, selected fields)

{
"packageId": "com.simplemobiletools.calculator",
"declaration": "declared",
"collectsData": true,
"sharesData": true,
"dataCollected": [
{ "category": "App info and performance", "type": "Crash logs", "purpose": "Analytics", "optional": false },
{ "category": "App info and performance", "type": "Diagnostics", "purpose": "Analytics", "optional": false },
{ "category": "App info and performance", "type": "Other app performance data", "purpose": "Analytics", "optional": false },
{ "category": "Device or other IDs", "type": "Device or other IDs", "purpose": "Analytics, Account management", "optional": false }
],
"securityPractices": ["Data is encrypted in transit", "Data can’t be deleted"],
"privacyPolicy": "https://simplemobiletools.com/simplecalculator/privacy",
"country": "us",
"language": "en"
}

declaration is declared, noInformation (the developer gave none) or systemService (a system app Google exempts).


Paste seed keywords. Turn on Expand keyword ideas (expandKeywords) to also ask for the seed plus each letter a to z.

Get one row per idea: the seed, the exact query sent, Google's position for it, the suggestion and a search link.

Input

{
"mode": "keyword-suggestions",
"urls": ["habit tracker"],
"expandKeywords": true
}

Output (one real row, selected fields)

{
"seed": "habit tracker",
"probe": "habit tracker",
"position": 1,
"suggestion": "habit tracker",
"searchUrl": "https://play.google.com/store/search?q=habit+tracker&c=apps&hl=en&gl=us",
"country": "us",
"language": "en"
}

10. Keyword rank: where your app shows up

Paste your app (and competitors) into urls, and the search terms into Keywords to rank for (keywords).

Get one row per keyword and app: the rank, whether it was found, and how many results were checked. Where Google has more than one page, the scraper looks up to about 250 deep.

Input

{
"mode": "keyword-rank",
"urls": ["com.duolingo"],
"keywords": ["learn spanish", "language learning"]
}

Output (one real row, selected fields)

{
"keyword": "language learning",
"packageId": "com.duolingo",
"rank": 1,
"found": true,
"resultsScanned": 30,
"name": "Duolingo: Learn Languages",
"developer": "Duolingo",
"country": "us"
}

Use it from an AI agent (Claude, ChatGPT, MCP)

Connect Claude, ChatGPT, Cursor or any MCP client to Apify's MCP server with this scraper as a tool:

https://mcp.apify.com?tools=sourabhbgp/google-play-scraper

Then ask in plain words. The agent fills in the input, and you pay the same per result. For example:

  • "Get the 1-star reviews of com.whatsapp from the last 7 days."
  • "List the top 100 grossing games on Google Play in Japan."
  • "Where does com.duolingo rank on Google Play for 'learn spanish' and 'language app'?"
  • "Which apps does Google Play show as similar to Todoist?"

Notes for the agent:

QuestionModeMinimum input
What do users say about an app?reviewsurls
Price, rating, installs, version of an appapp-detailsurls
Which apps come up for a term?searchurls (keywords)
What is top in a category?top-chartschartType, category
Everything a company publishesdeveloper-portfoliourls (numeric ID, exact name, or one of its apps)
An app's competitorssimilar-appsurls
Permissions / privacy labelpermissions / data-safetyurls
Keyword ideaskeyword-suggestionsurls (seeds)
An app's rank for keywordskeyword-rankurls (the app) + keywords
  • Keep the cost small: $0.002 per row. Set maxResults (per app, query, chart or developer) and maxItems (whole run) to what the question needs, for example 50 reviews or the top 20 apps.
  • Apps: urls takes package IDs (com.spotify.music) or app links. IDs are case-sensitive. A plain word is not an app and is reported as unusable input.
  • Dates: sinceDate takes a date (2026-06-01) or a relative value (7 days, 2 weeks, 3 months). Anything else stops the run with [U_CONFIG] before anything is charged. Google shows reviews about a day late, so use at least 2 days.
  • Countries: two-letter codes (us, gb, in); uk is read as gb; an unknown code stops the run with [U_CONFIG]. Reviews depend on language, not country.
  • Developers: a numeric ID always works. A name must match Play character for character; when unsure, pass one of the developer's apps instead.
  • Output fields: rating is the country's average; ratingCount is worldwide. installs is Google's band ("500,000,000+"). rank and position start at 1. found: false means the app was not in the results checked (resultsScanned).
  • Reading the result: the status message starts with a code when a run ends short: [U_...] means the input, [E_...] means our side. The RUN_SUMMARY record in the run's key-value store lists every input with its own outcome.
  • Time: a few apps or one chart takes seconds. 1,000 reviews take under a minute. A search past its first page is slower, about one result per second, because each extra app is looked up in full.

What people use it for

  • 📱 App developers: watch new reviews and reply faster, by star rating and app version.
  • 📈 ASO teams: track keyword ranks daily and find new keywords from Play's own search box.
  • 🕵️ Product and market research: map a category's top 200 and every competitor's similar apps.
  • 💰 Analysts: follow prices, sales, installs and ratings across countries.
  • 🔐 Privacy and compliance teams: audit permissions and data-safety labels at scale.
  • 🧠 AI and data teams: build review datasets for sentiment analysis and model training.

How much does it cost?

You pay per row, and each row is charged once. Same price on every plan, every mode.

What you getPer 1,000
Any row: review, app, search result, chart entry, keyword row$2.00

There is no per-run fee.

  • Free plan: your $5 monthly credit covers about 2,500 rows.
  • Starter plan ($19): about 9,500 rows a month.

Limitations

  • Search depth depends on Google: most searches have 13 to 30 results; only some go on to about 250.
  • Developer catalogues: up to 150 apps for a numeric ID and 100 for a name; bigger catalogues are cut at that point.
  • Charts stop at 200: that is the deepest list Google serves.
  • Ranks move a little: on deep searches Google reshuffles results between requests, so a rank past the first page can shift from one run to the next.
  • Reviews arrive a day late: Google shows a new review about 24 hours after it is written.
  • App size is not shown: Google no longer lists download size on the public page.
  • Ratings by country: the star average and breakdown are per country; in a small market the breakdown is Google's estimate.

FAQ

How do I scrape Google Play without coding?

Pick a mode, paste app links, IDs or keywords, and press Start. Download the results as Excel, CSV or JSON.

Can I get only new reviews every day?

Yes. Set Reviews since to 2 days and schedule the run daily. Google shows reviews about a day late, so 1 day would return nothing; with 2 days, runs overlap a little, so remove repeats by reviewId.

Do I need a proxy or a Google account?

No. It works out of the box, and it doesn't log in.

Can I use it from code or an AI agent?

Yes. Call it through the Apify API, or connect it to an AI agent through Apify's MCP server (see above).

It collects only what Google Play shows any visitor, with no login. How you use the data is your responsibility, especially personal data such as reviewer names.

Your feedback

Something missing or wrong? Open an issue.

⌂ 换网址