Apple App Store Scraper: Apps, Reviews & Keyword Rankings avatar

Apple App Store Scraper: Apps, Reviews & Keyword Rankings

Pricing

from $2.00 / 1,000 app records

Go to Apify Store
Apple App Store Scraper: Apps, Reviews & Keyword Rankings

Apple App Store Scraper: Apps, Reviews & Keyword Rankings

Extract Apple App Store app details, search results, customer reviews and keyword rankings with top competitors. Official Apple APIs only, no login, no proxy. Ideal for ASO and app market research.

Pricing

from $2.00 / 1,000 app records

Rating

0.0

(0)

Developer

Fetchsmith Labs

Fetchsmith Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

Extract app details, search results, customer reviews and keyword rankings from the Apple App Store. This Apple App Store scraper is built for app developers, ASO (App Store Optimization) specialists, market researchers and product teams who need structured iOS app data without writing code. It uses only Apple's public iTunes Search API, Lookup API and customer review feed, so there is no login, no cookies and no proxy to configure.

What data you get

The actor has four modes. Pick one with the mode input.

ModeWhat it doesOutput
appsDetails for app IDs, App Store URLs, bundle IDs or whole developer pagesOne record per app and country
searchApps that match one or more search termsOne record per app, with the search term and position
reviewsPublic customer reviews for appsOne record per review
keywordRanksWhere your apps rank in the top 200 search results for each keyword and country, plus the top 10 competitorsOne record per keyword, country and app

App fields (modes apps and search)

FieldDescription
appId, bundleIdApp Store ID and bundle identifier
title, urlApp name and App Store link
developer, developerIdSeller name and developer ID
price, currencyPrice in the storefront currency
rating, ratingCountAverage user rating and number of ratings
genres, primaryGenreCategories
version, releaseDate, currentVersionReleaseDateVersion and ISO dates
sizeDownload size in bytes
contentRatingAge rating, for example 4+
description, releaseNotesStore texts
screenshotUrls, iconUrlImage links
country, scrapedAtStorefront and scrape time
searchTerm, searchRankOnly in search mode

Review fields (mode reviews)

appId, country, reviewId, title, text, rating, author, version, date, voteSum, voteCount, scrapedAt.

Keyword rank fields (mode keywordRanks)

FieldDescription
keyword, countryThe checked keyword and storefront
appIdThe tracked app (null if you gave no apps)
rankPosition in the search results, null if not found in the top 200
totalResultsNumber of results Apple returned for the keyword (maximum 200)
topCompetitorsThe first 10 results that are not your tracked apps: rank, appId, title, developer, rating, ratingCount
scrapedAtCheck time

How to use

  1. Choose a Mode.
  2. Fill the matching input: Apps (appIds) for apps, reviews and keywordRanks, Search terms for search, Keywords for keywordRanks.
  3. Pick one or more Countries (two-letter App Store codes such as us, gb, de).
  4. Set Max items and start the run.
  5. Download the dataset as JSON, CSV, Excel or via API.

