Google Play Scraper: Apps, Ratings and Developer Contacts avatar

Google Play Scraper: Apps, Ratings and Developer Contacts

Pricing

from $1.00 / 1,000 app with details

Go to Apify Store
Google Play Scraper: Apps, Ratings and Developer Contacts

Google Play Scraper: Apps, Ratings and Developer Contacts

Extract Google Play apps by search keyword or app ID. Returns title, developer with email, website and address, rating and histogram, install band, price, in-app purchase and ads flags, content rating, description, screenshots and similar apps. Pay per event.

Pricing

from $1.00 / 1,000 app with details

Rating

0.0

(0)

Developer

NanoScrape

NanoScrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

Google Play Scraper

Search Google Play apps by keyword, or look up apps by package name or app page URL. You get one record per app: title, developer with the contact details shown on the listing, rating and rating histogram, install band, price, in-app purchase and ads flags, content rating, release and update dates, description, screenshots and similar apps. Use it for app store research, competitor tracking, and lists of app publishers by niche with their public support email, website and address.

What you get

One record per app. Fields that an app or a record type does not have are null (or an empty list).

There are two record types, shown in record_type:

  • detail: the full record. Every field in the table below.
  • search: only what the search list shows (the fields marked "search" below). Keyword results are returned as detail records by default (includeDetails on); a search record appears when you switch that option off, or as a fallback when an app's page could not be read.
FieldTypeRecordsDescription
record_typestringbothdetail or search
app_idstringbothPackage name, for example com.duolingo
titlestringbothApp title
urlstringbothPublic app page
summarystring or nulldetailShort description
developerstring or nullbothDeveloper name
developer_idstring or nulldetailDeveloper ID
developer_urlstring or nulldetailDeveloper page on Google Play
developer_emailstring or nulldetailSupport email shown on the listing
developer_websitestring or nulldetailDeveloper website shown on the listing
developer_addressstring or nulldetailPostal address shown on the listing
developer_phonestring or nulldetailPhone number shown on the listing, when given
privacy_policy_urlstring or nulldetailPrivacy policy link
categorystring or nullbothCategory name in the chosen language
genre_idstring or nulldetailCategory ID, language independent, for example EDUCATION
scorenumber or nullbothAverage rating, 1 to 5. null for apps without ratings
ratings_countinteger or nulldetailNumber of ratings
reviews_countinteger or nulldetailNumber of written reviews
histogramobject or nulldetailRatings per star, keys 1 to 5
installsstring or nullbothInstall band as shown, for example 500,000,000+
installs_mininteger or nulldetailLower end of the install band
installs_maxinteger or nulldetailUpper end of the band. Derived: the start of the next band minus one
pricenumber or nullbothPrice in the store currency, 0 for free apps
currencystring or nullbothCurrency code of the price
freeboolean or nullbothTrue when the price is 0
offers_iapboolean or nulldetailTrue when the app has in-app purchases
iap_price_rangestring or nulldetailIn-app purchase price range as shown on the listing
contains_adsboolean or nulldetailTrue when the listing says the app contains ads
content_ratingstring or nullbothContent rating label in the chosen language
content_rating_descriptorsstring or nulldetailContent rating descriptors
releasedstring or nulldetailFirst release time (ISO 8601, UTC)
released_textstring or nulldetailFirst release date as shown in the chosen language
updatedstring or nulldetailLast update time (ISO 8601, UTC)
updated_textstring or nulldetailLast update date as shown in the chosen language
versionstring or nulldetailAlways null: the app version is not on the listing page
android_versionstring or nulldetailAlways null: the minimum Android version is not on the listing page
descriptionstring or nullbothFull description as plain text (search records: the short text of the search list)
recent_changesstring or nulldetailWhat's new text
iconstring or nullbothApp icon
header_imagestring or nulldetailFeature graphic
screenshotsarraybothScreenshot URLs
videostring or nulldetailTrailer URL when the listing has one
similar_app_idsarraydetailApp IDs of the similar apps shown on the listing
permission_groupsarraydetailPermission groups the app asks for
top_chart_labelstring or nulldetailTop chart the app appears in, as shown on the listing
top_chart_rankstring or nulldetailRank in that chart, for example #1
countrystringbothStore country used
languagestringbothLanguage used
search_querystring or nullbothKeyword that returned the app; null for app IDs
scraped_atstringbothUTC timestamp, ISO 8601

