Foodpanda Reviews Scraper — Review Text, Ratings & Replies
Pricing
from $1.20 / 1,000 reviews
Foodpanda Reviews Scraper — Review Text, Ratings & Replies
Scrape Foodpanda restaurant reviews: review text, per-topic ratings (overall/food/rider), reviewer name, dates, likes, vendor replies. MY/SG/HK/PH/TW/PK/BD/KH/MM/LA. Public review surface, no login. Pay per review delivered.
Pricing
from $1.20 / 1,000 reviews
Rating
0.0
(0)
Developer
subimpact
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
2
Monthly active users
7 days ago
Last modified
Categories
Features
Share
Foodpanda Reviews Scraper
Scrape restaurant reviews from Foodpanda, plus the Delivery Hero brands that run on the same reviews backend: Yemeksepeti (Turkey) and foodora (Norway, Hungary, Czechia). You get review text, per-topic ratings (overall, food, rider), reviewer name, dates, likes and vendor replies.
Unlike the many "restaurant and menu" scrapers on the Store, this Actor is reviews-first: it returns the actual review text, not just the aggregate rating number.
Two ways to run it
- Restaurant codes or URLs. Paste one or more restaurant codes, or full restaurant URLs. Pagination is handled for you.
- Find restaurants near a location. Give a city (or a
lat,lngpoint) and the Actor pulls the restaurants the platform lists there, then scrapes their reviews. Every row then carries the restaurant name, its rating, its review count, its cuisines and its coordinates.
Markets
| Country code | Platform | Public site |
|---|---|---|
my | foodpanda | foodpanda.my |
sg | foodpanda | foodpanda.sg |
hk | foodpanda | foodpanda.hk |
ph | foodpanda | foodpanda.ph |
tw | foodpanda | foodpanda.com.tw |
pk | foodpanda | foodpanda.pk |
bd | foodpanda | foodpanda.com.bd |
kh | foodpanda | foodpanda.com.kh |
mm | foodpanda | foodpanda.com.mm |
la | foodpanda | foodpanda.la |
tr | Yemeksepeti | yemeksepeti.com |
no | foodora | foodora.no |
hu | foodora | foodora.hu |
cz | foodora | foodora.cz |
Every row carries a platform field (foodpanda, yemeksepeti or foodora) so a multi-market dataset stays readable.
How to use
- Open a restaurant page. The URL looks like
https://www.foodpanda.my/restaurant/zqj6/sakom-village. - Either copy the short code (
zqj6) into Restaurant codes, or paste the whole URL into Restaurant URLs. The code and the market are read from the URL. - Or skip codes entirely: put
Istanbulor3.1390,101.6869in Locations and set how many restaurants you want per location. - Start the run.
Example input (discovery mode)
{"locations": ["Istanbul"],"maxRestaurantsPerLocation": 2,"maxTotalReviews": 20}
That run lists restaurants near central Istanbul, takes the first two, and stops after 20 reviews.
Example input (restaurant codes)
{"vendorUrls": ["https://www.foodpanda.my/restaurant/zqj6/sakom-village"],"maxReviewsPerVendor": 50}
Input
| Field | Type | Description |
|---|---|---|
vendorCodes | string[] | Restaurant codes, e.g. zqj6. URLs are accepted too. Prefilled with a working sample vendor. |
vendorUrls | string[] | Full restaurant URLs. Codes and market are extracted automatically. |
locations | string[] | Discovery: a city preset name (Kuala Lumpur, Penang, Johor Bahru, Singapore, Hong Kong, Manila, Taipei, Karachi, Lahore, Dhaka, Phnom Penh, Yangon, Vientiane, Istanbul, Oslo, Budapest, Prague) or a lat,lng pair. Ignored when codes or URLs are given. |
maxRestaurantsPerLocation | int | Discovery: how many restaurants to take per location (1 to 500, default 20). |
minRestaurantReviews | int | Discovery: skip restaurants with fewer reviews than this in the listing (default 0, keep all). |
country | string | Market for the reviews API (default my). In discovery mode a city preset sets the market itself. |
maxReviewsPerVendor | int | Cap per restaurant (0 = all). |
maxVendors | int | Cap the number of restaurants processed (0 = all). |
maxTotalReviews | int | Safety cap on total reviews delivered across the whole run (default 1000, 0 = unlimited). |
Output (one row per review)
| Field | Description |
|---|---|
rowType | review for a review, info or error for a location note (notes are never charged) |
platform | foodpanda, yemeksepeti or foodora |
country | Market code |
vendorCode | Restaurant code |
reviewId | Review UUID |
reviewText | Full review text |
reviewerName | Reviewer display name as the platform shows it (or Anonymous) |
reviewerId | Reviewer identifier |
isAnonymous | Anonymous flag |
ratingOverall | Overall star rating (1 to 5) |
ratingFood | Food score (1 to 5) when the platform shows one |
ratingRider | Rider score (1 to 5) when the platform shows one |
ratings | Full per-topic ratings array |
likes | Like/helpful count |
vendorReply | Restaurant reply text when there is one |
createdAt | Review timestamp (ISO) |
reviewUrl | Public review page URL |
restaurantName | Restaurant name (discovery mode) |
restaurantRating | Restaurant average rating, e.g. 4.5 (discovery mode) |
restaurantReviewCount | Total reviews the restaurant has (discovery mode) |
restaurantCuisines | Cuisine names (discovery mode) |
restaurantLatitude, restaurantLongitude | Restaurant coordinates (discovery mode) |
location | The location this restaurant came from (discovery mode) |
error | Message on info/error rows, otherwise null |
When you pass codes or URLs instead of locations, the restaurant fields are null, because the code does not carry that information.
Example output row
A real row from a Kuala Lumpur run (codes mode):
{"rowType": "review","platform": "foodpanda","vendorCode": "zqj6","country": "my","reviewId": "70c8c110-67b2-4ee2-83be-099492863bc5","reviewText": "ordered apple juice smlm tapi x dpt. pls double check the customer’s order ","reviewerName": "Fazida","reviewerId": "myn3lqtw","isAnonymous": false,"ratingOverall": 2,"ratingFood": 2,"ratingRider": null,"ratings": [{ "topic": "overall", "score": 2 }, { "topic": "restaurant_food", "score": 2 }],"likes": 0,"vendorReply": null,"createdAt": "2026-08-09T10:36:36Z","reviewUrl": "https://www.foodpanda.my/restaurant/zqj6/reviews","restaurantName": null,"restaurantRating": null,"restaurantReviewCount": null,"restaurantCuisines": null,"restaurantLatitude": null,"restaurantLongitude": null,"location": null,"error": null}
A discovery-mode row looks the same, but the restaurant* fields and location are filled in.
Discovery mode
Give a city name or a lat,lng pair and the Actor asks the platform which restaurants it lists at that point. It takes the first N of them (in the platform order, which is the platform's own relevance ranking for that location), then scrapes reviews for each. Restaurants that appear in more than one location are scraped once.
- A location the Actor cannot use (unknown city, bad coordinates) produces one
errorrow and the rest of the run continues. - A location with no restaurants produces one
inforow. - Discovery itself is not charged. You pay only for review rows.
Discovery was verified in Malaysia, Turkey, Norway, Hungary and Czechia. The other Foodpanda markets use the same listing backend but were not probed, so a location there may come back empty; if it does, you get the uncharged row described above.
Use cases
- Reputation and sentiment analysis for restaurant chains across markets
- Food quality monitoring (food scores, delivery and rider complaints)
- Competitor review benchmarking for F&B market research
- AI and RAG training data: natural-language reviews with structured ratings
Pricing
Pay per event: $1.50 per 1,000 reviews on the Free plan ($0.0015 per review), with lower prices on paid Apify plans: $1.40 (Bronze), $1.30 (Silver) and $1.20 (Gold and above) per 1,000. You only pay for reviews actually delivered. Platform usage (compute) is included in the event price.
How this compares
This Actor does one job: reviews over plain HTTP at 512 MB, with no browser, so runs start in seconds and the event price already covers compute. Every review row carries the per-topic ratings and the restaurant's reply where there is one.
| Actor | Price per 1,000 reviews (Free plan) | Price per 1,000 reviews (Gold plan) | Platform usage |
|---|---|---|---|
| subimpact/foodpanda-reviews-api (this Actor) | $1.50 | $1.20 | Included |
| romy/foodpanda-reviews-scraper | $2.00 | $1.56 | Included |
| e-commerce/food-delivery-scraper (multi-platform, review event) | $2.00 | $0.70 | Included |
Prices are Apify Store list prices as of 29 October 2026 and can change.
Notes and limitations
- This Actor collects publicly visible review data from the platforms' public review surfaces. Use it in accordance with the platforms' terms of service and local regulations. Reviewer names are shown as the platform itself shows them on the public page.
- Reviews availability varies by restaurant. Some have no reviews yet, and an empty result is normal for new or small restaurants.
- Each reviews page holds up to 30 reviews. Older pages depend on the platform's own paging cursor; if the cursor stops moving forward the Actor ends that restaurant instead of repeating rows, so a very large
maxReviewsPerVendormay deliver fewer rows than you asked for. - Restaurant codes are four characters on all markets above, but a code only works in the market it belongs to. Let the Actor read the market from the URL when you mix markets in one run.
- Not affiliated with Delivery Hero, Foodpanda, Yemeksepeti or foodora.