Shopee API endpoint
Returns homepage merchandising banners for one slot from the credential-free `api/v4/banner/batch_list_by_spaces` POST JSON. Public, credential-free endpoint.
/shopee/bannersPublic endpoint. Credential-free: no cookie or login is required. Backed by
Shopee's api/v4/banner/batch_list_by_spaces POST JSON. The upstream
expects the browser-generated X-CSRFToken header (value not validated), so a
random per-request token is sent, and requests use a browser-impersonated HTTP
profile.
Query parameters:
region (optional, default my) — one of my, sg, id, th, vn, ph, tw, br, mx, co, cl.slot (optional, default HOME_CAROUSEL_01) — one of HOME_CAROUSEL_01, HOME_SKINNY_01, HOME_NUZ_CAROUSEL_01, HOME_FLOATING, HOME_POPUP_01, HOME_MALL_01.space_key (optional) — raw PC-<CC>-<SLOT> override (takes precedence over slot).Response includes region, slot, space_key, ratio, and banners[] with
banner_id, campaign_unit_id, slot_id, image, url, start_time, and
end_time. Placeholder banners are omitted.
| Field | Filled in, of 3 checked | Values in the sample |
|---|---|---|
| banner_id | 3 | |
| campaign_unit_id | 3 | |
| slot_id | 3 | |
| image | 3 | cf.shopee.com.my |
| url | 3 | shopee.com.my |
| start_time | 3 | 2026-10-25 |
| end_time | 3 | 2026-10-31 |
| 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 | |
| slot | string | No | Banner slot: HOME_CAROUSEL_01, HOME_SKINNY_01, HOME_NUZ_CAROUSEL_01, HOME_FLOATING, HOME_POPUP_01, HOME_MALL_01 (default HOME_CAROUSEL_01) Allowed values: HOME_CAROUSEL_01, HOME_SKINNY_01, HOME_NUZ_CAROUSEL_01, HOME_FLOATING, HOME_POPUP_01, HOME_MALL_01. | HOME_CAROUSEL_01 | |
| space_key | string | No | Raw PC-<CC>-<SLOT> space key override | PC-MY-HOME_CAROUSEL_01 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/shopee/banners?region=my&slot=HOME_CAROUSEL_01" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"region": "my",
"slot": "HOME_CAROUSEL_01",
"space_key": "PC-MY-HOME_CAROUSEL_01",
"ratio": 3.333,
"banners": [
{
"banner_id": 265864,
"campaign_unit_id": 163078,
"slot_id": 2,
"image": "https://cf.shopee.com.my/file/my-111",
"url": "https://shopee.com.my/m/11-11#CS1",
"start_time": 1792944000,
"end_time": 1793289599
}
]
}
}Request schema
No body schema
Response schema
#/definitions/shopee.bannersResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | shopee.BannersResponse | No | ||||
| data.banners | array | No | ||||
| data.banners[].banner_id | integer | No | 265864 | |||
| data.banners[].campaign_unit_id | integer | No | ||||
| data.banners[].end_time | integer | No | ||||
| data.banners[].image | string | No | ||||
| data.banners[].slot_id | integer | No | ||||
| data.banners[].start_time | integer | No | ||||
| data.banners[].url | string | No | ||||
| data.ratio | number | No | 3.3333333 | |||
| data.region | string | No | my | |||
| data.slot | string | No | HOME_CAROUSEL_01 | |||
| data.space_key | string | No | PC-MY-HOME_CAROUSEL_01 | |||
| 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/banners?region=my&slot=HOME_CAROUSEL_01" \
-H "x-api-key: $CRAWLORA_API_KEY"