npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@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

Readme

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.