About app-store
app-store is an Apple App Store data API skill for app researchers and developers, covering apps, bundles, reviews, and developer catalogs across country storefronts.
Key features
- 01Search apps and bundles by keyword
- 02Retrieve app and bundle details
- 03Fetch app and bundle reviews
- 04Find similar apps and bundles
- 05View a developer's app catalog
Use cases
- 01Compare apps across country storefronts
- 02Research app reviews and user feedback
- 03Find apps similar to a given app
- 04Browse a developer's published apps
MCP support
It provides an MCP server at https://appstore.fetcher.sh/mcp with endpoint discovery, endpoint descriptions, balance checks, and paid data retrieval.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ fetcher-sh/ fetcher-skills --skill app-storeAfter installing, type/app-storein Claude Code to confirm it loaded.
Details
From the project READMEApple App Store API
App Store app and bundle search, details, reviews, similar-apps, and developer catalogs across any country storefront — one plain HTTP GET per call, paid as you go. No Apple Developer Program membership, no App Store Connect access, no scraping the storefront HTML.
Base URL: https://appstore.fetcher.sh
Authentication
Two ways to pay, same data — full mechanics in the fetcher
skill:
# 1. Prepaid credits (recommended — get a key at https://fetcher.sh/topup
# or via POST /api/credits/topup, see the fetcher skill)
export FETCHER_API_KEY="bby_live_xxxxxxxxxxxx"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://appstore.fetcher.sh/api/apps?term=meditation"
# 2. x402 pay-per-call — omit the header; a GET with no payment returns 402
# with machine-readable payment requirements (USDC on Base, Polygon,
# Arbitrum, Monad, or Solana). @x402/fetch signs and retries automatically.
Every response is { "status": number, "message": string, "data": ... }; the
HTTP status mirrors status.
Endpoints (9 — all GET, $0.003/call)
| Endpoint | What it returns |
|---|---|
/api/apps | Apps matching a keyword; page and country storefront filters |
/api/apps/{appId} | An app's full details |
/api/apps/{appId}/reviews | An app's reviews |
/api/apps/{appId}/similar | Apps similar to a given app |
/api/bundles | App bundles matching a keyword |
/api/bundles/{bundleId} | A bundle's full details |
/api/bundles/{bundleId}/reviews | A bundle's reviews |
/api/bundles/{bundleId}/similar | Bundles similar to a given bundle |
/api/developers/{developerId} | A developer's full app catalog |
Required on /api/apps and /api/bundles: term. Optional everywhere:
country (storefront, e.g. us, jp, de), lang, page. Reviews
support sort (recent, helpful).
Scenarios
US storefront search:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "term=habit tracker" -G \
--data-urlencode "country=us" \
"https://appstore.fetcher.sh/api/apps"
Japanese storefront search:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "term=camera" -G \
--data-urlencode "country=jp" \
"https://appstore.fetcher.sh/api/apps"
An app's full details, then reviews sorted by helpfulness:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "country=us" -G \
"https://appstore.fetcher.sh/api/apps/324684580"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "country=us" -G \
--data-urlencode "sort=helpful" \
"https://appstore.fetcher.sh/api/apps/324684580/reviews"
Apps similar to a given app:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "country=us" -G \
"https://appstore.fetcher.sh/api/apps/324684580/similar"
Search and fetch app bundles:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "term=photo editing suite" -G \
"https://appstore.fetcher.sh/api/bundles"
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
--data-urlencode "country=us" -G \
"https://appstore.fetcher.sh/api/bundles/1234567890"
A developer's full app catalog:
curl -H "Authorization: Bearer $FETCHER_API_KEY" \
"https://appstore.fetcher.sh/api/developers/284882218"
MCP
{
"mcpServers": {
"app-store": {
"url": "https://appstore.fetcher.sh/mcp",
"headers": { "Authorization": "Bearer bby_live_..." }
}
}
}
Free: search_endpoints, describe_endpoint, check_balance. Paid:
fetch_data (any endpoint above), topup_credits, plus the named shortcut
appstore_apps. Drop the headers block to pay per call with x402 instead —
see the fetcher skill for the full flow.
Errors
400— missing/invalid parameter (message names it)401— unknown or rotated key402— payment required (x402 challenge) ortopup_required(credits exhausted)404— not a priced path- No rate limits; no refunds on upstream failures (settlement precedes delivery)
Reference
- Full agent setup: https://appstore.fetcher.sh/skill.md
- OpenAPI 3.1 contract: https://appstore.fetcher.sh/openapi.json
- Condensed catalog: https://appstore.fetcher.sh/llms.txt
- Payment, credits, and MCP deep dive:
fetcherskill - Site: https://appstore.fetcher.sh