REST API

Read-only programmatic access to everything AppStorePulse tracks for your apps: keyword rankings and SERPs, reviews with AI sentiment, competitor changes, category rankings, niche health, and new launches.

Getting started

  1. API access is included in the Pro plan.
  2. Create a key under Settings → API keys (workspace Owners and Admins). The key is shown once — store it like a password.
  3. Send it on every request: Authorization: Bearer ak_live_…
curl https://www.appstorepulse.com/api/v1/apps \
  -H "Authorization: Bearer ak_live_your_key_here"

Base URL: https://www.appstorepulse.com/api/v1 · Rate limit: 100 requests / minute / key· All responses are JSON · History windows are capped by your plan's data history (1 year on Pro).

Endpoints

All endpoints are read-only GET. Date-windowed endpoints take ?days=; list endpoints take ?limit=.

Discovery

Sanity-check your key and list every available endpoint.

GET /api/v1

Your account id, plan, rate limit, and the endpoint index.

Apps

Apps tracked in your workspace. Everywhere {app} appears you can pass the tracked-app id from GET /apps, or simply your app's Shopify slug (e.g. widebundle).

GET /api/v1/apps

All tracked apps in your workspace with core listing metadata.

GET /api/v1/apps/{app}

Full listing metadata for one tracked app: description, tagline, rating, review count, pricing, badge, launch date.

Keywords

Your tracked keywords with the same difficulty and volume scores the dashboard shows, plus rank history and full search results.

GET /api/v1/apps/{app}/keywords

Every tracked keyword with current position, 7-day change, live difficulty score/label, and volume tier/score.

GET /api/v1/apps/{app}/keywords/{keywordId}/ranks

Daily position history for one keyword.

Params: days (default 90, capped by plan history)

GET /api/v1/apps/{app}/keywords/{keywordId}/serp

The full search results page for the keyword from the latest crawl: every ranked app with rating, review count, badge, and an is_own_app flag.

Params: limit (default 24, max 120)

Competitors

Tracked competitors, their change timeline, and their reviews. {competitor} accepts the competitor's app id or Shopify slug.

GET /api/v1/apps/{app}/competitors

Tracked competitors with listing metadata.

GET /api/v1/apps/{app}/competitors/{competitor}/changes

Detected listing changes: pricing, description, screenshots, reviews, badge, and more.

Params: days (default 90)

GET /api/v1/apps/{app}/competitors/{competitor}/reviews

The competitor's reviews — same shape and filters as your own reviews endpoint.

Params: days, rating, sentiment, limit, offset

GET /api/v1/apps/{app}/competitors/{competitor}/reviews/themes

AI-aggregated praise themes, pain points, and feature requests from the competitor's reviews.

Params: days (default 365), limit (themes per type, default 10)

Reviews

Raw reviews enriched with AI analysis: sentiment (positive / negative / neutral), reason classification, language, and reviewer country.

GET /api/v1/apps/{app}/reviews

Paginated reviews, newest first.

Params: days (default 90), rating (1–5), sentiment (positive|negative|neutral), limit (default 50, max 100), offset

GET /api/v1/apps/{app}/reviews/themes

AI-aggregated themes across your reviews: what users praise, what they complain about, what they ask for.

Params: days (default 365), limit (themes per type, default 10)

Market data

Beyond your workspace: category pages crawled daily, niche health scores, and newly launched apps across the entire App Store.

GET /api/v1/apps/{app}/category-ranks

Your app's daily position history on its Shopify category pages (rank 1 = top).

Params: days (default 90)

GET /api/v1/categories

All ~120 category pages we crawl daily, with how many apps each ranks.

GET /api/v1/categories/{slug}/rankings

Current top apps on a category page with 7-day movement.

Params: limit (default 24, max 100)

GET /api/v1/niches

Niche leaderboard: health score, classification (Emerging, Crowded, …), direction, growth, and concentration per category — the same scoring as the in-app Niche Explorer.

GET /api/v1/niches/{category}

Deep dive on one niche: metrics, verdict, highlights, top apps, movers, 12-week trend, pricing distribution, and app-age stats. {category} is the URL-encoded friendly name (e.g. Product%20bundles).

GET /api/v1/launches

Newly listed apps, App Store-wide, by the date our crawler first saw them.

Params: days (default 30), category (friendly name), limit (default 50, max 200)

Errors

Errors return JSON: {"error": "…"}

401

Missing, malformed, unknown, or revoked API key.

403

The key's account is no longer on the Pro plan.

404

Resource not found in your workspace (wrong app/keyword/competitor/category).

429

Rate limit exceeded — check the Retry-After header and back off.

5xx

Something broke on our side. Retry with backoff; contact us if it persists.

Prefer talking to your data?

Everything here is also exposed as an MCP server — connect AppStorePulse to Claude, Cursor, or any MCP-compatible AI and ask questions instead of writing requests.

Versioning

The API is versioned in the path (/api/v1). We add fields and endpoints without notice; breaking changes ship as a new version with at least 6 months of overlap. Questions or a missing endpoint you need? Tell us.