App Store Scraper – App Data & Reviews · Apify
Apple App Store Scraper — App Data, Reviews & iTunes API avatar

Apple App Store Scraper — App Data, Reviews & iTunes API

Pricing

from $2.81 / 1,000 apps

Go to Apify Store
Apple App Store Scraper — App Data, Reviews & iTunes API

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

Vitalii Bondarev

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

3 days ago

Last modified

Features

Limited permissions

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_confidence and warnings for 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.

FieldTypeDescription
record_typestringapp_meta or review; never null
app_idstringNumeric App Store ID, or null with app_id_missing
app_namestringApp display name, or null with app_name_missing
developerstringDeveloper or publisher, or null with developer_missing
categorystringPrimary category, or null with category_missing
pricenumberSelected storefront price; 0 means free; can be null with price_missing. No currency field
rating_avgnumberAll-time average rating, or null with rating_avg_missing
rating_countintegerTotal rating count, or null without a warning
versionstringApp version; on reviews, the reviewer's version, falling back to the app version
countrystringInput country code copied to every record; on reviews, it does not identify the review storefront
review_idstringReview ID; null on app_meta, or null with review_id_missing
review_titlestringReview title; null on app_meta, or null with review_title_missing
review_textstringReview body; null on app_meta, or null with review_text_missing
review_ratingintegerExpected 1–5; null on app_meta, or null with review_rating_missing. Other values are kept and flagged review_rating_out_of_range
review_authorstringReviewer username; null on app_meta, or null with review_author_missing
review_dateISO 8601 stringApple's supplied date and UTC offset, not converted to UTC; null on app_meta, or null with review_date_missing
parse_confidencenumberScore from 0.0 to 1.0, rounded to 3 decimals
warningsarray of stringsMissing or degraded field codes; [] when none
scraped_atISO 8601 stringUTC 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).

Planapp-data-item per eventreview-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-item events 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

  1. Choose numeric App Store IDs, search terms, or both.
  2. Set the two-letter storefront code, such as us, gb, de, fr, jp, ca, or au.
  3. Configure reviews with includeReviews, maxReviews, and mostRecent or mostHelpful.
  4. Run the Actor to look up direct IDs and resolve search terms into apps.
  5. Inspect record_type, parse_confidence, and warnings before analysis.
  6. 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

ParameterWhat it doesDefault
appIdsNumeric App Store ID strings to look up directly[] when omitted; UI prefill ["324684580"]
searchTermsKeyword queries used to search the App Store[]
countryStorefront for lookup, search, and price; not applied to the reviews feed"us"
maxReviewsMaximum reviews per app, 0–500; 0 collects no reviews50
includeReviewsEnables review fetching in addition to metadatatrue
sortByReview order: mostRecent or mostHelpful"mostRecent"
maxSearchResultsMaximum apps per search term, 1–20050
disableUsageStatsTurns off the run summary described in Usage statisticsfalse

Limits and edge cases

ConditionWhat the buyer seesWhat to do
Country and reviewsLookup, search, and price use country. RSS reviews are not requested per storefront; review records copy the input countryUse country for storefront data, not to select a review storefront
At most 500 reviews per appThe limit is 10 pages of 50; fewer may be returnedSet maxReviews from 0 to 500
Search returns at most 200 apps per termEach term contributes no more than 200 appsNarrow the term or use multiple terms
Search fails or has no resultsThe run continues; empty searches add no IDs and search failures add nothing to OUTPUTCheck the term and country, then retry
An ID has no result in the selected countryThe app is skipped and not charged; failedDetails in OUTPUT contains a reason truncated to 200 characters. Lookup and review calls are tried onceCheck the ID and storefront
No usable input or every lookup failsThe run ends with an empty or short dataset. Empty input stores {"error":"no_input"}; otherwise OUTPUT contains totalItems, appsProcessed, appsFailed, failedDetails, and scrapedAtProvide an ID or search term and inspect lookup results
A review page failsCollection stops for that app; earlier reviews remain. A page-1 failure gives no reviews, while the app record is still pushed and chargedCheck the log and retry if needed
maxReviews is 0 or includeReviews is falseOnly app records are returnedEnable reviews and use a positive maxReviews
Rows arrive during a runRows 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 endCheck pushed dataset batches and OUTPUT after completion
A source field is missingThe 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_rangeInspect warnings and parse_confidence
A paid app is requestedprice reflects the storefront selected through countrySelect 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.

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.

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.

Full list of collected fields

Support

Report an issue.