Tabelog APItabelog.com ↗
Search Japanese restaurants on Tabelog, retrieve detailed profiles, and check real-time table availability by date and party size via a structured REST API.
What is the Tabelog API?
The Tabelog API covers 3 endpoints that let you search restaurants across Japan, retrieve per-restaurant details, and check live reservation availability. The search_restaurants endpoint returns paginated results including ratings, budget ranges, and booking URLs. get_restaurant exposes address, business hours, phone, cuisine categories, and transportation directions. check_availability returns open time slots for a given date and party size without placing a booking.
curl -X GET 'https://api.parse.bot/scraper/b3fd720e-c70e-4772-8966-3f9f24d74a6b/search_restaurants?page=1&keyword=sushi+ginza' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace tabelog-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: tabelog SDK — bounded, re-runnable; every call capped."""
from parse_apis.tabelog_com_api import Tabelog, RestaurantNotFound
client = Tabelog()
# Search for sushi restaurants in Ginza
for restaurant in client.restaurant_summaries.search(keyword="sushi ginza", limit=3):
print(restaurant.name, restaurant.rating, restaurant.booking_url)
# Get details for the first result
summary = client.restaurant_summaries.search(keyword="sushi ginza", limit=1).first()
if summary:
try:
detail = summary.details()
print(detail.name, detail.address, detail.phone, detail.business_hours)
except RestaurantNotFound as e:
print(f"not found: {e.restaurant_id}")
# Check availability for tomorrow, 1 guest
for slot in detail.check_availability(date="2026-07-17", party_size=1, limit=3):
print(slot.time, slot.booking_url)
print("exercised: restaurant_summaries.search / details / check_availability")
Full-text search over tabelog.com restaurants. The search query matches restaurant names, areas, and cuisine types. Returns paginated results of 20 per page, sorted by relevance. Each result includes the restaurant booking page URL.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| keywordrequired | string | Search query matching restaurant name, area, or cuisine type (e.g. 'sushi ginza', 'ramen shinjuku'). |
{
"type": "object",
"fields": {
"page": "current page number",
"total": "total number of matching restaurants",
"restaurants": "array of restaurant summaries with id, name, area_genre, rating, budgets, and booking_url",
"total_pages": "total number of pages available"
},
"sample": {
"page": 1,
"total": 229,
"restaurants": [
{
"id": "13277198",
"name": "GINZA SUSHI BANYA KAI",
"rating": "3.51",
"area_genre": "Ginza Itchome Sta. 44m / Sushi",
"detail_url": "https://tabelog.com/en/tokyo/A1301/A130101/13277198/",
"booking_url": "https://tabelog.com/en/tokyo/A1301/A130101/13277198/",
"lunch_budget": "JPY 8,000 - JPY 9,999",
"dinner_budget": "JPY 8,000 - JPY 9,999"
}
],
"total_pages": 12
}
}About the Tabelog API
Search and Discovery
The search_restaurants endpoint accepts a keyword parameter matching restaurant names, area names, or cuisine types — for example, sushi ginza or ramen shinjuku. Results are paginated at 20 per page and each record includes id, name, area_genre, rating, budgets, and booking_url. Use the page parameter and the total_pages field in the response to walk through all matching results.
Restaurant Detail
Pass any restaurant_id from search results to get_restaurant to retrieve the full profile. The response includes phone, address, categories, business_hours, transportation (walking directions from the nearest station), and the restaurant-level booking_url. The transportation field is useful for itinerary builders where users need station-to-door directions rather than just a map coordinate.
Availability Checking
check_availability accepts a restaurant_id, a date in YYYY-MM-DD format, and an optional party_size (1–99). It returns an available_slots array where each element includes a time and a per-slot booking_url. An empty available_slots array means no open slots match the parameters — not that the restaurant is closed. This endpoint is read-only; it does not hold or create a reservation.
The Tabelog API is a managed, monitored endpoint for tabelog.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when tabelog.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official tabelog.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a Japan dining itinerary tool that searches by area and cuisine using
keywordand shows real-time table slots viacheck_availability. - Aggregate Tabelog
ratingandbudgetsdata across neighborhoods to map price and quality trends by area. - Power a restaurant recommendation chatbot that resolves user queries (e.g. 'izakaya near Shibuya') to structured restaurant profiles with
addressandbusiness_hours. - Notify users when a specific date and party size opens up by polling
check_availabilityfor hard-to-book restaurants. - Populate a travel app's restaurant section with
categories,transportation, andbooking_urlfor each saved destination. - Validate business listing data by comparing
phoneandaddressfields against an existing restaurant database.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Tabelog have an official developer API?+
What does `check_availability` actually return, and can I use it to make a reservation?+
available_slots array containing each open time slot and a corresponding booking_url for that slot. The endpoint is read-only — it queries availability without placing, holding, or confirming a reservation. To book, a user would follow the returned booking_url directly on Tabelog.Does the API return menu items or user review text?+
Is coverage limited to restaurants in Japan?+
search_restaurants and get_restaurant are located in Japan. The area_genre and transportation fields reflect Japanese address conventions and train station references.Does `search_restaurants` support filtering by rating, budget, or cuisine without a keyword?+
keyword parameter is required and functions as a free-text query. Structured filters like minimum rating or budget range are not separate parameters in the current API. You can fork it on Parse and revise to add dedicated filter parameters if your use case requires faceted search.