App Store Scraper: iOS Apps, Ratings & Pricing avatar

App Store Scraper: iOS Apps, Ratings & Pricing

Pricing

from $1.50 / 1,000 app scrapeds

Go to Apify Store
App Store Scraper: iOS Apps, Ratings & Pricing

App Store Scraper: iOS Apps, Ratings & Pricing

Scrape the iOS App Store through Apple's official Search API: name, developer, rating, review count, price, category, screenshots, version and release notes.

Pricing

from $1.50 / 1,000 app scrapeds

Rating

0.0

(0)

Developer

Arman Hossain

Arman Hossain

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Share

App Store Lookup: Full app metadata by ID or search: seller, rating, price and version

Pulls iOS, iPad and Mac app metadata straight from Apple's own Search API. You get the name, developer, rating, review count, price, category, screenshots, version, release notes, file size and minimum OS.

This is Apple's own documented data, the same source iTunes affiliate tools have used for years. A 200-app keyword sweep is a single request.

Agent skill: SKILL.md

https://api.apify.com/v2/key-value-stores/t7YoTxpZEJOWvw4Ug/records/itunes-app-store-scraper.md

What you get

FieldWhat it holds
trackId, trackName, bundleIdApple's numeric app ID, the store name and the reverse-DNS bundle ID
sellerName, artistName, artistIdLegal seller name, display developer name and developer ID
price, formattedPrice, currencyNumeric price, the localised string ("Free", "£5.99") and the storefront currency
averageUserRating, userRatingCountLifetime rating and rating count
averageUserRatingForCurrentVersion, userRatingCountForCurrentVersionThe same two, scoped to the shipping version
primaryGenre, genresPrimary category and the full category list
version, releaseDate, currentVersionReleaseDateShipping version, first release, and when this version shipped
releaseNotes, descriptionFull "What's New" text and the full store description
minimumOsVersion, fileSizeBytes, contentAdvisoryRating, languagesRequirements, download size in bytes, age rating and supported languages
screenshotUrls, ipadScreenshotUrls, artworkUrl512iPhone and iPad screenshots, plus the 512px icon
trackViewUrl, sellerUrlStore listing URL and the developer's own site
country, source, scrapedAtStorefront used, which input produced the row, and when the run happened

RUN_SUMMARY in the key-value store holds per-run counts, the filters you used, and any target that failed.

What people use it for

  • ASO research. See exactly which apps rank for a keyword, and how their ratings compare.
  • Release tracking. Poll version and currentVersionReleaseDate daily to spot a competitor's ship cadence.
  • Cross-storefront pricing. Run the same app IDs against US, GB, DE and JP to compare price and rating.
  • App enrichment. Turn a list of bundle IDs from an MDM or analytics export into full store records.
  • Category benchmarking. Pull the top 200 for a category keyword and chart the rating distribution.

Quick start

One keyword, top 50 US apps:

{
"searchTerms": ["habit tracker"],
"maxResultsPerTerm": 50
}

Specific apps in the UK storefront, with mixed ID formats:

{
"appIds": [
"618783545",
"https://apps.apple.com/us/app/slack/id618783545",
"com.burbn.instagram"
],
"country": "GB"
}

Mac apps, two keywords, capped:

{
"searchTerms": ["markdown editor", "screenshot tool"],
"entity": "macSoftware",
"country": "US",
"maxResultsPerTerm": 25
}

Input

FieldTypeDefaultNotes
searchTermsarray[]Keywords, one search pass each. Ranked as the store ranks them.
appIdsarray[]Numeric IDs, apps.apple.com URLs or bundle IDs. Numeric IDs are batched 50 per request, and bundle IDs cost one request each.
countrystringUSTwo-letter storefront code. Changes price, currency, availability and localised text.
entitystringsoftwaresoftware (iPhone), iPadSoftware or macSoftware.
maxResultsPerTerminteger50Cap per search term, clamped to Apple's hard limit of 200. Ignored for appIds lookups.

At least one of searchTerms or appIds has to be non-empty. They combine freely: results are deduplicated on trackId, so an app that appears in both a search and a lookup is saved once.

Output example

