SHEIN API endpoint
Returns the filter facets for a SHEIN search, given the required `keyword` and an optional `cat_id` that narrows them. The response has filter groups (id, name, options), a recursive `category` drill-down with `children`, and the `min_price` and `max_price` for the query.
/shein/products/aggregation-filtersReturns the selectable category/brand/size/color filter facets and price range for a SHEIN search query.
Query parameters:
keyword (required) — free-text search query, e.g. dress.cat_id (optional) — numeric SHEIN category id, narrows the facets when
supplied.Response data.filters is an array of facet groups {id, name, options[]}
where each option is {id, name}; data.category is the category
drill-down facet ({id, name, children[]}, recursive); data.min_price /
data.max_price are the price range for the query.
| Field | Filled in, of 15 checked | Values in the sample |
|---|---|---|
| id | 15 | |
| name | 15 | “Occasion” and 14 other values |
| options | 15 | median 12 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| keyword | string | Yes | Free-text search query | dress | |
| cat_id | string | No | Numeric SHEIN category id, narrows the facets | 12476 | |
| x-api-key (header) | string | Yes | API key required |
curl -X POST "https://api.crawlora.net/api/v1/shein/products/aggregation-filters?keyword=dress" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"keyword": "dress",
"min_price": "18",
"max_price": "569",
"filters": [
{
"id": "87",
"name": "Size",
"options": [
{
"id": "87_757",
"name": "XXS"
}
]
},
{
"id": "62",
"name": "Composition",
"options": [
{
"id": "62_526",
"name": "Polyester"
}
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/shein.aggregationFiltersResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | shein.AggregationFilters | No | ||||
| data.category | shein.FacetCategory | No | ||||
| data.category.children | array | No | ||||
| data.category.id | string | No | 2030 | |||
| data.category.name | string | No | Women Clothing | |||
| data.filters | array | No | ||||
| data.filters[].id | string | No | 87 | |||
| data.filters[].name | string | No | Size | |||
| data.filters[].options | array | No | ||||
| data.filters[].options[].id | string | No | 87_757 | |||
| data.filters[].options[].name | string | No | XXS | |||
| data.keyword | string | No | dress | |||
| data.max_price | string | No | 569 | |||
| data.min_price | string | No | 18 | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/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 POST "https://api.crawlora.net/api/v1/shein/products/aggregation-filters?keyword=dress" \
-H "x-api-key: $CRAWLORA_API_KEY"