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.