Shopee API endpoint
Returns localized names, parent chain and images for up to 20 category ids from the credential-free `api/v4/search/get_fe_category_detail` JSON. Public, credential-free endpoint.
/shopee/category-detailPublic endpoint. Credential-free: no cookie or login is required. Backed by
Shopee's api/v4/search/get_fe_category_detail?catids= JSON.
Query parameters:
region (optional, default my) — one of my, sg, id, th, vn, ph, tw, br, mx, co, cl.catids (required) — comma-separated category ids, up to 20 (real ids only; unknown ids are omitted by the upstream).CO/CL storefronts were observed returning an upstream business error (204)
for this surface on 2026-10-28 (surfaced as 503); the other nine regions were
cold-checked across their full category inventories.
Response includes region, the requested catids, and categories[] with
category_id, parent_category_ids, name, display_names[]
(lang/value/is_default), image, and level.
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| region | string | No | Shopee region: my, sg, id, th, vn, ph, tw, br, mx, co, cl (default my) Allowed values: my, sg, id, th, vn, ph, tw, br, mx, co, cl. | my | |
| catids | string | Yes | Comma-separated category ids (max 20) | 11000979,11000993 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/shopee/category-detail?region=my&catids=11000979%2C11000993" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"region": "my",
"catids": [
11000979
],
"categories": [
{
"category_id": 11000979,
"name": "Mobile & Accessories",
"display_names": [
{
"lang": "en",
"value": "Mobile & Accessories",
"is_default": true
},
{
"lang": "zh-Hans",
"value": "手机与配件"
}
],
"image": "https://cf.shopee.com.my/file/7ea3e07f",
"level": 1
}
]
}
}Request schema
No body schema
Response schema
#/definitions/shopee.categoryDetailResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | shopee.CategoryDetailResponse | No | ||||
| data.categories | array | No | ||||
| data.categories[].category_id | integer | No | 11000979 | |||
| data.categories[].display_names | array | No | ||||
| data.categories[].display_names[].is_default | boolean | No | ||||
| data.categories[].display_names[].lang | string | No | en | |||
| data.categories[].display_names[].value | string | No | Mobile & Accessories | |||
| data.categories[].image | string | No | ||||
| data.categories[].level | integer | No | ||||
| data.categories[].name | string | No | Mobile & Accessories | |||
| data.categories[].parent_category_ids | array | No | ||||
| data.catids | array | No | ||||
| data.region | string | No | my | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/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/shopee/category-detail?region=my&catids=11000979%2C11000993" \
-H "x-api-key: $CRAWLORA_API_KEY"