# Wongnai Scraper (`gravityzer0/wongnai-scraper`) Actor

Extracts restaurants, beauty clinics, menus, contact numbers, geo-coordinates, reviews, and images from Wongnai.com.

- **URL**: https://apify.com/gravityzer0/wongnai-scraper.md
- **Developed by:** [Gravity Zero](https://apify.com/gravityzer0) (community)
- **Categories:** Automation, Developer tools, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Local Restaurant & Business Scraper

Uncover high-intent local business listings, restaurants, beauty clinics, clinics, locations, detailed menus, and review sentiments directly from **Wongnai.com** (Thailand's leading and largest lifestyle and local business discovery directory).

This highly optimized Apify Actor utilizes lightweight, **HTTP-First state-extraction routines** built specifically on top of **Crawlee** and **CheerioCrawler** to extract high-density dataset profiles with minimal compute footprint and rapid load speeds.

***

### 🔥 Key Value Propositions & Use Cases (Thai Market)

- **Granular Local Geolocation Indexing:** Extract exact business addresses, verified contact numbers, and precise latitude/longitude geo-coordinates across Thai provinces.
- **AI RAG & Culinary Sentiment Analysis:** Harvest verified customer star ratings and authentic review comments, ready to pipe clean dataset indices directly into conversational Local Advisor RAG agents.
- **Competitor Directory Audits:** Monitor pricing range guides, trading hours, and trending menu specialties to run deep neighborhood market analysis.
- **SaaS Delivery Integration:** Compile structured data templates containing items, menus, and shop schedules ready to sync with regional food delivery POS aggregators.

***

### 🛠️ Actor Input Parameters

This Actor accepts the following customizable JSON parameters:

| Parameter | Type | Required | Description | Example |
|-----------|------|----------|-------------|---------|
| `searchQueries` | Array | Yes | Target keywords/locations to search on Wongnai. | `["ส้มตำ ห้วยขวาง", "นวดแผนไทย เชียงใหม่"]` |
| `maxListings` | Number | Yes (Default: `50`) | Maximum business listings to extract per search query. | `30` |
| `scrapeReviews` | Boolean | Yes (Default: `true`) | Enable to gather reviewer metrics and comments. | `true` |
| `maxReviewsPerListing`| Number | Yes (Default: `10`) | Limit user review comments loaded per business. | `5` |
| `proxyConfiguration` | Object | No | Proxy settings config. Thai residential proxy is highly recommended. | `{"useApifyProxy": true}` |

#### Input JSON Example

```json
{
  "searchQueries": ["ชาบู สุขุมวิท", "คาเฟ่ อารีย์"],
  "maxListings": 40,
  "scrapeReviews": true,
  "maxReviewsPerListing": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

***

### 📤 Output Dataset Format Example

The output is written directly to your dataset in a clean, token-efficient format ready for immediate database feeds, Google sheets integration, or RAG models:

```json
{
  "id": "1002345",
  "name": "ส้มตำสุดยอด ห้วยขวาง",
  "url": "https://www.wongnai.com/businesses/1002345",
  "category": "อาหารอีสาน/ส้มตำ",
  "phone": "[PHONE]",
  "priceRange": "฿฿ (101 - 250 THB)",
  "rating": 4.2,
  "reviewCount": 142,
  "address": "ห้วยขวาง กรุงเทพมหานคร 10310",
  "latitude": 13.776652,
  "longitude": 100.569421,
  "openingHours": [
    "ทุกวัน: 11:00 - 22:00"
  ],
  "reviews": [
    {
      "reviewId": "rev-58291",
      "author": "อร่อยตัวจริง",
      "rating": 5,
      "text": "รสชาติดีเลิศ บริการเป็นกันเอง ประทับใจมากส้มตำถาดรสแท้",
      "date": "2026-07-01T15:30:00.000Z"
    }
  ]
}
```

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords of listings and locations to search on Wongnai (e.g. 'ชาบู สุขุมวิท', 'นวดแผนไทย เชียงใหม่')

## `regions` (type: `array`):

Target regions or cities to crawl explicitly.

## `maxListings` (type: `integer`):

Maximum business listings to extract per search query.

## `scrapeReviews` (type: `boolean`):

Enable gathering parsed user reviews and reviewer comments.

## `maxReviewsPerListing` (type: `integer`):

Maximum user reviews to fetch per business profile.

## `proxyConfiguration` (type: `object`):

Apify Proxy settings (Thai residential proxies are highly recommended to bypass geographic protection).

## Actor input object example

```json
{
  "searchQueries": [
    "ส้มตำ ห้วยขวาง",
    "คาเฟ่ อารีย์"
  ],
  "regions": [
    "Bangkok",
    "Chiang Mai"
  ],
  "maxListings": 50,
  "scrapeReviews": true,
  "maxReviewsPerListing": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Structured JSON array of local businesses, menus, address coordinates, and reviews.

# 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 = {
    "searchQueries": [
        "ส้มตำ ห้วยขวาง",
        "คาเฟ่ อารีย์"
    ],
    "regions": [
        "Bangkok",
        "Chiang Mai"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("gravityzer0/wongnai-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 = {
    "searchQueries": [
        "ส้มตำ ห้วยขวาง",
        "คาเฟ่ อารีย์",
    ],
    "regions": [
        "Bangkok",
        "Chiang Mai",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("gravityzer0/wongnai-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 '{
  "searchQueries": [
    "ส้มตำ ห้วยขวาง",
    "คาเฟ่ อารีย์"
  ],
  "regions": [
    "Bangkok",
    "Chiang Mai"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call gravityzer0/wongnai-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/r8qG23S1pMxSHiQ5c/builds/Dkufnw5jwUwSugyMa/openapi.json
