Tabelog Reviews Scraper
Pricing
from $1.40 / 1,000 review-scrapeds
Tabelog Reviews Scraper
Scrape Tabelog (食べログ) restaurant reviews by URL or id: every 口コミ with overall and five sub-scores, lunch or dinner, visit month, spend per person, text (in full where Tabelog links it), reviewer stats and photos. Sort by newest or by visit date, or get only new reviews. $2.00 per 1,000 reviews.
Pricing
from $1.40 / 1,000 review-scrapeds
Rating
0.0
(0)
Developer
BonCross API
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Features
Share
What is Tabelog Reviews Scraper?
A Tabelog (食べログ) review says more than a star rating does. Each 口コミ has a score out of five, up to five category sub-scores, what the diner spent and the month they went. Tabelog Reviews Scraper gets you all of that for any restaurant on Japan's largest review site, with the reviewer's own Japanese text in full. If you'd rather read it, pick English, Korean, Chinese or Thai and you get Tabelog's translation.
What makes it worth using:
- The original words, whole. In Japanese you get each review's full text at no extra charge. In a run of 200 reviews across two restaurants, all 200 came back complete.
- It's fast enough for a whole chain. 1,905 reviews from 20 restaurants in eight cities took 165 seconds, about 700 reviews a minute.
- A scheduled run pays for new reviews only. Name an only-new store and reviews you've already had are skipped for free.
- Lunch and dinner are separate. Tabelog records which meal a visit was. You can ask for one, and each row says which it is.
- $2.00 per 1,000 reviews on the Free plan, $1.40 on Business. There's no proxy to set up and no usage billed on top.
BonCross Verified means we tested this actor against the live site before release and kept the record:
- 23 of 23 live checks on its inputs and filters passed on 7 October 2026
- 9 restaurants run the same day, plus one made-up id: 123 reviews, 1 error row
- Charges matched the rows: 1 start, 9 venues, 123 reviews
- An id Tabelog does not know gets an uncharged error row
You can also:
- Sort by newest or by visit month, and keep only visits after a month you choose
- Filter by minimum score, or keep only reviews with photos
- Read how many times the reviewer has been, and how many reviews and followers they have
- Get the restaurant's own score, review count, genres, station and budget bands on each row
- Find out why, in a row, when a restaurant id isn't on Tabelog
Most people who pull these reviews want one of a few things: Japanese diners' own words for sentiment analysis or model training, the food, service, atmosphere and cost-performance scores of competing restaurants side by side, what people actually paid, or an alert when a new review lands on their own venue.
What review data do you get?
| ⭐ Overall review score | Five category sub-scores |
| Review title | 💬 Review text |
| 🍽 Lunch or dinner visit | 📅 Visit month |
| Visit number for that reviewer | 💴 Spend per person |
| Party size (Korean, Chinese and Thai) | 🔗 Review id and link |
| 🧑 Reviewer name and id | Reviewer review count and followers |
| 📷 Review photos and photo count | Restaurant name, id and URL |
| Restaurant score and review count | 📍 Restaurant area, genres and nearest station |
| Restaurant budget bands | 🚦 Restaurant trading status |
How to scrape Tabelog reviews
There's nothing to install. With a free Apify account:
- Open Tabelog Reviews Scraper and paste restaurant URLs or ids (7 or 8 digits).
- Choose a language and how many reviews you want per restaurant. Add a sort or a filter if you need one.
- Press Start, then download the reviews as Excel, CSV, JSON, XML or HTML. Two restaurants at 100 reviews each took 8 seconds in testing.
⬇️ Input
Give it restaurants, as Tabelog URLs or bare ids. If you change nothing else you get the 100 newest reviews per restaurant, in Japanese with the full text, and the restaurant's header on each row.
For a list too long to paste, use Start URLs. It loads links in bulk from a file, a Google Sheet or a remote list, and adds them to whatever's in the restaurant list.
You have two limits. "Max reviews per restaurant" (default 100, up to 10,000) applies to each restaurant separately: ten restaurants at 50 each returns 500. "Maximum results for the whole run" caps the total across all of them, and nothing past it is fetched or charged for.
Newest reviews for two restaurants, in Japanese
{"restaurants": ["https://tabelog.com/tokyo/A1301/A130101/13002457/","13228602"],"maxReviewsPerRestaurant": 300,"sort": "newest"}
Highly rated dinner visits with photos, in English
{"restaurants": ["13300481"],"language": "en","visitType": "dinner","sort": "visit_date","minScore": "4","withPhotosOnly": true,"maxReviewsPerRestaurant": 200}
Full translated text, in Korean
{"restaurants": ["13002457"],"language": "kr","maxReviewsPerRestaurant": 50,"includeFullText": true}
Only-new monitoring
{"restaurants": ["13002457", "13228602", "13300481"],"sort": "visit_date","visitedAfter": "2026-06","dedupStoreName": "tabelog-reviews-ginza","maxReviewsPerRestaurant": 500}
| Field | Notes |
|---|---|
restaurants | Tabelog URLs or restaurant ids (7 or 8 digits). |
startUrls | Tabelog page addresses, pasted or loaded in bulk from a file, a Google Sheet or a remote list. Combined with restaurants. |
language | ja (default): each review's original Japanese text, always in full. en, kr, tw, cn, th: Tabelog's own translation, as an excerpt unless includeFullText is on. Scores, sub-scores, visit month and photos are the same in every language. |
maxReviewsPerRestaurant | Default 100 reviews per restaurant, up to 10,000. Tabelog serves 20 per page. |
maxItems | Run-wide ceiling on reviews across every restaurant. 0 (default) means no run-wide limit. |
sort | newest (default, Tabelog's posting order) or visit_date (visit month, latest first). |
visitType | all (default), lunch, dinner. Each row's visitType is the review's own meal; visitTypeFilter records which tab was read. |
includeFullText | In a translated language, open each review's full translated text instead of the excerpt. Charged per expanded review. Japanese is always full text, at no extra charge. |
minScore, visitedAfter, withPhotosOnly | Free post-filters. visitedAfter takes YYYY-MM; with the visit-date sort the run stops as soon as a page holds only earlier visits. |
includeRestaurantSummary | Attach the restaurant header to every row. On by default. |
dedupStoreName | Name a store and later runs return only reviews not seen before. |
maxConcurrency, delayMs | Requests run at once (1 to 32, default 32) and an optional pause before each (default 0). |
For developers
maxReviewsPerRestaurantis the per-restaurant limit andmaxItemsthe run-wide one.minScore,visitedAfterandwithPhotosOnlyare applied after a page is read. A review they drop isn't charged.visitTypeis applied by Tabelog itself.- When a filter or the
dedupStoreNamestore keeps nothing, the read stops early: after 5 pages in a row with no review kept, or after about three times the pages the per-restaurant limit needs (at least 10). - With
sort: "newest"and adedupStoreName, the read also stops at the first review an earlier run returned. That's what makes a scheduled run return the reviews posted since the last one. includeFullTextdoes nothing inja, where the text is always full. In the other languages each review that expands is billed as onereview-full-text. A review Tabelog can't expand keeps its excerpt, withtextTruncated: true, and isn't billed for the expansion.- Reviews with no full text to return are counted in the run's
STATSrecord underfullTextUnavailable, and the log warns once per restaurant. maxConcurrency(default 32) sets how many requests run at once.delayMsadds a pause before each. We'd leave both alone.- A run that Apify restarts carries on from where it stopped. No review is written or charged twice.
⬆️ Output
You get one record per review. This one is real, in the default language, with the text and photos shortened:
{"input": "13002457","restaurantId": "13002457","restaurantName": "GURGAON","restaurantUrl": "https://tabelog.com/en/tokyo/A1301/A130101/13002457/","restaurant": {"id": "13002457","name": "GURGAON","url": "https://tabelog.com/en/tokyo/A1301/A130101/13002457/","score": 3.7,"rating": 3.7,"ratingScale": 5,"reviewCount": 3351,"genres": ["Indian","Indian curry"],"area": "Ginza, Shimbashi, Yurakucho","subArea": "Ginza","nearestStation": "Ginza Itchome Sta.","status": {"badge": null,"live": true,"gloss": null,"titlePrefix": null,"notice": null},"budgetDinner": "JPY 2,000 - JPY 2,999","budgetLunch": "JPY 1,000 - JPY 1,999"},"id": "243451226","reviewId": "243451226","url": "https://tabelog.com/en/tokyo/A1301/A130101/13002457/dtlrvwlst/B536345760/?lc=0&smp=1&use_type=0","score": 4,"rating": 4,"ratingScale": 5,"visitType": "lunch","subScores": {"food": 4,"service": 4,"atmosphere": 4,"costPerformance": 4,"drinks": null},"spendPerPerson": "JPY 2,000~JPY 2,999","spendPeople": null,"visitMonth": "2026-09","visitCount": 1,"visitText": "Visited on September, 2026 1 time","title": "元ダバインディア姉妹店","text": "土曜の12時半過ぎに到着。\n銀座一丁目駅が最寄だけど、銀座駅からも徒歩圏内。\n店内は空席ありですんなり入れました。ランチは現金のみ。\n単品でと思ったら、ホリデーランチ(2,680円)なるものがありこちらを選択。\nどうせなら名物のチーズクルチ…","textTruncated": false,"reviewer": {"name": "IKKO'S FILMSTokyo","id": "011773731","url": "https://tabelog.com/rvwr/011773731/","reviewCount": 2423,"followers": 5676,"avatar": "https://tblg.k-img.com/user/images/Profile/11773/70x70_11773731.jpg?1785767198"},"photos": ["https://tblg.k-img.com/restaurant/images/Rvw/383940/640x640_rect_f2686569e836e608800b3e6b7d54a7b1.jpg","…"],"photoCount": 14,"textLanguage": "ja","language": "ja","sort": "newest","visitTypeFilter": "all","scrapedAt": "2026-09-28T01:30:38.726Z"}
subScores holds food, service, atmosphere, costPerformance and drinks, each null where the reviewer gave none. textLanguage is ja when the text is the Japanese original. If Tabelog doesn't know a restaurant, you get a row with input, id and error, and that restaurant isn't charged.
Limitations
Read the first one before you build on the text.
- Some reviews have no Japanese original to return. They're mostly reviews of a purchase, not of a visit, and have no lunch or dinner marker. In one check they were 13 of 15 at a sweet shop and none at seven restaurants measured the same day. Those rows keep Tabelog's translated excerpt, with
textTruncated: trueand notextLanguage, and the run statistics count them. Filter ontextTruncatedif you need originals only. - In Japanese the review body is the reviewer's original. The title is the original too where the reviewer wrote one, and null otherwise. In the other languages both are Tabelog's own translation.
- Tabelog shows no posting date for a review, only the month of the visit. The newest-first order is Tabelog's, and it can't be checked from the rows. There's no rating distribution either. The aggregate score and counts come from the restaurant header.
photoslists the photos the review list shows, up to four.photoCountis the review's total, which can be higher.- Sub-scores exist only when the reviewer entered them.
- Tabelog doesn't show a review's like count on these pages, and prints the party size only in Korean, Chinese and Thai.
- A review's
urlis the reviewer's page for that restaurant. Two visits by the same reviewer share one link, andreviewIdtells them apart. - You can't search for a restaurant by name here. Tabelog Search Scraper finds ids by area and genre.
How much does it cost?
| Event | Free plan | Starter | Scale | Business |
|---|---|---|---|---|
actor-start, per run | $0.002 | $0.002 | $0.002 | $0.002 |
venue-resolved, per restaurant, covering the header with aggregates | $0.002 | $0.002 | $0.002 | $0.002 |
review-scraped, per review returned | $0.002 | $0.0018 | $0.0016 | $0.0014 |
review-full-text, per review expanded to its full translated text (English, Korean, Chinese and Thai only) | $0.0005 | $0.00045 | $0.0004 | $0.00035 |
Enterprise plans pay the Business price.
$2.00 per 1,000 reviews on the Free plan, $1.40 on Business, with the full Japanese text included. You pay nothing else: no proxy to arrange, no platform usage added. Reviews a filter drops and reviews you've already had are free.
- Two restaurants, 300 newest reviews each, in Japanese: $0.002 + 2 × $0.002 + 600 × $0.002 = $1.206 ($0.846 on Business).
- One restaurant, 50 reviews with full text in English, say 49 expanded: $0.002 + $0.002 + 50 × $0.002 + 49 × $0.0005 = $0.1285 ($0.0912 on Business).
The $5 of credits Apify's Free plan gives you each month covers about 24 restaurants at the default 100 reviews, some 2,400 reviews, before you pay anything.
How many reviews can you get, and how fast?
| Run | Result |
|---|---|
| Two restaurants, 100 newest reviews each, in Japanese | 200 reviews, all unique, each with its full original Japanese text; 8 seconds |
| One restaurant, 8 reviews | 8 reviews, 3 seconds |
| 20 restaurants in eight cities, 100 newest each, in Japanese | 1,905 reviews with their original Japanese text, 165 seconds |
| Two restaurants, in English with full text | 200 reviews; 198 expanded to the full translation, 2 left as excerpts and not charged |
The Japanese runs were timed on Apify on 2 and 3 October 2026, at the default settings and with no page lost. In Japanese that works out at about 700 reviews a minute, roughly 40,000 inside the default one-hour run limit. The translated languages run faster.
You can take as many reviews as a restaurant has, in pages of 20. A busy restaurant holds thousands, and it's worth setting "Max reviews per restaurant" to the number you'll actually use.
Not every review fills every column. Across the 200 Japanese reviews above: score, visit month, spend per person and photos on all 200, a title on 109, and the five sub-scores on 70.
Only the new reviews, on a schedule
This is the setup we'd recommend if you watch your own venues. Give "Only-new store" a name, keep the newest-first sort, and create an Apify Schedule. Each run returns the reviews posted since the last one and stops reading there. A webhook or the Slack integration can tell you the moment one arrives.
From your own code, POST https://api.apify.com/v2/acts/boncross~tabelog-reviews/run-sync-get-dataset-items with the input JSON as the body runs a short job and returns the reviews in the response. For thousands of reviews, start the run and read the dataset when it finishes. The apify-client package exists for Node.js and for Python.
It also works as a tool for AI agents through the Apify MCP server at mcp.apify.com. An agent in Claude, ChatGPT or Cursor can pull a restaurant's recent reviews and summarise what diners liked and didn't.
FAQ
Is the Japanese text the original or a translation?
It's the reviewer's own text, complete, and it costs nothing extra. The other languages give you Tabelog's translation. The exception is the handful of reviews Tabelog holds no original for, described under Limitations.
What's the difference between the excerpt and the full text?
In a translated language the review list shows about the first 100 characters. Switch on "Fetch full review text" and you get the complete translation, at $0.0005 per review that expands. In the English test run 198 of 200 expanded. The other 2 kept their excerpts and weren't charged for the expansion.
How many reviews can I get per restaurant?
All of them, if you want. The default is 100 and the setting goes up to 10,000.
Why do some reviews have no sub-scores?
Tabelog treats the five category scores as optional, and many reviewers skip them. They were filled on 70 of 200 reviews in one run.
Can I sort by most liked, or by the date a review was posted?
Neither is possible. Tabelog shows no like count and no posting date on these pages. You can sort newest first, which is Tabelog's own posting order, or by visit month.
Do I need proxies or a Tabelog account?
No to both. There's no proxy to set up, and nothing is logged in.
Can I get lunch and dinner reviews separately?
Set "Visit type" to lunch or dinner and Tabelog returns only those. With it left on all, each row still tells you which meal the review was for.
Is scraping Tabelog reviews legal?
The actor reads only pages Tabelog serves to any logged-out visitor, and scraping publicly available data is generally legal. Reviews are personal content, though. Each row has the reviewer's public display name, profile id and profile URL, and you should handle them in line with Tabelog's terms and the data-protection law that applies to you.
More from BonCross
- Tabelog Restaurant Scraper: Full Tabelog (食べログ) restaurant records by URL or id, in English, Korean, Chinese or Thai.
- Tabelog Japanese Detail Add-on: Add the columns Tabelog publishes only on its Japanese pages to restaurant rows you…
- Tabelog Search Scraper: Tabelog (食べログ) restaurant rankings by area and genre.
- Tripadvisor Restaurants Scraper: Every restaurant Tripadvisor lists for a city.
- Tripadvisor Place Details Scraper: The full Tripadvisor record for any hotel, restaurant or attraction.
- Tripadvisor Reviews Scraper: Every Tripadvisor review for any hotel, restaurant, attraction or tour.
Your feedback
Seen a review whose text or scores don't match Tabelog? Report it on the Issues tab in Apify Console and include the review id. We read each report and reply in the thread.