@fetchlayer/appstore
v0.1.0
Published
Official FetchLayer SDK for Apple App Store data. Scrape App Store reviews and search apps with JavaScript and TypeScript.
Downloads
94
Maintainers
Readme
App Store Reviews Scraper & API Client for JavaScript / TypeScript
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.
Install
npm install @fetchlayer/appstorepnpm add @fetchlayer/appstoreyarn add @fetchlayer/appstoreGet your API key
- 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.
Quick start
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.
Why use this instead of scraping the App Store yourself
| 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 |
All methods
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 |
Examples
Scrape reviews for an app
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}`);
}Filter reviews by platform and language
const iphoneReviews = await appstore.getReviews({
appId: "1234567890",
country: "us",
platforms: ["iphone", "ipad"],
lang: "en",
pages: 3,
});Search the App Store
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)`);
}Error handling
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
}
}Configuration
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+)
});What this package is
- 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
How it works
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.
Pricing
| | | | --- | --- | | 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 →
Use cases
- 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
Links
| | | | --- | --- | | Get API key | fetchlayer.dev/signin | | Product page | fetchlayer.dev/app-store-reviews-api | | Homepage | fetchlayer.dev | | npm | @fetchlayer/appstore | | Issues | GitHub Issues |
License
MIT — see LICENSE.
