Shopee API endpoint
Returns the official-shop (mall) category directory from Shopee's credential-free `api/v4/official_shop/get_categories` JSON. Public, credential-free endpoint.
/shopee/mall-categoriesPublic endpoint. Credential-free: no cookie, login or af-ac-enc-dat
anti-content header is required. Backed by Shopee's
api/v4/official_shop/get_categories JSON, fetched over a
browser-impersonated HTTP profile because Shopee rejects a bare
Go/Mozilla/5.0 client with error 90309999.
Query parameters:
region (optional, default my) — one of my, sg, id, th, vn, ph, tw, br, mx, co, cl.Response includes region, total, and categories. Each entry has
category_id, name, and image. The upstream "All" pseudo-entry
(category_id: -1) is omitted. Storefronts that do not run the mall directory
(CO/CL observed on 2026-10-28) return a business error (error 10011), surfaced
as a 503 upstream error rather than an empty list.
| Field | Filled in, of 24 checked | Values in the sample |
|---|---|---|
| category_id | 24 | |
| name | 24 | “Muslim Fashion” and 23 other values |
| image | 24 | cf.shopee.com.my |
| 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 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/shopee/mall-categories?region=my" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"region": "my",
"total": 2,
"categories": [
{
"category_id": 11000616,
"name": "Muslim Fashion",
"image": "https://cf.shopee.com.my/file/bced2f5f"
},
{
"category_id": 11000979,
"name": "Mobile & Accessories",
"image": "https://cf.shopee.com.my/file/7ea3e07f"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/shopee.mallCategoriesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | shopee.MallCategoriesResponse | No | ||||
| data.categories | array | No | ||||
| data.categories[].category_id | integer | No | 11000616 | |||
| data.categories[].image | string | No | ||||
| data.categories[].name | string | No | Muslim Fashion | |||
| data.region | string | No | my | |||
| data.total | integer | No | 24 | |||
| 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/mall-categories?region=my" \
-H "x-api-key: $CRAWLORA_API_KEY"