tabelog
Provides access to Tabelog's restaurant data, enabling searches by area, genre, budget, and other filters, and retrieving details, reviews, menus, ratings, photos, and vacancy information.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
tabelog-cli
A Tabelog CLI and MCP server. Tabelog has no public API and the Japanese site
sits behind a Cloudflare challenge that rejects anything but a real browser,
but the inbound locales (tabelog.com/en, /kr, /tw, /cn, /th) are served as
plain server-rendered HTML with schema.org JSON-LD. This reads those. No
browser, no headless Chrome, no runtime dependencies.
What it reads: restaurant search with Tabelog's own filters (area, genre, keyword, budget band, online-bookable at a date/time/party size) plus filters the site does not offer (radius around coordinates, open at a given time, minimum score or review count, feature tags, private room, parking); a restaurant page with structured weekly hours; reviews, including one reviewer's full text; the posted menu; the rating breakdown; photos; the online-booking calendar with time slots; set menus and the seat list; a place's popularity ranking; Tabelog's own nearest-restaurants list around a restaurant; and coordinates resolved to a Tabelog area. Reservation itself stays in the browser.
Install
Requires Bun.
bun install
bun link # registers the global `tabelog` commandRelated MCP server: Gurume
Usage
# top ramen around Sannomiya station, Tabelog score order
tabelog search --area Sannomiya --genre ramen
# Japanese works for both filters and free text; --page walks 20 at a time
tabelog search --area 三宮 --keyword 焼鳥 --page 2
# other orderings the inbound site offers
tabelog search --area Namba --genre okonomiyaki --sort access # most viewed by overseas visitors
tabelog search --area Namba --genre okonomiyaki --sort reserved # most reserved
# budget per person (dinner by default), snapped to Tabelog's bands
tabelog search --area Sannomiya --genre ramen --budget-max 999
tabelog search --area Ginza --genre sushi --budget-meal lunch --budget-min 5000 --budget-max 9999
# only places with an online-bookable table then
tabelog search --area Sapporo --genre sushi --vacancy-date 2026-09-11 --vacancy-time 19:00 --vacancy-people 1
# radius around a point. --near alone picks the area itself: the nearest railway
# station Tabelog knows. Pages are walked one at a time (5 by default, up to 10)
# and the walk stops once --limit restaurants (20) are inside the circle
tabelog search --near 43.0553,141.3532 --radius-m 300 --genre sushi
tabelog search --near 34.6687,135.5013 --radius-m 200 --open-at now --limit 10
# open at a Japan wall-clock time, and the cheap card-level filters
tabelog search --area Susukino --open-at "2026-09-12 19:00" --min-rating 3.5 --min-review-count 100
tabelog search --area Susukino --genre ジンギスカン --feature "non smoking,credit card" --order review_count
tabelog search --area Susukino --award # Tabelog Award / Tabelog 100 holders only
# facilities from each restaurant's own page
tabelog search --area Sapporo --genre sushi --private-room --parking
# a restaurant page, by URL or by the id shown in search results
tabelog detail https://tabelog.com/hyogo/A2801/A280101/28043837/
tabelog detail 28043837
# reviews, newest visit first, lunch only; then one reviewer's full text
tabelog review 28043837 --by-visit --use-type lunch
tabelog review-read https://tabelog.com/en/hyogo/A2801/A280101/28043837/dtlrvwlst/B486164563/
# posted menu (food by default; lunch, drink), rating breakdown, photos
tabelog menu 28002413
tabelog menu 28002413 --kind drink
tabelog rating 27000401
tabelog photo 27000401 --mode owner
# online-booking calendar and time slots for a date and party size
tabelog vacancy 27000401 --date 2026-09-11 --people 1 --time 19:00
# set menus with prices and conditions, and the seat list
tabelog course 27000401
tabelog seating 1079755
# Tabelog's own popularity ranking for a place (not the score order)
tabelog ranking Susukino
# Tabelog's own 25 nearest restaurants around one place, with distances
tabelog nearby 1077287
tabelog nearby 1077287 --genre ramen --pages 2
# which Tabelog areas a GPS point falls in
tabelog locate 43.0553,141.3532
# what does a word resolve to?
tabelog suggest Sannomiya
# Korean page text (names, categories, transport); filters resolve the same way
tabelog search --area Namba --genre okonomiyaki --locale kr
TABELOG_LOCALE=kr tabelog detail 28043837
# machine-readable output for any command
tabelog search --area Sannomiya --genre ramen --jsonArea and genre names are matched against the suggest index, which knows English
and Japanese names only. A Korean area name returns nothing; use the English or
Japanese one and switch --locale kr for Korean output. Genres are pickier
than areas: the index has Tabelog's own labels, so 串カツ resolves where
kushikatsu does not. A genre that fails to resolve is searched as a keyword
instead, and the result header says so. Landmarks (Dotonbori) are not areas;
use the nearest station or pass --near with its coordinates.
Times are Japan time. --open-at reads each restaurant's weekly hours (any
locale; day names are normalised); a restaurant with no parsable hours is kept
and marked unknown, never dropped.
--near, --open-at, --private-room and --parking each read every
result's page, roughly two seconds per page of twenty, once per restaurant per
process. Distances are straight-line and the radius applies only to the pages
actually read: Tabelog orders the list by score, not by distance, so a radius
search walks pages sequentially and stops when --limit are inside; the
header says how many pages it read and when raising --pages is worth it.
Page numbers past the end of a list (photos, reviews) are reported as such
rather than silently serving page 1 again.
MCP
tabelog mcpServes the same commands as MCP tools over stdio: search, detail,
review, review_read, menu, rating, photo, vacancy, course,
seating, ranking, nearby, locate, suggest. The server is a hand-written JSON-RPC loop rather than the
official SDK, which pulls in a hundred packages for HTTP transports this never
uses. Register it with your host as command tabelog, arguments ["mcp"].
How it reads the site
Page | Source |
Search |
|
Area / genre resolution |
|
Detail | schema.org |
Reviews |
|
Menu |
|
Rating |
|
Photos |
|
Vacancy |
|
Courses |
|
Seating |
|
Ranking |
|
Nearby |
|
Coordinates to area | Railway stations from OpenStreetMap (Overpass), each verified against |
Distance / open now / facilities | Computed here from each result's JSON-LD coordinates, parsed hours and info-table rows; Tabelog's inbound site has none of these filters. |
Id to URL |
|
Coordinate search is the one thing Tabelog itself cannot do: lat/lon
parameters are ignored by the list page, and the JP-only radius search sits
behind the Cloudflare challenge. So an area still bounds every search, and the
radius is applied afterwards from real coordinates. When a card's own
"Station 450m" is measured from the same station the point was measured
against, it bounds the distance and the card is skipped without a fetch.
If Tabelog changes its markup the parsers here will need to follow. Every selector is a BEM class name the site has kept stable for years, and each command fails loudly rather than returning an empty page as success.
Restaurant pages are cached in memory for the life of the process, so a search that filters on distance, opening hours and facilities at once still fetches each restaurant once. Nothing is written to disk.
Tests
bun test # parsers against captured pages, plus the time and geo logic
bun run check # typecheck, lint and test
bun run fixture:refresh # re-capture every fixture from the live siteThe fixtures under test/fixture/ are real Tabelog pages, gzipped. The tests
assert values a user would notice going missing (this restaurant's score, that
price, the address, a menu item) rather than that an array is non-empty, so a
regex that still matches but grabs the neighbouring element fails. That is not
hypothetical: classText used a \b boundary, which made list-rst__price
match list-rst__price-tax, and the test for it is what found the bug.
License
MIT
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Live Google Maps business search, review, and photo data for AI agents over MCP.
Pickup orders at Japanese restaurants for AI agents: find stores, read menus, place orders. No auth.
OpenTable MCP server for ChatGPT, Claude and any AI agent: search restaurants with open tables, check availability, book a reservation, modify a reservation, cancel a reservation, list your reservations, read the reservation book and add guest notes and tags in your own OpenTable account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to OpenTable yourself; Cotlet does not store your password and you need no OpenTable API key. About the official OpenTable API: OpenTable has APIs only for approved partners (checked 27 Oct 2026). Booking, Sync, CRM, Directory and Reviews APIs need an application through the OpenTable partner program, and they work per restaurant, not on a diner account. Setup and FAQ: https://cotlet.dev/integrations/opentable-api-mcp-server
17+ Japan MCP tools (weather/calendar v2/local-pack/enrich). x402 on Base, wallet-free trial.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to search restaurants, publish and maintain store data, submit verified freshness feedback, and query demand or updates through MCP tools. It provides both read-only and full administrative endpoints backed by open restaurant data.1AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to concurrently search, normalize, and compare Japanese restaurant results across Tabelog, Hot Pepper Gourmet, and Google Maps, with filters for cuisine, area, reservations, and amenities. It also retrieves structured restaurant details, reviews, menus, and courses through typed MCP tools.MIT
- AlicenseAqualityCmaintenanceEnables Claude, Codex, Cursor, or any MCP client to find restaurants in Japan by location, walking time, party size, private room, cuisine, budget, and seating window, returning real availability for the requested date. It books them in two steps through the user's own signed-in Chrome, preparing a summary and confirmation token first and placing the reservation only after the user approves it.141MIT
- AlicenseNot gradedqualityCmaintenanceEnables an LLM agent to search and filter California restaurants by cuisine, city or neighborhood, vibe, maximum price, and minimum rating, fetch full details and customer reviews for individual restaurants, and retrieve an overview of available cities, cuisines, and vibes through MCP tools and resources.MIT