Lighthouse Integration API

The Lighthouse Integration API (v3.1, previously the OTA Insight API) enables subscribed hotels and certified technology partners to create periodic custom data extracts from Lighthouse's hotel competitive intelligence dataset. Endpoints cover Hotels, Markets, Rates (current and historic, by hotel and by room type), Demand predictions, Ranking positions and summaries, Review summaries, Parity comparisons, Parity Insight market scoring, and Market Insight demand and search-volume forecasts (next 351 days). Authentication uses an account-bound API token passed as the X-Oi-Authorization header. Rate limits are 20 requests per API per subscription per 24 hours and 120 requests per minute globally. Both JSON (default) and CSV output formats are supported, with optional gzip encoding. Access requires an active Lighthouse subscription; advanced endpoints (Live rateshopping, Raw Rates) require additional entitlements.

Lighthouse Integration API is published by Lighthouse on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Hotels, Rates, Demand, Ranking, and Reviews. The published artifact set on APIs.io includes API documentation, an OpenAPI specification, authentication docs, and rate-limit docs.

OpenAPI Specification

lighthouse-travel-integration-api-openapi.yml Raw ↑
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.