Google Play Scraper — App Search, Rank & App Details
Pricing
from $1.20 / 1,000 apps
Google Play Scraper — App Search, Rank & App Details
Google Play search results by country with rank, so you see where apps rank for a keyword. Run again to get rank changes and new entries since the last run. Rating, installs, price and category per app; optional details (rating count) or lookup by package name. No login.
Pricing
from $1.20 / 1,000 apps
Rating
0.0
(0)
Developer
Northbell
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Give it search terms, in the country and language you choose, and get one clean row per app in Google Play's order: rank, name, developer, exact rating, installs, category, price and icon. Add package names or Play URLs to look apps up directly, and switch on details to get the number of ratings and the content rating. $1.50 per 1,000 apps, no login, no API key.
Run it again — or put it on a daily schedule — and every search row also tells you what changed since the last run: the previous rank, the rank change, and whether the app is new in the results. Google Play only shows today's order, so the history is the one thing you have to collect yourself; this does it for you.
What you get
| Field | What it is |
|---|---|
type | search-result (an app in a search), app (looked up by package name or URL) or error |
search, country, language, rank | the search term, the store country, the page language, and the position among the apps (an app that appears twice counts once) |
previousRank, rankChange, isNewInSearch | compared with your previous run of the same search, country and language (null on the first run; a positive rankChange means the app moved up) |
appId, name, developer, url, iconUrl | the app (appId is the package name, e.g. com.ticktick.task) |
rating | the average rating with its decimals (4.718944), not the rounded 4.7 on screen; empty for an app without ratings |
category | on search rows: the category as Google Play shows it in your language ("Productivity"). app rows have categoryId instead |
installs, installsMin | the download bracket: installs is "10M+", installsMin the number (10000000) |
price, currency | 0 for a free app |
ratingCount, categoryId, contentRating | from the app's own page: how many ratings, the language-independent category (PRODUCTIVITY) and the age rating. On every app row, and on search rows when Include app details is on |
detailsError | only on a search row whose app page could not be read; the rest of the row is still complete |
input | on app rows: what you typed (package name or URL) |
observedAt | when the row was read |
message | on error rows: what went wrong (and which search or input it was) |
Use it for
- App store optimisation (ASO) — track where your app and your competitors' rank for the keywords that matter, per country, and see who moved
- Competitor and market research — who ranks for a niche, how many installs they have, what they charge, and who just entered the results
- Lead lists and reports — apps by keyword with developer, rating and installs, exported to Sheets or your BI tool
Input
{ "searches": ["habit tracker", "focus timer"], "country": "gb", "language": "en", "maxResultsPerSearch": 30, "includeDetails": false, "apps": ["com.ticktick.task"] }
Rankings are remembered per search, country and language in a named key-value store in your Apify account, so the second run of the same Actor already shows rank changes. Schedule it (Apify → Schedules) for a daily history. The comparison uses the whole results page, so asking for 5 apps today and 30 tomorrow does not mark the lower ones as new.
Pricing
$1.50 per 1,000 apps, plus $0.01 per run. Every app row is one app, whether it is ranked in a search or looked up. Error rows (a search without results, an unknown package name) are free. The $0.01 run-start fee is the one charge every run pays, even one that returns nothing.
Notes
- Public data only: what a signed-out visitor sees on Google Play in that country and language. No developer emails, phone numbers or addresses are read or returned.
- One results page per search: usually 30 apps (a few pages hold more), and 30 is the most this Actor returns per search. Google Play loads more through an internal call that this Actor does not use.
- When the search words are an app's name (a brand, a game), Google Play shows fewer results, often 5 to 25, and starts the page with a featured card for that app. The featured card is rank 1. Its
categoryis empty, and itspriceis empty unless details are on. - The "Similar apps" strip that Google Play adds under such results is not a search result. It is not ranked and not returned.
- Google Play's web search showed no ad cards in our checks (72 searches: 12 terms in 6 countries). If a card ever carries an "Ad" or "Sponsored" label, it is not counted in the ranks.
countrydecides which store you see (ranking, price, currency),languagethe language of names and categories. Results are what a signed-out visitor gets, not personalised.installsis a bracket, not a count: "10M+" means at least 10,000,000 downloads.- Include app details opens one extra page per app (about 30 apps in 10 seconds). Apps you list in
appsalways get details.ratingCountandratingstay empty for apps that have no ratings yet. - Apps that dropped out of the results since your last run are not listed; compare the
appIds of two runs, or look for rows withisNewInSearch: truefor the ones that came in.
For reviews and why a rating moved, see Google Play Rating Tracker. For the same on the Apple App Store, see App Store Scraper.
For AI agents
{"searches": ["habit tracker"], "maxResultsPerSearch": 10} returns the top 10 apps with rank, rating, installs and price. {"searches": [], "apps": ["com.ticktick.task"]} returns one row for that app. Rows have type: search-result, app or error.