openapi: 3.1.0 info: title: Lighthouse Integration API description: >- The Lighthouse Integration API (formerly the OTA Insight API) lets subscribed hotel and hospitality customers create periodic custom data extracts from Lighthouse's hotel competitive intelligence, market demand, pricing, and parity datasets. The API exposes read-only endpoints across Hotels, Markets, Rates, Demand, Ranking, Reviews, Parity, and Market Insight. It is part of the Lighthouse Developer Solutions Suite, which also includes integration patterns for Business Intelligence, Benchmark Insight, Pricing Manager, and Channel Manager. version: '3.1' contact: name: Lighthouse Developer Support url: https://www.mylighthouse.com/contact-sales termsOfService: https://www.mylighthouse.com/legal/terms-conditions externalDocs: description: Lighthouse API Documentation url: https://api.mylighthouse.com/ servers: - url: https://api.mylighthouse.com/v3 description: Production tags: - name: Hotels description: List hotels, competitors, compsets, and subscribed features. - name: Markets description: List markets and linked subscriptions. - name: Rates description: Current and historic lowest rates, rates per room type, and raw rates across OTAs. - name: Demand description: Market demand predictions per arrival date. - name: Ranking description: Hotel ranking positions across OTAs and ranking summaries. - name: Reviews description: Aggregated review scores across OTAs. - name: Parity description: Rate parity comparisons across OTAs. - name: Market Insight description: Forward-looking demand and search-volume insights. security: - LighthouseApiToken: [] paths: /hotels: get: tags: [Hotels] summary: List Hotels description: List hotels, their competitors, compsets, and subscribed features for the authenticated account. responses: '200': { description: OK } '401': { description: Unauthorized } '429': { description: Rate-limited } /markets: get: tags: [Markets] summary: List Markets description: List markets and the subscriptions linked to them. responses: '200': { description: OK } '401': { description: Unauthorized } '429': { description: Rate-limited } /rates: get: tags: [Rates] summary: Get Lowest Rates description: Lowest rates for a hotel and its compset on a given OTA. parameters: - { in: query, name: subscriptionId, required: true, schema: { type: string } } - { in: query, name: ota, schema: { type: string, default: bookingdotcom } } - { in: query, name: los, schema: { type: integer, default: 1 } } - { in: query, name: format, schema: { type: string, enum: [json, csv], default: json } } responses: '200': { description: OK } /roomtyperates: get: tags: [Rates] summary: Get Lowest Rates Per Room Type description: Lowest rates broken down by room type for a hotel and compset. parameters: - { in: query, name: subscriptionId, required: true, schema: { type: string } } responses: '200': { description: OK } /historic/rates: get: tags: [Rates] summary: Get Historic Lowest Rates description: Historical lowest rates as captured on a specific extract date. parameters: - { in: query, name: subscriptionId, required: true, schema: { type: string } } - { in: query, name: extractDate, required: true, schema: { type: string, format: date } } responses: '200': { description: OK } /historic/roomtyperates: get: tags: [Rates] summary: Get Historic Lowest Rates Per Room Type description: Historical room-type lowest rates as captured on a specific extract date. parameters: - { in: query, name: subscriptionId, required: true, schema: { type: string } } - { in: query, name: extractDate, required: true, schema: { type: string, format: date } } responses: '200': { description: OK } /demand: get: tags: [Demand] summary: Get Market Demand Predictions description: Market demand predictions per arrival date for the linked subscription. parameters: - { in: query, name: subscriptionId, required: true, schema: { type: string } } responses: '200': { description: OK } /ranking: get: tags: [Ranking] summary: Get Hotel Ranking Positions description: Hotel ranking positions by OTA across the compset. parameters: - { in: query, name: subscriptionId, required: true, schema: { type: string } } responses: '200': { description: OK } /rankingsummaries: get: tags: [Ranking] summary: Get Ranking Summaries description: Average ranking positions over the past 12 months and 12 weeks per OTA. parameters: - { in: query, name: subscriptionId, required: true, schema: { type: string } } - { in: query, name: ota, required: true, schema: { type: string } } responses: '200': { description: OK } /reviews: get: tags: [Reviews] summary: Get Review Score Summaries description: Aggregated review scores over the past 12 months and 12 weeks per OTA. parameters: - { in: query, name: subscriptionId, required: true, schema: { type: string } } - { in: query, name: ota, required: true, schema: { type: string } } responses: '200': { description: OK } /parities: get: tags: [Parity] summary: Get Rate Parity Comparisons description: Rate parity comparisons across OTAs for the subscribed hotel. parameters: - { in: query, name: subscriptionId, required: true, schema: { type: string } } responses: '200': { description: OK } /parityinsight: get: tags: [Parity] summary: Get Parity Insight Scores description: Parity scores by aggregation and channel for a given market. parameters: - { in: query, name: market_id, required: true, schema: { type: string } } responses: '200': { description: OK } /marketinsight: get: tags: [Market Insight] summary: Get Market Insight Demand description: Demand summaries for the next 351 days for the subscribed market. parameters: - { in: query, name: subscriptionId, required: true, schema: { type: string } } responses: '200': { description: OK } /marketinsight/searches: get: tags: [Market Insight] summary: Get Market Insight Searches description: Search volume data for the next 351 days for the subscribed market. parameters: - { in: query, name: subscriptionId, required: true, schema: { type: string } } responses: '200': { description: OK } components: securitySchemes: LighthouseApiToken: type: apiKey in: header name: X-Oi-Authorization description: Account-bound API token passed as the X-Oi-Authorization header. Tokens provide access to all subscriptions within the account.