{
  "openapi": "3.0.1",
  "info": {
    "title": "Rakuten Travel Search Scraper (楽天トラベル)",
    "description": "Scrape Rakuten Travel (楽天トラベル) hotel search results for any area and your dates. Just add area names, codes or URLs and get up to three priced plans per hotel with the stay total, per-person price, meals, payment method, points, rating, review count, features and image. $1.50 per 1,000 hotels.",
    "version": "1.0",
    "x-build-id": "hBT5XTNgKSqVhFxvl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/boncross~rakuten-travel-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-boncross-rakuten-travel-search",
        "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~rakuten-travel-search/runs": {
      "post": {
        "operationId": "runs-sync-boncross-rakuten-travel-search",
        "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~rakuten-travel-search/run-sync": {
      "post": {
        "operationId": "run-sync-boncross-rakuten-travel-search",
        "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",
        "required": [
          "areas"
        ],
        "properties": {
          "areas": {
            "title": "Areas",
            "type": "array",
            "description": "Areas to search. A prefecture (\"Kyoto\", \"京都府\", \"kyoto\"), a prefecture plus one of Rakuten's areas (\"Kyoto 天橋立\", \"京都 京都市\", \"kyoto/shi\"), an object {\"prefecture\": \"Kyoto\", \"area\": \"京都市\"}, or a pasted search.travel.rakuten.co.jp / travel.rakuten.co.jp/yado URL. Unknown area names are reported with the list of areas Rakuten has for that prefecture."
          },
          "maxResultsPerArea": {
            "title": "Max hotels per area",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "50 hotels per page; the actor stops when it has this many.",
            "default": 100
          },
          "maxItems": {
            "title": "Maximum results for the whole run",
            "minimum": 0,
            "type": "integer",
            "description": "A run-wide ceiling across every target. The per-target limit above applies to each one separately, so ten targets at 50 each returns 500; set this to cap the total. Zero means no run-wide limit. Rows that report an input the actor could not resolve are not counted here and are never charged for.",
            "default": 0
          },
          "checkIn": {
            "title": "Check-in (YYYY-MM-DD)",
            "type": "string",
            "description": "Leave empty to use checkinDaysAhead. Lowercase `checkin` also works.",
            "default": ""
          },
          "checkOut": {
            "title": "Check-out (YYYY-MM-DD)",
            "type": "string",
            "description": "Leave empty to use nights. Lowercase `checkout` also works.",
            "default": ""
          },
          "checkInDaysAhead": {
            "title": "Check-in days ahead",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Used when checkin is empty. Lowercase `checkinDaysAhead` also works.",
            "default": 30
          },
          "nights": {
            "title": "Nights",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Used when checkout is empty.",
            "default": 1
          },
          "undated": {
            "title": "Undated search",
            "type": "boolean",
            "description": "Ignore dates and list every hotel in the area with Rakuten's guide minimum price (最安値の目安) instead of live availability. More hotels, no stay totals.",
            "default": false
          },
          "adults": {
            "title": "Adults per room",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "1–10.",
            "default": 2
          },
          "rooms": {
            "title": "Rooms",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "1–10.",
            "default": 1
          },
          "children": {
            "title": "Children",
            "type": "object",
            "description": "Rakuten's child categories per room: upperElementary (小学生高学年), lowerElementary (小学生低学年), infantMealBed (幼児 食事・布団付), infantMeal (幼児 食事のみ), infantBed (幼児 布団のみ), infantNone (幼児 食事・布団不要). Counts, e.g. {\"lowerElementary\": 1}.",
            "default": {}
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "recommended",
              "price_low_to_high",
              "price_high_to_low",
              "review_score",
              "room_size"
            ],
            "type": "string",
            "description": "Rakuten's own orderings. Cheapest first follows the price on each row. Dearest first is Rakuten's own ranking by a hotel's highest-priced plans, so it brings the expensive hotels forward but does not follow the cheapest price shown on each row.",
            "default": "recommended"
          },
          "minReviewScore": {
            "title": "Minimum rating (0–5)",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Rakuten's guest rating. 4.0 and 4.5 use Rakuten's own rating filter, so the search is narrowed before any page is read; any other value is applied to the results the search returns.",
            "default": 0
          },
          "minReviewCount": {
            "title": "Minimum review count",
            "minimum": 0,
            "type": "integer",
            "description": "Post-filter, free.",
            "default": 0
          },
          "minTotalForStay": {
            "title": "Minimum stay total (JPY)",
            "minimum": 0,
            "type": "integer",
            "description": "Dated searches only: drop plans cheaper than this for the whole stay.",
            "default": 0
          },
          "maxTotalForStay": {
            "title": "Maximum stay total (JPY)",
            "minimum": 0,
            "type": "integer",
            "description": "Dated searches only: drop plans dearer than this for the whole stay.",
            "default": 0
          },
          "breakfastOnly": {
            "title": "Breakfast included only",
            "type": "boolean",
            "description": "Dated searches: keep only plans with breakfast (朝食あり).",
            "default": false
          },
          "dinnerOnly": {
            "title": "Dinner included only",
            "type": "boolean",
            "description": "Dated searches: keep only plans with dinner (夕食あり).",
            "default": false
          },
          "refundableOnly": {
            "title": "Refundable plans only",
            "type": "boolean",
            "description": "Drop plans whose name carries 返金不可 (non-refundable). Rakuten has no structured refundability flag; this is how the site itself marks them.",
            "default": false
          },
          "features": {
            "title": "Required features",
            "type": "array",
            "description": "Feature labels as Rakuten prints them, all required: e.g. 大浴場, 露天風呂, 駐車場, 送迎サービス.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Keep only these kinds of property, applied by Rakuten before any page is read. Any of the chosen types matches.",
            "items": {
              "type": "string",
              "enum": [
                "business",
                "city",
                "resort",
                "ryokan",
                "minshuku",
                "apartment",
                "capsule",
                "guesthouse",
                "pension",
                "cottage",
                "villa",
                "glamping",
                "machiya",
                "vacationRental",
                "loveHotel"
              ],
              "enumTitles": [
                "Business hotel (ビジネスホテル)",
                "City hotel (シティホテル)",
                "Resort hotel (リゾートホテル)",
                "Ryokan (旅館)",
                "Minshuku (民宿)",
                "Apartment (アパートメント)",
                "Capsule hotel (カプセルホテル)",
                "Guesthouse, hostel or dormitory (ゲストハウス・ホステル・ドミトリー)",
                "Pension (ペンション)",
                "Cottage, lodge or whole-building rental (コテージ・ロッジ・一棟貸)",
                "Villa or condominium (別荘・ヴィラ・コンドミニアム)",
                "Glamping (グランピング)",
                "Machiya townhouse (町家)",
                "Vacation rental (民泊)",
                "Love hotel (ラブホテル)"
              ]
            },
            "default": []
          },
          "luxury": {
            "title": "Luxury properties",
            "enum": [
              "",
              "luxury",
              "highest",
              "high"
            ],
            "type": "string",
            "description": "Keep only Rakuten's luxury selection: all of it, the top tier (最高級宿) or the high tier (高級宿). Rows carry isPremium.",
            "default": ""
          },
          "facilities": {
            "title": "Facilities and services",
            "type": "array",
            "description": "Keep only properties with ALL of these, applied by Rakuten before any page is read. Room features (views, bath and toilet, room size) apply to dated searches only.",
            "items": {
              "type": "string",
              "enum": [
                "nonSmokingRoom",
                "smokingRoom",
                "noMeal",
                "breakfastInRoom",
                "dinnerInRoom",
                "breakfastInPrivateRoom",
                "dinnerInPrivateRoom",
                "onsen",
                "openAirBath",
                "roomWithOpenAirBath",
                "largeBath",
                "freeFlowingHotSpring",
                "privateBath",
                "viewBath",
                "sauna",
                "clubFloor",
                "suite",
                "indoorPool",
                "room40sqmPlus",
                "spa",
                "outdoorPool",
                "fitness",
                "parking",
                "giftCertificate",
                "restaurant",
                "lateCheckout",
                "petsAllowed",
                "shuttleBus",
                "cardAtProperty",
                "onlineCardPayment",
                "babyCot",
                "massage",
                "mahjong",
                "pcRental",
                "trouserPress",
                "nearStation",
                "evCharging",
                "internet",
                "petFriendlyRooms",
                "privateBathroom",
                "washletToilet",
                "seaView",
                "nightView",
                "twoRoomsPlus",
                "detachedRoom",
                "highFloor",
                "cornerRoom",
                "payTv",
                "mountainView",
                "lakeView",
                "riverView",
                "wheelchairAccessible",
                "barrierFreeRoom",
                "accessibleToilet",
                "wheelchairRental",
                "bonusProgram",
                "sustainableBadge",
                "furusatoCoupon",
                "invoiceRegistered"
              ],
              "enumTitles": [
                "Non-smoking room (禁煙ルーム)",
                "Smoking room (喫煙ルーム)",
                "Room only, no meals (食事なし)",
                "Breakfast in the room (部屋で朝食)",
                "Dinner in the room (部屋で夕食)",
                "Breakfast in a private dining room (個室で朝食)",
                "Dinner in a private dining room (個室で夕食)",
                "Hot-spring inn (温泉宿)",
                "Open-air bath (露天風呂)",
                "Room with its own open-air bath (露天風呂付き客室)",
                "Large public bath (大浴場)",
                "Free-flowing hot spring (源泉かけ流し)",
                "Private bath for hire (貸切風呂)",
                "Bath with a view (展望風呂)",
                "Sauna (サウナ)",
                "Club floor (クラブフロア)",
                "Suite or special room (スイートルーム・特別室)",
                "Indoor pool (屋内プール)",
                "Room of 40 m² or more (40平米以上)",
                "Spa or beauty treatments (スパ・エステ)",
                "Outdoor pool (屋外プール)",
                "Fitness room (フィットネス)",
                "Parking (駐車場あり)",
                "Plan with a gift voucher (ギフト券付き)",
                "Restaurant (レストラン)",
                "Late check-out (レイトチェックアウト)",
                "Pets allowed (ペット同宿可の宿)",
                "Shuttle bus (送迎バス)",
                "Card accepted at the property (現地でカード利用可)",
                "Online card payment (クレジットカード決済)",
                "Baby cot (ベビーベッド)",
                "Massage service (マッサージサービス)",
                "Mahjong room (麻雀設備あり)",
                "PC rental (PC貸し出し)",
                "Trouser press (ズボンプレッサー)",
                "Within 5 minutes walk of a station (駅から徒歩5分以内)",
                "EV charging (電気自動車の充電スタンド)",
                "Internet in the room (インターネット可)",
                "Pet-friendly rooms (ペット同宿可の部屋)",
                "Room with bath and toilet (バス・トイレ付)",
                "Bidet toilet (洗浄機付トイレ)",
                "Sea view (海が見える)",
                "Night view (夜景が見える)",
                "Two or more rooms (二間以上)",
                "Detached room (離れ客室)",
                "High floor (高層階)",
                "Corner room (コーナールーム)",
                "Pay TV (有料ビデオ)",
                "Mountain view (山が見える)",
                "Lake view (湖が見える)",
                "River view (川が見える)",
                "Wheelchair accessible (車椅子可)",
                "Barrier-free room (バリアフリールーム)",
                "Accessible toilet (バリアフリー用トイレ)",
                "Wheelchair to borrow (貸出用車椅子)",
                "Rakuten Travel bonus programme (ボーナスプログラム対象宿)",
                "Sustainable travel badge (サステナブルトラベルバッジ)",
                "Hometown-tax coupon accepted (ふるさと納税クーポン対象)",
                "Qualified invoices issued (インボイス制度に対応)"
              ]
            },
            "default": []
          },
          "roomTypes": {
            "title": "Room types",
            "type": "array",
            "description": "Dated searches: keep only properties with a room of one of these types available.",
            "items": {
              "type": "string",
              "enum": [
                "single",
                "semiDouble",
                "double",
                "twin",
                "triple",
                "quad",
                "fivePlus",
                "japanese",
                "japaneseWestern"
              ],
              "enumTitles": [
                "Single (シングル)",
                "Semi-double (セミダブル)",
                "Double (ダブル)",
                "Twin (ツイン)",
                "Triple (トリプル)",
                "Four beds (フォース)",
                "Five or more beds (ファイブ以上)",
                "Japanese-style (和室)",
                "Japanese-Western (和洋室)"
              ]
            },
            "default": []
          },
          "minPricePerNight": {
            "title": "Minimum price per room per night (JPY)",
            "minimum": 0,
            "type": "integer",
            "description": "Dated searches: Rakuten's own price filter, tax included, per room per night. Plans below it are not listed.",
            "default": 0
          },
          "maxPricePerNight": {
            "title": "Maximum price per room per night (JPY)",
            "minimum": 0,
            "type": "integer",
            "description": "Dated searches: Rakuten's own price filter, tax included, per room per night. Plans above it are not listed.",
            "default": 0
          },
          "tenTimesPointsOnly": {
            "title": "10x Rakuten points only",
            "type": "boolean",
            "description": "Dated searches: keep only properties offering ten times the usual Rakuten points (ポイント10倍).",
            "default": false
          },
          "priceStoreName": {
            "title": "Price memory store",
            "type": "string",
            "description": "Name of a key-value store that remembers each hotel's lowest price per stay, so previousPrice / priceChange are filled on later runs.",
            "default": ""
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed",
            "type": "boolean",
            "description": "With a price store: skip hotels whose price is unchanged since the last run.",
            "default": false
          },
          "extraParams": {
            "title": "Extra search filters",
            "type": "object",
            "description": "Advanced: any further Rakuten Travel search filter this form does not offer, as name and value pairs copied from a Rakuten Travel search link (e.g. {\"f_setubi\": \"...\"}).",
            "default": {}
          },
          "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
          },
          "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": 16
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}