Apple App Store reviews by country for an app id, URL or app name, every storefront in one run. One row per review: 1-5 rating, title, text, reviewer, date, developer response. Free app row: App Store ratings. Filters before billing: star rating (negative reviews), since date (new reviews).
2026-10-16 — Keyword Planner and locale documentation
Validated search terminology against Google Ads Keyword Planner and Store shelves. Added localized usage guidance and bounded examples; retained existing English phrases. Clarified locale limitations where measured. No runtime, output fields, defaults, or pricing changed.
1.0 — listing and input form reworded, 2026-10-11
No behaviour, output or price changed; the same inputs return the same rows.
Title: "Apple App Store Reviews Scraper — iOS App Reviews & Ratings" — the tail now carries "iOS App Reviews" next to the "App Reviews & Ratings" phrase it already held, because the Store ranks a query by its contiguous phrase in the title.
Description: names the inputs (app id, URL, app name), the storefronts, one row per review with its fields, the free app row (App Store ratings) and the filters that run before billing (star rating for negative reviews, since date for new reviews). "App version" left the description and the pricing text: Apple's endpoint attached a version to 0 of the 60 reviews in the recorded pages, so the column is almost always null (it stays on the row and is documented as such).
Pricing text (price unchanged, $0.004 a review): the event is "Review"; it lists what one review carries, the per-1,000 price, everything that is never charged (app rows, status rows, filtered reviews, a review listed on two storefronts, apps with no reviews, ids or names that match nothing, failed jobs, bad input), that there is no start fee, that Apple answers 10 reviews per request and every delivered review is a written one, and that a run stops at the maxTotalChargeUsd you set.
Every input now says what to pass with an example, its default, what it changes and what it costs: startUrls says the URL's country is not used (countries decides); maxReviewsPerApp says the filters apply to the N reviews read, so "300 with maxRating 2" delivers the 1–2★ among the 300 read, and to pair it with sort: most_critical; countries lists the 48 storefront codes and says any other code ends the run before anything is charged; sinceDate says there is no end date and no "since last run" memory; requireText says Apple returns written reviews only, so it rarely removes anything. Order unchanged (all 14 inputs fit on the card).
seo.json: seoTitle carries "iOS App Reviews"; seoDescription carries the synonyms (reviews API, app store ratings, developer response) and the German, Spanish, Japanese and Korean nouns for app reviews.
README: a section mapping common requests to the exact input, the output row fields, the status and empty-result contract; the version note now carries the measured number.
2026-08-30
Reliability: a run that cannot act on its input — a URL from the wrong site, a name nothing resolves to, an empty target list, a number outside the documented range — now ends cleanly with the reason on the run card instead of as a failed run. Nothing is charged in either case; a blocked or throttled source still fails loudly.
Store listing: moved into the categories buyers actually browse (the old Business category has no Store page).
1.0 — 2026-08-29
First release.
Every customer review of any iOS app, read from the same JSON endpoint the App Store's own web page calls: 1-5 rating, title, review text, reviewer nickname, app version, date, edited flag and the developer's public reply. It pages by offset far past the 500-review cap of Apple's old RSS feed — which now answers empty for most apps and is not used here.
Every storefront in one run: give countries (us, gb, de, jp, br…) and each app is read on each one; every row carries country. A review Apple lists on two storefronts is delivered and billed once.
Three ways in: app ids, App Store URLs (the id is read from the URL), or plain app names resolved through Apple's own search API.
Four orders: most recent (the one to schedule), most helpful (the App Store's default), most critical, most favorable.
Cost controls that filter before billing: minRating / maxRating (a complaints feed pays only for the 1-2★ rows), sinceDate (absolute or relative — "7 days" — so schedules never go stale) and requireText. Filtered reviews are never charged.
A free app row per app and storefront: name, developer, genre, price, version, average rating, rating count and the 1-5★ histogram, plus how many written reviews the storefront holds.
Billing: pay per delivered review row. App rows, status rows, filtered reviews, apps with no reviews, unknown apps and failed jobs are all free.
Reliability: Apple caps each IP at about a request a second and answers 429 beyond it; the fetcher paces per session, rotates on 429/5xx and backs off, so large runs finish instead of failing.