DocsQuick Start

Quick Start

Base URL: https://pwaregistry.org. There is no signup.

1. Get one PWA

const response = await fetch(
  "https://pwaregistry.org/api/v1/apps/squoosh.app",
);
const app = await response.json();

console.log(app.application.name);
console.log(app.application.icons.primary);
console.log(app.application.screenshots.narrow);

The same record is also a static file:

https://pwaregistry.org/registry/v1/apps/squoosh.app.json

Replace squoosh.app with any registry id (the hostname, lowercased).

2. The fields you will use most

The record has two layers:

  • Top levelid, domain, status, timestamps.
  • application — the normalized PWA metadata (name, description, icons, screenshots, categories).
What you want Field
App name app.application.name
Description app.application.description
Domain app.domain
Status app.status
Categories app.application.categories
Primary icon app.application.icons.primary
Mobile screenshots app.application.screenshots.narrow
Desktop screenshots app.application.screenshots.wide
Launch URL app.application.startUrl

If a field is null or [], the website did not publish that member (or the image was not reachable). PWARegistry does not invent a substitute.

3. Example response (abridged)

This is a real record shape, shortened:

{
  "id": "squoosh.app",
  "status": "ACTIVE",
  "domain": "squoosh.app",
  "application": {
    "name": "Squoosh",
    "description": "Compress and compare images with different codecs, right in your browser.",
    "categories": ["photo", "productivity", "utilities"],
    "startUrl": "https://squoosh.app/",
    "icons": {
      "primary": {
        "src": "https://squoosh.app/c/icon-large-cb438cac.png",
        "width": 1024,
        "height": 1024
      }
    },
    "screenshots": {
      "narrow": [{ "src": "https://squoosh.app/c/screenshot1-0ff68546.png" }],
      "wide": [{ "src": "https://squoosh.app/c/screenshot4-3a706c3c.png" }]
    }
  }
}

The full record also includes validation, capabilities, every reachable icon, and source notes (where the name and description were discovered). You can ignore those until you need them.

4. What you can do with the data

Show the name:

heading.textContent = app.application.name;

Show the description:

summary.textContent = app.application.description;

Show the primary icon:

const icon = app.application.icons.primary;
if (icon) img.src = icon.src;

Show mobile screenshots:

for (const shot of app.application.screenshots.narrow) {
  // render shot.src
}

Show desktop screenshots:

for (const shot of app.application.screenshots.wide) {
  // render shot.src
}

Check status:

if (app.status === "ACTIVE") show(app);

Next: Where the Data Lives if you need more than one app, or Build a PWA Store.