Apple App Store Scraper — App Data, Reviews & iTunes API
Pricing
from $2.81 / 1,000 apps
Apple App Store Scraper — App Data, Reviews & iTunes API
Collect Apple App Store app metadata and reviews from Apple's iTunes API and reviews RSS feed. Get flat app and review records. Run with app IDs or search terms, country, and review settings; no API key, login, or proxy. Pricing: $0.0029 per app-data-item and $0.0009 per review-item on Free.
Pricing
from $2.81 / 1,000 apps
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Features
Share
Apple App Store Scraper
Scrape Apple App Store app metadata and customer reviews from Apple's official iTunes API and customer reviews RSS feed. On the Free plan, app-data-item costs $0.0029 and review-item costs $0.0009 per event.
- Extract flat, typed app and review records without an API key, login, or proxy.
- Compare ratings and prices by storefront and collect customer reviews.
- Build NLP datasets from review titles, text, ratings, authors, and dates.
- Discover apps with search terms or numeric App Store IDs for ASO and market research.
- Check
parse_confidenceandwarningsfor missing or degraded fields.
What you get
Each result is one flat record. App and review records share a schema; unavailable source values are null.
| Field | Type | Description |
|---|---|---|
record_type | string | app_meta or review; never null |
app_id | string | Numeric App Store ID, or null with app_id_missing |
app_name | string | App display name, or null with app_name_missing |
developer | string | Developer or publisher, or null with developer_missing |
category | string | Primary category, or null with category_missing |
price | number | Selected storefront price; 0 means free; can be null with price_missing. No currency field |
rating_avg | number | All-time average rating, or null with rating_avg_missing |
rating_count | integer | Total rating count, or null without a warning |
version | string | App version; on reviews, the reviewer's version, falling back to the app version |
country | string | Input country code copied to every record; on reviews, it does not identify the review storefront |
review_id | string | Review ID; null on app_meta, or null with review_id_missing |
review_title | string | Review title; null on app_meta, or null with review_title_missing |
review_text | string | Review body; null on app_meta, or null with review_text_missing |
review_rating | integer | Expected 1–5; null on app_meta, or null with review_rating_missing. Other values are kept and flagged review_rating_out_of_range |
review_author | string | Reviewer username; null on app_meta, or null with review_author_missing |
review_date | ISO 8601 string | Apple's supplied date and UTC offset, not converted to UTC; null on app_meta, or null with review_date_missing |
parse_confidence | number | Score from 0.0 to 1.0, rounded to 3 decimals |
warnings | array of strings | Missing or degraded field codes; [] when none |
scraped_at | ISO 8601 string | UTC run timestamp in YYYY-MM-DDTHH:MM:SSZ format |
Sample output
Example records: one app record and one review record. Review records repeat app-level fields, while review fields are null on app_meta records.
[{"record_type": "app_meta", "app_id": "324684580", "app_name": "Spotify: Music and Podcasts","developer": "Spotify", "category": "Music", "price": 0, "rating_avg": 4.77048, "rating_count": 42804731, "version": "9.1.94","country": "us", "review_id": null, "review_title": null, "review_text": null, "review_rating": null, "review_author": null, "review_date": null,"parse_confidence": 1, "warnings": [], "scraped_at": "2026-10-29T04:47:28Z"},{"record_type": "review", "app_id": "324684580", "app_name": "Spotify: Music and Podcasts","developer": "Spotify", "category": "Music", "price": 0, "rating_avg": 4.77048, "rating_count": 42804731, "version": "9.1.94","country": "us", "review_id": "14718711298", "review_title": "It’s great! But..", "review_text": "I hate when these downloaded songs start to cut off like a CD that is scratched and acts up during the songs. It’s so annoying", "review_rating": 3, "review_author": "andrina h","review_date": "2026-10-27T11:24:48-07:00", "parse_confidence": 1, "warnings": [], "scraped_at": "2026-10-29T04:47:28Z"}]
Pricing
This Actor uses pay-per-event billing:
app-data-item: one App Store app with metadata such as developer, category, rating, and version.review-item: one App Store review with rating, title, text, author, and date.
On the Free plan, app-data-item costs $0.0029 per event ($2.90 per 1,000 app metadata events and $29.00 per 10,000), while review-item costs $0.0009 per event ($0.90 per 1,000 review events and $9.00 per 10,000).
| Plan | app-data-item per event | review-item per event |
|---|---|---|
| Free | $0.0029 | $0.0009 |
| Bronze | $0.002871 | $0.000891 |
| Silver | $0.002842 | $0.000882 |
| Gold | $0.002813 | $0.000873 |
| Platinum | $0.002784 | $0.000864 |
| Diamond | $0.002755 | $0.000855 |
Worked examples on the Free plan:
- 100 apps on Free = 100 × $0.0029 = $0.29 (
app-data-itemevents only). - 1 app with 1 review on Free = $0.0029 + 1 × $0.0009 = $0.0038 on Free.
Reviews are charged per review returned, up to maxReviews per app. A failed app lookup is skipped and not charged. The Apify Free plan includes $5 of monthly platform credit; at the Free app-data-item rate, that covers 1,724 events. Platform usage is included in these event prices; this Actor does not use the Pay per event + usage option.
How to use
- Choose numeric App Store IDs, search terms, or both.
- Set the two-letter storefront code, such as
us,gb,de,fr,jp,ca, orau. - Configure reviews with
includeReviews,maxReviews, andmostRecentormostHelpful. - Run the Actor to look up direct IDs and resolve search terms into apps.
- Inspect
record_type,parse_confidence, andwarningsbefore analysis. - Repeat the run through Apify Schedules, using daily as a starting point for rating and review monitoring.
Example input:
{"appIds": ["324684580"],"searchTerms": ["meditation"],"country": "us","maxReviews": 50,"includeReviews": true,"sortBy": "mostRecent","maxSearchResults": 50}
Export the dataset as JSON or CSV, or read it through the Apify dataset API.
Input parameters
| Parameter | What it does | Default |
|---|---|---|
appIds | Numeric App Store ID strings to look up directly | [] when omitted; UI prefill ["324684580"] |
searchTerms | Keyword queries used to search the App Store | [] |
country | Storefront for lookup, search, and price; not applied to the reviews feed | "us" |
maxReviews | Maximum reviews per app, 0–500; 0 collects no reviews | 50 |
includeReviews | Enables review fetching in addition to metadata | true |
sortBy | Review order: mostRecent or mostHelpful | "mostRecent" |
maxSearchResults | Maximum apps per search term, 1–200 | 50 |
disableUsageStats | Turns off the run summary described in Usage statistics | false |
Limits and edge cases
| Condition | What the buyer sees | What to do |
|---|---|---|
| Country and reviews | Lookup, search, and price use country. RSS reviews are not requested per storefront; review records copy the input country | Use country for storefront data, not to select a review storefront |
| At most 500 reviews per app | The limit is 10 pages of 50; fewer may be returned | Set maxReviews from 0 to 500 |
| Search returns at most 200 apps per term | Each term contributes no more than 200 apps | Narrow the term or use multiple terms |
| Search fails or has no results | The run continues; empty searches add no IDs and search failures add nothing to OUTPUT | Check the term and country, then retry |
| An ID has no result in the selected country | The app is skipped and not charged; failedDetails in OUTPUT contains a reason truncated to 200 characters. Lookup and review calls are tried once | Check the ID and storefront |
| No usable input or every lookup fails | The run ends with an empty or short dataset. Empty input stores {"error":"no_input"}; otherwise OUTPUT contains totalItems, appsProcessed, appsFailed, failedDetails, and scrapedAt | Provide an ID or search term and inspect lookup results |
| A review page fails | Collection stops for that app; earlier reviews remain. A page-1 failure gives no reviews, while the app record is still pushed and charged | Check the log and retry if needed |
maxReviews is 0 or includeReviews is false | Only app records are returned | Enable reviews and use a positive maxReviews |
| Rows arrive during a run | Rows are pushed and charged in batches of 100. Up to 99 remaining records appear only at the end; an interruption loses that unsent batch, and OUTPUT is written only at the end | Check pushed dataset batches and OUTPUT after completion |
| A source field is missing | The field can be null and its warning code can appear. Codes include app_id_missing, app_name_missing, developer_missing, category_missing, price_missing, rating_avg_missing, review_id_missing, review_title_missing, review_text_missing, review_rating_missing, review_author_missing, review_date_missing, and review_rating_out_of_range | Inspect warnings and parse_confidence |
| A paid app is requested | price reflects the storefront selected through country | Select the needed storefront |
FAQ
How much does it cost to scrape Apple App Store apps and reviews?
On the Free plan, app-data-item costs $0.0029 per event and review-item costs $0.0009 per event. For 100 metadata apps, 100 × $0.0029 = $0.29 on Free.
Do I need an API key, login, or proxy?
No. The Actor uses Apple's official public iTunes API and customer reviews RSS feed without authentication or a proxy.
What should I check if a run returns no results?
Check that appIds or searchTerms was supplied, then check country, the App Store ID, and the run log. IDs unavailable in that storefront are skipped, while an empty search discovers no IDs.
Why are fields null or is confidence lower?
Apple can omit metadata or review fields, producing null values and warning codes. Review fields are null on app_meta records; inspect warnings for the specific issue.
Is it legal to use data from Apple's public APIs?
The Actor retrieves public data from Apple's official iTunes API and customer reviews RSS feed. Whether a collection or downstream use is allowed depends on Apple's source terms and applicable law for your use case.
Related actors
- App Update Tracker — related for iOS version and changelog data via iTunes.
Usage statistics
This Actor creates a small, content-free summary at the end of each run, used only to monitor reliability and improve this Actor. No input values, credentials or scraped data are sent.
A copy of the exact record for your run is saved as USAGE_STATS in your own Apify key-value store.
To opt out, set disableUsageStats to true in the input. Nothing is sent then.