Adidas API endpoint
Returns the topics an Adidas product model's customer reviews can be filtered by -- the "filter by topic" chips the product page shows, commonly satisfaction, comfort, color, purchase, fit, appearance, quality and style. Feed a topics[].topic value back to /adidas/product/reviews as its topic parameter to return only reviews about that aspect. The topic vocabulary is per model, not a fixed list: a shoe exposes fit and comfort topics that an accessory does not, so read it per model rather than hard-coding it. model_number is the Adidas model number (e.g. SAMBAU2312) -- NOT the SKU: take it from an adidas_search result's products[].model_number field. A model with no reviews, including a well-formed but unrecognized model_number, returns an empty topics list rather than an error. Note the label field is a display form of topic, not translated text: Adidas returns the same English values for every locale on this route.
/adidas/product/review-topicsmodel_number (string, required) — the Adidas model number, e.g.
SAMBAU2312. This is not the SKU: take it from an /adidas/search
result's products[].model_number field, which differs from
products[].id.locale (string, optional, defaults to en_US) — accepted for consistency
with the reviews endpoint. Allowed values: cs_CZ, da_DK, de_AT,
de_CH, de_DE, el_GR, en_AE, en_AU, en_CA, en_GB, en_IE,
en_IL, en_IN, en_NZ, en_PH, en_SG, en_US, en_ZA, es_AR,
es_CL, es_CO, es_ES, es_MX, es_PE, fr_BE, fr_CA, fr_CH,
fr_FR, id_ID, it_CH, it_IT, ja_JP, ko_KR, nl_BE, nl_NL,
pl_PL, pt_BR, pt_PT, ru_RU, sk_SK, sv_SE, th_TH, tr_TR,
zh_HK, zh_TW.satisfaction, comfort, color,
purchase, fit, appearance, quality and style.label is a display form of topic, not translated text. Adidas
returns the same English values for every locale on this route, unlike
/adidas/product/reviews, where the locale genuinely translates the
rating-scale labels.model_number — returns an empty topics list rather than an error,
because the upstream answers 200 with an empty list rather than 404.topic that is not in this list to /adidas/product/reviews
returns 400 naming the model's valid topics, rather than silently
returning zero reviews.| Field | Filled in, of 10 checked |
|---|---|
| topic | 10 |
| label | 10 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| model_number | string | Yes | Adidas model number, from an adidas_search result's products[].model_number field | SAMBAU2312 | |
| locale | string | No | en_US | Locale accepted for consistency with the reviews endpoint. Allowed values: cs_CZ, da_DK, de_AT, de_CH, de_DE, el_GR, en_AE, en_AU, en_CA, en_GB, en_IE, en_IL, en_IN, en_NZ, en_PH, en_SG, en_US, en_ZA, es_AR, es_CL, es_CO, es_ES, es_MX, es_PE, fr_BE, fr_CA, fr_CH, fr_FR, id_ID, it_CH, it_IT, ja_JP, ko_KR, nl_BE, nl_NL, pl_PL, pt_BR, pt_PT, ru_RU, sk_SK, sv_SE, th_TH, tr_TR, zh_HK, zh_TW. Defaults to en_US. Note Adidas returns the same English topic labels regardless of this value. | en_US |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/adidas/product/review-topics?model_number=SAMBAU2312" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"model_number": "SAMBAU2312",
"locale": "en_US",
"count": 8,
"topics": [
{
"topic": "satisfaction",
"label": "satisfaction"
},
{
"topic": "comfort",
"label": "comfort"
},
{
"topic": "color",
"label": "color"
},
{
"topic": "purchase",
"label": "purchase"
},
{
"topic": "fit",
"label": "fit"
},
{
"topic": "appearance",
"label": "appearance"
},
{
"topic": "quality",
"label": "quality"
},
{
"topic": "style",
"label": "style"
}
],
"source_url": "https://www.adidas.com/api/models/SAMBAU2312/filter/topics?bazaarVoiceLocale=en_US",
"fetched_at": "2026-09-06T00:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/adidas.reviewTopicsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | adidas.ReviewTopicsResponse | No | ||||
| data.count | integer | No | ||||
| data.fetched_at | string | No | ||||
| data.locale | string | No | ||||
| data.model_number | string | No | ||||
| data.source_url | string | No | ||||
| data.topics | array | No | ||||
| data.topics[].label | string | No | Label is the upstream's display string. Despite the upstream field being named "localizedFeature" it is not translated -- it is returned identically for every locale -- so treat it as a display form of Topic, not as localized text. | |||
| data.topics[].topic | string | No | Topic is the value to pass as the reviews endpoint's topic parameter. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/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/adidas/product/review-topics?model_number=SAMBAU2312" \
-H "x-api-key: $CRAWLORA_API_KEY"