🍎 Apple App Store Reviews Scraper — Ratings, Text & Dates avatar

🍎 Apple App Store Reviews Scraper — Ratings, Text & Dates

Pricing

from $0.87 / 1,000 review scrapeds

Go to Apify Store
🍎 Apple App Store Reviews Scraper — Ratings, Text & Dates

🍎 Apple App Store Reviews Scraper — Ratings, Text & Dates

Scrape public Apple App Store reviews for any app by ID — rating, text, version, author, developer response, and date. Watch mode returns only new reviews since the last run. Public, logged-out, no CAPTCHA/login defeating.

Pricing

from $0.87 / 1,000 review scrapeds

Rating

0.0

(0)

Developer

NexGen Watch

NexGen Watch

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Apple's owner-only API won't show you a competitor's reviews. App developers, agencies, and PMs pay to monitor the public App Store review feed for any app — theirs or the competition's.

What you get

  • Public Apple App Store review entries: rating, title, review text, author, date, and app version
  • Developer responses and response dates where present
  • A normalized 14-field record per review with source URL and collection timestamp
  • Bounded retries with explicit block / gone outcomes — you always know if zero means empty or blocked
  • Optional watch mode that emits only new reviews and status changes on later runs

Use cases by team

  • Product managers: Track what users say about each release and catch regressions the moment reviews turn.
  • Competitive / market intel: Monitor rival apps' reviews you have no API access to.
  • Agencies: Stand up a review feed per client app and pipe it into reporting.
  • Support / CX: Spot emerging complaints early and route them before they snowball.

Example inputs

Single app

{
"app_ids": [
"284882215"
],
"watchMode": false
}

Several apps at once

{
"app_ids": [
"284882215",
"310633997"
],
"country": "us"
}

Monitor for new reviews only

{
"app_ids": [
"284882215"
],
"watchMode": true
}

📊 Sample Output

{
"store": "apple",
"app_id": "284882215",
"review_id": "11897234561",
"title": "Reliable",
"review_text": "Works every day",
"rating": 5,
"author_handle": "appfan_us",
"review_date": "2026-07-18",
"version": "500.1",
"developer_response": null,
"country": "us",
"source_url": "https://apps.apple.com/us/app/id284882215",
"collected_at": "2026-07-21T00:00:00Z"
}

How it works

Give it one or more numeric App Store app IDs. It collects the public review-feed entries for each, with bounded retries and a fresh proxy session per attempt, then normalizes every review into one 14-field schema. It reads only public, logged-out surfaces — no login, no paywall, no access-control defeating.

Pricing

EventPrice (FREE tier)
Actor start (apify-actor-start)$0.02
Review scraped (review-scraped)$0.00065
Watch check (watch-check)$0.05

Flat list prices; Apify applies its automatic FREE→DIAMOND plan discount on top. Worked example: 1,000 reviews = $0.02 start + 1,000 × $0.00065 = $0.67. Blocked or zero-result runs do not intentionally charge; watch runs with no delta charge only the watch check. New to Apify? Start free.

Run it — API, CLI, MCP

API:

curl -X POST "https://api.apify.com/v2/acts/nexgenwatch~ios-app-reviews/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" -d @input.json

CLI:

$apify call nexgenwatch/ios-app-reviews -i @input.json

MCP: expose nexgenwatch/ios-app-reviews through Apify's MCP server, select it as a tool, and pass the same input object.

ActorWhat it does
Review Sentiment AnalyzerTurn any review set into themes, complaints, sentiment % and trends.
Google Play ReviewsScrape public Google Play reviews for any app.
App Rankings TrackerTrack Apple App Store top-chart rankings by country.
ASO Keyword TrackerTrack keyword rankings across App Store & Google Play.

Compliance & honest limits

  • Public App Store review surfaces only — no login, CAPTCHA, paywall, or access-control defeating.
  • Apple exposes a bounded, recent review window per app; this actor does not reconstruct the full lifetime history.
  • A source-confirmed empty result is SUCCEEDED-0: GENUINE_EMPTY; exhausted block retries fail and truncated runs are PARTIAL.

FAQ

Which app ID do I use?

The numeric App Store ID (e.g. 284882215), found in the app's App Store URL.

Can I watch competitor apps?

Yes — that is the core use case. Pass any public app's ID.

Does zero mean blocked?

No. A confirmed-empty feed is GENUINE_EMPTY; only exhausted retries fail, and truncated runs are PARTIAL.

How does watch mode work?

Set watchMode: true. The first run seeds a KV baseline and emits nothing; later runs emit only new reviews and status changes with previous_status.

How far back does it go?

As far as Apple's public feed exposes — a bounded recent window, deterministically sorted.

How is it priced?

$0.02 per run start plus $0.00065 per review scraped; watch checks with no change cost $0.05.

Can I feed this into sentiment analysis?

Yes — pass the output dataset ID straight into the Review Sentiment Analyzer.

Troubleshooting

  • No reviews returned? Verify the numeric app ID and that the app has public reviews in the chosen country; GENUINE_EMPTY means the source really was empty.
  • Wrong country's reviews? Set country (e.g. us, gb); it defaults to US.
  • Watch mode emitting everything? The first run always seeds the baseline and emits zero — deltas start on the second run.
  • Run marked PARTIAL? Retries were exhausted mid-collection; re-run to continue from a fresh window.
  • Need Android too? Use the Google Play Reviews Scraper — same schema shape.

About

Part of the NexGenData App Intelligence cluster. This is a dedicated fleet-2 actor; it does not disturb any earlier fleet listing. Built by NexGenData. Questions or need a custom feed? Open an issue on the Actor page.