The official JavaScript & TypeScript SDK for the FetchLayer App Store API.
Scrape App Store reviews. Search apps. Get ratings, review text, versions, and dates. All as clean JSON from a single API — no App Store Connect account, no iTunes API quirks, no HTML parsing.
Open-source SDK, hosted API. This package is MIT-licensed. The API requires a free FetchLayer API key — no subscriptions, no contracts, no lock-in. Pay only for what you use.
npm install @fetchlayer/appstorepnpm add @fetchlayer/appstoreyarn add @fetchlayer/appstore- Go to fetchlayer.dev
- Sign in with your email
- Copy your API key from the dashboard
That's it. No credit card. No trial expiration. You get free requests to start, then pay-as-you-go when you need more.
import { FetchLayerAppStore } from "@fetchlayer/appstore";
const appstore = new FetchLayerAppStore({
apiKey: process.env.FETCHLAYER_API_KEY!,
});
// Scrape reviews for any App Store app
const reviews = await appstore.getReviews({
appId: "1234567890",
country: "us",
pages: 1,
});
console.log(reviews);That's 4 lines to get structured App Store review data. No App Store Connect access, no iTunes API workarounds, no broken scrapers.
| Problem | FetchLayer |
|---|---|
| Apple's iTunes API is limited and undocumented | Stable, documented JSON |
| Reviews are paginated and country-specific | Country, language, and platform filters built in |
| HTML structure changes break your parser | You get stable JSON |
| Maintaining scraping infra is a full-time job | npm install and done |
| You need reviews AND app search | 2 endpoints, one SDK |
const appstore = new FetchLayerAppStore({ apiKey });| Method | What it does |
|---|---|
appstore.getReviews(params) |
Scrape customer reviews for any app |
appstore.searchApps(params) |
Search the App Store for apps by name or keyword |
const reviews = await appstore.getReviews({
appId: "1234567890",
country: "us",
pages: 2,
sort: "recent", // "recent" or "helpful"
});
for (const review of reviews.reviews ?? []) {
console.log(`${"★".repeat(review.rating ?? 0)} ${review.title}`);
console.log(` ${review.body}`);
console.log(` ${review.author} · v${review.version} · ${review.date}`);
}const iphoneReviews = await appstore.getReviews({
appId: "1234567890",
country: "us",
platforms: ["iphone", "ipad"],
lang: "en",
pages: 3,
});const results = await appstore.searchApps({
query: "notion",
country: "us",
});
for (const app of results.results ?? []) {
console.log(`${app.name} by ${app.developer} — ${app.rating}★ (${app.ratingCount} ratings)`);
}import { FetchLayerAppStore, FetchLayerError } from "@fetchlayer/appstore";
try {
const reviews = await appstore.getReviews({ appId: "1234567890" });
} catch (err) {
if (err instanceof FetchLayerError) {
console.error(err.status); // 401, 429, etc.
console.error(err.message); // Human-readable error from the API
}
}const appstore = new FetchLayerAppStore({
apiKey: "your-key", // Required
baseUrl: "...", // Default: https://api.fetchlayer.dev/appstore
timeoutMs: 30000, // Default: 30s
fetch: customFetch, // Default: global fetch (Node 18+)
});- Zero dependencies — uses native
fetch, nothing else - Dual build — ESM + CommonJS, works everywhere
- Fully typed — TypeScript declarations included
- Tiny — under 6 KB bundled
- Open source — MIT license, contributions welcome
You call FetchLayer → FetchLayer returns structured App Store data as JSON → you use it however you want.
No Apple developer account needed. No App Store Connect access. No scraping infrastructure on your end.
| Free tier | Included with every account — start building immediately |
| Pay-as-you-go | $1.99 per 1,000 requests. Credits never expire. |
| Subscriptions | Available for heavy use — predictable pricing at scale |
| Rate limits | None |
Review retrieval is billed per page actually fetched — inspect pagesFetched in the response for the amount retrieved. No credit card required to start. No monthly commitment. No overages. Get your API key →
- Review monitoring — track new feedback, app versions, and recurring complaints
- Competitive intelligence — compare public reviews across competing apps
- Product feedback — find feature requests, bugs, and unmet needs in your reviews
- Sentiment analysis — pull reviews and run NLP on real customer opinions
- App store optimization (ASO) — understand what users praise and criticize
- AI agents — give your LLM real-time App Store context via FetchLayer's MCP server
| Get API key | fetchlayer.dev/signin |
| Product page | fetchlayer.dev/app-store-reviews-api |
| Homepage | fetchlayer.dev |
| npm | @fetchlayer/appstore |
| Issues | GitHub Issues |
MIT — see LICENSE.