Google Play Search, Rank & App Details — No Login avatar

Google Play Search, Rank & App Details — No Login

Pricing

from $0.38 / 1,000 app rows

Go to Apify Store
Google Play Search, Rank & App Details — No Login

Google Play Search, Rank & App Details — No Login

Search Google Play for many keywords in many countries in one run, with rank per term, or get app details by package name or URL: rating, ratings count, install range, price, genre, age rating, version, last update. No login, no API key.

Pricing

from $0.38 / 1,000 app rows

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

5 days ago

Last modified

Share

Search Google Play by keyword in one or many countries and get the ranked list of apps for every term, with rating, ratings count, install range, price, genre, age rating, version and last update. Or add package names or Google Play URLs and get the same app details.

No login, no API key and no proxy setup. A typical run (pdf scanner, US, 20 apps) takes about 20 seconds and costs about $0.012.

Google Play Search & App Details: type keywords, choose countries, get ranked apps with install range, rating and version, and see where your own app ranks

Table of contents

What it does

The Actor reads public Google Play pages, like a person in a browser who is not signed in. It works in two modes:

  • search — for each keyword (term) and country, it runs one Google Play search and returns the apps in the same order as Google shows them. Every row has rank (1, 2, 3…), term and country. By default it also opens each app page and adds installs, ratings count, genre, age rating, version and last update.
  • details — for each package name (for example com.whatsapp) or Google Play URL, it opens the app page in every country you choose and returns one row per app and country.

Many terms × many countries go into one run and one dataset. You can also mark your own apps with trackAppIds and see their rank for every term and country in the run summary.

Good fit

  • App store optimization (ASO): check which apps rank for your keywords in each country.
  • Rank tracking: see where your own apps stand for 10–30 keywords, run after run.
  • Competitor research: compare install range, rating, price, in-app purchases and last update of rival apps.
  • App catalog enrichment: turn a list of package names into rows with title, developer, genre and age rating.

Not a fit / limits

  • No exact install numbers. Google shows a public range such as 10,000,000+. The Actor returns this text in installs and its lower bound in minInstalls. It never estimates an exact count.
  • About 30 apps per search. Google's search page shows about 30 apps for a term and has no next page. maxItems is 1–30.
  • No reviews, screenshots, permissions, data safety or developer contact details (email, phone, address).
  • No top charts, categories or "similar apps" lists.
  • Results are what Google shows to a signed-out visitor in that country and language. Personal results on a phone can differ.

Quick start

  1. Open the Input tab.
  2. Keep Mode = Search by keywords (the default).
  3. Keep the prefilled Search terms pdf scanner and Countries us, or add your own.
  4. Keep Results per term and country = 20 and click Start.
  5. Open the Output tab and the Search results view. Check rank, title, installs and score.

Expected result: 20 rows for pdf scanner in the US, ranks 1–20, each with app page details.

Use cases

Buyer jobInput pathOutput entityKey fieldsNext step
Keyword rank researchterms + countriesApp row per rankterm, country, rank, appId, titleExport CSV, compare countries
Track my app's rankterms + trackAppIdsRun summary rankTrackingrank, status (ranked / not_in_results)Schedule a daily run
Competitor snapshotmode: details + appIdsApp row per app and countryinstalls, score, ratings, price, updatedAt, versionGoogle Sheets or API
Fast keyword scanincludeDetails: falseSearch rowrank, title, developer, score, pricePick apps for a details run

Input

Input fields

FieldPlain nameTypeRequiredDefault / prefillAllowed valuesEffect
modeModestringnodefault searchsearch, detailsKeyword search or app details
termsSearch termsarray of stringsyes in searchprefill ["pdf scanner"]1–30 terms, up to 100 characters eachOne search per term and country
countriesCountriesarray of stringsnodefault and prefill ["us"]1–30 two-letter codes (us, gb, de, br…)Every term or app ID is processed in every country
languageLanguagestringnodefault enen, de, pt-BR…Language of genre, age rating, description; also changes search results
maxItemsResults per term and countryintegernodefault and prefill 201–30How many apps to keep per search
includeDetailsAdd app page detailsbooleannodefault truetrue, falsefalse = faster, search fields only
trackAppIdsTrack my apps' rankarray of stringsno—up to 30 package names or URLsMarks rows with isTracked and adds rankTracking to the run summary
appIdsPackage names or Google Play URLsarray of stringsyes in details—up to 300Apps to read in details mode
includeDescriptionInclude description and what's newbooleannodefault falsetrue, falseAdds description and recentChanges; rows get much larger

Duplicate terms are removed without regard to case (PDF Scanner = pdf scanner). Duplicate app IDs are removed too. A package name and its Google Play URL count as the same app.

Interacting settings

