{
  "openapi": "3.0.1",
  "info": {
    "title": "Tabelog Scraper - Japan Restaurants, Ratings & Reviews",
    "description": "Scrape Tabelog (食べログ), Japan's #1 restaurant guide, without login: name, rating, reviews count, categories, price range, address, coordinates, hours, seats, payment, awards and photos. Search by keyword, prefecture and category, or paste links. Optional reviews. Error rows are free.",
    "version": "0.1",
    "x-build-id": "5rkg6tuEPZL1aRHaI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~tabelog-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-tabelog-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/scrapewise~tabelog-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-tabelog-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/scrapewise~tabelog-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-tabelog-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "searchKeyword": {
            "title": "Search keyword",
            "type": "string",
            "description": "What to search on Tabelog, as in the site's search box: a dish or cuisine (ramen, sushi, wagyu, tempura), a restaurant name or a place. English and Japanese both work. Each restaurant comes with its Tabelog rating, review count, prices and station. Leave empty to list every restaurant of the prefecture or category below. With every search field and link empty, the run searches ramen in Tokyo as an example. Also accepts 'keyword'."
          },
          "searchArea": {
            "title": "Prefecture",
            "type": "string",
            "description": "Limit the search to one prefecture, in lowercase romaji: tokyo, osaka, kyoto, hokkaido, fukuoka, kanagawa, aichi, okinawa... (any of the 47). Empty or 'all' means all of Japan. A name that is not a prefecture returns a free INVALID_INPUT row. For a smaller area (a ward or a station), paste the Tabelog area link in 'Tabelog links'. Also accepts 'area'."
          },
          "category": {
            "title": "Category (optional)",
            "type": "string",
            "description": "Optional Tabelog category slug as it appears in the site's links, such as ramen, sushi, yakiniku, izakaya, cafe, sweets, italian, french, chinese, curry or washoku. Combines with the keyword and the prefecture. Leave empty for every category."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "standard",
              "ranking"
            ],
            "type": "string",
            "description": "Standard (default) keeps Tabelog's own order. Ranking is Tabelog's ranking by rating, best first, the usual choice for 'top restaurants' lists. With a limit it decides which restaurants you get.",
            "default": "standard"
          },
          "maxRestaurants": {
            "title": "Max restaurants per search",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many restaurants for each search or list link (default 20 when empty). 0 means as many as Tabelog shows: the site stops at 1,200 per search, so narrow by prefecture, area link or category to go further. You pay per restaurant delivered. Also accepts 'maxResults' or 'maxItems'."
          },
          "splitLargeSearches": {
            "title": "Get more than 1,200 per search",
            "type": "boolean",
            "description": "Tabelog shows at most 1,200 restaurants for any search. On: a search with more returns every match, without duplicates, up to maxRestaurants (0 = everything). Large searches take about 1 second per restaurant with details, so raise the run timeout for several thousand.",
            "default": false
          },
          "startUrls": {
            "title": "Tabelog links",
            "type": "array",
            "description": "Tabelog links, one per line: restaurant pages (for example https://tabelog.com/tokyo/A1311/A131102/13003699/) or area, station, category, ranking and search list pages. Japanese and English (tabelog.com/en/...) links both work. Lists are paginated automatically up to 'Max restaurants per search'. Invalid links return a free error row. Also accepts 'restaurantUrls' and 'urls'.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "includeDetails": {
            "title": "Open each restaurant page",
            "type": "boolean",
            "description": "On (default): opens each restaurant page for the full record: address, coordinates, hours, phone, seats, payment, private rooms, smoking, parking, website, awards and up to 30 photos. Off: only what the search list shows (name, rating, review count, station, categories, dinner and lunch price, closed days), about 10 times faster. Same price per restaurant either way.",
            "default": true
          },
          "includeReviews": {
            "title": "Include reviews",
            "type": "boolean",
            "description": "Adds review rows (type 'review') for each restaurant: title, text, visit month, lunch or dinner, overall rating and the five sub-ratings, spend per person and dish photos. Each review is charged as one item, so set 'Max reviews per restaurant'. No reviewer name, photo or profile link is collected. Off by default.",
            "default": false
          },
          "maxReviewsPerRestaurant": {
            "title": "Max reviews per restaurant",
            "minimum": 0,
            "type": "integer",
            "description": "Only used with 'Include reviews': maximum reviews for each restaurant (default 20 when empty). 0 means every review. With 20 restaurants and 20 reviews each, a run delivers up to 400 reviews plus the restaurants. Also accepts 'maxReviews'."
          },
          "reviewSort": {
            "title": "Review order",
            "enum": [
              "default",
              "newest"
            ],
            "type": "string",
            "description": "Default keeps Tabelog's own review order. Newest sorts by visit date, most recent first, which is the right choice for monitoring recent feedback. Only used with 'Include reviews'.",
            "default": "default"
          },
          "reviewMealType": {
            "title": "Reviews of",
            "enum": [
              "all",
              "lunch",
              "dinner"
            ],
            "type": "string",
            "description": "All (default) keeps reviews of every visit. Lunch or Dinner keeps only reviews of that kind of visit, since Tabelog rates them separately. Only used with 'Include reviews'.",
            "default": "all"
          },
          "fullReviewText": {
            "title": "Full review text",
            "type": "boolean",
            "description": "The review list shows only the first ~110 characters of each review (marked 'textIsExcerpt': true). When on, the Actor opens every review to get the full text. Same price per review, but the run is slower (one page per review). Off by default.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "The default Apify Proxy (datacenter) works; tested with 15 search pages, 5 restaurant pages and 5 review pages in a row without a block. Keep the default.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}