Apple App Store
App Store search, app detail, user reviews, store charts, autocomplete suggestions, and a paginated listings database
App Store intelligence without an Apple developer account: keyword search, full app records, user reviews, the store charts, the autocomplete suggestions Apple shows in its own search box, and a filterable listings database you can page deeply.
Base URL: /v1/app_store/...
Every app read starts from Apple's numeric app id, the number after id in an apps.apple.com/…/id324684580 URL. app-search is how you turn an app name into one.
Storefront changes the answer, not just the language. Ratings, review text,
charts and even availability differ per country, so a cross-market comparison
means one call per country, not one call plus a language change.
Quickstart
Turn an app name into an app id
curl "https://www.socialcrawl.dev/v1/app_store/app-search?query=photo%20editor&country=US" \
-H "x-api-key: YOUR_API_KEY"Read the full record and what users say
curl "https://www.socialcrawl.dev/v1/app_store/app-info?app_id=324684580" \
-H "x-api-key: YOUR_API_KEY"
curl "https://www.socialcrawl.dev/v1/app_store/app-reviews?app_id=324684580&sort_by=most_helpful&depth=200" \
-H "x-api-key: YOUR_API_KEY"Finding apps
| Endpoint | Credits | What it returns | Key parameters |
|---|---|---|---|
GET /v1/app_store/app-search | 5 | Keyword matches with title, icon, rating, price or free flag, store URL | query (required), country, language, depth |
GET /v1/app_store/app-listings-search | 10 | The same app shape from a filterable listings database, with a store-wide total alongside each page | title (required), description, limit, offset, offset_token, filters, country, language |
GET /v1/app_store/search-suggestions | 1 | Apple's own autocomplete hints for a partial keyword, each with its rank in Apple's ordering | query (required), country |
On app-search, depth defaults to 100, rounds up to multiples of 100, and caps at 300.
app-listings-search is the only App Store endpoint with real pagination: limit runs 1 to 50, offset up to 10,000, and offset_token carries you past that. It also accepts a filters expression as a JSON array. Ten credits is the price of being able to enumerate rather than sample.
search-suggestions returns { term, priority } where priority is Apple's own 1-based rank. Polling a stem daily and diffing the list is a cheap way to catch a rising search term before it shows up in the charts.
App detail and reviews
| Endpoint | Credits | What it returns | Key parameters |
|---|---|---|---|
GET /v1/app_store/app-info | 5 | Description, developer, rating, price, version, minimum iOS version, size, screenshots, age advisories | app_id (required), country, language |
GET /v1/app_store/app-reviews | 5 | Star rating, review title, full text, reviewer name, publish date | app_id (required), depth, sort_by, rating, country, language |
Reviews arrive in batches of 50 up to a ceiling of 600. sort_by selects most_recent (default) or most_helpful, and rating filters to a single star value, which is the fastest route to the one-star complaints if that is what you are mining.
Charts
| Endpoint | Credits | What it returns | Key parameters |
|---|---|---|---|
GET /v1/app_store/app-list | 5 | A store chart in the same app shape as search, optionally scoped to one category | app_collection (required), app_category, depth, country, language |
app_collection accepts top_free_ios, top_paid_ios, top_grossing_ios, top_free_ipad, top_paid_ipad, top_grossing_ipad, new_ios, new_free_ios and new_paid_ios. depth runs up to 500.
curl "https://www.socialcrawl.dev/v1/app_store/app-list?app_collection=top_free_ios&app_category=photo_and_video&country=KR" \
-H "x-api-key: YOUR_API_KEY"Reference lookups
| Endpoint | Credits | What it returns | Key parameters |
|---|---|---|---|
GET /v1/app_store/categories | 1 | The values app_category takes on app-list | none |
GET /v1/app_store/locations | 1 | Supported storefronts with their numeric location codes | none |
GET /v1/app_store/languages | 1 | Supported language codes | none |
Static reference data, cached hard. Call each once and keep the answer.
All endpoints
9 endpoints available.
| Endpoint | Path | Credit Tier |
|---|---|---|
| List Apple App Store app categories | /v1/app_store/categories | standard (1cr) |
| List supported Apple App Store languages | /v1/app_store/languages | standard (1cr) |
| List supported Apple App Store storefront locations | /v1/app_store/locations | standard (1cr) |
| Get Apple App Store search suggestions | /v1/app_store/search-suggestions | standard (1cr) |
| Get full Apple App Store app details | /v1/app_store/app-info | advanced (5cr) |
| Get an Apple App Store chart | /v1/app_store/app-list | advanced (5cr) |
| Get Apple App Store reviews for an app | /v1/app_store/app-reviews | advanced (5cr) |
| Search Apple App Store apps by keyword | /v1/app_store/app-search | advanced (5cr) |
| Search the Apple App Store listings database (paginated) | /v1/app_store/app-listings-search | premium (10cr) |
Platform notes
Reviews are capped at 500. No parameter raises that ceiling. Above 500 the request is clamped rather than rejected, and a full 500-review pull takes around 40 seconds. If you need a longer history, sample repeatedly over time rather than trying to page past it. Google Play's ceiling is higher, at 600.
Apple reviews carry no avatar, helpful votes, or developer replies. Those fields are null here because Apple does not publish them, not because they were dropped. Google Play does carry developer replies.
country accepts three shapes on the app-data endpoints. An ISO code (US), a full country name (United States), or a numeric location code (2840) all work there, and it defaults to the US. search-suggestions is the exception: it takes an ISO alpha-2 code only, and anything else is a free 400. Get the numeric codes from locations.
language does not change the storefront. It defaults to en everywhere and only affects response language. Use country to change which store is queried.
Cross-store comparison uses the same shapes. Google Play mirrors this endpoint set with the same names, so one integration covers both stores. The identifier differs: Play uses a package name where Apple uses a numeric id.