WhenInput AInput BEffective behavior
Search sizetermscountriesterms × countries must be at most 60 searches
Search with detailsterms × countriesmaxItemsWith includeDetails: true, terms × countries × maxItems must be at most 400 app pages
Details sizeappIdscountriesappIds × countries must be at most 400
Modemode: detailsterms, trackAppIds, maxItems, includeDetailsIgnored in details mode; app page details are always read

If a limit is exceeded, the run fails at once with a clear message and nothing is charged except the Actor start.

Input examples

Rank of your app for several keywords

{
"mode": "search",
"terms": ["pdf scanner", "document scanner"],
"countries": ["us", "gb"],
"maxItems": 30,
"trackAppIds": ["com.intsig.camscanner"]
}

Expected behavior: 4 searches (2 terms × 2 countries), up to 30 apps each, with app page details. Expected output: up to 120 app rows; rows of the tracked app have isTracked: true. The run summary lists the tracked app's rank for each of the 4 searches, or not_in_results.

App details by package name or URL

{
"mode": "details",
"appIds": ["com.whatsapp", "https://play.google.com/store/apps/details?id=com.intsig.camscanner"],
"countries": ["us", "de"]
}

Expected behavior: 4 app page lookups (2 apps × 2 countries). Expected output: 4 rows with rank: null. Prices, currency and age rating are for each country.

Output

Each row is one app in one search (or one app in one country in details mode). Every row has the same 46 fields. A field is null when Google does not show the value or when it was not requested.

The dataset has two views: Search results (search columns first) and App details (app page columns first).

Output fields

FieldMeaningTypeCan be empty?Example
statusRow typestringnocomplete, partial, not_found, error
term, country, rankSearch term, country, position in Google's liststring, string, integerrank is null in details modepdf scanner, us, 2
isTrackedApp is in trackAppIdsbooleannull without trackAppIdstrue
appId, title, developerPackage name, app name, developer namestringno on app rowscom.whatsapp
scoreAverage rating, 1–5numbernull when nobody rated the app yet4.877
ratings, reviewsNumber of ratings and written reviewsintegernull without app page details2426697
ratingHistogramCount of 1–5 star ratingsobjectnull without details{"fiveStars": 2274811, …}
installs, minInstallsGoogle's public install range and its lower boundstring, integernull without details50,000,000+, 50000000
price, free, currency, priceTextPrice in the country's currencynumber, boolean, stringpriceText needs details0, true, USD, Free
offersIAP, iapRange, adSupportedIn-app purchases, their price range, adsboolean, stringnull without detailstrue, $1.99 per item
genre, contentRatingCategory and age rating, in the chosen languagestringnull without detailsProductivity, Everyone
updatedAt, released, version, androidVersionLast update (ISO time, UTC), release date, version, minimum Androidstringversion is null when Google shows "Varies with device"2026-09-28T13:34:21.000Z, 1.7.8
url, icon, developerUrlLinks to the app page, icon and developer pagestringno on app rowshttps://play.google.com/store/apps/details?id=…
developerIdThe developer ID from the Google Play developer link: a number or a name, as Google uses itstringnull when the page has no developer linkSimple+Design+Ltd.
description, recentChangesFull description and What's Newstringnull unless includeDescription: true—
queryIdsApp IDs a not_found or error row is aboutarraynull on app rows["com.example.missing"]
errorCode, errorMessageWhy a row is partial or an errorstringnull on complete rowsDETAILS_NOT_FOUND
detailsIncluded, sourceUrl, fetchedAtWhether the app page was read, the page used, time of readingboolean, string, stringnotrue

Output example

From the Quick start run (pdf scanner, US). Trimmed: some fields are left out.

{
"status": "complete",
"mode": "search",
"term": "pdf scanner",
"country": "us",
"rank": 2,
"appId": "imagetopdf.pdfconverter.jpgtopdf.pdfeditor",
"title": "Image to PDF - PDF Maker",
"developer": "Simple Design Ltd.",
"score": 4.877,
"ratings": 2426697,
"installs": "50,000,000+",
"minInstalls": 50000000,
"free": true,
"offersIAP": true,
"genre": "Productivity",
"contentRating": "Everyone",
"updatedAt": "2026-09-28T13:34:21.000Z",
"version": "1.7.8",
"description": null,
"detailsIncluded": true,
"errorCode": null
}

Output entities and surfaces

SituationWhereResultWhat to do
Normal appDatasetstatus: complete rowUse or export
Search with no appsDatasetOne not_found row for that term and countryCheck the spelling or try another country
App ID not on Google Play in that countryDatasetA not_found row with the missing IDs in queryIds (one row per country for each group of up to 10 IDs)Check the package name; some apps exist only in some countries
Invalid app ID or URLDatasetOne error row with INVALID_IDENTIFIER and the bad values in queryIdsFix the value
App page failed but the search workedDatasetstatus: partial row with search fields onlyRun again later for the details
Run stopped early (Google blocked access, timeout, cost limit)Dataset + RUN_SUMMARYRows already read stay; the rest is listed as NOT_PROCESSEDRead the run status message, then run again

