# Wongnai Restaurants Search Scraper (`stealth_mode/wongnai-restaurants-search-scraper`) Actor

Scrape Wongnai.com restaurant listings at scale. Extract 80+ fields per venue including ratings, hours, location, delivery info, deals, photos, and more — perfect for food tech, market research, and hospitality analytics.

- **URL**: https://apify.com/stealth\_mode/wongnai-restaurants-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, Travel
- **Stats:** 9 total users, 2 monthly users, 74.1% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Wongnai.com Restaurant Scraper: Extract Thailand's Top Dining Data

---

### What Is Wongnai.com?

Wongnai is Thailand's largest restaurant discovery and food delivery platform, listing hundreds of thousands of venues across the country — from street food stalls to fine dining. It is a primary source for restaurant ratings, menus, promotions, and location data in the Thai market.

Manually collecting this data is impractical at any meaningful scale. The **Wongnai Restaurant Search Scraper** automates extraction from Wongnai's paginated search and category pages, delivering structured records ready for analysis or integration.

---

### Overview

The **Wongnai Scraper** targets Wongnai's business listing pages and extracts rich, per-venue records with 80+ fields. Designed for:

- **Food tech developers** building restaurant aggregators or recommendation engines
- **Market researchers** analyzing Thailand's F&B landscape
- **Delivery platforms** seeking competitive intelligence on deals and promos
- **Location intelligence teams** mapping dining density and categories

Key features: configurable page volume via `max_items_per_url`, fault-tolerant URL handling, and support for domain-filtered and paginated search URLs.

---

### Input Format

