Adidas API endpoint
Returns one page of customer reviews for an Adidas product model, plus the model's rating summary: overall rating, star histogram, percentage of reviewers who recommend it, per-attribute averages (Size, Width, Comfort, Quality with their own scale labels), and Adidas's AI-generated review digest when one exists. Each review carries the rating, headline, body, author nickname, purchased colorway, helpful/not-helpful vote counts, badges, customer photos, and submission time. 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, which is a different value from products[].id. Reviews are returned 10 per page. Reviews are scoped to review text written in the requested locale's language, and most of the US catalog's reviews are English, so a non-English locale commonly returns rating statistics and a localized summary with an empty reviews list. A model with no reviews -- including a well-formed but unrecognized model_number -- returns an empty reviews list rather than an error, because Adidas answers 200 with a zero count rather than 404.
/adidas/product/reviewsQuery parameters:
model_number (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 is a different value from products[].id. Several SKUs (colorways) share one model number and therefore share one review set.locale (optional, defaults to en_US) — selects the language of the review summary, the secondary-rating scale labels, and the reviews returned. 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.rating (optional) — return only reviews with this star rating. Allowed values: 1, 2, 3, 4, 5. Omitted returns every rating.page (optional, defaults to 1) — one-based page number, 1 to 1000. Ten reviews per page.Notable response behavior:
total_reviews counts the reviews matching this request's filters, so it shrinks when rating is set. rating_count is the model's unfiltered review count from the rating summary and stays constant.rating_histogram is ascending: index 0 is the 1-star count, index 4 the 5-star count.secondary_ratings[] are the per-attribute scales Adidas collects (Size, Width, Comfort, Quality), each with its own min_label/mid_label/max_label wording in the requested locale. A scale with no midpoint wording returns an empty mid_label.summary is Adidas's AI-generated digest of the model's reviews. It is present only when the upstream has generated one, is localized by locale, and carries the upstream's own disclaimer, which should be shown alongside the text.locale commonly returns the rating statistics and a localized summary with an empty reviews list.model_number — returns an empty reviews list with total_reviews: 0 rather than an error, because Adidas answers 200 with a zero count rather than 404.recommended is omitted when the upstream did not record a recommendation for that review. color (the purchased colorway), badges, photos, and responses (brand replies) are omitted when empty.source_url is the reviews request; ratings_source_url is the sibling rating-summary request the same call makes.| Field | Filled in, of 10 checked | Values in the sample |
|---|---|---|
| id | 10 | |
| rating | 10 | 1 to 5, median 5 |
| rating_range | 10 | 5 |
| headline | 10 | |
| body | 10 | |
| author | 10 | |
| color | 3 | |
| locale | 10 | |
| recommended | 10 | true in 9 of 10 |
| badges | 3 | median 1 entry |
| submitted_at | 10 | 2026-10-11 to 2026-10-13 |
| submitted_date | 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 for the review-summary language, the secondary-rating scale labels, and the language of the reviews returned. 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. | en_US |
| rating | integer | No | Return only reviews with this star rating. Allowed values: 1, 2, 3, 4, 5. Omitted returns every rating. | 5 | |
| topic | string | No | Return only reviews about one topic. Valid values are per-model -- read them from /adidas/product/review-topics for the same model_number (commonly satisfaction, comfort, color, purchase, fit, appearance, quality, style). An unrecognized topic returns a 400 listing the model's own topics. | comfort | |
| page | integer | No | 1 | One-based page number, 10 reviews per page, defaults to 1 | 1 |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/adidas/product/reviews?model_number=SAMBAU2312&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"model_number": "SAMBAU2312",
"locale": "en_US",
"page": 1,
"page_size": 10,
"total_pages": 338,
"total_reviews": 3371,
"count": 1,
"rating_count": 3371,
"overall_rating": 4.8,
"recommended_percentage": 97,
"rating_histogram": [
62,
22,
50,
223,
3014
],
"secondary_ratings": [
{
"name": "Size",
"label": "Size",
"average_rating": 3.06,
"value_range": 5,
"min_label": "Too small",
"mid_label": "Perfect",
"max_label": "Too large"
}
],
"summary": {
"text": "* Customers consistently praise all-day comfort and lightweight feel",
"title": "REVIEW_SUMMARY",
"type": "TEXT",
"detail": "BULLET_FORMAT_SUMMARY",
"disclaimer": "This summary is generated by artificial intelligence based on customer reviews."
},
"source_url": "https://www.adidas.com/api/models/SAMBAU2312/reviews?bazaarVoiceLocale=en_US&includeLocales=en%2A&limit=10&offset=0",
"ratings_source_url": "https://www.adidas.com/api/models/SAMBAU2312/ratings?bazaarVoiceLocale=en_US",
"fetched_at": "2026-09-05T13:45:00Z",
"reviews": [
{
"id": "184365254",
"rating": 5,
"rating_range": 5,
"headline": "A must for your wardrobe",
"body": "I love the color and the snakeskin design. I've gotten so many compliments on them.",
"author": "LizD74",
"color": "Focus Olive / Off White / Gum",
"locale": "en_US",
"recommended": true,
"badges": [
"IncentivizedReview"
],
"submitted_at": "2026-09-05T03:58:39Z",
"submitted_date": "September 5, 2026"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/adidas.productReviewsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | adidas.ProductReviewsResponse | No | ||||
| data.count | integer | No | ||||
| data.fetched_at | string | No | ||||
| data.locale | string | No | ||||
| data.model_number | string | No | ||||
| data.overall_rating | number | No | ||||
| data.page | integer | No | ||||
| data.page_size | integer | No | ||||
| data.rating_count | integer | No | RatingCount is the model's unfiltered review count from the ratings summary, so it stays constant regardless of the rating filter. | |||
| data.rating_filter | integer | No | RatingFilter echoes the rating query filter when one was applied. | |||
| data.rating_histogram | array | No | RatingHistogram is the count of reviews per star, ascending: index 0 is 1-star, index 4 is 5-star. | |||
| data.ratings_source_url | string | No | ||||
| data.recommended_percentage | number | No | ||||
| data.reviews | array | No | ||||
| data.reviews[].author | string | No | ||||
| data.reviews[].badges | array | No | ||||
| data.reviews[].body | string | No | ||||
| data.reviews[].color | string | No | ||||
| data.reviews[].headline | string | No | ||||
| data.reviews[].helpful_votes | integer | No | ||||
| data.reviews[].id | string | No | ||||
| data.reviews[].locale | string | No | ||||
| data.reviews[].not_helpful_votes | integer | No | ||||
| data.reviews[].photos | array | No | ||||
| data.reviews[].photos[].thumbnail_url | string | No | ||||
| data.reviews[].photos[].url | string | No | ||||
| data.reviews[].rating | integer | No | ||||
| data.reviews[].rating_range | integer | No | ||||
| data.reviews[].recommended | boolean | No | ||||
| data.reviews[].responses | array | No | Responses are brand/retailer replies posted under the review. | |||
| data.reviews[].submitted_at | string | No | ||||
| data.reviews[].submitted_date | string | No | ||||
| data.secondary_ratings | array | No | ||||
| data.secondary_ratings[].average_rating | number | No | ||||
| data.secondary_ratings[].label | string | No | ||||
| data.secondary_ratings[].max_label | string | No | ||||
| data.secondary_ratings[].mid_label | string | No | ||||
| data.secondary_ratings[].min_label | string | No | ||||
| data.secondary_ratings[].name | string | No | ||||
| data.secondary_ratings[].value_range | integer | No | ||||
| data.source_url | string | No | ||||
| data.summary | adidas.ReviewSummary | No | ||||
| data.summary.created_at | string | No | ||||
| data.summary.detail | string | No | ||||
| data.summary.disclaimer | string | No | ||||
| data.summary.text | string | No | ||||
| data.summary.title | string | No | ||||
| data.summary.type | string | No | ||||
| data.topic | string | No | Topic echoes the applied topic filter, when one was requested. | |||
| data.total_pages | integer | No | ||||
| data.total_reviews | integer | No | TotalReviews is the number of reviews matching this request's filters, so it shrinks when rating is set. | |||
| 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/reviews?model_number=SAMBAU2312&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"