Ecommerce theme intelligence API

Access ThemeRadars' Shopify theme data - current rankings, review counts, price history, and written reviews - over a simple read-only REST API.

Get your API keyFree during early access - 100 requests/day, 60 requests/minute.

Quickstart

  1. Create an API key from your account.
  2. Add it to every request as an Authorization: Bearer header.
  3. Call any endpoint below - responses are JSON.
curl https://themeradars.com/api/v1/themes \
  -H "Authorization: Bearer tr_live_xxxxxxxxxxxxxxxxxxxxxxxx"
{
  "data": [
    {
      "id": "blum-blum",
      "name": "blum",
      "preset": "blum",
      "price": "$350 USD",
      "currentReviews": 675,
      "currentRank": 13,
      "categories": ["clothing"],
      "status": "Activated"
    }
  ],
  "meta": { "page": 1, "perPage": 20, "total": 300 }
}

Authentication

Every request must include your API key as a bearer token in the Authorization header:

Authorization: Bearer tr_live_xxxxxxxxxxxxxxxxxxxxxxxx
401

Missing, malformed, or unrecognized API key. {"error":"Missing or malformed Authorization header. Expected: Bearer <api_key>"}

403

The key exists but has been revoked. {"error":"API key has been revoked"}

Rate limits & quotas

  • 60 requests/minute per key - a short-window abuse limit.
  • 100 requests/day per key on the free tier - resets at UTC midnight.

Every successful response includes rate-limit headers reflecting the daily quota:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 98
X-RateLimit-Reset: 1786665600

Exceeding either limit returns a 429 with a Retry-After header (seconds):

{"error":"Daily quota of 100 requests exceeded"}

Response format

List endpoints return data plus pagination meta. Single-resource endpoints return just data. Failures return an error message and an appropriate HTTP status.

  • page - page number, defaults to 1.
  • perPage - results per page, defaults to 20, capped at 100.

Endpoints

Errors

401

Missing, malformed, or invalid API key.

403

The API key has been revoked.

404

The requested resource does not exist.

429

Per-minute rate limit or daily quota exceeded. Check the Retry-After header.

500

Unexpected server error.

Frequently Asked Questions

Common uses include tracking how your own Shopify theme (or your competitors') ranks and trends over time, building alerts on review or price changes, researching which themes are gaining traction in a given industry category, and detecting which theme a live Shopify store is running via the theme detector endpoint.
The list endpoint only returns "master" themes - one canonical row per theme, where name equals preset - to avoid counting the same theme multiple times across its preset variants. To fetch a specific preset variant directly, use /api/v1/themes/:id with the full id (e.g. blum-bramble).
Rankings, review counts, and prices are refreshed by a scheduled crawl of themes.shopify.com. Each crawl run creates new Ranking, ReviewChange, and PriceChange records, so history endpoints grow over time - PriceChange rows are only added when the price actually changes.
A theme is marked Deactivated when it is no longer found in the Shopify Theme Store during a crawl. By default, list endpoints only return Activated themes - pass status=all to include deactivated ones.
Sign in and create a key from your account's API keys page. Keys are shown once at creation, so store them securely - if a key is lost, revoke it and generate a new one.
Requests using a revoked key receive a 403 with {"error":"API key has been revoked"}. Generate a new key from your account's API keys page and update your integration.
Increment the page query parameter (starting at 1) until meta.page * meta.perPage is greater than or equal to meta.total. perPage defaults to 20 and is capped at 100.
The API is free during early access at 100 requests/day and 60 requests/minute per key. Reach out if your use case needs more than the free tier provides.
/api/v1/detect-theme makes a live outbound request to the target store on every call rather than reading from the database, so it carries a stricter limit of 10 requests/minute per key in addition to the standard per-key limits.