Sephora API endpoint
Returns Sephora's own search-box type-ahead suggestions for a partial keyword: keyword-completion terms, matching products, and trending/related categories. Sephora's own upstream never returns a genuine zero-result state for a nonempty query -- a deliberately nonsense query still returns unrelated product suggestions.
/sephora/suggestQuery parameters:
query: required. Free-text partial search keywords, e.g. masc.Notable response behavior:
terms, products, and
categories all empty).terms are keyword completions (e.g. mascara, mascara volume).products are direct product matches, each with brand, rating, review
count, and a thumbnail image.categories are trending/related category suggestions with their own
browse URL.| Field | Filled in, of 5 checked | Values in the sample |
|---|---|---|
| product_id | 5 | |
| sku_id | 5 | |
| brand_name | 5 | “Benefit Cosmetics” and 4 other values |
| product_name | 5 | “BADgal BANG! Volumizing 36-Hour Longwear Mascara” and 4 other values |
| rating | 5 | 3.72 to 4.44, median 4.12 |
| review_count | 5 | 678 to 19,691, median 6,108 |
| image_url | 5 | sephora.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| query | string | Yes | Partial search keywords | masc | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/sephora/suggest?query=masc" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "masc",
"terms": [
{
"term": "mascara"
},
{
"term": "mascara smudge proof"
}
],
"products": [
{
"product_id": "P431750",
"sku_id": "2850378",
"brand_name": "ILIA",
"product_name": "Limitless Lash Mascara - Clean Lengthening Mascara",
"rating": 4.1361,
"review_count": 7773,
"image_url": "https://www.sephora.com/productimages/sku/s2850378-main-thumb-50.jpg"
}
],
"categories": [
{
"name": "Mascara",
"url": "https://www.sephora.com/shop/mascara"
}
],
"source_url": "https://www.sephora.com/api/v2/catalog/search/?...",
"fetched_at": "2026-08-15T12:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/sephora.suggestResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | sephora.SuggestResponse | No | ||||
| data.categories | array | No | ||||
| data.categories[].name | string | No | Mascara | |||
| data.categories[].url | string | No | https://www.sephora.com/shop/mascara | |||
| data.fetched_at | string | No | ||||
| data.products | array | No | ||||
| data.products[].brand_name | string | No | ILIA | |||
| data.products[].image_url | string | No | ||||
| data.products[].product_id | string | No | P431750 | |||
| data.products[].product_name | string | No | ||||
| data.products[].rating | number | No | 4.1361 | |||
| data.products[].review_count | integer | No | ||||
| data.products[].sku_id | string | No | ||||
| data.query | string | No | masc | |||
| data.source_url | string | No | ||||
| data.terms | array | No | ||||
| data.terms[].term | string | No | mascara | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/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/sephora/suggest?query=masc" \
-H "x-api-key: $CRAWLORA_API_KEY"