App Store API
The App Store Reviews API returns unified Apple App Store and Google Play data as clean JSON.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
The primary reviews endpoint returns an app's profile (name, id, rating) and its reviews (rating, title, text, date, reviewer, version) from both stores, and you can search apps, list top charts and categories, pull appDetails, a developer's apps and similar apps. It is built for app-intelligence, review-monitoring and competitor-tracking tools that need mobile-app data across both stores from one endpoint. One ReefAPI key, one shared credit pool, the standard envelope.
Real request and response JSON
Captured from the indexed primary action, reviews, on .
{
"method": "POST",
"url": "https://api.reefapi.com/app-store/v1/reviews",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"apps": [
{
"name": "WhatsApp",
"apple": "310633997"
}
],
"stores": [
"apple"
],
"countries": [
"us"
],
"maxReviews": 100
}
}{
"ok": true,
"meta": {
"api": "app-store",
"endpoint": "reviews",
"mode": "live",
"latency_ms": 3368.5,
"record_count": 100,
"bytes": 0,
"cache_hit": false,
"kind": "reviews",
"summary": {
"units": 1,
"succeeded": 1,
"not_found": 0,
"blocked": 0,
"success_rate_pct": 100,
"total_reviews": 100,
"total_new": 0,
"avg_completeness_pct": 0.001,
"by_store": {
"apple": 1
},
"error_breakdown": {},
"retries_used": 0
}
},
"data": {
"kind": "reviews",
"results": [
{
"store": "apple",
"app_id": "[redacted-phone]",
"query": "[redacted-phone]",
"profile": {
"store": "apple",
"app_id": "[redacted-phone]",
"bundle_id": "net.whatsapp.WhatsApp",
"name": "[redacted-name]",
"subtitle": null,
"developer": "WhatsApp Inc.",
"developer_email": null,
"developer_website": "http://www.whatsapp.com/",
"avg_rating": 4.68607,
"rating_count": 18268035,
"review_count": null,
"histogram": {
"1": "[trimmed-depth]",
"2": "[trimmed-depth]",
"3": "[trimmed-depth]",
"4": "[trimmed-depth]",
"5": "[trimmed-depth]",
"total": "[trimmed-depth]"
},
"current_version_score": 4.68607,
"current_version_rating_count": 18268035,
"installs": null,
"price": 0,
"currency": "USD",
"free": true,
"content_rating": "12+",
"contains_ads": null,
"description": "WhatsApp from Meta is a free messaging and calling app used by over 2 billion people across 180+ countries. It's super simple, reliable and private, making it perfect for staying in touch with your friends and family worldwide. WhatsApp works across mobile, tablet, and desktop even on slow connections, with no subscription fees*.\n\nPrivate messaging and calls across the world\n\nYour privacy is our priority. With end-to-end encryption, you can be sure that your personal messages and calls stay between you and who you send them to. And no one, not even WhatsApp, can read or listen to them.\n\nSimple",
"release_notes": "We update the app regularly to fix bugs, optimize performance and improve the experience. Thanks for using WhatsApp!",
"released": "[redacted-phone]T02:43:49Z",
"updated": "[redacted-phone]T05:39:22Z",
"version": "26.27.74",
"size_bytes": 377079808,
"min_os": "15.1",
"languages": [
"[trimmed-depth]",
"[trimmed-depth]",
"[trimmed-depth]"
],
"screenshots": [],
"privacy_policy": null,
"icon_url": "https://is1-ssl.mzstatic.com/image/thumb/Purple211/v4/e3/8b/2f/e38b2fe8-5991-2e46-8b1c-64315e08a3e7/AppIcon-0-0-1x_U007epad-[redacted-phone]-sRGB-0-85-220.png/512x512bb.jpg",
"url": "https://apps.apple.com/us/app/whatsapp-messenger/id[redacted-phone]?uo=4",
"categories": [
"[trimmed-depth]",
"[trimmed-depth]"
]
},
"reviews": [
{
"store": "[trimmed-depth]",
"review_id": "[trimmed-depth]",
"app_id": "[trimmed-depth]",
"app_name": "[trimmed-depth]",
"country": "[trimmed-depth]",
"rating": "[trimmed-depth]",
"score_text": "[trimmed-depth]",
"title": "[trimmed-depth]",
"text": "[trimmed-depth]",
"language": "[trimmed-depth]",
"review_date": "[trimmed-depth]",
"app_version": "[trimmed-depth]",
"sub_ratings": "[trimmed-depth]",
"thumbs_up": "[trimmed-depth]",
"vote_sum": "[trimmed-depth]",
"vote_count": "[trimmed-depth]",
"reviewer_name": "[trimmed-depth]",
"reviewer_id": "[trimmed-depth]",
"reviewer_url": "[trimmed-depth]",
"reviewer_avatar_url": "[trimmed-depth]",
"reply_text": "[trimmed-depth]",
"reply_date": "[trimmed-depth]",
"review_url": "[trimmed-depth]",
"scraped_at": "[trimmed-depth]",
"scraped_at_page": "[trimmed-depth]",
"is_new": "[trimmed-depth]"
},
{
"store": "[trimmed-depth]",
"review_id": "[trimmed-depth]",
"app_id": "[trimmed-depth]",
"app_name": "[trimmed-depth]",
"country": "[trimmed-depth]",
"rating": "[trimmed-depth]",
"score_text": "[trimmed-depth]",
"title": "[trimmed-depth]",
"text": "[trimmed-depth]",
"language": "[trimmed-depth]",
"review_date": "[trimmed-depth]",
"app_version": "[trimmed-depth]",
"sub_ratings": "[trimmed-depth]",
"thumbs_up": "[trimmed-depth]",
"vote_sum": "[trimmed-depth]",
"vote_count": "[trimmed-depth]",
"reviewer_name": "[trimmed-depth]",
"reviewer_id": "[trimmed-depth]",
"reviewer_url": "[trimmed-depth]",
"reviewer_avatar_url": "[trimmed-depth]",
"reply_text": "[trimmed-depth]",
"reply_date": "[trimmed-depth]",
"review_url": "[trimmed-depth]",
"scraped_at": "[trimmed-depth]",
"scraped_at_page": "[trimmed-depth]",
"is_new": "[trimmed-depth]"
},
{
"store": "[trimmed-depth]",
"review_id": "[trimmed-depth]",
"app_id": "[trimmed-depth]",
"app_name": "[trimmed-depth]",
"country": "[trimmed-depth]",
"rating": "[trimmed-depth]",
"score_text": "[trimmed-depth]",
"title": "[trimmed-depth]",
"text": "[trimmed-depth]",
"language": "[trimmed-depth]",
"review_date": "[trimmed-depth]",
"app_version": "[trimmed-depth]",
"sub_ratings": "[trimmed-depth]",
"thumbs_up": "[trimmed-depth]",
"vote_sum": "[trimmed-depth]",
"vote_count": "[trimmed-depth]",
"reviewer_name": "[trimmed-depth]",
"reviewer_id": "[trimmed-depth]",
"reviewer_url": "[trimmed-depth]",
"reviewer_avatar_url": "[trimmed-depth]",
"reply_text": "[trimmed-depth]",
"reply_date": "[trimmed-depth]",
"review_url": "[trimmed-depth]",
"scraped_at": "[trimmed-depth]",
"scraped_at_page": "[trimmed-depth]",
"is_new": "[trimmed-depth]"
}
],
"scraped_count": 100,
"new_count": null,
"total_available": 18268035,
"fetchable_ceiling": 500,
"completeness_pct": 0.001,
"countries": [
"us"
],
"status": "PARTIAL",
"attempts": 1,
"next_cursor": {
"latest_date": "[redacted-phone]T08:17:14+00:00",
"latest_ids": [
"[trimmed-depth]",
"[trimmed-depth]",
"[trimmed-depth]"
]
},
"notes": null
}
],
"summary": {
"units": 1,
"succeeded": 1,
"not_found": 0,
"blocked": 0,
"success_rate_pct": 100,
"total_reviews": 100,
"total_new": 0,
"avg_completeness_pct": 0.001,
"by_store": {
"apple": 1
},
"error_breakdown": {},
"retries_used": 0
}
}
}What the App Store API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| reviews | unified Apple + Play reviews for one or more apps | Support teams call reviews to get unified Apple + Play reviews for one or more apps. | apps, appleAppId, googlePlayPackage, appName, stores, ... |
| search | ranked app search results | Reputation platforms call search to get ranked app search results. | query, stores, country, count |
| topCharts | ranked chart/category apps | Market researchers call topCharts to get ranked chart/category apps. | stores, country, category, count, chart, ... |
| listCategories | static genre/category list | B2B review analysts call listCategories to get static genre/category list. | stores |
| appDetails | full app profile | Support teams call appDetails to get full app profile. | appId, appleAppId, googlePlayPackage, stores, country, ... |
| developerApps | every other app published by the same developer | Reputation platforms call developerApps to get every other app published by the same developer. | appId, appleAppId, googlePlayPackage, stores, country, ... |
| similarApps | related / similar apps for an app | Market researchers call similarApps to get related / similar apps for an app. | appId, appleAppId, googlePlayPackage, stores, country, ... |
Call reviews from your stack
curl -X POST https://api.reefapi.com/app-store/v1/reviews \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"apps":[{"name":"WhatsApp","apple":"310633997"}],"stores":["apple"],"countries":["us"],"maxReviews":100}'import requests
r = requests.post(
"https://api.reefapi.com/app-store/v1/reviews",
headers={"x-api-key": REEF_KEY},
json={
"apps": [
{
"name": "WhatsApp",
"apple": "310633997"
}
],
"stores": [
"apple"
],
"countries": [
"us"
],
"maxReviews": 100
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/app-store/v1/reviews", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"apps": [
{
"name": "WhatsApp",
"apple": "310633997"
}
],
"stores": [
"apple"
],
"countries": [
"us"
],
"maxReviews": 100
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.app-store.reviews with {"apps":[{"name":"WhatsApp","apple":"310633997"}],"stores":["apple"],"countries":["us"],"maxReviews":100}.Who uses this API and why
- App teams call reviews to monitor new ratings and feedback for their app across both stores.
- Competitor-intelligence tools use topCharts and similarApps to track rivals' rankings.
- Product teams use appDetails and reviews to analyze feature requests and sentiment by version.
Questions developers ask before integrating
What is the App Store API?
App Store API is a ReefAPI endpoint group for app details, rankings, ratings and reviews. It returns live JSON through POST requests under /app-store/v1.
Is the App Store API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. App Store calls use the same shared credit balance as every other ReefAPI engine.
Do I need a App Store login or account?
No login to App Store is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the App Store data?
The page example is captured from a live reviews call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the App Store API use?
App Store actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call App Store from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call app-store actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the App Store API a App Store scraper?
It is the managed alternative to a DIY App Store scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same app details, rankings, ratings and reviews back as clean JSON.
Why does my App Store scraper keep getting blocked?
Most App Store scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.