foodpanda All-in-One API avatar

foodpanda All-in-One API

Pricing

from $3.12 / 1,000 restaurant listing requests

Go to Apify Store
foodpanda All-in-One API

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

Romy

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

4 days ago

Last modified

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

  1. Click Try for free and start this Actor (Standby mode starts it once and keeps it warm — no per-run startup cost).
  2. Copy the Actor's Standby URL from the Standby tab.
  3. Call any endpoint below directly, e.g. GET {standby-url}/vendors?country=sg&lat=1.2838&lng=103.8591.
  4. 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.

ParamRequiredDescription
countryyesOne of bd, hk, kh, la, mm, my, ph, pk, sg, th, tw
lat, lngyesCoordinates to search near

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.

ParamRequiredDescription
countryyesOne of bd, hk, kh, la, mm, my, ph, pk, sg, th, tw
qyesSearch text
lat, lngyesCoordinates 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.

ParamRequiredDescription
countryyesOne of bd, hk, kh, la, mm, my, ph, pk, sg, th, tw
lat, lngyesCoordinates to search near
limit, offsetnoPagination (confirmed live)
sortnodistance_asc, rating_desc, popularity_desc, or delivery_time_asc — all 4 confirmed live, each returns a genuinely different top result
cuisinenoNumeric 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_characteristicnoNumeric id, e.g. 81 = Organic. Confirmed to filter items. Real ids in listing.aggregations.foodCharacteristics[]
budgetsnoBudget tier, 1-4. Confirmed to filter (budgets=1 and budgets=3 return disjoint sets matching that budget value)
payment_typenoString 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[]
verticalnoDefault restaurants. Confirmed to switch the entire result set — e.g. darkstores returns foodpanda's grocery/pandamart vendors instead
vertical_type_idsnoConfirmed to further narrow results within a vertical (e.g. restaurants under vertical=restaurants cut 692 → 544)
use_free_delivery_labelnotrue/false. NOT a filter — confirmed it only toggles whether each item gets a free_delivery_label field; item set/order is unchanged
tag_label_metadatanotrue/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_typenoDefault 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

FieldDescription
codeVendor's unique code — use with /vendors/:code and /vendors/:code/status
nameRestaurant name
addressFull street address
cuisinesCuisine tags (Italian, Chinese, Halal, ...)
chainChain/brand info if the restaurant is part of one
distanceDistance in km from the query coordinates
hero_imageListing image URL
ratingStar 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 /vendors results client-side for a given area — restaurant listings don't change minute-to-minute.
  • Use /vendors/:code/status sparingly 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.