Apps can be given as numeric IDs (570060128), App Store URLs (https://apps.apple.com/us/app/duolingo-language-lessons/id570060128) or bundle IDs (com.duolingo.DuolingoMobile). In apps mode a developer page URL such as https://apps.apple.com/us/developer/duolingo/id570060151 returns all apps of that developer.

Meaning of maxItems: in apps mode it is the total number of app records, in search mode it is per search term and country (Apple returns at most 200), in reviews mode it is per app and country (Apple exposes at most 500), and keywordRanks always checks the top 200 results.

Input parameters

ParameterTypeDefaultDescription
modestringappsapps, search, reviews or keywordRanks
appIdsstring[]Duolingo URLApp IDs, App Store URLs, bundle IDs or developer page URLs. Used by apps, reviews and keywordRanks
searchTermsstring[]noneSearch terms for search mode
keywordsstring[]noneKeywords to check in keywordRanks mode
countriesstring[]["us"]Two-letter App Store country codes
maxItemsinteger20Result limit (1 to 1000), see the note above for what it counts in each mode
reviewSortstringmostrecentmostrecent or mosthelpful (reviews mode)

Input example

{
"mode": "keywordRanks",
"keywords": ["language learning", "learn spanish"],
"appIds": ["570060128"],
"countries": ["us", "de"]
}

Default input (runs in a few seconds):

{
"mode": "apps",
"appIds": ["https://apps.apple.com/us/app/duolingo-language-lessons/id570060128"]
}

Output example

Keyword rank record:

{
"keyword": "language learning",
"country": "us",
"appId": "570060128",
"rank": 1,
"totalResults": 195,
"topCompetitors": [
{ "rank": 2, "appId": "829587759", "title": "Babbel - Language Learning", "developer": "Babbel GmbH", "rating": 4.72185, "ratingCount": 755621 }
],
"scrapedAt": "2026-10-11T06:48:44.163Z"
}

Review record:

{
"appId": "284882215",
"country": "us",
"reviewId": "14645741666",
"title": "Satisfaction",
"text": "Encore plus",
"rating": 4,
"author": "Yassoo5",
"version": "582.0.0",
"date": "2026-10-09T12:54:00.000Z",
"voteSum": 0,
"voteCount": 0,
"scrapedAt": "2026-10-11T06:49:19.837Z"
}

Use the App Store scraper from your code (API)

Every run can be started over the Apify API, so you can plug App Store data into your own scripts, dashboards or ASO tools.

Node.js with the apify-client package:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('fetchsmith-labs/app-store-scraper').call({
mode: 'reviews',
appIds: ['570060128'],
countries: ['us', 'gb'],
maxItems: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, 'reviews');

Python with the apify-client package:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("fetchsmith-labs/app-store-scraper").call(run_input={
"mode": "keywordRanks",
"keywords": ["language learning"],
"appIds": ["570060128"],
"countries": ["us"],
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

cURL, synchronous run that returns the dataset items directly:

curl -X POST "https://api.apify.com/v2/acts/fetchsmith-labs~app-store-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode": "search", "searchTerms": ["habit tracker"], "countries": ["us"], "maxItems": 50}'

Results can also go straight to Google Sheets, Make, Zapier, n8n, Slack or a webhook through the Apify integrations on the Actor page.

Pricing

Pay per event. You only pay for results you receive.

EventPriceCharged for
app$0.002Each app record (modes apps and search)
review$0.0004Each review
keyword-rank$0.003Each keyword and country check (several tracked apps in the same check are not charged again)

Example cost for 1,000 results: 1,000 app records cost $2.00, 1,000 reviews cost $0.40, and 1,000 keyword and country checks cost $3.00. The run stops cleanly when your maximum charge limit is reached.

Use cases

  • ASO keyword tracking: check your app's rank for target keywords in several countries and see who ranks above you.
  • Competitor research: compare ratings, rating counts, versions, release notes and screenshots.
  • Review analysis: collect user feedback for sentiment analysis, bug detection or feature requests.
  • Market research: list the top apps for a search term or all apps of a developer.
  • Monitoring: schedule runs with the Apify platform to watch version changes and rank movements.

FAQ

Do I need a proxy or login? No. The actor reads Apple's public endpoints only.

Is it legal? The actor only collects publicly available App Store data (app listings, public ratings and public customer reviews) through Apple's documented public interfaces. You are responsible for using the data in line with applicable laws and Apple's terms. Reviews contain public usernames chosen by the reviewers, so handle them according to data protection rules such as GDPR.

How fast is it? Apple limits the Search and Lookup API to roughly 20 calls per minute per IP, so the actor spaces those calls about 3 seconds apart (concurrency 2) and backs off on 403 or 429 responses. A keyword check takes one call, so about 20 keyword and country checks per minute.

How many reviews can I get? Apple's review feed exposes at most 10 pages of 50 reviews (500 reviews) per app and country, newest first. Some apps and storefronts return no reviews at all.

Why are fewer reviews returned than requested? Apple's public review feed is inconsistent. Individual pages are sometimes empty while later pages hold data, and the mosthelpful sort order is often empty. The actor scans all 10 pages and skips empty ones, but it cannot return reviews Apple does not serve. Try mostrecent or another country.

Why is the rank null? The app was not in the top 200 results Apple returns for that keyword in that country. For some keywords Apple returns fewer than 200 results.

Can I export App Store reviews to CSV or Excel? Yes. Every run stores its results in a dataset that you can download as JSON, CSV, Excel, XML or HTML, or read through the API.

Can I track keyword rankings over time? Each keywordRanks run is a snapshot. To build a rank history, start the run on a schedule you create in your Apify account (for example daily) and compare the datasets, or send them to Google Sheets.

Are ratings per country? Yes. Ratings and prices come from the storefront you select.

Support

Found a bug or missing a field? Open an issue on the actor page and we will take a look.