```json
{
  "urls": [
    "https://www.wongnai.com/businesses?page.size=10&rerank=false&domain=1&page.number=3"
  ],
  "max_items_per_url": 200,
  "ignore_url_failures": true
}
````

| Field | Type | Default | Description |
|---|---|---|---|
| `urls` | array | — | Wongnai business listing/search page URLs to scrape. Add one per line or use bulk edit. Supports paginated URLs via `page.number` and filtered URLs via `domain`. |
| `max_items_per_url` | integer | `20` | Maximum number of restaurant records to collect per URL. Increase to `200`+ for larger runs. |
| `ignore_url_failures` | boolean | `true` | When `true`, the scraper skips failed URLs and continues rather than stopping the entire run. Recommended for bulk jobs. |

> **Tip:** Adjust `page.size` and `page.number` in the URL to paginate through results. Use `domain=1` for restaurants; other domain values may target hotels or attractions.

***

### Output Format

**Sample output**

```json
{
  "is_owner": false,
  "id": 3178329,
  "eid": null,
  "gid": "09VySCoPNazmheIwnR2Su2EFtmoBLe",
  "public_id": "3178329cT",
  "name_only": {
    "primary": "Caesa Delicious",
    "thai": "Caesa Delicious",
    "english": null
  },
  "branch": {
    "primary": "สาขา 2",
    "thai": "สาขา 2",
    "english": null
  },
  "url": "restaurants/3178329cT-caesa-delicious-%E0%B8%AA%E0%B8%B2%E0%B8%82%E0%B8%B2-2",
  "short_url": "r/3178329cT",
  "r_url": "restaurants/3178329cT-caesa-delicious-%E0%B8%AA%E0%B8%B2%E0%B8%82%E0%B8%B2-2",
  "r_short_url": "r/3178329cT",
  "photos_url": "restaurants/3178329cT-caesa-delicious-%E0%B8%AA%E0%B8%B2%E0%B8%82%E0%B8%B2-2/photos",
  "verified_info": false,
  "verified_location": false,
  "domain": {
    "name": "MAIN",
    "value": 1
  },
  "lat": 13.662747770781136,
  "lng": 100.38488985970616,
  "zipcode": "10150",
  "price_range": {
    "name": "101 - 250 บาท",
    "value": 2
  },
  "new_business": false,
  "opening_date": null,
  "name": "Caesa Delicious สาขา 2",
  "display_name": "Caesa Delicious สาขา 2",
  "chain": null,
  "logo": null,
  "categories": [
    {
      "id": 35,
      "name": "สเต๊ก",
      "international_name": "Steak House",
      "icon_url": "https://static2.wongnai.com/static/7.91.0/category/common/images/color/35.png",
      "icon_full_url": "https://static2.wongnai.com/static/7.91.0/category/common/images/color/35.png",
      "nice_photo": {
        "photo_id": "21f7ed956f194fcc8c94bb4fbeae33e8",
        "url": "photos/21f7ed956f194fcc8c94bb4fbeae33e8",
        "description": "Steak House/Barbeque",
        "content_url": "https://img.wongnai.com/p/_-x_/deleted/2017/10/05/21f7ed956f194fcc8c94bb4fbeae33e8.jpg",
        "width": 800,
        "height": 600,
        "photo_url": "photos/21f7ed956f194fcc8c94bb4fbeae33e8",
        "thumbnail_url": null
      },
      "domain": {
        "name": "MAIN",
        "value": 1
      }
    },
    {
      "id": 63,
      "name": "เบอร์เกอร์",
      "international_name": "Burger",
      "icon_url": "https://static2.wongnai.com/static/7.91.0/category/common/images/color/63.png",
      "icon_full_url": "https://static2.wongnai.com/static/7.91.0/category/common/images/color/63.png",
      "nice_photo": {
        "photo_id": "ab25bd17f3f14583b690936718406375",
        "url": "photos/ab25bd17f3f14583b690936718406375",
        "description": "Burger",
        "content_url": "https://img.wongnai.com/p/_-x_/2018/10/31/ab25bd17f3f14583b690936718406375.jpg",
        "width": 1024,
        "height": 1024,
        "photo_url": "photos/ab25bd17f3f14583b690936718406375",
        "thumbnail_url": null
      },
      "domain": {
        "name": "MAIN",
        "value": 1
      }
    },
    {
      "id": 5,
      "name": "อาหารอิตาเลียน",
      "international_name": "Italian",
      "icon_url": "https://static2.wongnai.com/static/7.91.0/category/common/images/color/5.png",
      "icon_full_url": "https://static2.wongnai.com/static/7.91.0/category/common/images/color/5.png",
      "nice_photo": {
        "photo_id": "9f42b6c4b0ad412380486792d29d0c28",
        "url": "photos/9f42b6c4b0ad412380486792d29d0c28",
        "description": "Italian",
        "content_url": "https://img.wongnai.com/p/_-x_/2017/11/04/9f42b6c4b0ad412380486792d29d0c28.jpg",
        "width": 1920,
        "height": 1920,
        "photo_url": "photos/9f42b6c4b0ad412380486792d29d0c28",
        "thumbnail_url": null
      },
      "domain": {
        "name": "MAIN",
        "value": 1
      }
    }
  ],
  "default_photo": {
    "photo_id": "3f85dc0478bd49fd90802f0826e8ab6e",
    "url": "photos/3f85dc0478bd49fd90802f0826e8ab6e",
    "description": "MENU_3178329cT_1743571611",
    "content_url": "https://img.wongnai.com/p/_-x_/2025/04/02/3f85dc0478bd49fd90802f0826e8ab6e.jpg",
    "width": 1900,
    "height": 887,
    "photo_url": "photos/3f85dc0478bd49fd90802f0826e8ab6e",
    "thumbnail_url": null
  },
  "place": null,
  "place_information": null,
  "target_view_group_id": 9681,
  "is_thailand": true,
  "business_tags": [],
  "rating": 0,
  "main_photo": {
    "photo_id": "76e804bae5364d428a5321ce3adbc396",
    "url": "photos/76e804bae5364d428a5321ce3adbc396",
    "description": "restaurantPhoto",
    "content_url": "https://img.wongnai.com/p/_-x_/2026/03/29/76e804bae5364d428a5321ce3adbc396.jpg",
    "width": 1920,
    "height": 1080,
    "photo_url": "photos/76e804bae5364d428a5321ce3adbc396",
    "thumbnail_url": null
  },
  "working_hours_status": {
    "open": false,
    "message": "จะเปิดในเวลา 11:00",
    "temporary_close_start_date": null,
    "temporary_close_end_date": null,
    "closing_soon": false
  },
  "hours": [
    {
      "day": 1,
      "from": "11:00",
      "to": "21:00"
    },
    {
      "day": 2,
      "from": "11:00",
      "to": "21:00"
    },
    {
      "day": 3,
      "from": "11:00",
      "to": "21:00"
    },
    {
      "day": 5,
      "from": "11:00",
      "to": "21:00"
    },
    {
      "day": 6,
      "from": "11:00",
      "to": "21:00"
    },
    {
      "day": 7,
      "from": "11:00",
      "to": "21:00"
    }
  ],
  "official": true,
  "premium": true,
  "portrait_mode": true,
  "portrait_mode_cover_photo": {
    "photo_id": "a1c94199634c4109980fe1f450555d6f",
    "url": "photos/a1c94199634c4109980fe1f450555d6f",
    "description": "Caesa Delicious",
    "content_url": "https://img.wongnai.com/p/_-x_/2026/05/29/a1c94199634c4109980fe1f450555d6f.jpg",
    "width": 591,
    "height": 1280,
    "photo_url": "photos/a1c94199634c4109980fe1f450555d6f",
    "thumbnail_url": null
  },
  "featured": true,
  "featured_id": 7786534,
  "featured_target": "business",
  "tracking_ref": "3178329cT",
  "featured_message": "เพชรเม็ดงามย่านบางบอน อาหารยุโรปเลิศรสในบรรยากาศสุดชิลราคาเป็นมิตรจนตกใจ",
  "icon_featured": null,
  "users_choice": null,
  "statistic": {
    "number_of_bookmarks": 16,
    "number_of_photos": 18,
    "number_of_user_photos": 18,
    "rating": 0,
    "number_of_reviews": 2,
    "show_rating": false,
    "number_of_ratings": 2,
    "number_of_videos": 0
  },
  "video": null,
  "distance": null,
  "pickup_information": {
    "available": true
  },
  "has_preventive_measures": false,
  "contact": {
    "address": {
      "street": "670/1 , ถนนบางบอน 3 บางบอน บางบอน กรุงเทพมหานคร",
      "hint": "",
      "sub_district": {
        "id": 219,
        "name": "บางบอน"
      },
      "district": {
        "id": 218,
        "name": "บางบอน"
      },
      "city": {
        "id": 1,
        "name": "กรุงเทพมหานคร"
      }
    },
    "businessno": null,
    "homepage": null,
    "facebook_homepage": null,
    "email": "nongarh@yahoo.com",
    "callable_phoneno": "0961103939",
    "callable_phone_numbers": [
      "0961103939"
    ],
    "phoneno": "0961103939",
    "line": null,
    "instagram": null
  },
  "best_discount_deal": null,
  "best_selling_deal": null,
  "closed": false,
  "completeness": 3,
  "deals_url": "restaurants/3178329cT-caesa-delicious-%E0%B8%AA%E0%B8%B2%E0%B8%82%E0%B8%B2-2/deals",
  "move_to_url": null,
  "neighborhoods": null,
  "top_favourites": [],
  "logo_url": null,
  "ranking": {
    "rank": 4,
    "number_of_businesses": 48,
    "text1": "อันดับ #4 จาก 48",
    "text2": "ร้านสเต๊ก ในเขตบางบอน",
    "search_query": {
      "name": "ร้านสเต๊ก ในเขตบางบอน",
      "url": "rankings?category=35&region=218",
      "path": "rankings",
      "params": [
        {
          "name": "category",
          "value": "35",
          "description": null
        },
        {
          "name": "region",
          "value": "218",
          "description": null
        }
      ]
    }
  },
  "menu": {
    "texts": {
      "url": "restaurants/3178329cT-caesa-delicious-%E0%B8%AA%E0%B8%B2%E0%B8%82%E0%B8%B2-2/menu",
      "number_of_items": 153,
      "updated_time": {
        "iso": "2026-05-29T11:56:18+07:00",
        "full": "ศ., 29 พ.ค. 2026 11:56:18",
        "time_passed": "13 ชั่วโมงที่แล้ว"
      },
      "groups_url": "restaurants/3178329cT-caesa-delicious-%E0%B8%AA%E0%B8%B2%E0%B8%82%E0%B8%B2-2/menu/groups"
    },
    "photos": null,
    "previewed_items": null
  },
  "photos": {
    "page": {
      "page_information": {
        "number": 1,
        "size": 8
      },
      "first": 1,
      "last": 8,
      "total_number_of_pages": 1,
      "total_number_of_entities": 8,
      "entities": [
        {
          "photo_id": "3f85dc0478bd49fd90802f0826e8ab6e",
          "url": "photos/3f85dc0478bd49fd90802f0826e8ab6e",
          "description": "MENU_3178329cT_1743571611",
          "content_url": "https://img.wongnai.com/p/_-x_/2025/04/02/3f85dc0478bd49fd90802f0826e8ab6e.jpg",
          "width": 1900,
          "height": 887,
          "photo_url": "photos/3f85dc0478bd49fd90802f0826e8ab6e",
          "thumbnail_url": null
        },
        {
          "photo_id": "f88930b17868412db98782d8a847c51f",
          "url": "photos/f88930b17868412db98782d8a847c51f",
          "description": "MENU_3178329cT_1743571613",
          "content_url": "https://img.wongnai.com/p/_-x_/2025/04/02/f88930b17868412db98782d8a847c51f.jpg",
          "width": 1900,
          "height": 1653,
          "photo_url": "photos/f88930b17868412db98782d8a847c51f",
          "thumbnail_url": null
        },
        {
          "photo_id": "bb2350570c4a44b5bd7faeeffc271b40",
          "url": "photos/bb2350570c4a44b5bd7faeeffc271b40",
          "description": "MENU_3178329cT_1743571615",
          "content_url": "https://img.wongnai.com/p/_-x_/2025/04/02/bb2350570c4a44b5bd7faeeffc271b40.jpg",
          "width": 512,
          "height": 341,
          "photo_url": "photos/bb2350570c4a44b5bd7faeeffc271b40",
          "thumbnail_url": null
        },
        {
          "photo_id": "7aea612d8f0449beb1a69f7f062a0613",
          "url": "photos/7aea612d8f0449beb1a69f7f062a0613",
          "description": "MENU_3178329cT_1743571616",
          "content_url": "https://img.wongnai.com/p/_-x_/2025/04/02/7aea612d8f0449beb1a69f7f062a0613.jpg",
          "width": 512,
          "height": 341,
          "photo_url": "photos/7aea612d8f0449beb1a69f7f062a0613",
          "thumbnail_url": null
        },
        {
          "photo_id": "f455dfd859064968a765be7d766c73ef",
          "url": "photos/f455dfd859064968a765be7d766c73ef",
          "description": "MENU_3178329cT_1743571629",
          "content_url": "https://img.wongnai.com/p/_-x_/2025/04/02/f455dfd859064968a765be7d766c73ef.jpg",
          "width": 880,
          "height": 1860,
          "photo_url": "photos/f455dfd859064968a765be7d766c73ef",
          "thumbnail_url": null
        },
        {
          "photo_id": "b7a9d8f03bac484faa0ae16430839297",
          "url": "photos/b7a9d8f03bac484faa0ae16430839297",
          "description": "MENU_3178329cT_1743571630",
          "content_url": "https://img.wongnai.com/p/_-x_/2025/04/02/b7a9d8f03bac484faa0ae16430839297.jpg",
          "width": 1013,
          "height": 1900,
          "photo_url": "photos/b7a9d8f03bac484faa0ae16430839297",
          "thumbnail_url": null
        },
        {
          "photo_id": "9d85228ee5834db2b50cff218f94f279",
          "url": "photos/9d85228ee5834db2b50cff218f94f279",
          "description": "MENU_3178329cT_1743571632",
          "content_url": "https://img.wongnai.com/p/_-x_/2025/04/02/9d85228ee5834db2b50cff218f94f279.jpg",
          "width": 239,
          "height": 512,
          "photo_url": "photos/9d85228ee5834db2b50cff218f94f279",
          "thumbnail_url": null
        },
        {
          "photo_id": "044930ad0dae4d5094622fe31a1f5419",
          "url": "photos/044930ad0dae4d5094622fe31a1f5419",
          "description": "MENU_3178329cT_1743571633",
          "content_url": "https://img.wongnai.com/p/_-x_/2025/04/02/044930ad0dae4d5094622fe31a1f5419.jpg",
          "width": 512,
          "height": 384,
          "photo_url": "photos/044930ad0dae4d5094622fe31a1f5419",
          "thumbnail_url": null
        }
      ]
    },
    "query": {
      "url": "restaurants/3178329cT-caesa-delicious-%E0%B8%AA%E0%B8%B2%E0%B8%82%E0%B8%B2-2/photos?sort.type=4",
      "full_url": "https://www.wongnai.com/restaurants/3178329cT-caesa-delicious-%E0%B8%AA%E0%B8%B2%E0%B8%82%E0%B8%B2-2/photos?sort.type=4",
      "path_only": "restaurants/3178329cT-caesa-delicious-%E0%B8%AA%E0%B8%B2%E0%B8%82%E0%B8%B2-2/photos",
      "params": [
        {
          "name": "sort.type",
          "value": "4"
        }
      ]
    }
  },
  "hotel_information": null,
  "attraction_information": null,
  "delivery_information": {
    "delivery": true,
    "gp": true,
    "gp_mode": {
      "name": "REAL",
      "value": 1
    },
    "gp_information": {
      "delivery_base_price": 10,
      "delivery_price": null,
      "delivery_base_price_radius": 4000,
      "delivery_price_max_distance": null
    },
    "eco": true,
    "in_service_region": true,
    "in_service_region2": true,
    "good_for_food_ordering": true,
    "has_delivery_service": true,
    "cart_sizes": {
      "c_a_s_h": 2000,
      "r_l_p": 10000
    },
    "delivery_working_hours_status": {
      "open": false,
      "message": "จะเปิดในเวลา 11:00"
    },
    "delivery_working_hours": [
      {
        "day": "จันทร์ - อังคาร",
        "period": [
          "11:00 - 21:00"
        ]
      },
      {
        "day": "พฤหัสบดี - อาทิตย์",
        "period": [
          "11:00 - 21:00"
        ]
      }
    ]
  },
  "delivery_working_hours": [
    {
      "day": "จันทร์ - อังคาร",
      "period": [
        "11:00 - 21:00"
      ]
    },
    {
      "day": "พฤหัสบดี - อาทิตย์",
      "period": [
        "11:00 - 21:00"
      ]
    }
  ],
  "rms": {
    "e_payment": true,
    "accepting_order": false,
    "using_menu_structure": true,
    "temporary_closed": true
  },
  "delivery_promos": [],
  "delivery_promotions": [],
  "promotion_statistic": {
    "number_of_visible_vouchers": 0,
    "number_of_lineman_delivery_promotions": null
  },
  "crm": true,
  "cloud_kitchen": false,
  "parent_cloud_kitchen": null,
  "service_model": {
    "kitchen_only": false,
    "kitchen_only_delivery": false,
    "kitchen_only_pickup": false,
    "message": null
  },
  "new_to_theme_card": null,
  "call_to_actions": [
    {
      "type": 2,
      "title": "เดลิเวอรี",
      "subtitles": [
        "ค่าส่งเริ่มต้น 0 บาท *ภายในระยะทางที่กำหนด"
      ],
      "button_title": "สั่ง",
      "count": 0,
      "url": "delivery/businesses/3178329cT/order",
      "deeplink": null,
      "extra": null
    },
    {
      "type": 3,
      "title": "สั่งไว้รับเลย",
      "subtitles": [
        "สั่งล่วงหน้า รับเองที่ร้าน"
      ],
      "button_title": "สั่ง",
      "count": 0,
      "url": "pickup/businesses/3178329cT/order",
      "deeplink": null,
      "extra": null
    }
  ],
  "additional_attributes": {
    "coke": {
      "eid": "coke",
      "value_int": 0,
      "title": "แคมเปญของโค๊ก",
      "form_type": 1
    }
  },
  "distinct_deals": [],
  "from_url": "https://www.wongnai.com/businesses?page.size=100&rerank=false&domain=1&page.number=3"
}
```

Each restaurant record contains 80+ fields organized across several categories:

#### Identity & URLs

| Field | Meaning |
|---|---|
| `ID` / `EID` / `GID` / `Public ID` | Internal platform identifiers across Wongnai's systems |
| `Name Only` | Raw restaurant name without branch |
| `Branch` | Branch label if applicable (e.g., "Siam Paragon") |
| `Name` / `Display Name` | Full display name as shown to users |
| `URL` / `Short URL` | Full and shortened links to the restaurant page |
| `R URL` / `R Short URL` | Alternate redirect URLs |
| `Photos URL` | Link to the restaurant's photo gallery page |
| `Deals URL` | URL to available promotions/deals |
| `Move To URL` | Redirect target if listing has moved |
| `Logo URL` / `Logo` | Logo image URLs |
| `Main Photo` / `Default Photo` | Primary listing images |

#### Location

| Field | Meaning |
|---|---|
| `Latitude` / `Longitude` | GPS coordinates |
| `Zipcode` | Postal code |
| `Place` / `Place Information` | District/area metadata |
| `Neighborhoods` | Neighborhood tags |
| `Is Thailand` | Boolean flag confirming Thailand-based listing |
| `Verified Location` | Whether location data has been verified |

#### Business Details

| Field | Meaning |
|---|---|
| `Domain` | Business category domain (1 = restaurant) |
| `Categories` | Cuisine types and food categories |
| `Price Range` | Estimated price tier |
| `Rating` | Aggregate user rating score |
| `Chain` | Chain/group affiliation if applicable |
| `Opening Date` | Date the business was established or listed |
| `New Business` | Flag for recently added listings |
| `Completeness` | Profile completeness score |
| `Is Owner` | Whether listing is claimed by the owner |
| `Verified Info` | Whether business info is verified |
| `Business Tags` | Descriptive tags (e.g., "Good for Groups") |
| `Target View Group ID` | Internal audience targeting metadata |

#### Hours & Status

| Field | Meaning |
|---|---|
| `Working Hours Status` | Current open/closed status |
| `Hours` | Full weekly operating hours |
| `Closed` | Permanent or temporary closure flag |

#### Deals & Promotions

| Field | Meaning |
|---|---|
| `Best Discount Deal` | Top available discount promotion |
| `Best Selling Deal` | Best-performing/most popular deal |
| `Distinct Deals` | All unique active deals |
| `Delivery Promos` / `Delivery Promotions` | Delivery-specific promotions |
| `Promotion Statistic` | Engagement stats for promotions |

#### Delivery & Service

| Field | Meaning |
|---|---|
| `Delivery Information` | Delivery availability and provider details |
| `Delivery Working Hours` | Hours when delivery is available |
| `Pickup Information` | Pickup option details |
| `Service Model` | Dine-in / delivery / takeaway flags |
| `Cloud Kitchen` / `Parent Cloud Kitchen` | Whether venue is a virtual/cloud kitchen |

#### Media & Content

| Field | Meaning |
|---|---|
| `Photos` | Array of photo objects |
| `Video` | Video content if available |
| `Menu` | Menu data or menu page reference |
| `Portrait Mode` | Whether portrait layout is enabled |
| `Portrait Mode Cover Photo` | Cover photo for portrait display |

#### Visibility & Ranking

| Field | Meaning |
|---|---|
| `Official` | Official/verified account status |
| `Premium` | Premium listing flag |
| `Featured` / `Featured ID` / `Featured Target` | Featured placement metadata |
| `Featured Message` / `Icon Featured` | Featured display content |
| `Users Choice` | "Users' Choice" award flag |
| `Ranking` | Position in ranking lists |
| `Top Favourites` | Whether included in top favourites lists |
| `Statistic` | View/engagement statistics |
| `Tracking Ref` | Analytics tracking reference |

#### Additional

| Field | Meaning |
|---|---|
| `Contact` | Phone numbers and contact details |
| `Hotel Information` | Populated when domain = hotel |
| `Attraction Information` | Populated when domain = attraction |
| `Has Preventive Measures` | COVID/hygiene measure declaration |
| `LTR` | Long-term relevance score |
| `CRM` / `WTM` | Internal CRM and platform metadata |
| `New To Theme Card` | New listing in thematic collections |
| `Call To Actions` | Buttons/actions shown on the listing |
| `Additional Attributes` | Miscellaneous structured attributes |
| `Distance` | Distance from search origin (if geo-filtered) |

***

### How to Use

1. **Get a listing URL** — Navigate to `wongnai.com/businesses`, apply filters (cuisine, area, domain), then copy the URL from your browser.
2. **Paginate as needed** — Append or modify `page.number=N` to step through pages. Each page typically contains 10–20 listings; set `max_items_per_url` to match your target volume.
3. **Paste into `urls`** — Add one or more URLs to the array.
4. **Run and export** — Download results as JSON, CSV, or Excel.

**Tips:**

- Use `domain=1` for restaurants; explore other domain values for hotels or attractions.
- Increase `page.size` in the URL to collect more listings per page request.
- Set `ignore_url_failures: true` for multi-URL runs to avoid interruption from occasional failures.

***

### Use Cases & Business Value

- **Restaurant aggregators:** Populate a local food discovery app with live Wongnai data
- **Competitive intelligence:** Track pricing, ratings, and promotions across Bangkok neighborhoods
- **Delivery analytics:** Map delivery availability and promotion patterns by area
- **F\&B market research:** Analyze cuisine category distribution and business density across Thailand

***

### Conclusion

The **Wongnai Restaurant Search Scraper** turns Thailand's most comprehensive dining platform into a structured data pipeline. With 80+ fields per venue — from GPS coordinates to delivery promos — it gives food tech teams, analysts, and researchers the raw material to build smarter products and sharper insights.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the restaurants list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.wongnai.com/businesses?page.size=10&rerank=false&domain=1&page.number=3"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.wongnai.com/businesses?page.size=10&rerank=false&domain=1&page.number=3"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/wongnai-restaurants-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://www.wongnai.com/businesses?page.size=10&rerank=false&domain=1&page.number=3"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/wongnai-restaurants-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.wongnai.com/businesses?page.size=10&rerank=false&domain=1&page.number=3"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/wongnai-restaurants-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/wongnai-restaurants-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Wongnai Restaurants Search Scraper",
        "description": "Scrape Wongnai.com restaurant listings at scale. Extract 80+ fields per venue including ratings, hours, location, delivery info, deals, photos, and more — perfect for food tech, market research, and hospitality analytics.",
        "version": "0.0",
        "x-build-id": "sq6ECGxakCk7kmOJY"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~wongnai-restaurants-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-wongnai-restaurants-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/stealth_mode~wongnai-restaurants-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-wongnai-restaurants-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/stealth_mode~wongnai-restaurants-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-wongnai-restaurants-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "title": "URLs of the restaurants list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the restaurants list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
