Hermes API endpoint
Returns a page of Hermès' full catalogue index for one market: each product's URL, slug, URL identifier and the date Hermès last modified it. Built from Hermès' own product sitemap, so it enumerates the entire catalogue for that market including items no category listing surfaces. Use changed_since to return only products added or updated on or after a date, which makes this a new-arrivals feed. The product_id is the identifier used in the product URL and is NOT the same string as the sku returned by hermes-category and hermes-search, which also encodes size.
/hermes/productsQuery parameters:
locale (optional) — market and language, default us_en. One of:
at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en.
Any other value returns 400 before any upstream request is made.page (optional) — one-based result page, default 1.limit (optional) — results per page, 1–500, default 100. A value
outside that range returns 400.changed_since (optional) — YYYY-MM-DD. Returns only products Hermès
last modified on or after this date, which turns this endpoint into a
new-arrivals / recently-updated feed. A malformed date returns 400.Notable response behavior:
product_id is the identifier used in the product URL, and is not the
same string as the sku returned by hermes-category and
hermes-search. The URL identifier joins Hermès' reference and colour
codes with a v (H252013ZvBM); the sku additionally encodes size
(H252013Z BM360). They are related but not interchangeable, and this
endpoint does not invent a conversion between them.U_BELT_13pH010384CDZ2pH065538CAAB065). These are
returned like any other product.last_modified is Hermès' own sitemap timestamp. Hermès restamps the
sitemap daily, so a same-day changed_since can match a large share of
the catalogue.products array with the real
total still reported.hermes-category or
hermes-search listing.| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| product_id | 40 | |
| slug | 40 | |
| url | 40 | hermes.com |
| last_modified | 40 | 2026-10-12 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| locale | string | No | Market and language. One of: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en Allowed values: at_de, au_en, be_en, be_fr, br_pt, ca_en, ca_fr, ch_de, ch_fr, cz_en, de_de, dh_en, dk_en, es_es, fi_en, fr_fr, gr_en, hk_en, ie_en, it_it, jp_ja, kr_ko, lu_fr, mo_en, mx_es, my_en, nl_en, no_en, pl_en, pt_en, ri_en, se_en, sg_en, th_en, tw_zh, uk_en, us_en. | ||
| page | integer | No | One-based result page Minimum: 1. | ||
| limit | integer | No | Results per page, 1-500 Minimum: 1. Maximum: 500. | ||
| changed_since | string | No | Return only products last modified on or after this YYYY-MM-DD date | 2026-09-01 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/hermes/products?locale=at_de&page=1&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "ok",
"data": {
"locale": "us_en",
"total": 4082,
"page": 1,
"limit": 100,
"products": [
{
"product_id": "H000044Ev01M",
"slug": "chut-iii-anti-noise-bonnet",
"url": "https://www.hermes.com/us/en/product/chut-iii-anti-noise-bonnet-H000044Ev01M/",
"last_modified": "2026-09-07"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/hermes.productsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | hermes.ProductsResponse | No | ||||
| data.limit | integer | No | ||||
| data.locale | string | No | ||||
| data.page | integer | No | ||||
| data.products | array | No | ||||
| data.products[].last_modified | string | No | ||||
| data.products[].product_id | string | No | ProductID is the identifier Hermès uses in the product URL. It is NOT the same string as the sku returned by hermes-category/hermes-search -- see the type doc on ProductsResponse. | |||
| data.products[].slug | string | No | ||||
| data.products[].url | string | No | ||||
| data.total | integer | No | ||||
| msg | string | No | ok |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/hermes/products?locale=at_de&page=1&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"