merch.json
A small file a store publishes so fan tools can read its table without scraping. Put it at /merch.json, or link it from your homepage with <link rel="alternate" type="application/merch+json" href="...">.
{ "version": 1,
"store": { "name": "DFA Records", "url": "https://www.dfarecords.com", "bands": ["LCD Soundsystem"] },
"items": [
{ "id": "lcd-dot-hoodie",
"title": "DOT Hoodie",
"url": "https://www.dfarecords.com/products/lcd-soundsystem-dot-hoodie",
"price": "74.98", "currency": "USD", "kind": "apparel", "available": true,
"variants": [ { "title": "S", "available": true }, { "title": "M", "available": false } ],
"image": "https://www.dfarecords.com/cdn/shop/files/DOT.png",
"published": "2026-03-26T15:09:57-04:00" } ] }Fields
| Field | Required | Meaning |
|---|---|---|
version | yes | 1 |
store.name, store.url | yes | Who and where. store.bands lists the bands sold here, so a label store can carry many. |
items[].id | yes | Stable for the life of the item. It’s how “new” is decided. |
items[].title, url | yes | The item’s own page. Readers link to it untouched. |
price, currency | no | As strings, e.g. “74.98” and “USD”. |
kind | no | apparel, music, prints, accessories, unusual, other. Readers will classify if absent. |
available | no | Item-level stock. Default true. |
variants[] | no | Sizes or editions, each with title, available, optional price and id. Restock alerts are per variant. |
image, published | no | An image URL and an ISO date. |
A store that publishes this and claims its page is marked “verified by the band”. A WooCommerce plugin that emits it is about forty lines; a static site can hand-write it.