{"openapi":"3.1.0","info":{"title":"OTI recorded hotel price search","version":"1.1.0","termsOfService":"https://opentoinfluencer.com/compare/api#usage","description":"Public GET without authentication or JavaScript. Observed prices are not live availability. Follow next even when this page has no matching observations. comparisonUrl is the human-readable page with the same conditions."},"servers":[{"url":"https://opentoinfluencer.com"}],"x-supported-conditions":{"adults":2,"children":0,"rooms":1,"nights":1,"currency":"USD","market":"KR","kind":"recorded_observation","liveAvailability":false},"x-data-usage":{"policyUrl":"https://opentoinfluencer.com/compare/api#usage","permitted":"이용자와 AI의 호텔 비교 조회, 출처를 밝힌 요약·인용 및 OTI 비교 페이지 링크 제공은 서비스 조회 한도 내에서 허용합니다.","restricted":"사전 허락 없는 데이터의 대량 복제, 데이터베이스 재구성을 위한 반복·체계적 수집, 재게시·재판매를 금지합니다.","enforcement":"권리 침해 시 관련 법령에 따라 접근 제한, 삭제 요청 및 손해배상 청구 등 법적 조치를 취할 수 있습니다.","rights":"법령상 허용되는 이용은 제한하지 않습니다. 개별 가격 사실의 독점권을 주장하지 않으며, 제3자의 권리는 각 권리자에게 있습니다. 이 안내는 제3자 권리의 이용허락을 대신하지 않습니다."},"paths":{"/api/price-search":{"get":{"operationId":"searchRecordedHotelPrices","parameters":[{"name":"destination","in":"query","required":true,"schema":{"type":"string","examples":["da-nang","다낭"]},"description":"Destination slug or exact region name. Required; hotel name is not required."},{"name":"checkin","in":"query","required":false,"schema":{"type":"string","format":"date"},"description":"Future check-in, within 90 days KST. Supply checkout too. Omit both to browse collected dates."},{"name":"checkout","in":"query","required":false,"schema":{"type":"string","format":"date"},"description":"Currently exactly one night after checkin. Other lengths return 422."},{"name":"adults","in":"query","required":false,"schema":{"type":"integer","default":2},"description":"Currently only 2 supported."},{"name":"children","in":"query","required":false,"schema":{"type":"integer","default":0},"description":"Currently only 0 supported."},{"name":"childAges","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated ages 0–17; must match children count."},{"name":"rooms","in":"query","required":false,"schema":{"type":"integer","default":1},"description":"Currently only 1 supported."},{"name":"currency","in":"query","required":false,"schema":{"type":"string","default":"USD"},"description":"Currently only USD supported. No currency conversion."},{"name":"breakfast","in":"query","required":false,"schema":{"type":"string","enum":["any","included"],"default":"any"},"description":"Filter observed offer rows."},{"name":"cancellation","in":"query","required":false,"schema":{"type":"string","enum":["any","free_cancel"],"default":"any"},"description":"Filter observed cancellation label; check cancelUntil separately."},{"name":"maxTotal","in":"query","required":false,"schema":{"type":"number","exclusiveMinimum":0,"maximum":1000000},"description":"USD per one-night stay; only rows with confirmed included tax qualify."},{"name":"hotelId","in":"query","required":false,"schema":{"type":"string","format":"uuid"},"description":"Optional narrowing to a hotel returned by this service."},{"name":"after","in":"query","required":false,"schema":{"type":"string","format":"uuid"},"description":"Opaque keyset cursor. Follow next, preserving all query conditions."}],"responses":{"200":{"description":"Up to six hotels per page. no_observations means no recorded matching rows, never sold out.","content":{"application/json":{"schema":{"type":"object","required":["state","query","supportedConditions","hotels","comparisonUrl","next","usage"],"properties":{"state":{"type":"string","enum":["ok","no_observations"]},"query":{"type":"object"},"supportedConditions":{"type":"object"},"source":{"type":"string"},"usage":{"type":"object","required":["policyUrl","permitted","restricted","enforcement","rights"],"properties":{"policyUrl":{"type":"string","format":"uri"},"permitted":{"type":"string"},"restricted":{"type":"string"},"enforcement":{"type":"string"},"rights":{"type":"string"}}},"comparisonUrl":{"type":"string","format":"uri"},"next":{"type":["string","null"],"format":"uri"},"hotels":{"type":"array","maxItems":6,"items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"region":{"type":"string"},"dates":{"type":"array","items":{"type":"object","properties":{"stayDate":{"type":"string","format":"date"},"stale":{"type":"boolean"},"rowsObservedAt":{"type":["string","null"]},"observedAt":{"type":["string","null"]},"rows":{"type":"array","items":{"type":"object","properties":{"sellerName":{"type":"string"},"roomName":{"type":["string","null"]},"priceUsd":{"type":"number"},"taxStatus":{"enum":["included","unknown"]},"breakfast":{"enum":["included","not_shown"]},"refundable":{"enum":["free_cancel","non_refundable","unknown"]},"cancelUntil":{"type":["string","null"]},"comparable":{"type":"boolean"},"isOfficial":{"type":"boolean"}}}}}}}}}}}}}}},"400":{"description":"Invalid or conflicting query","content":{"application/json":{"schema":{"type":"object","properties":{"state":{"type":"string"},"message":{"type":"string"},"supportedConditions":{"type":"object"}}}}}},"404":{"description":"Publication disabled or public host unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"state":{"type":"string"},"message":{"type":"string"},"supportedConditions":{"type":"object"}}}}}},"422":{"description":"Unsupported occupancy, currency or stay length; never substituted","content":{"application/json":{"schema":{"type":"object","properties":{"state":{"type":"string"},"message":{"type":"string"},"supportedConditions":{"type":"object"}}}}}},"429":{"description":"Rate limited; Retry-After header in seconds","content":{"application/json":{"schema":{"type":"object","properties":{"state":{"type":"string"},"message":{"type":"string"},"supportedConditions":{"type":"object"}}}}}},"503":{"description":"Public source unavailable; retry later","content":{"application/json":{"schema":{"type":"object","properties":{"state":{"type":"string"},"message":{"type":"string"},"supportedConditions":{"type":"object"}}}}}}}}}}}