DocsWhere the Data Lives

Where the Data Lives

There are two ways to retrieve the same data. They are not two datasets.

Static registry — canonical

JSON files under /registry/v1/. Built for CDNs, mirrors, and full sync.

Read-only API — convenience

Lookups and filters under /api/v1/. Same records, extra query parameters.

Static registry = canonical foundation. API = convenience.

If you are building something serious, you can run on the static files alone.

Static registry

Use this for a full registry sync, a large catalog, a mirror, background synchronization, high reliability, or low-cost infrastructure.

URL Purpose
/registry/v1/meta.json Schema version, revision, counts
/registry/v1/index.json Compact listing of every record
/registry/v1/apps/{id}.json Full normalized record
/registry/v1/categories.json Known categories and ACTIVE counts
/registry/v1/categories/{category}.json ACTIVE apps in that category
/registry/v1/status/{active|degraded|removed}.json Apps in that status
/registry/v1/changes.json?since=N Added, updated, and removed ids since revision N
/registry/v1/search.json?q= Name and domain search

{id} is the hostname, lowercased — for example squoosh.app.

These files send ETag, Last-Modified, CORS (*), and cache headers. They are not rate-limited beyond ordinary hosting.

Read-only API

Use this for one specific lookup, search, quick filtering, a prototype, or a lightweight tool.

URL Purpose
GET /api/v1/meta Same payload as meta.json
GET /api/v1/apps Filtered list (lightweight, paginated)
GET /api/v1/apps/{id-or-domain} Full record
GET /api/v1/apps?category=games Category filter
GET /api/v1/apps?status=active Status filter
GET /api/v1/apps?capability=wide-screenshots Capability filter
GET /api/v1/search?q= Search
GET /api/v1/changes?since=N Changes feed
GET /api/v1/categories Category list
GET /api/v1/categories/{id} Category index

List parameters: status, category, capability, q, limit (default 50, max 200), cursor. Combine with AND. Default status is ACTIVE.

The API is rate-limited per network only to stop abuse (hundreds of requests per hour). For bulk work, use the static files.

There is no second schema. GET /api/v1/apps/squoosh.app and /registry/v1/apps/squoosh.app.json return the same record.

Which should I use?

I am… Use
Looking up one domain API or the static app file
Building a prototype API
Syncing thousands of apps Static files + changes feed
Mirroring the registry Static files
Filtering live (?q=, ?category=) API, or download the index and filter locally

See the API / Registry Reference for parameters, errors, and caching headers.