{
  "openapi": "3.0.1",
  "info": {
    "title": "ikyu.com Room Rates Scraper (一休)",
    "description": "Scrape each room and rate plan ikyu.com (一休) sells for a hotel or ryokan on your dates. Just add hotel URLs, ids or names and get stay and nightly prices in JPY and your currency, list price, meals, points, rooms left, cancellation, room size, beds and images. $3.50 per 1,000 priced hotel-stays.",
    "version": "1.0",
    "x-build-id": "h6OHjAyHJS4oAVifD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/boncross~ikyu-room-rates/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-boncross-ikyu-room-rates",
        "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/boncross~ikyu-room-rates/runs": {
      "post": {
        "operationId": "runs-sync-boncross-ikyu-room-rates",
        "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/boncross~ikyu-room-rates/run-sync": {
      "post": {
        "operationId": "run-sync-boncross-ikyu-room-rates",
        "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": {
          "hotels": {
            "title": "Hotels",
            "type": "array",
            "description": "One per entry: an ikyu hotel URL (https://www.ikyu.com/en-us/00000146/, dates and guests in the URL are honoured), the 8-digit accommodation id (00000146), or a hotel name in English or Japanese (resolved by name).",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (bulk upload)",
            "type": "array",
            "description": "ikyu page addresses, with the option to load them in bulk from a file, a Google Sheet or a remote list. Use this when you have more links than you want to paste. Combined with anything in the list above.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Maximum hotel-stays for the whole run",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many priced hotel-stays across the run: one hotel and one stay, with all its rooms and plans. 0 means no limit. Sold-out and unchanged stays are not counted.",
            "default": 0
          },
          "maxRows": {
            "title": "Maximum rows for the whole run",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many rows (one per room and plan when rows are flattened). The last hotel-stay is cut to fit, keeping its cheapest plans, and billed as one stay. 0 means no limit; the run stops at whichever cap it reaches first.",
            "default": 0
          },
          "maxRowsPerStay": {
            "title": "Maximum rows per hotel-stay (flattened rows)",
            "minimum": 1,
            "maximum": 300,
            "type": "integer",
            "description": "With flattened rows, keep at most this many rates per hotel-stay, cheapest first (up to 300). A stay is billed once however many rows it has.",
            "default": 300
          },
          "checkIn": {
            "title": "Check-in date",
            "type": "string",
            "description": "YYYY-MM-DD. Empty = use Check-in days ahead (or the dates in the hotel URL). Ignored when Stays is set. Lowercase `checkin` also works.",
            "default": ""
          },
          "checkOut": {
            "title": "Check-out date",
            "type": "string",
            "description": "YYYY-MM-DD. Empty = use Nights. Lowercase `checkout` also works.",
            "default": ""
          },
          "checkInDaysAhead": {
            "title": "Check-in days ahead",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Used when Check-in is empty (for scheduled runs). Lowercase `checkinDaysAhead` also works.",
            "default": 30
          },
          "nights": {
            "title": "Nights",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Used when Check-out is empty.",
            "default": 1
          },
          "stays": {
            "title": "Multiple stays (advanced)",
            "maxItems": 366,
            "type": "array",
            "description": "[{\"checkin\":\"2026-11-20\",\"checkout\":\"2026-11-22\"}, …], one record per hotel per stay. Up to 366 stays a run.",
            "default": []
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Per room. ikyu prices per room for this many people.",
            "default": 2
          },
          "rooms": {
            "title": "Rooms",
            "minimum": 1,
            "maximum": 9,
            "type": "integer",
            "description": "Number of rooms.",
            "default": 1
          },
          "childrenAges": {
            "title": "Children's ages",
            "type": "array",
            "description": "Optional. The age of each child, 0-12, one per line. ikyu prices children by age group: 10-12 and 6-9 as primary-school children, under 6 as an infant with meals and bedding. Adults are set above.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "freeCancellationOnly": {
            "title": "Free-cancellation plans only",
            "type": "boolean",
            "description": "Keep only plans that are still free to cancel today for the stay.",
            "default": false
          },
          "breakfastOnly": {
            "title": "Breakfast-included plans only",
            "type": "boolean",
            "description": "Keep only plans with breakfast.",
            "default": false
          },
          "dinnerOnly": {
            "title": "Dinner-included plans only",
            "type": "boolean",
            "description": "Keep only plans with dinner (kaiseki etc.).",
            "default": false
          },
          "minPerNight": {
            "title": "Minimum per-night price",
            "minimum": 0,
            "type": "number",
            "description": "In the selected currency, per room. 0 = off.",
            "default": 0
          },
          "maxPerNight": {
            "title": "Maximum per-night price",
            "minimum": 0,
            "type": "number",
            "description": "In the selected currency, per room. 0 = off.",
            "default": 0
          },
          "includePlanDetails": {
            "title": "Plan details",
            "type": "boolean",
            "description": "Add each rate plan's notes, payment option, meals (where and when they are served, and the menu), the nights and rooms it allows, member-only status, how children are priced by age group, and why a stay cannot be booked if it cannot. One extra request per rate, for the cheapest rates of each stay (set how many below).",
            "default": false
          },
          "planDetailsPerStay": {
            "title": "Plan details for the cheapest N rates",
            "minimum": 0,
            "type": "integer",
            "description": "How many of each stay's cheapest rates get plan details. 0 means every rate.",
            "default": 5
          },
          "includeHotelDetails": {
            "title": "Include hotel details",
            "type": "boolean",
            "description": "Also return address, coordinates, check-in and check-out times, access, amenities, facilities, hot spring, parking, ratings by aspect and images. No extra charge.",
            "default": false
          },
          "maxRatesPerRoom": {
            "title": "Maximum rate plans per room",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many rate plans to return for each room type, cheapest first. The default of 30 covers every hotel measured so far; raise it for a large ryokan that publishes more plans than that on a single room. A run that hits the limit says so in the log.",
            "default": 30
          },
          "flattenRooms": {
            "title": "One row per rate plan",
            "type": "boolean",
            "description": "Push one dataset row per rate plan (hotel and stay fields repeated) instead of one row per hotel and stay with a roomTypes array.",
            "default": false
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "JPY prices are always included; set USD, EUR, GBP, KRW, CNY, TWD, HKD, SGD, THB, AUD… to add ikyu's own conversion.",
            "default": "JPY"
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "ja"
            ],
            "type": "string",
            "description": "en = ikyu's English room and plan names; ja = Japanese originals.",
            "default": "en"
          },
          "priceStoreName": {
            "title": "Price memory store",
            "type": "string",
            "description": "Key-value store name. Remembers the lowest per-night price per hotel / stay / occupancy / currency and adds previousLowestPerNight and priceChange next run.",
            "default": ""
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed prices",
            "type": "boolean",
            "description": "With a price memory store: skip (and don't charge) hotel-stays whose lowest price is unchanged.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 32,
            "type": "integer",
            "description": "How many requests run at once across the whole run. The default is the fastest level measured clean; lower it only if a run reports refusals or errors.",
            "default": 8
          },
          "delayMs": {
            "title": "Delay between requests (ms)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Optional pause before each call, in milliseconds. 0 (the default) runs as fast as the parallel limit allows.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}