Tabelog Restaurant Scraper (Japan) avatar

Tabelog Restaurant Scraper (Japan)

Pricing

from $0.49 / 1,000 results

Go to Apify Store
Tabelog Restaurant Scraper (Japan)

Tabelog Restaurant Scraper (Japan)

Scrapes restaurants from Tabelog — Japan's #1 restaurant review site. Search any Japanese area by prefecture, district or neighbourhood with 35 cuisine genres; returns name, rating, review count, nearest station, budget, feature tags, address, GPS coordinates and phone number.

Pricing

from $0.49 / 1,000 results

Rating

0.0

(0)

Developer

Ibnu Adzim

Ibnu Adzim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Scrapes restaurants from Tabelog (食べログ) — Japan's #1 restaurant review site, run by the Kakaku.com group. Think Yelp, but the one Japan actually uses.

Public data only. No login, no cookies, no browser. No bot challenge of any kind — 8 of 8 TLS profiles returned clean 200s on both list and detail pages.

The one thing you need to know before using this

A wrong area CODE returns the parent area, silently.

Tabelog areas are hierarchical, and a code it does not recognise is not rejected — it just drops that level:

RequestedWhat you actually getResults
tokyo/A1301/A130101Ginza2,669
tokyo/A1301/A999999Ginza & Shimbashi & Yurakucho6,260
tokyo/A9999/A999999all of Tokyo139,211

All three answer HTTP 200 with real restaurants. This actor reads Tabelog's own breadcrumb — the one echo that reveals what it genuinely resolved — and if a level was dropped it stops before paging, emitting one SEARCH_SUMMARY with areaApplied: false plus upstreamHeading and upstreamBreadcrumb showing what Tabelog actually searched.

A wrong prefecture (notaprefecture) is a clean 404, and a wrong genre is refused before the run starts — so only the area codes need this defence.

What you get

Three record types share one dataset, told apart by recordType.

RESTAURANT — one row per restaurant

List rows carry name, rating, review count, nearest station with walking distance, genre, dinner and lunch budget bands, and feature tags (credit cards, non-smoking, Wi-Fi, private rooms…).

With Fetch full restaurant details on (the default), each row also gets restaurantDetails — Tabelog's Schema.org record, verbatim: exact street address with postal code, GPS coordinates, phone number, price range and cuisine list.

SEARCH_SUMMARY — one row per area searched

Tabelog's own result total, how deep this run paged, the resolved area (heading + breadcrumb), areaApplied, and whether the query hit the 1,200-row ceiling.

ERROR — one row per input that could not be processed

Every input maps to at least one row, so nothing disappears silently.

Input

FieldWhat it does
Areastokyo, tokyo/A1301, tokyo/A1301/A130101, or a pasted list URL — one search each
Genreone of 35 verified cuisine slugs, or any
Sort by ratinghighest-rated first (the only sort Tabelog honours)
Restaurant URLsscrape specific restaurants directly, skipping search
Max restaurants per area0 = unlimited, meaning up to Tabelog's own 1,200 cap
Min interval between requeststhe speed control — 0.4s default ≈ 2.5 req/s

Getting an area path

Browse to the area on tabelog.com and copy the address — that is the whole trick. https://tabelog.com/en/tokyo/A1301/A130101/rstLst/ can be pasted in as-is, or shortened to tokyo/A1301/A130101.

Example

{
"areas": ["tokyo/A1301/A130101", "osaka/A2701/A270101"],
"genre": "ramen",
"sortByRating": true,
"maxItems": 200,
"includeRestaurantDetails": true
}

Notes on reliability

  • No WAF. Both surfaces answered 200 on chrome124, chrome120, chrome131, safari17_0, safari18_0, edge101, firefox133 and chrome99_android.
  • chrome99_android is excluded anyway — it is served the mobile document (989 KB vs 282 KB), whose markup has no result counter, so it would quietly degrade every row it touched. Desktop profiles only.
  • Speed is controlled by request rate, not concurrency. The crawl is paced to one request every 0.4s by default (≈2.5/second) across all workers. maxConcurrency only absorbs latency variance — raising it past about 5 will not make a run finish sooner, because the rate cap binds first. To go faster, lower Min interval between requests; a 20-row crawl takes ~9s at 0.4s and ~4.6s at 0.15s.
  • Politeness is deliberate. Tabelog's robots.txt gives named crawlers Crawl-delay: 5 and states no rule for generic clients, but a site with no bot challenge at all is one worth not provoking.
  • Residential proxy pinned to Japan is the cloud default — a JP exit sees the same regional content a real visitor does.
  • Pagination ends honestly: page 61 is genuinely empty rather than looping.

Known limits

  • 1,200 rows per query (60 pages × 20), whatever the total says. Use a deeper area code or a genre to reach the rest.
  • Reviews are not included. Review text is a different data-type for a different audience, it multiplies request count without bound, and robots.txt disallows the per-reviewer paths. It belongs in a sibling actor.
  • Only the rating sort is offered — review-count and budget sorts were tested and Tabelog silently ignores them.
  • This scrapes the English site (/en/). Some smaller restaurants have thinner English records than their Japanese ones.