with one click
tripadvisor
// TripAdvisor Content API for hotel ratings, restaurant search, attraction reviews, rankings, and nearby locations. Use when evaluating hotels or researching destinations. 5K calls/month.
// TripAdvisor Content API for hotel ratings, restaurant search, attraction reviews, rankings, and nearby locations. Use when evaluating hotels or researching destinations. 5K calls/month.
What to do when a tool fails, an API hits a rate limit, or a site blocks scraping. Maps every primary tool to its best fallback so a single failure doesn't block the search.
Guided trip planning workflow. Asks destination, dates, travelers, class, and flexibility, then runs parallel flight/hotel search with cpp math and booking plan.
Deutsche Bahn train schedules, journey planning, and departures across Germany and into neighboring countries (Austria, Switzerland, Netherlands, France, Belgium). Use for ICE/IC/regional rail planning and airport ground transport (FRA, MUC).
Discover destinations served from any airport via Wikipedia. Sanity-check whether an airline flies a specific route, find regional service that fare tools miss, identify late-split-return airport options.
Query AwardWallet for loyalty program balances, elite status, and transaction history. Use when checking points inventory, airline status, or planning trips on points.
Airline alliance membership (Star Alliance, oneworld, SkyTeam) and cross-alliance booking relationships. Maps which loyalty programs book which airlines, including bilateral partnerships outside alliances.
| name | tripadvisor |
| description | TripAdvisor Content API for hotel ratings, restaurant search, attraction reviews, rankings, and nearby locations. Use when evaluating hotels or researching destinations. 5K calls/month. |
| category | destinations |
| summary | Hotel ratings, restaurant search, attraction reviews, nearby search. 5K calls/month. |
| api_key | TripAdvisor |
| license | MIT |
| compatibility | opencode |
| metadata | {"type":"integration","platform":"any"} |
Search and retrieve hotel, restaurant, and attraction data from TripAdvisor. Ratings, rankings, reviews, photos, amenities, subratings, trip types, awards.
Base URL: https://api.content.tripadvisor.com/api/v1
Rate limit: 50 calls per second.
Monthly quota: 5,000 API calls per month. Each curl request = 1 call. A full hotel lookup (search + details + reviews + photos) = 4 calls. Budget accordingly. Prefer search + details (2 calls) and only fetch reviews/photos when specifically needed.
API limits: Up to 10 results per search. Up to 5 reviews and 5 photos per location.
First-time setup gotcha: TripAdvisor requires whitelisting your outbound IP at https://www.tripadvisor.com/developers before the key works. Without this, every call returns
User is not authorized to access this resource with an explicit deny. This is the #1 first-time failure mode. Whitelist before troubleshooting auth or quotas.
- How to find your current IP:
curl ifconfig.me- Propagation: changes take 1-5 minutes (AWS edge cache).
- Multi-IP: residential CGNAT, VPN exits, and different networks each need their own entry.
- No Referer alternative: the free tier requires IP whitelisting; HTTP Referer restriction is not available.
- Verify which key is which: the developer portal shows the last 4 chars only (e.g. "Ends in 11D7"), so you can confirm without exposing the secret.
Set TRIPADVISOR_API_KEY in your .env file:
# In .env (gitignored)
TRIPADVISOR_API_KEY=your_key_here
Then source it before calling:
export $(grep TRIPADVISOR_API_KEY .env | xargs)
| Response | Meaning | Fix |
|---|---|---|
User is not authorized to access this resource with an explicit deny | IP not on allowlist | Whitelist current IP at the developer portal, wait 1-5 min |
Forbidden / 403 with no body | Bad or expired key | Regenerate key |
429 Too Many Requests | Hit monthly quota (5,000 calls) | Wait until next month or upgrade tier |
Find locations by name. Returns up to 10 results.
curl -s "https://api.content.tripadvisor.com/api/v1/location/search?key=$TRIPADVISOR_API_KEY&searchQuery=NOFO+Hotel+Stockholm&category=hotels&language=en"
Parameters:
| Param | Required | Description |
|---|---|---|
searchQuery | Yes | Text search query (name of hotel, restaurant, city) |
category | No | Filter: hotels, restaurants, attractions, geos |
phone | No | Phone number filter (any format, no leading +) |
address | No | Address filter |
latLong | No | Lat/long pair, e.g. 59.3127,18.0716 |
radius | No | Radius from latLong (number) |
radiusUnit | No | km, mi, or m |
language | No | Default en. Supports 40+ languages. |
Response shape:
{
"data": [
{
"location_id": "237656",
"name": "Nofo Hotel",
"address_obj": {
"street1": "Tjarhovsgatan 11",
"city": "Stockholm",
"country": "Sweden",
"postalcode": "116 21",
"address_string": "Tjarhovsgatan 11, Stockholm 116 21 Sweden"
}
}
]
}
Get comprehensive info for a location by ID. This is the richest endpoint.
curl -s "https://api.content.tripadvisor.com/api/v1/location/{locationId}/details?key=$TRIPADVISOR_API_KEY&language=en¤cy=USD"
Parameters:
| Param | Required | Description |
|---|---|---|
locationId | Yes (path) | TripAdvisor location ID from search |
language | No | Default en |
currency | No | ISO 4217 code, default USD |
Response includes:
name, web_url, address_obj, latitude, longitude, timezone, phonerating (string, e.g. "4.6"), num_reviews (string, e.g. "845")review_rating_count: breakdown by star ({"1": "7", "2": "10", ...})ranking_data: ranking (#10), ranking_out_of (168), ranking_string ("#10 of 168 hotels in Stockholm")subratings: Location, Sleep Quality, Rooms, Service, Value, Cleanliness (each 0.0 to 5.0)price_level: "$", "$$", "$$$", "$$$$"amenities: array of stringsstyles: array (e.g. "Family", "Centrally Located")neighborhood_info: array with location_id and nametrip_types: business, couples, solo, family, friends with count valuesawards: Travelers Choice, Best of Best, etc. with year and imagesparent_brand, brand: chain affiliationcategory, subcategory: hotel/restaurant/attractionphoto_count, see_all_photos URLwrite_review URLGet up to 5 most recent reviews.
curl -s "https://api.content.tripadvisor.com/api/v1/location/{locationId}/reviews?key=$TRIPADVISOR_API_KEY&language=en"
Parameters:
| Param | Required | Description |
|---|---|---|
locationId | Yes (path) | TripAdvisor location ID |
language | No | Default en |
limit | No | Number of results (max 5 on free tier) |
offset | No | Index of first result |
Response shape:
{
"data": [
{
"id": 123456,
"lang": "en",
"location_id": "237656",
"published_date": "2026-03-15T00:00:00-04:00",
"rating": 5,
"text": "Review text...",
"title": "Review title",
"trip_type": "Couples",
"travel_date": "2026-03",
"user": { "username": "traveler123" },
"subratings": {}
}
]
}
Note: Reviews may return empty data: [] for locations with few English reviews. Try different language values for international hotels.
Get up to 5 recent photos with multiple size options.
curl -s "https://api.content.tripadvisor.com/api/v1/location/{locationId}/photos?key=$TRIPADVISOR_API_KEY&language=en"
Parameters:
| Param | Required | Description |
|---|---|---|
locationId | Yes (path) | TripAdvisor location ID |
language | No | Default en |
limit | No | Number of results (max 5 on free tier) |
offset | No | Index of first result |
source | No | Comma-separated: Expert, Management, Traveler |
Photo sizes in response:
thumbnail: 50x50 croppedsmall: 150x150 croppedmedium: max 250px dimensionlarge: max 550px dimensionoriginal: full resolutionFind locations near coordinates. Returns up to 10.
curl -s "https://api.content.tripadvisor.com/api/v1/location/nearby_search?key=$TRIPADVISOR_API_KEY&latLong=59.3127,18.0716&category=hotels&language=en"
Parameters:
| Param | Required | Description |
|---|---|---|
latLong | Yes | Lat/long pair, e.g. 59.3127,18.0716 |
category | No | hotels, restaurants, attractions, geos |
phone | No | Phone number filter |
address | No | Address filter |
radius | No | Radius from latLong |
radiusUnit | No | km, mi, m |
language | No | Default en |
Response includes distance (km) and bearing (e.g. "northwest") for each result.
# 1. Search for hotel
curl -s "https://api.content.tripadvisor.com/api/v1/location/search?key=$TRIPADVISOR_API_KEY&searchQuery=Amerikalinjen+Oslo&category=hotels" | python3 -m json.tool
# 2. Get details with location_id from step 1
curl -s "https://api.content.tripadvisor.com/api/v1/location/1234567/details?key=$TRIPADVISOR_API_KEY¤cy=USD" | python3 -m json.tool
# 3. Get reviews (optional, costs 1 call)
curl -s "https://api.content.tripadvisor.com/api/v1/location/1234567/reviews?key=$TRIPADVISOR_API_KEY" | python3 -m json.tool
# 4. Get photos (optional, costs 1 call)
curl -s "https://api.content.tripadvisor.com/api/v1/location/1234567/photos?key=$TRIPADVISOR_API_KEY" | python3 -m json.tool
# Search all hotels in city
curl -s "https://api.content.tripadvisor.com/api/v1/location/search?key=$TRIPADVISOR_API_KEY&searchQuery=hotels+Copenhagen&category=hotels"
# Then get details for each location_id returned
# Compare: rating, num_reviews, ranking_data.ranking, subratings, price_level, amenities
# Use hotel's lat/long from details response
curl -s "https://api.content.tripadvisor.com/api/v1/location/nearby_search?key=$TRIPADVISOR_API_KEY&latLong=59.31555,18.078924&category=restaurants"
# Search for attractions
curl -s "https://api.content.tripadvisor.com/api/v1/location/search?key=$TRIPADVISOR_API_KEY&searchQuery=things+to+do+Stockholm&category=attractions"
# Nearby attractions from a point
curl -s "https://api.content.tripadvisor.com/api/v1/location/nearby_search?key=$TRIPADVISOR_API_KEY&latLong=59.3293,18.0686&category=attractions"
serpapi, liteapi, chase-travel, amex-travel, or rapidapi for prices.When comparing hotels, extract and present:
| Field | Path | Example |
|---|---|---|
| Rating | rating | "4.6" |
| Review count | num_reviews | "845" |
| Ranking | ranking_data.ranking_string | "#10 of 168 hotels in Stockholm" |
| Location subrating | subratings.0.value | "4.7" |
| Service subrating | subratings.3.value | "4.7" |
| Cleanliness subrating | subratings.5.value | "4.8" |
| Price level | price_level | "$$$$" |
| Trip type leader | highest trip_types[].value | "Couples: 381" |
| Awards | awards[].display_name | "Travelers Choice 2025" |
| Breakfast | amenities contains "Breakfast included" | Yes/No |
| Chain | parent_brand | "Worldhotels" |
ar, zh, zh_TW, da, nl, en, en_AU, en_CA, en_HK, en_IN, en_IE, en_MY, en_NZ, en_PH, en_SG, en_ZA, en_UK, fr, fr_BE, fr_CA, fr_CH, de, de_AT, el, iw, it, it_CH, ja, ko, no, pt, pt_PT, ru, es, es_AR, es_CO, es_MX, es_PE, es_VE, es_CL, sv, th, tr, vi
Use da for Danish, no for Norwegian, sv for Swedish when searching Scandinavian hotels for local-language reviews.