Apple App Store Scraper (Apps, Ratings, Developers)
Pricing
from $1.40 / 1,000 app scrapeds
Apple App Store Scraper (Apps, Ratings, Developers)
Search the Apple App Store by keyword or paste app links and get each app's rating, rating count, price, category, developer, website, version, last update, size, languages, description and screenshots. Any country. No login.
Pricing
from $1.40 / 1,000 app scrapeds
Rating
0.0
(0)
Developer
Julio Barcellos Rangel
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
This Apple App Store scraper searches the App Store by keyword, or looks up the apps you paste, and returns each app's rating, number of ratings, price, category, developer, website, version, last update, size, languages, description and screenshots. It is made for ASO specialists, app marketers, analysts and developers who need App Store data in a spreadsheet. Use it to export App Store search results to Excel or CSV, or to pull iOS app details for any country, with no login and no API key.
What does Apple App Store Scraper do?
The robot reads Apple's public iTunes search and lookup service (the same catalog the App Store shows) and turns every app into one clean row. You can give it work in two ways, and you can mix both in the same run:
- Search terms. Type keywords the way you would in the App Store search box, for example
habit trackerorbudget planner. Each term returns up to 200 apps, in the order Apple returns them, with the term insearchTermand the rank inposition. - Apps. Paste App Store links (
https://apps.apple.com/us/app/instagram/id389801252), numeric app IDs (389801252orid389801252) or bundle IDs (com.burbn.instagram). Each lookup row keeps what you typed ininput.
The country you choose decides which App Store is read. Ratings, prices, currency and even whether an app exists can differ from one country to another.
What comes out is a table with one row per app: identity (ID, name, bundle ID, link), developer and seller, price, ratings for all versions and for the current version, categories and age rating, version history dates, release notes, description, size, minimum iOS version, languages, iPad support, icon and screenshots. When something cannot be found, the robot writes an error row instead of failing silently.
What data can you extract?
| Field | What it means | Example |
|---|---|---|
searchTerm | Search term that found the app (search rows only) | habit tracker |
position | Rank of the app in the results for that term, starting at 1 | 1 |
input | Link, ID or bundle ID you entered (lookup rows only) | com.spotify.client |
appId | Apple's numeric app ID | 1438388363 |
name | App name | Habit Tracker |
bundleId | Bundle identifier | com.davetech.habit |
url | App Store page, without tracking parameters | https://apps.apple.com/us/app/habit-tracker/id1438388363 |
developer | Developer name shown on the store | InnerGrow |
developerId | Apple's developer ID | 1828382777 |
developerUrl | Developer page on the App Store | https://apps.apple.com/us/developer/innergrow/id1828382777 |
seller | Seller name (often the legal company name) | Inner Grow Limited |
website | Developer website, when the app lists one | https://www.habitkit.app |
price | Price in the store currency (0 means free) | 0 |
currency | Currency code of the store | USD |
isFree | true when the price is 0 | true |
rating | Average user rating, rounded to 2 decimals | 4.79 |
ratingCount | Number of user ratings | 147824 |
ratingCurrentVersion | Average rating of the current version | 4.79 |
ratingCountCurrentVersion | Number of ratings of the current version | 147824 |
category | Primary category | Productivity |
categories | All categories of the app | ["Productivity", "Health & Fitness"] |
contentRating | Age rating | 4+ |
version | Current version number | 2.25.1 |
updatedAt | Release date of the current version | 2026-10-09T23:42:16Z |
releasedAt | First release date of the app | 2019-01-31T09:10:14Z |
releaseNotes | "What's New" text of the current version | - support iOS 27… |
description | Full App Store description | Habit Tracker: A simple daily planner… |
sizeMB | Download size in MB, 1 decimal | 393.2 |
minimumOsVersion | Minimum iOS version required | 15.0 |
languages | Language codes the app supports | ["EN", "FR", "DE", …] |
supportsIpad | true when iPad is among the supported devices | true |
iconUrl | App icon (512 px when available) | https://is1-ssl.mzstatic.com/…/512x512bb.jpg |
screenshots | iPhone and iPad screenshot URLs | ["https://is1-ssl.mzstatic.com/…"] |
country | App Store country used for the row | us |
scrapedAt | When the row was collected (UTC) | 2026-10-12T20:24:05.574Z |
error | Only on error rows: what went wrong | App not found in the US App Store |
Fields with no value on the store (for example website when the developer lists none) come back as null.
How to use Apple App Store Scraper
- Open the robot in Apify Console and go to the Input tab.
- Type one or more keywords in Search terms, one per line. Leave it empty if you only want to look up specific apps.
- Paste App Store links, app IDs or bundle IDs in Apps, one per line (optional).
- Set Max apps per search (1 to 200) and the two-letter Country code, for example
us,gb,br,deorjp. - Click Start and wait for the run to finish.
- Open the Output tab to see the Apps table, then export the data as JSON, CSV, Excel or HTML.
- Optional: save the input as a task and add a schedule to track the same keywords or apps every day.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
searchTerms | array of strings | ["habit tracker"] | Keywords to search. Each term is searched separately. |
apps | array of strings | none | App Store links, app IDs or bundle IDs to look up. |
maxResultsPerSearch | integer | 50 | Apps per search term, from 1 to 200. Does not apply to lookups. |
country | string | us | Two-letter App Store country code. Only the first two letters are used. |
proxy | object | {"useApifyProxy": true} | Apify Proxy settings. The default works for most runs. |
Accepted forms for apps:
- A full App Store link:
https://apps.apple.com/us/app/instagram/id389801252 - A numeric ID, with or without the
idprefix:389801252orid389801252 - A bundle ID:
com.burbn.instagram
Example input:
{"searchTerms": ["habit tracker", "meditation"],"apps": ["https://apps.apple.com/us/app/instagram/id389801252","284882215","com.spotify.client"],"maxResultsPerSearch": 100,"country": "us","proxy": { "useApifyProxy": true }}
Output example
One real row from the latest run (search term habit tracker, country us). Long text and the screenshot list are shortened.
{"searchTerm": "habit tracker","position": 1,"appId": 1438388363,"name": "Habit Tracker","bundleId": "com.davetech.habit","url": "https://apps.apple.com/us/app/habit-tracker/id1438388363","developer": "InnerGrow","developerId": 1828382777,"developerUrl": "https://apps.apple.com/us/developer/innergrow/id1828382777","seller": "Inner Grow Limited","website": null,"price": 0,"currency": "USD","isFree": true,"rating": 4.79,"ratingCount": 147824,"ratingCurrentVersion": 4.79,"ratingCountCurrentVersion": 147824,"category": "Productivity","categories": ["Productivity", "Health & Fitness"],"contentRating": "4+","version": "2.25.1","updatedAt": "2026-10-09T23:42:16Z","releasedAt": "2019-01-31T09:10:14Z","releaseNotes": "- support iOS 27\n- fix bugs…","description": "Habit Tracker: A simple daily planner to schedule and track your routine, making it easy to build lasting habits…","sizeMB": 393.2,"minimumOsVersion": "15.0","languages": ["EN", "FR", "DE", "IT", "JA", "PT", "RU", "ZH", "ES", "ZH"],"supportsIpad": true,"iconUrl": "https://is1-ssl.mzstatic.com/image/thumb/Purple211/v4/d4/b3/2b/d4b32bd9-f4dd-e9cb-9a26-207f33befafb/AppIcon-pink-gr-0-0-1x_U007epad-0-1-0-85-220.png/512x512bb.jpg","screenshots": ["https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/5c/b8/05/5cb8051e-e125-e84e-f0b5-2551b6e9d69d/_U767d1.jpg/320x480bb.jpg","https://is1-ssl.mzstatic.com/image/thumb/PurpleSource211/v4/13/5d/32/135d32df-678d-5c7e-d940-4f16d5c4e396/_U767d2.jpg/320x480bb.jpg"],"country": "us","scrapedAt": "2026-10-12T20:24:05.574Z"}
A lookup row has input instead of searchTerm and position. An error row has only the input and an error message, for example {"input": "id999999999999", "error": "App not found in the US App Store"}.
How much does it cost?
The robot uses pay per event pricing: you pay $2.00 per 1,000 apps ($0.002 per app returned) on the Free plan. Platform usage is included in the price, so there is no separate charge for compute or proxy.
| Apify plan | Price per 1,000 apps |
|---|---|
| Free | $2.00 |
| Bronze (10% off) | $1.80 |
| Silver (20% off) | $1.60 |
| Gold and higher (30% off) | $1.40 |
Worked examples on the Free plan:
- One keyword with the default 50 apps: 50 apps = $0.10.
- 10 keywords at 200 apps each: up to 2,000 apps = up to $4.00 (you pay only for the apps Apple actually returns).
- 10,000 app lookups = $20.00 (or $14.00 on Gold).
What is not charged: error rows. That covers a search term with no apps, an entry that is not an App Store link, ID or bundle ID, an app that is not available in the chosen country, and requests the App Store did not answer after several retries.
Use cases
- ASO keyword research: see which apps rank for a keyword, in what order, and how many ratings they have.
- Competitor tracking: schedule a daily run on your competitors' apps and watch
version,updatedAt,releaseNotes,ratingandratingCountchange. - Market research: compare prices, free versus paid apps and categories in a niche.
- Lead generation: collect developer names, seller names and websites, then find their emails with a contact scraper.
- Localization research: check
languages, or run the same search in different countries to compare results. - App directories and catalogs: fill a site with icons, screenshots, descriptions and links.
- Text analysis: feed descriptions and release notes into an AI model or a spreadsheet to spot features and trends.
Tips and limits
- 200 apps per search term at most. This is the App Store limit. Apple often returns fewer apps than the maximum you set, depending on the keyword.
- One country per run. To compare countries, run the robot once per country code. The country inside a pasted link is ignored; the
countryinput decides which store is read. - No duplicate filter. An app found by two search terms, or by a search and a lookup, appears once for each and is charged each time.
- No reviews or top charts. The robot returns rating averages and counts, not the text of individual reviews, and it does not read top charts.
- Lookup-only runs from the API:
searchTermshas a default value, so send"searchTerms": []if you only want to look up the apps inapps. - Bundle IDs must look like
com.company.app. Anything that is not a link, an ID or a bundle ID gets the errorNot an App Store link, app ID or bundle ID. - Retries: each request to the App Store is retried up to 5 times with a growing pause. If it still fails, you get an error row such as
App Store did not answer.
Use it from the API, Python or JavaScript
JavaScript (Node.js) with the official apify-client package:
const { ApifyClient } = require('apify-client');const client = new ApifyClient({ token: 'YOUR_TOKEN' });const input = { searchTerms: ['habit tracker'], maxResultsPerSearch: 50, country: 'us' };const run = await client.actor('juliob.rangel/app-store-scraper-fast').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python with the official apify-client package:
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')input = {'searchTerms': [], 'apps': ['com.spotify.client', '389801252'], 'country': 'gb'}run = client.actor('juliob.rangel/app-store-scraper-fast').call(run_input=input)items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
You can also connect the robot to Make, Zapier or n8n, export results to Google Sheets, send them to a webhook when a run finishes, or let AI agents call it through the Apify MCP server.
FAQ
Do I need an Apple account, a login or an API key? No. The robot reads public App Store data. You only need an Apify account.
Can I export the data to Excel or CSV? Yes. Every run's dataset can be downloaded as JSON, CSV, Excel or HTML from the Output tab or through the API.
How many apps can I get? Up to 200 per search term, and you can add as many search terms and app lookups as you like in one run. App IDs are looked up in groups of 100.
Does it scrape App Store reviews? No. You get the average rating and the number of ratings, for all versions and for the current version, but not review texts.
Why did I get an error row?
The robot writes an error row instead of stopping the run: No apps found for a search with no results, Not an App Store link, app ID or bundle ID for input it cannot read, App not found in the XX App Store when the app does not exist in that country, or a connection message when the App Store did not answer. Error rows are free.
Can I monitor apps over time?
Yes. Save your input as a task and schedule it daily or weekly. Each run gives a dated table (scrapedAt) that you can compare.
Is scraping the App Store legal? The robot only collects publicly available data. You are responsible for complying with Apple's terms and with privacy laws such as GDPR and LGPD. If you process personal data (for example the name of an individual developer), you need a legitimate reason to do so.
Related scrapers
- Google Play Store Scraper (Apps, Installs, Ratings, Emails) for the Android side of the same market.
- Website Contact Details Scraper (Emails, Phones, Socials) to get emails and social links from developer websites.
- Google News Scraper (Real Article URLs) to follow news about apps and app companies.
- YouTube Search Scraper (Fast & Cheap) to find review and tutorial videos about an app.
Extrator da App Store da Apple (PT-BR)
Pesquise a App Store por palavra-chave ou cole links de apps e receba nota, número de avaliações, preço, categoria, desenvolvedor, site, versão, última atualização, tamanho, idiomas, descrição e capturas de tela. Qualquer país. Sem login. Você paga só por app retornado.