Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

App Store Reviews Scraper & API Client for JavaScript / TypeScript

npm license types

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/appstore
pnpm add @fetchlayer/appstore
yarn add @fetchlayer/appstore

Get your API key

  1. Go to fetchlayer.dev
  2. Sign in with your email
  3. 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.

About

App Store Scraper & API Client for JavaScript and TypeScript. Fetch App Store reviews and search iOS apps as structured JSON. Zero deps, fully typed, MIT licensed.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages