Pandamart API endpoint
Returns pandamart grocery/convenience darkstores delivering to a latitude/longitude. Each store carries its code (the value the store and products endpoints take), name, address, coordinates, budget tier, chain, minimum order amount and delivery fee, delivery/pickup availability, and a hero image. A location with no coverage returns an empty list rather than an error.
/pandamart/searchReturns pandamart (foodpanda's grocery/convenience darkstore vertical) darkstores delivering to a latitude/longitude.
Query parameters:
market (optional, default sg) — Delivery Hero market. One of sg, pk, bd, hk, my, ph.latitude (required) — search center latitude, e.g. 1.3521.longitude (required) — search center longitude, e.g. 103.8198.limit (optional, default 20, max 50) — darkstores to return.offset (optional, default 0) — result offset for pagination.A location with no coverage returns an empty stores list, not an error.
Response includes market, stores[], available_count, returned_count, and offset. Each store has code, name, address, city, latitude, longitude, distance_km, budget (a 1-4 tier), chain (code, name), hero_image_url, minimum_delivery_fee, minimum_order_amount, minimum_delivery_time_minutes, is_delivery_available, is_pickup_available, has_discount, timezone, web_path, and tags[] (code, text).
| Field | Filled in, of 1 checked | Values in the sample |
|---|---|---|
| code | 1 | |
| name | 1 | “pandamart Kallang Way” |
| address | 1 | |
| city | 1 | “Singapore” |
| latitude | 1 | |
| longitude | 1 | |
| distance_km | 1 | 5.37 |
| budget | 1 | 2 |
| chain | 1 | |
| hero_image_url | 1 | foodpanda.dhmedia.io |
| minimum_delivery_fee | 1 | 4.99 |
| minimum_order_amount | 1 | 17 |
| minimum_delivery_time_minutes | 1 | 30 |
| is_delivery_available | 1 | true in 1 of 1 |
| is_pickup_available | 1 | true in 1 of 1 |
| has_discount | 1 | true in 0 of 1 |
| timezone | 1 | “Asia/Singapore” |
| web_path | 1 | foodpanda.sg |
| tags | 1 | median 1 entry |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| market | string | No | sg | Delivery Hero market. One of sg, pk, bd, hk, my, ph. Defaults to sg. Allowed values: sg, pk, bd, hk, my, ph. | sg |
| latitude | number | Yes | Search center latitude | 1.3521 | |
| longitude | number | Yes | Search center longitude | 103.8198 | |
| limit | integer | No | Darkstores to return, clamped to 50 (default 20) | 20 | |
| offset | integer | No | Result offset for pagination (default 0) | 0 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/pandamart/search?market=sg&latitude=1.3521&longitude=103.8198&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"market": "sg",
"stores": [
{
"code": "wsg7",
"name": "pandamart Kallang Way",
"address": "164 Kallang Way #02-15, Singapore 349248",
"city": "Singapore",
"latitude": 1.32439836,
"longitude": 103.8760178,
"distance_km": 5.365,
"budget": 2,
"chain": {
"code": "cl5jl",
"name": "PandaMart SG"
},
"hero_image_url": "https://foodpanda.dhmedia.io/image/fd-sg/LH/cl5jl-listing.jpg",
"minimum_delivery_fee": 4.99,
"minimum_order_amount": 17,
"minimum_delivery_time_minutes": 30,
"is_delivery_available": true,
"is_pickup_available": true,
"has_discount": false,
"timezone": "Asia/Singapore",
"web_path": "https://foodpanda.sg/restaurant/wsg7/pandamart-kallang-way-wsg7"
}
],
"available_count": 1,
"returned_count": 1,
"offset": 0
}
}Request schema
No body schema
Response schema
#/definitions/pandamart.searchResponseDoc
| 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.SearchResponse | No | ||||
| data.available_count | integer | No | ||||
| data.market | string | No | ||||
| data.offset | integer | No | ||||
| data.returned_count | integer | No | ||||
| data.stores | array | No | ||||
| data.stores[].address | string | No | ||||
| data.stores[].budget | integer | No | ||||
| data.stores[].chain | pandamart.Chain | No | ||||
| data.stores[].chain.code | string | No | ||||
| data.stores[].chain.name | string | No | ||||
| data.stores[].city | string | No | ||||
| data.stores[].code | string | No | ||||
| data.stores[].distance_km | number | No | ||||
| data.stores[].has_discount | boolean | No | ||||
| data.stores[].hero_image_url | string | No | ||||
| data.stores[].is_delivery_available | boolean | No | ||||
| data.stores[].is_pickup_available | boolean | No | ||||
| data.stores[].latitude | number | No | ||||
| data.stores[].longitude | number | No | ||||
| data.stores[].minimum_delivery_fee | number | No | ||||
| data.stores[].minimum_delivery_time_minutes | number | No | ||||
| data.stores[].minimum_order_amount | number | No | ||||
| data.stores[].name | string | No | ||||
| data.stores[].tags | array | No | ||||
| data.stores[].tags[].code | string | No | ||||
| data.stores[].tags[].text | string | No | ||||
| data.stores[].timezone | string | No | ||||
| data.stores[].web_path | 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 |
| 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/search?market=sg&latitude=1.3521&longitude=103.8198&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"