App Details Scraper avatar

App Details Scraper

Pricing

from $0.50 / 1,000 results

Go to Apify Store
App Details Scraper

App Details Scraper

Scrape app metadata, keyword search rankings and top charts from the Apple App Store and Google Play in one run, with a single unified schema. Rating, installs, price, developer, category and rank position.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

Juan ignacio Veltri

Juan ignacio Veltri

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

App Details Scraper — App Store & Google Play metadata, keyword rankings and charts

Get app metadata, keyword search positions and top charts from the Apple App Store and Google Play, with one Actor and one output schema.

The metadata is the easy part — plenty of Actors return it. What this one adds is the context: every row carries where the app was found. rank, query and chart tell you "this app sits 9th for "meditation" in Mexico", which is the number an ASO team actually acts on.


Three ways to ask, one table out

AskWhat you getApp StoreGoogle Play
apps — a URL, ID, bundle or namefull metadata
searchQueries — a keywordranked results with position
chartstop-free / top-paidranked results with position

Google Play does not publish a chart feed comparable to Apple's, so charts returns App Store rows only. That is stated here rather than sold and quietly empty.


Quick start

Where does my app rank for a keyword, in three markets?

{
"searchQueries": ["meditation", "sleep sounds"],
"countries": ["US", "GB", "MX"],
"resultsPerQuery": 50
}

Metadata for a set of apps, mixing formats and stores freely:

{
"apps": [
"https://apps.apple.com/us/app/duolingo/id570060128",
"com.spotify.music",
"notion"
]
}

Today's top free apps in five countries:

{
"charts": ["top-free"],
"countries": ["US", "BR", "MX", "ES", "AR"],
"resultsPerQuery": 100
}

A reference that already names its store — a URL, an Apple ID, an Android bundle — is always honoured. Only a plain name is searched in both stores.


Output

One row per app, identical shape from both stores:

{
"id": "app_store:570060128:US",
"url": "https://apps.apple.com/us/app/duolingo-language-lessons/id570060128",
"store": "app_store",
"appId": "570060128",
"name": "Duolingo - Language Lessons",
"developer": "Duolingo",
"category": "Education",
"rating": 4.7,
"ratingCount": 2183940,
"isFree": true,
"version": "8.11.1",
"contentRating": "4+",
"storeCountry": "US",
"rank": 3,
"query": "language learning",
"chart": null
}

id is prefixed by store and market, so the same app in two countries stays two rows and never collides — which is what you need to compare markets.

What each store publishes

FieldApp StoreGoogle Play
Name, developer, category, rating, rating count
Descriptionshort description only
Price and currency
Version, release date, last update
Screenshots
Content rating

Fields a store does not publish come back as null. That is information, not a gap.


What it is good for

  • Keyword rank tracking — schedule it, turn includeSeen off, and watch positions move.
  • Market comparison — the same keyword across countries shows where you rank and where you don't.
  • Competitor monitoring — who else shows up for your keywords, and what their rating is.
  • Chart watching — see what entered top-free today in each market.

Notes and limits

  • Charts are App Store only. Google Play has no equivalent public feed.
  • top-grossing is not offered. It appears in older Apple documentation and now returns HTTP 404, so it is rejected at input validation rather than failing mid-run.
  • Google Play search costs one extra request per app. Its results page only exposes bundle IDs, so each app's page is fetched to fill the row — and only for apps that already passed your filters, so a strict filter makes a run cheaper, not more expensive.
  • Ranking positions are per market. The same keyword returns a different order in every country.

Pricing

Pay per result. You are charged for apps that actually land in your dataset — filtered out and duplicate rows cost nothing.