Install any skill in seconds. Free to start, no credit card required.
Get Started Free →TripAdvisor Content API for hotel ratings, restaurant search, attraction reviews, rankings, and nearby locations. Use when evaluating hotels or researching destinations. 5K calls/month.
.claude/skills/borski-tripadvisor/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 360% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 508% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 140% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 84% | 0% |
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:
bash# In .env (gitignored) TRIPADVISOR_API_KEY=your_key_here
Then source it before calling:
bashexport $(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.
bashcurl -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:
json{ "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.
bashcurl -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.
bashcurl -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:
json{ "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.
bashcurl -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.
bashcurl -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.
bash# 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
bash# 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
bash# 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"
bash# 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.
Other measured skills in the registry, with their headline benchmark lift.