# Tabelog Scraper (`huggable_quote/tabelog-scraper`) Actor

Extract restaurant details and reviews from Tabelog (食べログ), Japan's #1 restaurant review platform. Search by keyword/area or provide URLs directly.

- **URL**: https://apify.com/huggable\_quote/tabelog-scraper.md
- **Developed by:** [OrbitData Labs](https://apify.com/huggable_quote) (community)
- **Categories:** Travel
- **Stats:** 41 total users, 12 monthly users, 94.5% runs succeeded, 2 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 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.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

## Tabelog Scraper — Extract restaurant data and reviews from Tabelog

### What does Tabelog Scraper do?

**Tabelog Scraper** extracts restaurant details and reviews from [Tabelog (食べログ)](https://tabelog.com), Japan's largest restaurant review platform with **890,000+ restaurants** and **85 million+ reviews**. Simply enter a keyword like "ラーメン" or paste restaurant URLs, and the scraper collects structured data you can download as **JSON, CSV, Excel**, or connect to your apps via the **Apify API**.

You can use it in two ways:

- 🔍 **Search mode** — Find restaurants by keyword and area (e.g., "寿司" in Tokyo)
- 🔗 **Direct URL mode** — Provide specific Tabelog restaurant URLs

### Why scrape Tabelog restaurant data?

Tabelog is Japan's #1 restaurant review site, trusted by millions of diners. Extracting its data opens doors to powerful use cases:

- 📊 **Market research** — Study dining trends, pricing, and customer satisfaction across Japan
- 🤖 **NLP & sentiment analysis** — Build Japanese language models with authentic restaurant review corpora
- 🗺️ **Travel & food apps** — Power recommendation engines with real restaurant data
- 📈 **Competitive intelligence** — Monitor competitor restaurants, pricing, and customer feedback
- 🗄️ **Restaurant databases** — Build comprehensive directories with address, hours, budget, and ratings

Combined with the **Apify platform**, you get automatic retries, proxy rotation, scheduled runs, API access, and seamless integrations with tools like Google Sheets, Slack, Zapier, and more.

### What data can you extract from Tabelog?

#### Restaurant information

<table>
<thead>
<tr><th>Field</th><th>Example</th></tr>
</thead>
<tbody>
<tr><td><code>restaurantName</code></td><td>グルガオン</td></tr>
<tr><td><code>restaurantRating</code></td><td>3.72</td></tr>
<tr><td><code>restaurantGenre</code></td><td>インド料理、インドカレー</td></tr>
<tr><td><code>address</code></td><td>東京都中央区銀座1-6-13 銀座106ビル B1F</td></tr>
<tr><td><code>nearestStation</code></td><td>銀座一丁目駅から35m</td></tr>
<tr><td><code>businessHours</code></td><td>月・火・水・木・金</td></tr>
<tr><td><code>budgetDinner</code></td><td>￥2,000～￥2,999</td></tr>
<tr><td><code>budgetLunch</code></td><td>￥1,000～￥1,999</td></tr>
<tr><td><code>paymentMethods</code></td><td>カード可（VISA、Master、JCB、AMEX、Diners）</td></tr>
<tr><td><code>seats</code></td><td>38席（テーブル席のみ）</td></tr>
<tr><td><code>privateRoom</code></td><td>無</td></tr>
<tr><td><code>smokingPolicy</code></td><td>全席禁煙</td></tr>
<tr><td><code>parking</code></td><td>無</td></tr>
<tr><td><code>awards</code></td><td>アジア・エスニック 百名店 2024 選出店</td></tr>
<tr><td><code>reservation</code></td><td>予約可</td></tr>
<tr><td><code>homepage</code></td><td>http://gurgaontokyo.com/</td></tr>
<tr><td><code>officialAccounts</code></td><td>Instagram, Twitter URLs</td></tr>
<tr><td><code>childPolicy</code></td><td>子供可</td></tr>
<tr><td><code>services</code></td><td>テイクアウト、複数言語メニューあり</td></tr>
</tbody>
</table>

#### Review data (when `includeReviews` is enabled)

Each review row includes all restaurant fields above, plus:

<table>
<thead>
<tr><th>Field</th><th>Example</th></tr>
</thead>
<tbody>
<tr><td><code>reviewText</code></td><td>美味しすぎて感動した銀座にあるインドカレー屋さん…</td></tr>
<tr><td><code>rating</code></td><td>4.5</td></tr>
<tr><td><code>visitDate</code></td><td>2026/04</td></tr>
<tr><td><code>reviewerName</code></td><td>わらびもちーず</td></tr>
<tr><td><code>reviewTitle</code></td><td>銀座の名店カレー</td></tr>
<tr><td><code>mealType</code></td><td>ディナー</td></tr>
<tr><td><code>priceRange</code></td><td>￥2,000～￥2,999</td></tr>
<tr><td><code>photos</code></td><td>Photo URLs (when enabled)</td></tr>
</tbody>
</table>

### How to scrape Tabelog restaurant data

1. Go to [Tabelog Scraper](https://apify.com/huggable_quote/tabelog-scraper) on Apify Store
2. Click **Try for free** to open the Actor in Apify Console
3. Choose your input method:
   - **Search mode**: Enter a keyword (e.g., `カレー`) and select an area (e.g., `tokyo`)
   - **Direct URLs**: Paste one or more Tabelog restaurant URLs
4. Set **Include reviews** to `true` for full review text, or `false` for restaurant info only
5. Click **Start** and wait for the run to finish
6. Download your data as JSON, CSV, Excel, or connect via API

#### Input example — Search mode

```json
{
    "searchKeyword": "ラーメン",
    "searchArea": "tokyo",
    "maxRestaurants": 10,
    "includeReviews": true,
    "maxReviewsPerRestaurant": 50,
    "sortBy": "newest"
}
```

#### Input example — Direct URL mode

```json
{
    "startUrls": [
        { "url": "https://tabelog.com/tokyo/A1304/A130401/13002457/" }
    ],
    "includeReviews": true,
    "maxReviewsPerRestaurant": 100
}
```

> 💡 **Tip**: Set `includeReviews` to `false` if you only need restaurant details — it's much faster and cheaper.

### Input options

Tabelog Scraper has the following input options. Click on the [Input tab](https://apify.com/huggable_quote/tabelog-scraper/input-schema) for more information.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | Array | — | Tabelog restaurant page URLs |
| `searchKeyword` | String | — | Search keyword (e.g., `寿司`, `カレー`) |
| `searchArea` | String | `all` | Prefecture filter — 47 prefectures supported |
| `maxRestaurants` | Integer | `5` | Max restaurants from search results |
| `includeReviews` | Boolean | `true` | Extract reviews or restaurant info only |
| `maxReviewsPerRestaurant` | Integer | `100` | Max reviews per restaurant (`0` = all) |
| `reviewLanguage` | String | `all` | Filter reviews by language |
| `includePhotos` | Boolean | `false` | Include review photo URLs |
| `sortBy` | String | `newest` | Sort order: `newest`, `rating_high`, `rating_low`, `default` |
| `proxyConfiguration` | Object | — | Apify Proxy settings |

You must provide either `startUrls` or `searchKeyword` (or both).

### Output example

You can download the dataset extracted by Tabelog Scraper in various formats such as **JSON, HTML, CSV, or Excel**.

#### Restaurant info only (`includeReviews: false`)

```json
{
    "restaurantName": "グルガオン",
    "restaurantUrl": "https://tabelog.com/tokyo/A1301/A130101/13002457/",
    "restaurantRating": 3.72,
    "restaurantGenre": "インド料理、インドカレー",
    "restaurantArea": "東京",
    "totalReviewCount": 3177,
    "address": "東京都中央区銀座1-6-13 銀座106ビル B1F",
    "nearestStation": "銀座一丁目駅から35m",
    "businessHours": "月・火・水・木・金",
    "budgetDinner": "￥2,000～￥2,999",
    "budgetLunch": "￥1,000～￥1,999",
    "paymentMethods": "カード可（VISA、Master、JCB、AMEX、Diners）",
    "seats": "38席（テーブル席のみ）",
    "smokingPolicy": "全席禁煙",
    "awards": ["アジア・エスニック 百名店 2024 選出店"],
    "homepage": "http://gurgaontokyo.com/",
    "scrapedAt": "2026-05-02T12:00:00.000Z"
}
```

#### With reviews (`includeReviews: true`)

```json
{
    "restaurantName": "グルガオン",
    "restaurantRating": 3.72,
    "address": "東京都中央区銀座1-6-13 銀座106ビル B1F",
    "reviewText": "美味しすぎて感動した銀座にあるインドカレー屋さん\n\n大人気と聞いていたので...",
    "rating": 4.5,
    "visitDate": "2025/10",
    "reviewerName": "わらびもちーず",
    "mealType": "ディナー",
    "priceRange": "￥2,000～￥2,999",
    "reviewUrl": "https://tabelog.com/tokyo/A1301/A130101/13002457/dtlrvwlst/B...",
    "scrapedAt": "2026-05-02T12:00:00.000Z"
}
```

### How much does it cost to scrape Tabelog?

Tabelog Scraper uses a **pay-per-result** pricing model on top of Apify platform usage costs.

| Mode | Estimated cost |
|------|---------------|
| 🏪 Restaurant info only | ~**$0.50** per 100 restaurants |
| 📝 With reviews | ~**$3.00** per 1,000 reviews |

You can try the Actor **for free** on Apify's free plan. The free tier includes enough compute units to scrape several restaurants with reviews and explore the output format.

> 💡 **Cost-saving tip**: Use `includeReviews: false` when you only need restaurant metadata — it skips individual review page visits and runs significantly faster.

### Tips for best results

- 🇯🇵 **Use a Japan proxy** — Tabelog may geo-restrict access. On Apify, the default proxy works well, but Japan-based proxies give the best reliability.
- ⏱️ **Start small** — Test with 1-2 restaurants and a few reviews to check output format before scaling up.
- 🔢 **Set `maxReviewsPerRestaurant`** — Restaurants can have thousands of reviews. Set a limit to control costs and run time.
- 📊 **Use Apify integrations** — Connect results directly to Google Sheets, webhooks, or your database via the Apify API.
- 📅 **Schedule recurring runs** — Track review trends over time by scheduling the Actor to run daily, weekly, or monthly.

### Is it legal to scrape Tabelog?

This scraper only extracts publicly available information from Tabelog. It does not extract private user data such as email addresses or personal contact information. The scraper respects rate limits with built-in delays between requests.

You should be aware that extracted results may contain personal data (reviewer names, profile URLs). Personal data is protected by the GDPR in the European Union, APPI in Japan, and other regulations worldwide. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your use case is legitimate, consult your lawyers.

### Limitations and known issues

- **Japanese language** — Data is extracted in Japanese. The English version (`/en/`) has limited restaurant coverage.
- **Pagination cap** — Tabelog limits review pages to approximately 180, so restaurants with 3,600+ reviews may not have all reviews accessible.
- **Rate limiting** — The scraper uses 1–2 second delays between requests for polite crawling. Large-scale scraping will take time proportional to the number of reviews.

### FAQ

#### Does Tabelog have an API?

Tabelog does not provide a free public API for extracting restaurant data. This scraper serves as an alternative by extracting structured data from publicly available Tabelog pages.

#### Can I scrape Tabelog in English?

Tabelog has a limited English site at `tabelog.com/en/`, but most content is only available in Japanese. This scraper extracts data in Japanese by default.

#### How many results can I get for free?

On Apify's free plan, you can scrape approximately **5-10 restaurants with reviews** per month, depending on the number of reviews per restaurant.

#### Can I extract data from all 47 prefectures?

Yes. The `searchArea` input supports all 47 Japanese prefectures (from `hokkaido` to `okinawa`), or you can set it to `all` for a nationwide search.

#### How does the 4-stage pipeline work?

The scraper operates in four stages:

1. **Search** — Finds restaurant URLs from keyword search results
2. **Restaurant** — Visits each restaurant page and extracts detailed metadata
3. **Review list** — Browses review list pages and collects review metadata
4. **Review detail** — Visits individual review pages for full, untruncated review text

#### I found a bug or need a custom feature

Please report issues or feature requests via the [Issues tab](https://apify.com/huggable_quote/tabelog-scraper/issues) on the Actor page. Feedback is always welcome!

# Actor input Schema

## `startUrls` (type: `array`):

Tabelog URLs to scrape. Restaurant page URLs are scraped directly; search, area-list, or ranking URLs (containing 'rstLst' or '?sk=') are auto-paginated to collect restaurants. The 'https://' scheme is optional. If calling via API, this field is 'startUrls' (the aliases 'restaurantUrls' and 'urls' are also accepted). Not required if using keyword search.

## `searchKeyword` (type: `string`):

Search Tabelog by keyword (e.g. restaurant name, cuisine type). Not required if using direct URLs.

## `searchArea` (type: `string`):

Limit search to a specific prefecture. Only used with searchKeyword.

## `maxRestaurants` (type: `integer`):

Maximum number of restaurants to scrape from search results. Only used with searchKeyword.

## `includeReviews` (type: `boolean`):

Whether to scrape individual reviews. When false, only restaurant info (name, address, hours, rating, etc.) is collected — much faster and cheaper.

## `maxReviewsPerRestaurant` (type: `integer`):

Maximum number of reviews to extract per restaurant. Set 0 for all reviews. Only used when includeReviews is true.

## `reviewLanguage` (type: `string`):

Filter reviews by language.

## `includePhotos` (type: `boolean`):

Whether to include review photo URLs in the output.

## `sortBy` (type: `string`):

How to sort reviews.

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

Apify Proxy configuration. If left at the default, the Actor automatically uses a Japan residential proxy (falling back to Japan datacenter), which is strongly recommended to avoid Tabelog's geo-blocking. Pick a specific group/country here only to override that.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://tabelog.com/tokyo/A1311/A131102/13003699/"
    }
  ],
  "searchArea": "all",
  "maxRestaurants": 5,
  "includeReviews": true,
  "maxReviewsPerRestaurant": 3,
  "reviewLanguage": "all",
  "includePhotos": false,
  "sortBy": "newest"
}
```

# Actor output Schema

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

Dataset containing restaurant information and/or 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 = {
    "startUrls": [
        {
            "url": "https://tabelog.com/tokyo/A1311/A131102/13003699/"
        }
    ],
    "searchKeyword": "",
    "searchArea": "all",
    "maxRestaurants": 5,
    "includeReviews": true,
    "maxReviewsPerRestaurant": 3,
    "reviewLanguage": "all",
    "sortBy": "newest"
};

// Run the Actor and wait for it to finish
const run = await client.actor("huggable_quote/tabelog-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 = {
    "startUrls": [{ "url": "https://tabelog.com/tokyo/A1311/A131102/13003699/" }],
    "searchKeyword": "",
    "searchArea": "all",
    "maxRestaurants": 5,
    "includeReviews": True,
    "maxReviewsPerRestaurant": 3,
    "reviewLanguage": "all",
    "sortBy": "newest",
}

# Run the Actor and wait for it to finish
run = client.actor("huggable_quote/tabelog-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://tabelog.com/tokyo/A1311/A131102/13003699/"
    }
  ],
  "searchKeyword": "",
  "searchArea": "all",
  "maxRestaurants": 5,
  "includeReviews": true,
  "maxReviewsPerRestaurant": 3,
  "reviewLanguage": "all",
  "sortBy": "newest"
}' |
apify call huggable_quote/tabelog-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,huggable_quote/tabelog-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

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