
Website Content Crawler
scrape.ly/store/querystone/website-content-crawlerAIDeveloper tools
1 monthly user

Search the Apple App Store by keyword or look up apps by App Store ID, bundle ID, developer or URL. Get name, developer, price, rating, rating count, genres, version, release notes, size, screenshots, description, content rating and languages for any country.
Search the Apple App Store by keyword, or look up apps by App Store ID, bundle ID, developer or URL, in any country. You get name, developer, price, rating, rating count, genres, version, release notes, size, screenshots, description, content rating and languages for every app, as clean JSON, CSV or Excel. No login, fast, and priced at a fraction of a cent per app.
us, gb, de, jp...). Prices, ratings and descriptions are per country.apps.apple.com links in one run.| Field | What it does |
|---|---|
searchTerms | Keywords to search for. Up to about 200 apps per keyword and country. |
appIds, bundleIds, developerIds | Direct lookups. A developer ID returns every app that developer published. |
startUrls | apps.apple.com links to an app, a developer or a search page. The country in the link is used. |
maxItems | Total apps to save (default 20, 0 = no limit). |
countries, lang, platform | Storefronts to read, response language, and iPhone/iPad or Mac apps for searches. |
minRating, minRatingCount, maxRatingCount, price, genre, updatedAfter | Filters applied before an app is saved and charged. |
includePageDetails, includeSimilarApps | Optional extras read from each app's store page. |
{
"searchTerms": ["meditation", "sleep sounds"],
"countries": ["us", "de"],
"minRatingCount": 1000,
"maxItems": 200
}
One row per app and country. The dataset's Table view shows icon, name, developer, price, rating, rating count, genre, version, update date, age rating, country and store link. The JSON holds every field Apple returns.
| Field | Meaning |
|---|---|
trackId, bundleId | App Store ID and bundle identifier |
trackName, artistName, sellerName | App, developer and seller names |
price, formattedPrice, currency | Price in the storefront's currency |
averageUserRating, userRatingCount | Average stars and number of ratings |
primaryGenreName, genres | Genre names in the requested language |
version, releaseNotes, currentVersionReleaseDate, releaseDate | Current version, notes and dates |
fileSizeBytes, minimumOsVersion, supportedDevices | Size and device support |
contentAdvisoryRating, languageCodesISO2A | Age rating and supported languages |
description, screenshotUrls, ipadScreenshotUrls, artworkUrl512 | Store listing text and images |
country, inputSource | Storefront and which input found the app |
subtitle, ratingHistogram, hasInAppPurchases, copyright, similarApps | Only with the page-detail options |
{
"trackId": 493145008,
"trackName": "Headspace: Sleep & Meditation",
"subtitle": "Mental Health, Stress, Anxiety",
"artistName": "Headspace Inc.",
"bundleId": "com.getsomeheadspace.headspace",
"country": "us",
"price": 0,
"formattedPrice": "Free",
"currency": "USD",
"averageUserRating": 4.84219,
"userRatingCount": 973804,
"ratingHistogram": {
"1": 8626,
"2": 4068,
"3": 15900,
"4": 75170,
"5": 870040
},
"primaryGenreName": "Health & Fitness",
"genres": [
"Health & Fitness",
"Productivity"
],
"version": "8.34.2",
"currentVersionReleaseDate": "2026-10-09T14:48:14Z",
"releaseDate": "2012-02-02T18:57:49Z",
"releaseNotes": "Thanks for using the app! This update includes bug fixes and performance improvements.",
"fileSizeBytes": "423056384",
"contentAdvisoryRating": "12+",
"languageCodesISO2A": [
"EN"
],
"description": "Welcome to Headspace, your expert-led guide to mental health, mindfulness, and meditation. Whether you're navigating stress, anxiety, sleep trouble, or life’s u...",
"trackViewUrl": "https://apps.apple.com/us/app/headspace-sleep-meditation/id493145008?uo=4",
"artworkUrl512": "https://is1-ssl.mzstatic.com/image/thumb/Purple211/v4/c2/1f/69/c21f69f6-c9d9-656b-ffe3-5417fa2bf67e/AppIcon-0-0-1x_U007epad-0-1-85-220.png/512x512bb.jpg",
"screenshotUrls": [
"https://is1-ssl.mzstatic.com/image/thumb/PurpleSource221/v4/72/5a/ec/725aec3b-ce7e-04e5-3fb2-c3eddd568959/6edb2838-55b4-46d0-b166-358beae09bf2_1242x2208bb__U002832_U0029.png/392x696bb.png"
],
"hasInAppPurchases": true,
"copyright": "© 2026 Headspace Inc.",
"similarApps": [
{
"averageUserRating": 4.89508,
"trackViewUrl": "https://apps.apple.com/us/app/insight-timer-meditate-sleep/id337472899?uo=4",
"price": 0,
"trackId": 337472899,
"trackName": "Insight Timer: Meditate, Sleep",
"primaryGenreName": "Health & Fitness",
"artistName": "Insight Network Inc"
}
],
"inputSource": {
"flow": "search",
"queryTerm": "meditation"
}
}
similarApps holds compact app records (device lists, iPad and TV screenshots and release notes are left out to keep rows small).
Pay per result, no subscription:
Platform usage (compute and proxy traffic) is billed separately at Scrapely's normal rates and is small: in testing, 10,000 apps from search used about $0.02 of usage, so 10,000 apps cost roughly $0.50 plus $0.02. Filters run before charging, so apps they reject are free. The run stops cleanly at your maximum total charge.
Is it legal? It reads only public App Store listing data that anyone can see on apps.apple.com. You are responsible for how you use it.
Do I need a login or an API key? No.
How many apps can I get? Apple returns at most about 200 apps per keyword and country. For more, add more keywords or countries: 80 keywords across 3 countries returned 10,000 unique rows in testing. Direct ID, bundle ID and developer lookups have no such limit.
Why is an app missing for a country? Apps can be unavailable in some storefronts. The run status lists how many inputs were not found per country.
What if a field is empty? Apple does not fill every field for every app, for example subtitle, sellerUrl or releaseNotes. Missing fields are simply left out.
Can I schedule it or use the API? Yes. Use schedules for price and rating monitoring and the API to start runs and fetch the dataset.
Is there a size limit for inputs? The platform currently rejects run inputs larger than about 8 KB (roughly 500 App Store IDs). For longer lists, split them over several runs.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchTermsarrayOptionalSearch keywords
Keywords to search the App Store for, one per line. Apple returns up to about 200 apps per keyword and country.
appIdsarrayOptionalApp Store IDs
Numeric App Store IDs (the number after 'id' in an app URL), for example 389801252.
bundleIdsarrayOptionalBundle IDs
Bundle identifiers such as com.burbn.instagram.
developerIdsarrayOptionalDeveloper IDs
Numeric developer IDs. Returns every app published by each developer.
startUrlsarrayOptionalApp Store URLs
apps.apple.com links to an app, a developer page or a search page. The country in the link is used.
maxItemsintegerOptionaldefault 20Max results
Maximum number of apps to save in total. Use 0 for no limit.
Applied to every app before it is saved and charged.
minRatingnumberOptionalMinimum rating
Only keep apps with an average rating of at least this many stars (0 to 5).
minRatingCountintegerOptionalMinimum number of ratings
Only keep apps with at least this many ratings.
maxRatingCountintegerOptionalMaximum number of ratings
Only keep apps with at most this many ratings. Useful to find young or niche apps.
priceenumOptionaldefault "any"Price
Keep all apps, only free apps or only paid apps.
genrestringOptionalGenre contains
Only keep apps whose genre name contains this text, for example Games or Health. Not case sensitive.
updatedAfterstringOptionalUpdated since
Only keep apps whose current version was released on or after this date (YYYY-MM-DD).
Which App Store to read.
countriesarrayOptionaldefault ["us"]Countries
Two-letter App Store country codes, for example us, de, jp. Every search keyword and ID is read in each country (prices, ratings and descriptions differ per storefront).
langstringOptionalLanguage
Optional language of names and descriptions, for example en-us, de-de, ja-jp. Leave empty for the storefront default.
platformenumOptionaldefault "software"Platform (search)
Which apps keyword searches return.
Optional data from each app's store page.
includePageDetailsbooleanOptionaldefault falseAdd page details
Reads each app's store page for the subtitle, the star-by-star rating histogram, the in-app purchase flag and the copyright line. Charged as an extra event per app and uses more proxy traffic.
includeSimilarAppsbooleanOptionaldefault falseAdd similar apps
Adds the 'You might also like' apps of each app as full app records in a similarApps list. Charged as an extra event per app.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies are used by default and work for Apple's public endpoints.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| trackId | integer | App Store ID |
| bundleId | string | Bundle identifier |
| trackName | string | App name |
| artistName | string | Developer name |
| country | string | Storefront country code |
| inputSource | object | Which input produced this app |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| App page details | Extra charge per app when page details or similar apps are switched on. | $0.00015 |
| App | One App Store app saved to the dataset. | $0.00005 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('querystone/appstore-apps-scraper').call({
"searchTerms": [
"fitness tracker"
],
"maxItems": 20,
"countries": [
"us"
],
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run querystone/appstore-apps-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=querystone/appstore-apps-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
iPhone apps matching a search in the US store.
App details looked up by app and bundle IDs.
A developer's apps and related apps.
Health apps rated 4.5+ with full page details.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.