The Run summary (key-value store record RUN_SUMMARY) has the run status (COMPLETE, NO_RESULTS, CAPPED, PARTIAL, ERROR…), counts, one line per search or lookup, and rankTracking for tracked apps. In details mode counts.queries counts groups of up to 10 app IDs per country, while counts.chargedQueries counts single app ID lookups (the paid query events).

Pricing and limits

Pricing unit

This Actor uses pay-per-event pricing. You pay for:

EventWhenPrice
Actor startOnce per run (per GB of memory; default 1 GB)$0.003
Google Play query answeredOne search (term × country) or one app ID lookup (app ID × country) that Google answered$0.0001
App rowOne complete app row stored in the dataset$0.00045 (Free plan), $0.00042 (Bronze), $0.0004 (Silver), $0.00038 (Gold and higher)

partial, not_found and error rows are free. A search with no apps costs only its query ($0.0001). Failed or skipped queries are free. Platform usage (compute, traffic) is included in these prices.

To cap the cost, set Max total charge in run options. When the limit is reached, the run stops, keeps all rows it already stored and reports CAPPED.

Cost examples

Event counts from our test runs, priced at Free plan prices:

ScenarioInput scopeCharged eventsCost
One apppdf scanner, US, maxItems: 1start + 1 query + 1 app$0.0036
Typicalpdf scanner, US, maxItems: 20start + 1 query + 20 apps$0.0121
No apps foundone nonsense term, USstart + 1 query$0.0031
Many keywords20 terms × 2 countries × 10 apps, with detailsstart + 40 queries + 399 appsabout $0.19

Limits per run

  • Up to 60 searches (terms × countries) and up to 30 apps per search.
  • With app page details: up to 400 app pages per run (for example 20 terms × 2 countries × 10 apps). Such a run takes about 3.5 minutes.
  • Without details: up to 60 × 30 = 1,800 rows, in under a minute.
  • Details mode: up to 300 app IDs and 400 lookups (app IDs × countries).

For more, split the work into several runs.

API, export and integrations

  • API: start the Actor with the Apify API and the same JSON input as above. Read rows from the run's dataset and the run summary from the RUN_SUMMARY record.
  • Export: download the dataset as JSON, CSV, Excel, XML or HTML from the Output tab or the API.
  • Scheduling: create a task with your terms and trackAppIds and add a schedule (for example daily) to collect a rank history.

Use with AI agents (MCP)

  • Apify MCP server URL with only this Actor: https://mcp.apify.com?tools=cliqtomedia/google-play-apps-search
  • Smallest useful input: {"terms": ["pdf scanner"], "countries": ["us"], "maxItems": 20}
  • Key output fields: rank (position in Google Play search), appId (package name), title, installs (public install range), score (average rating).
  • A typical call takes about 20 seconds and costs about $0.012. Limits: 60 searches, 30 apps per search, 400 app pages per run.

Troubleshooting

The run shows SOURCE_BLOCKED

Symptom: the status message says Google blocked access, and some searches are NOT_PROCESSED. Likely reason: Google showed a consent or CAPTCHA page. The Actor does not try to get around it. Action: rows read before the block stay in the dataset. Run the missing terms again later.

A search returned a not_found row

Symptom: one row with status: not_found for a term and country. Likely reason: Google returned no apps for this term in this country and language. Action: check the spelling, try language: en, or try another country. This row is free.

My tracked app shows not_in_results

Symptom: in RUN_SUMMARY.rankTracking, the app has status: not_in_results. Likely reason: the app is not in the first ~30 apps Google shows for that term and country. Action: this is a real result, not an error. Check the package name in trackAppIds.

The run failed at once with INVALID_INPUT

Symptom: the run ends in a few seconds with a message about a limit. Likely reason: too many searches or app pages for one run (see Limits per run). Action: lower maxItems, turn off includeDetails or split the terms into several runs.

FAQ

Do I need a Google account or API key?

No. The Actor reads public Google Play pages without login.

Why don't I get the exact number of installs?

Google Play shows only a range, such as 10,000,000+. Other numbers you may see elsewhere are estimates. This Actor returns only what Google shows: installs and its lower bound minInstalls.

Why is score null for some apps?

Nobody has rated the app yet. In that case ratings is 0 and score is null, not 0.

Why is version null?

Many large apps show "Varies with device" instead of a version number. The Actor returns null instead of a wrong value.

Are the results the same as on my phone?

Not always. The Actor sees what a signed-out visitor in the chosen country and language sees. Google can personalize results for signed-in users and change the order during the day.

How fresh is the data?

Every run reads Google Play live. fetchedAt shows when each row was read.

Support

For a bug, question or feature request, open an issue in the Issues tab of this Actor. Include the run ID, the mode and the error message. Never send tokens or passwords.