{
"trackId": 618783545,
"trackName": "Slack",
"bundleId": "com.tinyspeck.chatlyio",
"sellerName": "SLACK TECHNOLOGIES L.L.C.",
"artistName": "Slack Technologies, Inc.",
"artistId": 453420243,
"price": 0,
"formattedPrice": "Free",
"currency": "USD",
"averageUserRating": 4.10675,
"userRatingCount": 49068,
"averageUserRatingForCurrentVersion": 4.10675,
"userRatingCountForCurrentVersion": 49068,
"primaryGenre": "Business",
"genres": ["Business", "Productivity"],
"version": "26.08.10",
"releaseDate": "2013-03-20T19:23:34Z",
"currentVersionReleaseDate": "2026-08-05T19:26:20Z",
"releaseNotes": "Bug Fixes\n• Photoshop files pulled a disappearing act when shared .",
"description": "Companies in every industry around the world grow their business in Slack .",
"minimumOsVersion": "17.0",
"fileSizeBytes": 345516032,
"contentAdvisoryRating": "17+",
"languages": ["EN", "FR", "DE", "IT", "JA", "KO", "PT", "ZH", "ES"],
"screenshotUrls": ["https://is1-ssl.mzstatic.com/image/thumb/./392x696bb.png"],
"ipadScreenshotUrls": ["https://is1-ssl.mzstatic.com/image/thumb/./552x414bb.jpg"],
"artworkUrl512": "https://is1-ssl.mzstatic.com/image/thumb/./512x512bb.jpg",
"trackViewUrl": "https://apps.apple.com/us/app/slack/id618783545?uo=4",
"sellerUrl": "https://slack.com/is",
"country": "US",
"source": "appIds",
"scrapedAt": "2026-08-06T11:37:21.807Z"
}

Finding an app ID

Open the app's store page and read the URL.

URL you seeWhat to paste
apps.apple.com/us/app/slack/id618783545The whole URL, or just 618783545
apps.apple.com/gb/app/instagram/id389801252?l=enThe whole URL. Query strings are ignored

If all you have is a bundle ID from an MDM inventory or a crash report, such as com.tinyspeck.chatlyio, paste that instead. Anything containing a dot and no leading id is treated as a bundle ID and resolved through Apple's bundleId lookup.

API example

curl -X POST "https://api.apify.com/v2/acts/arman-bd~itunes-app-store-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchTerms": ["habit tracker"],
"country": "US",
"maxResultsPerTerm": 50
}'

JavaScript example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('arman-bd/itunes-app-store-scraper').call({
appIds: ['618783545', 'com.burbn.instagram'],
country: 'GB',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const app of items) {
console.log(`${app.trackName} - ${app.averageUserRating} (${app.userRatingCount} ratings) ${app.formattedPrice}`);
}

Notes

  • Search returns at most 200 apps per term, and there is no page two. Apple accepts an offset parameter and then ignores it, which was verified directly. If you need more than 200 results, use more specific terms rather than deeper paging.
  • The storefront changes the data, not just the currency. Ratings, availability and release-note translations are all per-country, so run the same IDs against several country values to compare.
  • The endpoint answers with content-type: text/javascript. The body is valid JSON, and the Actor parses it as text rather than trusting the header.
  • The rate limit is roughly 20 requests per minute per IP. It is undocumented but consistent. Because keyword sweeps are one request per term, normal runs sit far below it.
  • A bad target won't kill the run. An invalid storefront returns HTTP 400 and is recorded in RUN_SUMMARY.failures. The Actor only errors out if every target fails.

FAQ

Do I need an Apple developer account or API key? No. You supply no credentials.

Do I need a proxy? No. Proxy configuration is not required to run this Actor.

Can I get user reviews? Not from this Actor. The Search API returns aggregate ratings only. Individual review text lives in a separate RSS feed and is not part of this dataset.

Why does an app return no results? Either it is not available in that storefront, or the ID is wrong. A lookup that finds nothing returns zero results with HTTP 200, so check RUN_SUMMARY. The listed-versus-saved counts tell the two apart.

Can I get ranking positions? Search results come back in Apple's own relevance order, so row order is the ranking for that keyword. Chart positions (Top Free, Top Paid) are a different feed and are not included.

Can I plug it into something else? Yes. Apify API, the client libraries, webhooks, scheduled runs, dataset exports to JSON, CSV or Excel, or MCP. The output is structured JSON.