Zara API endpoint
Returns one Zara product's full detail: every purchasable color variant with its real marketing description, per-size stock, and full image gallery -- richer than the per-product summaries returned by zara-category-products and zara-search. productId is a numeric id, taken from a search/category result's url field (the digits after "-p" in the product-detail URL). An unrecognized productId returns 404.
/zara/product/{productId}Returns one Zara product's full detail: every purchasable color variant with its real marketing description, per-size stock, and full image gallery -- richer than the per-product summaries returned by zara-category-products and zara-search, which only carry one representative image and a single in_stock/out_of_stock flag per color.
productId is required and is a numeric id, taken from a search/category result's url field (the digits after -p in the product-detail URL, e.g. 08727223 from .../trf-low-rise-wide-leg-jeans-p08727223.html).
Notable response behavior:
colors lists every purchasable color of the base product, not just one -- requesting the shared productId for a multi-color product returns all of its colors in one response.sizes[] carries real per-size stock (availability), unlike category/search which only expose one stock flag for the whole color.description is the real marketing copy from the product-detail page (category/search do not carry a description at all).images is the full ordered image gallery for that color, not just one representative image.composition lists the product's material breakdown (e.g. "OUTER SHELL" / 100% cotton) where Zara provides one.price is in US dollars, at both the color and size level.productId returns 404. A non-numeric or missing productId returns 400 before any upstream request is made.| Field | Filled in, of 8 checked | Values in the sample |
|---|---|---|
| id | 8 | |
| name | 8 | “Light blue” and 6 other values |
| price | 8 | 35.94 to 59.9, median 59.9 |
| availability | 8 | in_stock in all 8 |
| description | 8 | median 137 characters |
| images | 8 | median 9 entries |
| sizes | 8 | median 8 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| productId (path) | string | Yes | Numeric Zara product id, from a search/category result's url field | 08727223 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/zara/product/08727223" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"product_id": "08727223",
"name": "TRF LOW-RISE WIDE-LEG JEANS",
"reference": "08727223-I2026",
"section_name": "WOMAN",
"family_name": "PANTALON",
"subfamily_name": "T.PANT.PAQUETER",
"composition": [
{
"description": "OUTER SHELL",
"components": [
{
"material": "cotton",
"percentage": "100%"
}
]
}
],
"url": "https://www.zara.com/us/en/trf-low-rise-wide-leg-jeans-p08727223.html",
"colors": [
{
"id": "443",
"name": "Dark indigo",
"price": 59.9,
"availability": "in_stock",
"description": "LOW RISE - WIDE LEG - FULL LENGTH. Low-rise, five-pocket jeans. Full-length wide leg. Front zip fly and metal button fastening.",
"images": [
"https://static.zara.net/assets/public/9246/6e0d/5d894ce9b14f/191334afdb14/06929222443-p/06929222443-p.jpg?w=800"
],
"sizes": [
{
"id": 32,
"name": "25 (US 0)",
"price": 59.9,
"availability": "in_stock",
"sku": 545408284
},
{
"id": 34,
"name": "26 (US 2)",
"price": 59.9,
"availability": "in_stock",
"sku": 545408285
}
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/zara.productDetailResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | zara.ProductDetailResponse | No | ||||
| data.colors | array | No | ||||
| data.colors[].availability | string | No | ||||
| data.colors[].description | string | No | ||||
| data.colors[].id | string | No | ||||
| data.colors[].images | array | No | ||||
| data.colors[].name | string | No | ||||
| data.colors[].price | number | No | ||||
| data.colors[].sizes | array | No | ||||
| data.colors[].sizes[].availability | string | No | ||||
| data.colors[].sizes[].id | integer | No | ||||
| data.colors[].sizes[].name | string | No | ||||
| data.colors[].sizes[].price | number | No | ||||
| data.colors[].sizes[].sku | integer | No | ||||
| data.composition | array | No | ||||
| data.composition[].components | array | No | ||||
| data.composition[].components[].material | string | No | ||||
| data.composition[].components[].percentage | string | No | ||||
| data.composition[].description | string | No | ||||
| data.family_name | string | No | ||||
| data.fetched_at | string | No | ||||
| data.name | string | No | ||||
| data.product_id | string | No | ||||
| data.reference | string | No | ||||
| data.section_name | string | No | ||||
| data.source_url | string | No | ||||
| data.subfamily_name | string | No | ||||
| data.url | string | No | ||||
| 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/zara/product/08727223" \
-H "x-api-key: $CRAWLORA_API_KEY"