Hermes API endpoint
Searches the Hermès catalogue by keyword and returns a page of products in the same shape as hermes-category. A query Hermès has no match for returns total 0 with an empty products array: Hermès itself renders unrelated fallback recommendations on a no-results page, and those are deliberately not returned as results. When Hermès applies its own spelling correction the corrected term is reported in results_for. Page size is fixed at 48 by Hermès and cannot be changed.
/hermes/searchQuery parameters:
query (required) — search keyword, e.g. scarf.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.Notable response behavior:
total 0 and an empty products
array. Hermès' own no-results page still renders around 18 unrelated
recommendations; those are deliberately not returned, so an empty result
is never disguised as a list of unrelated products.results_for appears only when Hermès applied its own spelling
correction and searched for a different term than the one supplied.page_size
always reports 48; a page past the end returns an empty products array
with the real total still reported.price is a bare number as Hermès publishes it; currency is the
ISO-4217 code for the selected market.filters are the facet groups Hermès offers for the query, and are
informational — this endpoint does not currently accept facet filters as
inputs. A no-results query returns no facet groups.| Field | Filled in, of 48 checked | Values in the sample |
|---|---|---|
| sku | 48 | |
| title | 48 | “Casaque Jumping scarf” and 38 other values |
| url | 48 | hermes.com |
| slug | 48 | |
| price | 48 | 260 to 1,675, median 660 |
| currency | 48 | USD in all 48 |
| price_type | 48 | fixed in all 48 |
| color | 48 | “Orange” and 11 other values |
| colorless | 48 | true in 0 of 48 |
| more_colors | 48 | true in 0 of 48 |
| size | 0 | |
| product_code | 48 | |
| department_code | 48 | |
| family_code | 48 | |
| division_code | 48 | |
| in_stock | 48 | true in 48 of 48 |
| in_store | 48 | true in 0 of 48 |
| personalizable | 48 | true in 0 of 48 |
| images | 48 | median 3 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| query | string | Yes | Search keyword | scarf | |
| 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; page size is fixed at 48. Page 1 is fully validated; pages beyond 1 are best-effort and provisional Minimum: 1. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/hermes/search?query=scarf&locale=at_de&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "ok",
"data": {
"locale": "us_en",
"query": "scarf",
"total": 1078,
"page": 1,
"page_size": 48,
"products": [
{
"sku": "H004368S 04",
"title": "La Nature en Voyage scarf 90",
"url": "https://www.hermes.com/us/en/product/la-nature-en-voyage-scarf-90-H004368Sv04/",
"slug": "la-nature-en-voyage-scarf-90",
"price": 505,
"currency": "USD",
"price_type": "fixed",
"color": "Blue",
"colorless": false,
"more_colors": true,
"size": "",
"product_code": "S1A1",
"department_code": "S",
"family_code": "S01",
"division_code": "01",
"in_stock": true,
"in_store": false,
"personalizable": false,
"images": [
"https://assets.hermes.com/is/image/hermesproduct/004368S%2004_front_wm_1"
]
}
],
"filters": []
}
}Request schema
No body schema
Response schema
#/definitions/hermes.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | hermes.SearchResponse | No | ||||
| data.filters | array | No | ||||
| data.filters[].attribute | string | No | ||||
| data.filters[].name | string | No | ||||
| data.filters[].values | array | No | ||||
| data.filters[].values[].count | integer | No | ||||
| data.filters[].values[].name | string | No | ||||
| data.filters[].values[].value | string | No | ||||
| data.locale | string | No | ||||
| data.page | integer | No | ||||
| data.page_size | integer | No | ||||
| data.products | array | No | ||||
| data.products[].color | string | No | ||||
| data.products[].colorless | boolean | No | ||||
| data.products[].currency | string | No | ||||
| data.products[].department_code | string | No | ||||
| data.products[].division_code | string | No | ||||
| data.products[].family_code | string | No | ||||
| data.products[].images | array | No | ||||
| data.products[].in_stock | boolean | No | ||||
| data.products[].in_store | boolean | No | ||||
| data.products[].more_colors | boolean | No | ||||
| data.products[].personalizable | boolean | No | ||||
| data.products[].price | number | No | ||||
| data.products[].price_type | string | No | ||||
| data.products[].product_code | string | No | ||||
| data.products[].size | string | No | ||||
| data.products[].sku | string | No | ||||
| data.products[].slug | string | No | ||||
| data.products[].title | string | No | ||||
| data.products[].url | string | No | ||||
| data.query | string | No | ||||
| data.results_for | string | No | ResultsFor is the term Hermès actually searched for, which can differ from query when it applies its own spelling correction. Empty when upstream reports no correction. | |||
| 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/search?query=scarf&locale=at_de&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"