Vestiaire API endpoint
Searches Vestiaire Collective's public pre-owned luxury resale catalog by keyword, category, brand, and condition, with sort and pagination. `sort` values: `relevance`, `price_asc`, `price_desc`, `recency`. `category_id` and `condition_id` come from /vestiaire/categories and /vestiaire/conditions. `page` * `per_page` cannot exceed an offset of 1000 (the upstream service's own pagination limit) -- narrow the query instead of paging deeper. Public data, sourced from Vestiaire Collective's own search service.
/vestiaire/searchQuery parameters:
q (optional) — keyword search text.category_id (optional) — category id, from
/vestiaire/categories.brand_id (optional) — brand id, from a prior search response's
facets.brands.condition_id (optional) — condition id. Allowed values: 1, 2, 3,
4, 5 — see /vestiaire/conditions for what
each means.sort (optional) — sort order. Allowed values: relevance, price_asc,
price_desc, recency. Defaults to relevance.page (optional) — page number, starting at 1. Defaults to 1.per_page (optional) — results per page, up to 60. Defaults to 24.Notable response behavior:
facets summarizes brand/category/condition counts for the current
query and filters — a useful way to discover a brand_id before
narrowing a search further.price_range is the minimum/maximum price (in cents) across the current
filtered result set, not just the current page.url is usable directly as the path query parameter to
/vestiaire/product.sort or condition_id returns 400 before any upstream
request is made.page × per_page cannot exceed an offset of 1000. Requesting a deeper
page returns 400 before any upstream request is made — narrow the
query with q, category_id, brand_id, or condition_id instead of
paging further.| Field | Filled in, of 24 checked | Values in the sample |
|---|---|---|
| id | 24 | |
| name | 24 | “Timeless/Classique leather handbag” and 18 other values |
| brand | 24 | Chanel in all 24 |
| brand_id | 24 | |
| model | 17 | “Timeless/Classique” and 11 other values |
| color | 24 | Black (13), Blue (4), Red (2) and 4 more |
| price_cents | 24 | 23,900 to 320,300, median 169,900 |
| currency | 24 | USD in all 24 |
| country | 24 | US in all 24 |
| sold | 24 | true in 0 of 24 |
| in_stock | 24 | true in 0 of 24 |
| likes | 24 | 0 to 59, median 3 |
| seller_id | 24 | |
| pictures | 24 | median 1 entry |
| url | 24 | vestiairecollective.com |
| created_at | 24 | 2026-10-07 to 2026-10-13 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | No | Keyword search text | chanel bag | |
| category_id | string | No | Category id, from /vestiaire/categories | 5 | |
| brand_id | string | No | Brand id, from a prior search's facets.brands | 50 | |
| condition_id | string | No | Condition id. Allowed values: 1, 2, 3, 4, 5 Allowed values: 1, 2, 3, 4, 5. | 3 | |
| sort | string | No | Sort order. Allowed values: relevance, price_asc, price_desc, recency Allowed values: relevance, price_asc, price_desc, recency. | price_asc | |
| page | integer | No | Page number, starting at 1 | 1 | |
| per_page | integer | No | Results per page, up to 60 | 24 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/vestiaire/search?q=coffee&condition_id=1&sort=relevance&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"q": "chanel bag",
"sort": "relevance",
"page": 1,
"per_page": 24,
"total_items": 10000,
"total_pages": 417,
"price_range": {
"min_cents": 700,
"max_cents": 9765700
},
"facets": {
"brands": [
{
"id": "50",
"name": "Chanel",
"count": 119169
}
],
"categories": [
{
"id": "5",
"name": "Bags",
"count": 119040
}
],
"conditions": [
{
"id": "3",
"name": "Very good condition",
"count": 71026
}
]
},
"items": [
{
"id": "70816051",
"name": "Timeless/Classique Chain leather backpack",
"brand": "Chanel",
"brand_id": "50",
"color": "Black",
"price_cents": 270000,
"currency": "USD",
"country": "US",
"sold": false,
"in_stock": false,
"likes": 1,
"pictures": [
"https://images.vestiairecollective.com/produit/70816051-1_2.jpg"
],
"url": "https://www.vestiairecollective.com/women-bags/backpacks/chanel/black-leather-timeless-classique-chain-chanel-backpack-70816051.shtml",
"created_at": "2026-09-08T10:00:03Z"
}
],
"source_url": "https://www.vestiairecollective.com/search/?q=chanel+bag",
"fetched_at": "2026-09-09T12:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/vestiaire.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | vestiaire.SearchResponse | No | ||||
| data.facets | vestiaire.SearchFacets | No | ||||
| data.facets.brands | array | No | ||||
| data.facets.brands[].count | integer | No | 119169 | |||
| data.facets.brands[].id | string | No | 50 | |||
| data.facets.brands[].name | string | No | Chanel | |||
| data.facets.categories | array | No | ||||
| data.facets.categories[].count | integer | No | 119169 | |||
| data.facets.categories[].id | string | No | 50 | |||
| data.facets.categories[].name | string | No | Chanel | |||
| data.facets.conditions | array | No | ||||
| data.facets.conditions[].count | integer | No | 119169 | |||
| data.facets.conditions[].id | string | No | 50 | |||
| data.facets.conditions[].name | string | No | Chanel | |||
| data.fetched_at | string | No | 2026-09-09T12:00:00Z | |||
| data.items | array | No | ||||
| data.items[].brand | string | No | Chanel | |||
| data.items[].brand_id | string | No | 50 | |||
| data.items[].color | string | No | Black | |||
| data.items[].country | string | No | US | |||
| data.items[].created_at | string | No | 2026-09-08T10:00:03Z | |||
| data.items[].currency | string | No | USD | |||
| data.items[].id | string | No | 70816051 | |||
| data.items[].in_stock | boolean | No | false | |||
| data.items[].likes | integer | No | 1 | |||
| data.items[].model | string | No | Timeless/Classique Chain | |||
| data.items[].name | string | No | Timeless/Classique Chain leather backpack | |||
| data.items[].pictures | array | No | ||||
| data.items[].price_cents | integer | No | 270000 | |||
| data.items[].seller_id | string | No | 28924234 | |||
| data.items[].sold | boolean | No | false | |||
| data.items[].url | string | No | https://www.vestiairecollective.com/women-bags/backpacks/chanel/black-leather-timeless-classique-chain-chanel-backpack-70816051.shtml | |||
| data.page | integer | No | 1 | |||
| data.per_page | integer | No | 24 | |||
| data.price_range | vestiaire.PriceRange | No | ||||
| data.price_range.max_cents | integer | No | 9765700 | |||
| data.price_range.min_cents | integer | No | 700 | |||
| data.q | string | No | chanel bag | |||
| data.sort | string | No | relevance | |||
| data.source_url | string | No | https://www.vestiairecollective.com/search/?q=chanel+bag | |||
| data.total_items | integer | No | 10000 | |||
| data.total_pages | integer | No | 417 | |||
| 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 |
| 500 | Internal Server Error | #/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/vestiaire/search?q=coffee&condition_id=1&sort=relevance&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"