Pandamart API endpoint
Returns one darkstore's full category tree: every category and sub-category, each with the upstream-reported product count and (for top-level categories) an image. This lists what categories exist and how large they are -- it does not fetch the items inside any one category. Sub-category product counts are frequently 0 upstream; only top-level counts are reliably populated.
/pandamart/store/categoriesQuery parameters:
market (optional, default sg) — Delivery Hero market the store belongs to. One of sg, pk, bd, hk, my, ph.code (required) — darkstore code, from /pandamart/search's code field, e.g. wsg7.An unknown code returns 404.
Response includes market, code, and categories[]. Each category has id, name, product_count, image_url (top-level only), and sub_categories[] (same shape, one level deep, no further nesting).
| Field | Filled in, of 30 checked | Values in the sample |
|---|---|---|
| id | 30 | |
| name | 30 | “Deals” and 29 other values |
| product_count | 30 | 70 to 8,383, median 288 |
| image_url | 30 | images.dhmedia.io and 1 other host |
| sub_categories | 29 | median 8 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| market | string | No | sg | Delivery Hero market the store belongs to. One of sg, pk, bd, hk, my, ph. Defaults to sg. Allowed values: sg, pk, bd, hk, my, ph. | sg |
| code | string | Yes | Darkstore code, from /pandamart/search's code field | wsg7 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/pandamart/store/categories?market=sg&code=wsg7" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"market": "sg",
"code": "wsg7",
"categories": [
{
"id": "DEALS",
"name": "Deals",
"product_count": 8080,
"image_url": "https://images.dhmedia.io/image/foodpanda/deal_zone/foodpanda_deal_zone_variation2.png"
},
{
"id": "85cceba9-e5c5-4e4a-90cd-a6294e9cf1e4",
"name": "Health & Beauty Fair",
"product_count": 543,
"image_url": "https://foodpanda.dhmedia.io/image/darkstores/nv-global-catalog/sg/308241a5-52eb-4de0-8a2d-f06b67575eb7.jpg",
"sub_categories": [
{
"id": "474c1c4c-bb07-42e4-96c2-f3fa3003ee71",
"name": "Wellness",
"product_count": 0
}
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/pandamart.categoriesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | pandamart.CategoriesResponse | No | ||||
| data.categories | array | No | ||||
| data.categories[].id | string | No | ||||
| data.categories[].image_url | string | No | ||||
| data.categories[].name | string | No | ||||
| data.categories[].product_count | integer | No | ||||
| data.categories[].sub_categories | array | No | ||||
| data.code | string | No | ||||
| data.market | string | No | ||||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/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/pandamart/store/categories?market=sg&code=wsg7" \
-H "x-api-key: $CRAWLORA_API_KEY"