Irmu
API Reference

Read a Tripadvisor hotel

GET /tripadvisor/hotel — bearer auth, JSON responses, billed per successful request.

GET/tripadvisor/hotel

Read a Tripadvisor hotel

Reads a single Tripadvisor hotel page into a structured object containing address, coordinates, ranking, rating with distribution and subratings, hotel class, amenities, feature groups, photos, offers with prices, directions, nearby points of interest, first-page reviews, and similar hotels. The page is always fetched from Tripadvisor's English site regardless of which country site the URL originates from, and any query string parameters on the provided URL are stripped.

When to use it: Use this endpoint when you need comprehensive hotel data in a single request and do not require review pagination beyond the first page. For multi-page review collection or asynchronous workflows, initiate a crawl via /crawl instead. The 202 response indicates the request is being processed as a background job; poll /crawl/{job} to retrieve results.

  • The url parameter must match the exact Tripadvisor hotel page format (Hotel_Review-g<geo>-d<hotel>-Reviews-<name>.html); anything else returns 422.
  • premium defaults to enabled; explicitly disable with false, 0, no, or off if standard proxy routing is acceptable.
  • A 500 response refunds credits but still records the attempt against www.tripadvisor.com; retrying immediately may hit rate limits.
ParameterInTypeDescription
url *querystring<uri>A Tripadvisor hotel page, `https://www.tripadvisor.com/Hotel_Review-g<geo>-d<hotel>-Reviews-<name>.html`, on any of Tripadvisor's sites. Anything else is refused.
premiumquerystringGo through the premium proxy pool rather than the standard one. **On by default**, for the reason it is on `/tripadvisor/search`. Free either way. `true`, `false`, `1`, `0`, `yes`, `no`, `on`, `off`, in any case. Anything else is refused rather than read as `false`.
countryquerystringThe country to appear to be browsing from, as a two-letter ISO 3166-1 alpha-2 code. Free. Required to use `city`.
cityquerystringThe city inside that country, as the pool spells it. **Requires `country`.** Free here, where on `/crawl` it doubles the price.
keyquerystringThe API key, as an alternative to the `Authorization` header. Ignored when a header is present.
request.sh
curl -X GET "https://app.irmu.com/api/tripadvisor/hotel?url=&premium=&country=&city=&key=" \
  -H "Authorization: Bearer $IRMU_API_KEY"
200.json
{
  "url": "https://www.tripadvisor.com/Hotel_Review-g227870-d33872104-Reviews-Holiday_Inn_Express_Suites_Barcelona_Sabadell_by_IHG-Sabadell_Catalonia.html",
  "hotel": {
    "id": "33872104",
    "geoId": "227870",
    "name": "Holiday Inn Express & Suites Barcelona Sabadell by IHG",
    "address": {
      "streetAddress": "Carrer de ...",
      "addressLocality": "Sabadell",
      "addressCountry": "ES"
    },
    "geo": {
      "latitude": 41.51,
      "longitude": 2.1
    },
    "ranking": {
      "text": "#5 of 7 hotels in Sabadell",
      "position": 5,
      "total": 7
    },
    "rating": {
      "score": 4,
      "word": "Good",
      "count": 5,
      "subratings": {
        "Rooms": 4.5,
        "Service": 4.5,
        "Value": 5,
        "Location": 3
      }
    },
    "stars": 3.5,
    "amenities": [
      "Free internet",
      "Outdoor pool"
    ],
    "price": {
      "amount": 83,
      "currency": "USD"
    },
    "offers": [
      {
        "provider": "BookingCom",
        "vendor": "Booking.com",
        "price": {
          "amount": 83,
          "currency": "USD"
        }
      }
    ],
    "reviews": [
      {
        "id": "1074210662",
        "title": "Great stay",
        "rating": 5,
        "text": "...",
        "published": "Aug 2026"
      }
    ],
    "url": "https://www.tripadvisor.com/Hotel_Review-g227870-d33872104-Reviews-Holiday_Inn_Express_Suites_Barcelona_Sabadell_by_IHG-Sabadell_Catalonia.html"
  },
  "credits_charged": 30,
  "credits_remaining": 970,
  "job_id": "0198a9b6-1f4c-7c3e-9a2b-5d8e6f0a1b23_0198a9b6-2a71-7f0d-8c44-9e1b3c5d7f02",
  "status": "done",
  "position": null,
  "debug": null,
  "error": null
}

Guides using this endpoint

    Tripadvisor API overview →
    request.js
    const res = await fetch("https://app.irmu.com/api/tripadvisor/hotel", {
      method: "GET",
      headers: {
        Authorization: `Bearer ${process.env.IRMU_API_KEY}`,
        "Content-Type": "application/json",
      }
    });
    
    const data = await res.json();
    request.py
    import os, requests
    
    res = requests.get(
        "https://app.irmu.com/api/tripadvisor/hotel",
        headers={"Authorization": f"Bearer {os.environ['IRMU_API_KEY']}"}
    )
    
    print(res.json())
    StatusMeaning
    200The hotel.
    202Paid for and still going. Collect it from `/crawl/{job}`, free, as a slow crawl is collected. That endpoint answers the crawl envelope, so what is lifted into `hotel` here arrives under `data` there.
    401No key, an unknown key, or a caller that is not an organization.
    402Not enough credits, or the daily limit is reached. Nothing is charged and no attempt is recorded.
    422A malformed request -- no url, a url that is not a Tripadvisor hotel page, or a flag that is not a yes or a no.
    500Nothing came back: the crawl failed outright, or the hotel block found no hotel -- Tripadvisor's challenge page, or a layout the block no longer matches. **The credits are refunded either way**, so `credits_charged` is `0`. The attempt is still recorded against `www.tripadvisor.com`.
    503The crawl could not be routed through a proxy pool. Nothing is charged.

    Start building with Irmu today

    200 free credits every month, no card required. Every API, every integration, one key.