{
  "openapi": "3.0.1",
  "info": {
    "title": "Ikyu Restaurant Scraper - Japan Fine Dining Plans & Prices",
    "description": "Ikyu restaurant scraper (一休.comレストラン): Japan's curated fine-dining restaurants with genre, area, station, lunch/dinner budgets, course plans and prices, seats, private rooms and ratings by prefecture and area; optional date availability. No reviews. Unofficial; not affiliated with Ikyu Corporation.",
    "version": "0.1",
    "x-build-id": "lmPYmzBiCm3IKeKuN"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jpopendata~japan-restaurants-ikyu/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jpopendata-japan-restaurants-ikyu",
        "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/jpopendata~japan-restaurants-ikyu/runs": {
      "post": {
        "operationId": "runs-sync-jpopendata-japan-restaurants-ikyu",
        "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/jpopendata~japan-restaurants-ikyu/run-sync": {
      "post": {
        "operationId": "run-sync-jpopendata-japan-restaurants-ikyu",
        "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": {
          "prefecture": {
            "title": "Prefecture",
            "enum": [
              "Hokkaido",
              "Aomori",
              "Iwate",
              "Miyagi",
              "Akita",
              "Yamagata",
              "Fukushima",
              "Ibaraki",
              "Tochigi",
              "Gunma",
              "Saitama",
              "Chiba",
              "Tokyo",
              "Kanagawa",
              "Niigata",
              "Toyama",
              "Ishikawa",
              "Fukui",
              "Yamanashi",
              "Nagano",
              "Gifu",
              "Shizuoka",
              "Aichi",
              "Mie",
              "Shiga",
              "Kyoto",
              "Osaka",
              "Hyogo",
              "Nara",
              "Wakayama",
              "Tottori",
              "Shimane",
              "Okayama",
              "Hiroshima",
              "Yamaguchi",
              "Tokushima",
              "Kagawa",
              "Ehime",
              "Kochi",
              "Fukuoka",
              "Saga",
              "Nagasaki",
              "Kumamoto",
              "Oita",
              "Miyazaki",
              "Kagoshima",
              "Okinawa"
            ],
            "type": "string",
            "description": "Choose one of the 47 prefectures by its English name (e.g. \"Tokyo\", \"Osaka\", \"Kyoto\"). Via API pass the English name exactly as listed (\"Tokyo\", not \"東京都\" or \"13\" — the platform checks the list before the run starts). Cities are NOT prefectures: use \"Kanagawa\" for Yokohama, \"Aichi\" for Nagoya, \"Hyogo\" for Kobe. Narrow further with area / genre / keyword.",
            "default": "Kyoto"
          },
          "area": {
            "title": "Area within the prefecture",
            "type": "string",
            "description": "Optional — leave empty for the whole prefecture. To narrow: a Japanese area name as ikyu writes it (e.g. \"祇園\" matches 祇園・清水寺周辺; \"嵐山\" matches 嵐山周辺), an ikyu area code (3 digits such as \"002\", or a 4-digit sub-area such as \"0097\"), or a pasted ikyu area page URL such as https://restaurant.ikyu.com/area/kyoto/002/0097/ (narrowest). Romaji such as \"Gion\" matches nothing. A name that matches no area ends the run with 0 records and a warning that lists every valid area name."
          },
          "genre": {
            "title": "Genre filter",
            "type": "string",
            "description": "Optional. Keeps restaurants whose ikyu genre label contains this text, applied after reading each list page (e.g. \"フレンチ\", \"寿司\", \"焼肉\", \"懐石\"). Common English words are translated: French, Italian, Japanese, Kaiseki, Sushi, Chinese, Yakiniku, Steak, Teppanyaki, Tempura, Buffet, Afternoon tea, Unagi, Yakitori, Sukiyaki, Korean, Spanish, Innovative. Several genres: separate with commas. A rare genre may need a higher maxApiRequests."
          },
          "keyword": {
            "title": "Restaurant name keyword",
            "type": "string",
            "description": "Optional. Keeps restaurants whose name contains this text (case- and width-insensitive), e.g. \"鮨\" or a hotel name such as \"リッツ\". Applied after reading each list page."
          },
          "budgetMinJpy": {
            "title": "Budget from (JPY per person)",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Optional. ikyu's own budget filter: only restaurants with a course plan at or above this price per person (tax and service included), and only those plans. Example: 10000."
          },
          "budgetMaxJpy": {
            "title": "Budget up to (JPY per person)",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Optional. ikyu's own budget filter: only restaurants with a course plan at or below this price per person, and only those plans. Example: 20000. Must not be lower than budgetMinJpy."
          },
          "visitDate": {
            "title": "Availability date (optional)",
            "type": "string",
            "description": "Optional. YYYY-MM-DD (today or later, Japan time). When set, the run lists only restaurants with a free table on that date at visitTime for partySize, and each record's plans are the plans bookable then (availability.available = true). Leave empty for undated results (all restaurants with their plans). Dates ikyu does not take bookings for yet give 0 records with a warning."
          },
          "visitTime": {
            "title": "Availability time",
            "type": "string",
            "description": "Optional, used only with visitDate (default 19:00). HH:MM between 07:00 and 24:00 in 30-minute steps, e.g. \"12:00\" for lunch or \"19:30\"."
          },
          "partySize": {
            "title": "Party size",
            "minimum": 1,
            "maximum": 99,
            "type": "integer",
            "description": "Optional, default 2 (ikyu's own default). Number of guests (1–99). Affects which plans ikyu shows (plans have minimum/maximum party sizes) and, with visitDate, which tables are free.",
            "default": 2
          },
          "includePlans": {
            "title": "Include course plans and prices",
            "type": "boolean",
            "description": "Default true. Reads ikyu's list in its plan view, so every record carries the restaurant's course plans (name, lunch/dinner, price per person, regular price, discount). Restaurants with no priced plan (seat-only bookings or no plan — about 3% in Kyoto on 2026-10-13) are not listed in this view; set false to list every restaurant without plans. Ignored when visitDate or a budget is set (plans are always shown then).",
            "default": true
          },
          "includeDetails": {
            "title": "Read each restaurant page",
            "type": "boolean",
            "description": "Default true. One extra request per restaurant adds the city (municipality — no street address), name reading, genre category, total seats and private rooms, smoking, wheelchair access, children/pets policy, credit cards, business hours, closed days, hotel name and the rating breakdown. Set false for a faster list-only run (20 restaurants per request).",
            "default": true
          },
          "maxItems": {
            "title": "Max restaurants",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Default 10. Stop after this many restaurant records (1–5000). Each list page holds 20 restaurants; with includeDetails each record also costs one request.",
            "default": 10
          },
          "maxApiRequests": {
            "title": "Max upstream requests (0 = automatic)",
            "minimum": 0,
            "maximum": 3000,
            "type": "integer",
            "description": "Default 0 = sized automatically from maxItems and the options. Hard budget of HTTP requests to restaurant.ikyu.com for this run (cap 3000). Requests are strictly serial and at least 1.2 s apart, so 300 requests take about 6 minutes. When the budget runs out the run still SUCCEEDS with the records collected so far and complete=false in RUN_SUMMARY.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Default: Apify RESIDENTIAL proxy, country JP — required, because restaurant.ikyu.com answers datacenter IP ranges with HTTP 403. Proxy traffic is billed as Apify platform usage. The run keeps ONE sticky session (one IP for the whole run) and never rotates; only a refused FIRST request is retried once on a fresh session.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "JP"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}