Developer contact fields are exactly what the listing shows publicly. Many listings show an email and a website, fewer show an address or a phone number. Dates are given as ISO timestamps from the source's own time values, so they do not change with the language setting; the _text fields keep the localised wording.

Fill rates, measured in one local test series in October 2026 (US store, English, plus one run in the German store; 30 app page rows and 57 search rows over several runs, some apps appear more than once): on the 30 app pages every field above was present except version and android_version (always empty), video (2 of 30), developer_phone (19 of 30), developer_website (27 of 30), iap_price_range (27 of 30), recent_changes (27 of 30), content_rating_descriptors (15 of 30) and top_chart_label / top_chart_rank (5 of 30). On the search results title, developer, category, installs, price, content rating, description and icon were present on every row, and score on all but 2 apps without a rating. These figures describe this test series, not a general rate.

Input

FieldTypeDefaultDescription
searchQuerieslist of text["budget planner"] when no keyword and no app is givenKeywords such as habit tracker. A comma or line separated text also works.
appIdslist of textemptyPackage names (com.duolingo) or app page URLs (https://play.google.com/store/apps/details?id=com.duolingo). Always returns the full record.
countrytextusTwo-letter store country: prices, ratings and availability follow it.
languagetextenLanguage of titles, descriptions and labels, for example de or pt-BR.
includeDetailsbooleantrueKeyword results: open every app for the full record (billed as an app detail event). Off: search list fields only (billed as a search result event).
maxResultsinteger50Maximum number of apps across all keywords and app IDs. 0 means no limit. The limit is shared equally between the entries; an unused share goes to the later ones.
maxResultsPerQueryinteger0Maximum number of apps for each keyword and each app ID. 0 means no separate limit.
proxyConfigurationobject{"useApifyProxy": true}Proxy settings. The default works for most runs.

Numbers may be given as text ("25"). An empty input {} runs a small sample search (budget planner, up to 10 apps, with details) and the run status says so. If the input cannot be read, the actor runs that same sample and writes a warning to the log. The same keyword or app given twice is processed once, and an app that several searches find is delivered once. A pasted Google Play search URL is read as its keyword. Values that are neither a package name nor a Play URL are skipped and counted in the status message.

Example input

Search with full records:

{
"searchQueries": ["budget planner", "habit tracker"],
"country": "us",
"language": "en",
"maxResults": 60
}

Look up apps:

{
"appIds": [
"com.duolingo",
"https://play.google.com/store/apps/details?id=com.spotify.music"
],
"country": "de",
"language": "de"
}

Search list fields only:

{
"searchQueries": ["chess"],
"includeDetails": false,
"maxResults": 30
}

Example output

A detail record (description shortened here; values taken from the saved sample):

{
"record_type": "detail",
"app_id": "com.duolingo",
"title": "Duolingo: Learn Languages",
"url": "https://play.google.com/store/apps/details?id=com.duolingo",
"summary": "Make language learning fun with Spanish, French, English, chess, math & music.",
"developer": "Duolingo",
"developer_id": "6957685454452609502",
"developer_url": "https://play.google.com/store/apps/dev?id=6957685454452609502",
"developer_email": "super-support@duolingo.com",
"developer_website": "https://www.duolingo.com/help/support-request",
"developer_address": "5900 Penn Ave\nPittsburgh, PA 15206\nUnited States",
"developer_phone": "+1 412-567-6602",
"privacy_policy_url": "https://www.duolingo.com/privacy",
"category": "Education",
"genre_id": "EDUCATION",
"score": 4.746068,
"ratings_count": 51342639,
"reviews_count": 967244,
"histogram": { "1": 946178, "2": 346561, "3": 1166036, "4": 5880965, "5": 43002849 },
"installs": "500,000,000+",
"installs_min": 500000000,
"installs_max": 999999999,
"price": 0,
"currency": "USD",
"free": true,
"offers_iap": true,
"iap_price_range": "$0.99 - $239.99 per item",
"contains_ads": true,
"content_rating": "Everyone",
"content_rating_descriptors": "Users Interact, In-App Purchases",
"released": "2013-05-29T12:18:00Z",
"released_text": "May 29, 2013",
"updated": "2026-10-26T19:44:49Z",
"updated_text": "Oct 26, 2026",
"version": null,
"android_version": null,
"description": "Learn a new language, chess, math & more with the world's most downloaded education app! ...",
"recent_changes": "Our mascot owl, Duo, is trading in his usual diet of mice for bugs this week. ...",
"icon": "https://play-lh.googleusercontent.com/tw_coGKgk1K_zO-Ypf9zBKV1s-KT3dYN1MIUxIqtnbfmON5x_YmuoAr31gE4oSfJHNtA-aStTd-qe9R8S6NVyA",
"header_image": "https://play-lh.googleusercontent.com/Wwc5wGBb-gKpyD9oBTVwTQq2mhMLt1I5Ljdtv82tdILRMtAVGPINXcbMFZIiXraSfFOTw9_bBVipr--o1Vw0",
"screenshots": ["https://play-lh.googleusercontent.com/twmCellsRXWs4bZsSXRv19x-3BIp19FzlQPdu_Va-zE10aL468HHFKJBvEOXo0g67Xsvl3nkIKnpjY7L62OOiA", "..."],
"video": null,
"similar_app_ids": ["com.zhiliaoapp.musically", "com.facebook.katana", "com.whatsapp", "com.spotify.music", "com.instagram.android"],
"permission_groups": ["Identity", "Calendar", "Contacts", "Photos/Media/Files", "Storage", "Microphone", "Other"],
"top_chart_label": "top free education",
"top_chart_rank": "#1",
"country": "us",
"language": "en",
"search_query": null,
"scraped_at": "2026-10-27T12:00:00Z"
}

A search record (same fields, the ones the search list does not show are null):

{
"record_type": "search",
"app_id": "com.droid4you.application.wallet",
"title": "Wallet: Budget Expense Tracker",
"url": "https://play.google.com/store/apps/details?id=com.droid4you.application.wallet",
"developer": "BudgetBakers",
"category": "Finance",
"score": 4.61595,
"installs": "10,000,000+",
"price": 0,
"currency": "USD",
"free": true,
"content_rating": "Everyone",
"description": "Wallet is the all-in-one personal finance manager built to help you save money and plan for the future. ...",
"developer_email": null,
"ratings_count": null,
"search_query": "budget planner"
}

(Other fields of the record are null or empty lists and left out of this example for space.)

Pricing

Pay per result. The Pricing tab of this Actor shows the price of each event and the one-time start fee:

  • actor-start: charged once per run, together with the first delivered app.
  • app-detail: one per app delivered as a detail record. It is charged instead of, not on top of, app-search-result.
  • app-search-result: one per app delivered as a search record.

You are charged only for apps that were delivered; a run that finds nothing costs nothing. If you set a maximum cost per run, the run stops at that limit and the status message says how many apps were delivered.

Use with AI (MCP)

Add this actor as a tool in Claude or another MCP client:

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

Example prompts:

  • "Find 30 budgeting apps in the US Play Store and list the developer email and website for each."
  • "Get the rating, install band and last update date of com.duolingo and com.spotify.music."

FAQ

How many apps does one keyword return? Up to 30: the first result page of the Google Play search. Further result pages are not read yet. For more volume, add keyword variants (for example budget planner, budget app, expense tracker) or use App IDs. When a keyword gives fewer apps than your limit allows, the status message says so.

Why are version and android_version empty? Google Play does not put them on the app page itself, so they are always null.

Why is a developer email or address empty? Only what the listing shows is returned. Not every developer publishes an email, website, address or phone number.

Which store does country select? The Google Play storefront of that country: prices, ratings, availability and the top chart label follow it. Use language for the text language.

What is installs_max? Google Play shows install bands such as 500,000,000+. installs_min is the band start; installs_max is the start of the next band minus one, so it is a bound, not a measured number.

Keyword results cost more with details. How do I keep the cost down? Set includeDetails to false to get search list fields only, or use maxResults and a maximum cost per run.

How do I find an app ID? It is the id= part of the app page URL, for example com.duolingo. You can also paste the full URL.

Limits

  • Keyword searches read the first result page only (up to 30 apps per keyword).
  • Top charts, category pages and developer pages are not supported yet.
  • A search for a keyword in a small store can return few apps, or none; the run then ends normally with a message and no charge.
  • Only public listing data is returned. Reviews are not included.

Data protection

This actor returns only data that is publicly visible on the source pages. Results can include personal data, such as names, email addresses, phone numbers and addresses of individual developers or sole traders. You are responsible for using the data lawfully, including the GDPR/DSGVO, national data-protection laws and unfair-competition rules (for example UWG) for marketing and outreach.

Support

Questions or problems? Open a ticket in the Issues tab on the actor page or email contact@nanoscrape.com.