foodpanda All-in-One API
Pricing
from $3.12 / 1,000 restaurant listing requests
foodpanda All-in-One API
Unofficial always-on REST API for live foodpanda data in 11 Asian markets: home feed, real-time search, filtered restaurant listings, full detail pages, customer reviews and open/closed status. No account, app or device needed. Runs in Apify Standby.
Pricing
from $3.12 / 1,000 restaurant listing requests
Rating
0.0
(0)
Developer
Romy
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
4 days ago
Last modified
Categories
Share
foodpanda All-in-One API is an unofficial, always-on REST wrapper around foodpanda's own mobile app API, giving you live restaurant data across 11 Asian markets — restaurant listings near any coordinate, real opening-hours/rating/cuisine detail pages, and real-time open/closed status — with no foodpanda account, app, or scraping infrastructure required. Because this Actor runs in Standby mode on the Apify platform, you call it exactly like any other REST API and get JSON back in milliseconds, with Apify handling authentication, scaling, and monitoring for you.
Why use foodpanda All-in-One API?
- Market research — track restaurant density, cuisine mix, and ratings across Singapore, Malaysia, Thailand, Hong Kong, Taiwan, Philippines, Pakistan, Bangladesh, Cambodia, Laos, and Myanmar.
- Competitive intelligence — monitor a competitor's foodpanda presence: rating trend, opening hours, delivery availability.
- Delivery/logistics tooling — check whether a specific vendor is currently accepting delivery orders before routing to it.
- Lead generation — build a list of restaurants in a target area with contact-relevant metadata (chain, cuisine, address).
How to use foodpanda All-in-One API
- Click Try for free and start this Actor (Standby mode starts it once and keeps it warm — no per-run startup cost).
- Copy the Actor's Standby URL from the Standby tab.
- Call any endpoint below directly, e.g.
GET {standby-url}/vendors?country=sg&lat=1.2838&lng=103.8591. - No API key or foodpanda login needed — this is the exact same data the foodpanda app itself shows to a signed-out user.
You can also call it via the Apify API client in your language of choice, or curl/fetch directly.
Input
This Actor takes no run-input configuration — it starts immediately in Standby mode. Every real parameter (country, coordinates, vendor code) is passed per-request as HTTP query parameters. See Endpoints below or the Actor's API tab for the full OpenAPI schema.
Endpoints
GET /home
The real home feed: cuisine categories, active campaigns, and a richer per-vendor shape (live availability status, rating, chain, delivery-time estimation) than GET /vendors.
| Param | Required | Description |
|---|---|---|
country | yes | One of bd, hk, kh, la, mm, my, ph, pk, sg, th, tw |
lat, lng | yes | Coordinates to search near |
GET /search
Real-time search suggestions — matching search terms plus direct vendor deeplinks (name, image, URL) for name matches. The app's own search-bar-as-you-type endpoint.
| Param | Required | Description |
|---|---|---|
country | yes | One of bd, hk, kh, la, mm, my, ph, pk, sg, th, tw |
q | yes | Search text |
lat, lng | yes | Coordinates for locally-relevant results |
GET /vendors
Restaurants/vendors near a location — the exact endpoint the app's own home feed and search screens are built on. Every filter below was individually verified live against the real API (not guessed): each was sent with a real value and the resulting available_count/items were confirmed to actually change.
| Param | Required | Description |
|---|---|---|
country | yes | One of bd, hk, kh, la, mm, my, ph, pk, sg, th, tw |
lat, lng | yes | Coordinates to search near |
limit, offset | no | Pagination (confirmed live) |
sort | no | distance_asc, rating_desc, popularity_desc, or delivery_time_asc — all 4 confirmed live, each returns a genuinely different top result |
cuisine | no | Numeric cuisine id, e.g. 86 = Fast Food. Confirmed to filter items. Real ids for the current market/location are in the response's own listing.aggregations.cuisines[] |
food_characteristic | no | Numeric id, e.g. 81 = Organic. Confirmed to filter items. Real ids in listing.aggregations.foodCharacteristics[] |
budgets | no | Budget tier, 1-4. Confirmed to filter (budgets=1 and budgets=3 return disjoint sets matching that budget value) |
payment_type | no | String id, e.g. credit_card, antfinancial_bkash, balance. Confirmed to filter (payment_type=credit_card cut 692 → 516 results, exactly matching the aggregation's own count). Real ids in listing.aggregations.payment_types[] |
vertical | no | Default restaurants. Confirmed to switch the entire result set — e.g. darkstores returns foodpanda's grocery/pandamart vendors instead |
vertical_type_ids | no | Confirmed to further narrow results within a vertical (e.g. restaurants under vertical=restaurants cut 692 → 544) |
use_free_delivery_label | no | true/false. NOT a filter — confirmed it only toggles whether each item gets a free_delivery_label field; item set/order is unchanged |
tag_label_metadata | no | true/false. NOT a filter — confirmed it toggles whether items[].tags[] carry full discount detail (origin, label_metadata.deal.id, real promo text) vs generic tag codes |
customer_type | no | Default regular. Accepted and forwarded (matches what the real app sends for a signed-out user); no observable effect without a real logged-in session |
GET /vendors/:code
Full restaurant detail page — name, address, opening hours, rating, cuisines, description. :code comes from a /vendors item's code field.
GET /vendors/:code/reviews
Real customer reviews — text, reviewer name, per-topic ratings, like count, date. Paginate with page_key (from a previous response's pageKey).
GET /vendors/:code/status
Real-time open/closed status for one vendor's delivery expedition.
Output
Every response is plain JSON returned directly over HTTP — there's no dataset to download, since this Actor is a live API, not a batch crawler.
{"success": true,"listing": {"available_count": 3705,"returned_count": 3,"items": [{"code": "s41f","name": "PastaGo - Fresh Made Pasta (Vivo City)","address": "1 Harbourfront Walk #B2-53 Vivocity Singapore S098585","cuisines": [{ "name": "Italian" }, { "name": "Pasta" }],"distance": 4.693,"hero_image": "https://foodpanda.dhmedia.io/image/fd-sg/LH/ct0sa-listing.jpeg"}]}}
Data table
| Field | Description |
|---|---|
code | Vendor's unique code — use with /vendors/:code and /vendors/:code/status |
name | Restaurant name |
address | Full street address |
cuisines | Cuisine tags (Italian, Chinese, Halal, ...) |
chain | Chain/brand info if the restaurant is part of one |
distance | Distance in km from the query coordinates |
hero_image | Listing image URL |
rating | Star rating + review count (on /vendors/:code) |
Pricing / Cost estimation
This Actor is billed pay-per-event — you pay only for the endpoints you actually call, at a per-request price shown on the Actor's page. There's no per-minute compute cost since Standby mode keeps the Actor warm between calls.
Tips
- Cache
/vendorsresults client-side for a given area — restaurant listings don't change minute-to-minute. - Use
/vendors/:code/statussparingly and only right before you need a fresh open/closed check — it's a lightweight, focused call by design.
FAQ, disclaimers, and support
This is an unofficial Actor, not affiliated with or endorsed by foodpanda or Delivery Hero SE. It calls foodpanda's own public mobile-app API endpoints, the same ones the real Android app uses for a signed-out user — no account credentials, private data, or bypassed authentication are involved. Use responsibly and in line with foodpanda's Terms of Service.
Known limitation: menu items/individual product detail are not yet exposed by this Actor (foodpanda's GraphQL API serves that from a subgraph not currently reachable via the endpoint this Actor uses) — restaurant-level listing/detail/reviews/status are all covered.
Found an issue or need a custom endpoint added? Use the Issues tab on this Actor's page.