Tripadvisor data, ready when you are.

Hotels, restaurants, attractions and reviews from Tripadvisor.

Try in playground From $0.0018 a record · $0.10 free

What you can get.

  • $0.0018per record

    Hotels

    Full cards for up to ten hotels by Tripadvisor URL. Rating breakdown, rank, class, rooms, amenities, price range, OTA offers for the stay.

    Try it →
  • $0.0018per record

    Restaurants

    Full cards for up to ten restaurants by URL. Cuisines, dishes, hours, menu link, price level, rating breakdown, rank.

    Try it →
  • $0.0018per record

    Attractions

    Full cards for up to ten attractions by URL. Types, ticket offers, booking links, rating breakdown, rank.

    Try it →
  • $0.0018per record

    Search hotels

    Hotels for a destination. Every hit a full card, priced for the stay when dates are given.

    Try it →
  • $0.0018per record

    Search restaurants

    Restaurants for a destination or dish. Every hit a full card.

    Try it →
  • $0.0018per record

    Search attractions

    Things to do for a destination. Every hit a full card.

    Try it →
  • $0.0018per record

    Reviews

    Reviews for up to ten places of any kind. Text, rating, dates, trip type, sub-ratings, owner response, reviewer.

    Try it →

What the data looks like.

namekindcitycountryratingreviewsrankrankOutOfpriceRangehotelClassroomstaIdtripadvisorUrlphotosmenuUrlbookingUrldetails
Hotel Aurel RiversidehotelPragueCzechia4.52,14012610$$$4861304212484https://www.tripadvisor.com/hotel-aurel-riverside-1000
  • https://img.tripadvisor.com/hotel-aurel-riverside.jpg
https://www.tripadvisor.com/hotel-aurel-riverside-1000https://www.tripadvisor.com/hotel-aurel-riverside-1000
  • {}
Casa Lumen RoomshotelSevilleSpain4.78648420$$3141920270898https://www.tripadvisor.com/casa-lumen-rooms-1001
  • https://img.tripadvisor.com/casa-lumen-rooms.jpg
https://www.tripadvisor.com/casa-lumen-rooms-1001https://www.tripadvisor.com/casa-lumen-rooms-1001
  • {}
Northfold SuiteshotelEdinburghUnited Kingdom4.41,30531380$$$452336978667https://www.tripadvisor.com/northfold-suites-1002
  • https://img.tripadvisor.com/northfold-suites.jpg
https://www.tripadvisor.com/northfold-suites-1002https://www.tripadvisor.com/northfold-suites-1002
  • {}
17 fields, scroll sideways for all. Example rows: made-up names, real field names. Live calls return real data.

For developers

API reference.

One endpoint, POST /v1/tripadvisor. Open an operation to see its fields.

Read the docs
Hotelshotels

Full cards for up to ten hotels by Tripadvisor URL. Rating breakdown, rank, class, rooms, amenities, price range, OTA offers for the stay.

FieldTypeMeaning
subjects *list of string · 1-10 itemsTripadvisor place URLs (Hotel_Review / Restaurant_Review / Attraction_Review).
languagestring · BCP-47
currencystring · ISO 4217
stayobject
stay.checkInstring · YYYY-MM-DDFirst night, YYYY-MM-DD. Only read together with checkOut.
stay.checkOutstring · YYYY-MM-DDDeparture day, YYYY-MM-DD, after checkIn. Leave both out for a card without prices.

Response fields, each row of data

FieldType
taIdstring
kindstring
namestring
tripadvisorUrlstring
descriptionstring
addressany
citystring
countrystring
latitudenumber
longitudenumber
phonestring
emailstring
websitestring
ratingnumber
reviewsinteger
ratingBreakdownany
reviewTagsany
rankinteger
rankOutOfinteger
photoslist of string
photoCountinteger
subcategorieslist of string
hotelClassstring
roomsinteger
priceRangestring
priceLevelstring
amenitieslist of string
hotelOffersany
roomTipsany
categoryRatingBreakdownany
nearbyTransitany
cuisineslist of string
mealTypeslist of string
dietaryRestrictionslist of string
establishmentTypeslist of string
featureslist of string
popularDisheslist of string
menuUrlstring
openingHoursany
timezonestring
neighborhoodany
closedboolean
orderOnlineany
categoryRatingsany
attractionTypeslist of string
ticketOffersany
lowestTicketPricenumber
bookingUrlstring
nearestMetroStationsany
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · hotels
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"hotels","subjects":["https://www.tripadvisor.com/Hotel_Review-<place-id>-Reviews-The_Plaza-New_York_City_New_York.html"],"currency":"USD","stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15"}}'

Example response rows

data · made-up names, real field names
[
  {
    "name": "Hotel Aurel Riverside",
    "kind": "hotel",
    "city": "Prague",
    "country": "Czechia",
    "rating": 4.5,
    "reviews": 2140,
    "rank": 12,
    "rankOutOf": 610,
    "priceRange": "$$$",
    "hotelClass": 4,
    "rooms": 86,
    "taId": "1304212484",
    "tripadvisorUrl": "https://www.tripadvisor.com/hotel-aurel-riverside-1000",
    "photos": [
      "https://img.tripadvisor.com/hotel-aurel-riverside.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/hotel-aurel-riverside-1000",
    "bookingUrl": "https://www.tripadvisor.com/hotel-aurel-riverside-1000",
    "details": {}
  },
  {
    "name": "Casa Lumen Rooms",
    "kind": "hotel",
    "city": "Seville",
    "country": "Spain",
    "rating": 4.7,
    "reviews": 864,
    "rank": 8,
    "rankOutOf": 420,
    "priceRange": "$$",
    "hotelClass": 3,
    "rooms": 14,
    "taId": "1920270898",
    "tripadvisorUrl": "https://www.tripadvisor.com/casa-lumen-rooms-1001",
    "photos": [
      "https://img.tripadvisor.com/casa-lumen-rooms.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/casa-lumen-rooms-1001",
    "bookingUrl": "https://www.tripadvisor.com/casa-lumen-rooms-1001",
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try hotels in the playground Examples and pricing for hotels
Restaurantsrestaurants

Full cards for up to ten restaurants by URL. Cuisines, dishes, hours, menu link, price level, rating breakdown, rank.

FieldTypeMeaning
subjects *list of string · 1-10 itemsTripadvisor place URLs (Hotel_Review / Restaurant_Review / Attraction_Review).
languagestring · BCP-47
currencystring · ISO 4217

Response fields, each row of data

FieldType
taIdstring
kindstring
namestring
tripadvisorUrlstring
descriptionstring
addressany
citystring
countrystring
latitudenumber
longitudenumber
phonestring
emailstring
websitestring
ratingnumber
reviewsinteger
ratingBreakdownany
reviewTagsany
rankinteger
rankOutOfinteger
photoslist of string
photoCountinteger
subcategorieslist of string
hotelClassstring
roomsinteger
priceRangestring
priceLevelstring
amenitieslist of string
hotelOffersany
roomTipsany
categoryRatingBreakdownany
nearbyTransitany
cuisineslist of string
mealTypeslist of string
dietaryRestrictionslist of string
establishmentTypeslist of string
featureslist of string
popularDisheslist of string
menuUrlstring
openingHoursany
timezonestring
neighborhoodany
closedboolean
orderOnlineany
categoryRatingsany
attractionTypeslist of string
ticketOffersany
lowestTicketPricenumber
bookingUrlstring
nearestMetroStationsany
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · restaurants
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"restaurants","subjects":["https://www.tripadvisor.com/Restaurant_Review-<place-id>-Reviews-Katz_s_Delicatessen-New_York_City_New_York.html"]}'

Example response rows

data · made-up names, real field names
[
  {
    "name": "Casa Lumen",
    "kind": "restaurant",
    "city": "Seville",
    "country": "Spain",
    "rating": 4.7,
    "reviews": 864,
    "rank": 8,
    "rankOutOf": 2210,
    "priceRange": "$$",
    "cuisines": [
      "Spanish",
      "Tapas"
    ],
    "taId": "729433221",
    "tripadvisorUrl": "https://www.tripadvisor.com/casa-lumen-1000",
    "photos": [
      "https://img.tripadvisor.com/casa-lumen.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/casa-lumen-1000",
    "bookingUrl": "https://www.tripadvisor.com/casa-lumen-1000",
    "details": {}
  },
  {
    "name": "The Copper Pot",
    "kind": "restaurant",
    "city": "Edinburgh",
    "country": "United Kingdom",
    "rating": 4.5,
    "reviews": 1210,
    "rank": 41,
    "rankOutOf": 1980,
    "priceRange": "$$$",
    "cuisines": [
      "British",
      "Seafood"
    ],
    "taId": "3523809370",
    "tripadvisorUrl": "https://www.tripadvisor.com/the-copper-pot-1001",
    "photos": [
      "https://img.tripadvisor.com/the-copper-pot.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/the-copper-pot-1001",
    "bookingUrl": "https://www.tripadvisor.com/the-copper-pot-1001",
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try restaurants in the playground Examples and pricing for restaurants
Attractionsattractions

Full cards for up to ten attractions by URL. Types, ticket offers, booking links, rating breakdown, rank.

FieldTypeMeaning
subjects *list of string · 1-10 itemsTripadvisor place URLs (Hotel_Review / Restaurant_Review / Attraction_Review).
languagestring · BCP-47
currencystring · ISO 4217

Response fields, each row of data

FieldType
taIdstring
kindstring
namestring
tripadvisorUrlstring
descriptionstring
addressany
citystring
countrystring
latitudenumber
longitudenumber
phonestring
emailstring
websitestring
ratingnumber
reviewsinteger
ratingBreakdownany
reviewTagsany
rankinteger
rankOutOfinteger
photoslist of string
photoCountinteger
subcategorieslist of string
hotelClassstring
roomsinteger
priceRangestring
priceLevelstring
amenitieslist of string
hotelOffersany
roomTipsany
categoryRatingBreakdownany
nearbyTransitany
cuisineslist of string
mealTypeslist of string
dietaryRestrictionslist of string
establishmentTypeslist of string
featureslist of string
popularDisheslist of string
menuUrlstring
openingHoursany
timezonestring
neighborhoodany
closedboolean
orderOnlineany
categoryRatingsany
attractionTypeslist of string
ticketOffersany
lowestTicketPricenumber
bookingUrlstring
nearestMetroStationsany
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · attractions
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"attractions","subjects":["https://www.tripadvisor.com/Attraction_Review-<place-id>-Reviews-Statue_of_Liberty-New_York_City_New_York.html"]}'

Example response rows

data · made-up names, real field names
[
  {
    "name": "Old Town Walking Tour",
    "kind": "attraction",
    "city": "Lisbon",
    "country": "Portugal",
    "rating": 4.9,
    "reviews": 3120,
    "rank": 3,
    "rankOutOf": 640,
    "priceRange": "$",
    "lowestTicketPrice": 25,
    "taId": "3543572718",
    "tripadvisorUrl": "https://www.tripadvisor.com/old-town-walking-tour-1000",
    "photos": [
      "https://img.tripadvisor.com/old-town-walking-tour.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/old-town-walking-tour-1000",
    "bookingUrl": "https://www.tripadvisor.com/old-town-walking-tour-1000",
    "details": {}
  },
  {
    "name": "Castle Hill Gardens",
    "kind": "attraction",
    "city": "Prague",
    "country": "Czechia",
    "rating": 4.6,
    "reviews": 5420,
    "rank": 11,
    "rankOutOf": 720,
    "priceRange": null,
    "lowestTicketPrice": null,
    "taId": "2312642660",
    "tripadvisorUrl": "https://www.tripadvisor.com/castle-hill-gardens-1001",
    "photos": [
      "https://img.tripadvisor.com/castle-hill-gardens.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/castle-hill-gardens-1001",
    "bookingUrl": "https://www.tripadvisor.com/castle-hill-gardens-1001",
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try attractions in the playground Examples and pricing for attractions
Search hotelssearchHotels

Hotels for a destination. Every hit a full card, priced for the stay when dates are given.

FieldTypeMeaning
query *string · ≤300 charsA destination, or a dish for restaurants.
languagestring · BCP-47
currencystring · ISO 4217
limitinteger · 1-100
stayobject
stay.checkInstring · YYYY-MM-DDFirst night, YYYY-MM-DD. Only read together with checkOut.
stay.checkOutstring · YYYY-MM-DDDeparture day, YYYY-MM-DD, after checkIn. Leave both out for a card without prices.

Response fields, each row of data

FieldType
taIdstring
kindstring
namestring
tripadvisorUrlstring
descriptionstring
addressany
citystring
countrystring
latitudenumber
longitudenumber
phonestring
emailstring
websitestring
ratingnumber
reviewsinteger
ratingBreakdownany
reviewTagsany
rankinteger
rankOutOfinteger
photoslist of string
photoCountinteger
subcategorieslist of string
hotelClassstring
roomsinteger
priceRangestring
priceLevelstring
amenitieslist of string
hotelOffersany
roomTipsany
categoryRatingBreakdownany
nearbyTransitany
cuisineslist of string
mealTypeslist of string
dietaryRestrictionslist of string
establishmentTypeslist of string
featureslist of string
popularDisheslist of string
menuUrlstring
openingHoursany
timezonestring
neighborhoodany
closedboolean
orderOnlineany
categoryRatingsany
attractionTypeslist of string
ticketOffersany
lowestTicketPricenumber
bookingUrlstring
nearestMetroStationsany
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · searchHotels
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchHotels","query":"Lisbon","currency":"EUR","limit":20,"stay":{"checkIn":"2027-03-12","checkOut":"2027-03-15"}}'

Example response rows

data · made-up names, real field names
[
  {
    "name": "Hotel Alfama View",
    "kind": "hotel",
    "city": "Lisbon",
    "country": "Portugal",
    "rating": 4.6,
    "reviews": 1840,
    "rank": 9,
    "rankOutOf": 540,
    "priceRange": "$$$",
    "hotelClass": 4,
    "rooms": 64,
    "taId": "241348951",
    "tripadvisorUrl": "https://www.tripadvisor.com/hotel-alfama-view-1000",
    "photos": [
      "https://img.tripadvisor.com/hotel-alfama-view.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/hotel-alfama-view-1000",
    "bookingUrl": "https://www.tripadvisor.com/hotel-alfama-view-1000",
    "details": {}
  },
  {
    "name": "Baixa Boutique Inn",
    "kind": "hotel",
    "city": "Lisbon",
    "country": "Portugal",
    "rating": 4.4,
    "reviews": 960,
    "rank": 22,
    "rankOutOf": 540,
    "priceRange": "$$",
    "hotelClass": 3,
    "rooms": 18,
    "taId": "2808829158",
    "tripadvisorUrl": "https://www.tripadvisor.com/baixa-boutique-inn-1001",
    "photos": [
      "https://img.tripadvisor.com/baixa-boutique-inn.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/baixa-boutique-inn-1001",
    "bookingUrl": "https://www.tripadvisor.com/baixa-boutique-inn-1001",
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try search hotels in the playground Examples and pricing for search hotels
Search restaurantssearchRestaurants

Restaurants for a destination or dish. Every hit a full card.

FieldTypeMeaning
query *string · ≤300 charsA destination, or a dish for restaurants.
languagestring · BCP-47
currencystring · ISO 4217
limitinteger · 1-100

Response fields, each row of data

FieldType
taIdstring
kindstring
namestring
tripadvisorUrlstring
descriptionstring
addressany
citystring
countrystring
latitudenumber
longitudenumber
phonestring
emailstring
websitestring
ratingnumber
reviewsinteger
ratingBreakdownany
reviewTagsany
rankinteger
rankOutOfinteger
photoslist of string
photoCountinteger
subcategorieslist of string
hotelClassstring
roomsinteger
priceRangestring
priceLevelstring
amenitieslist of string
hotelOffersany
roomTipsany
categoryRatingBreakdownany
nearbyTransitany
cuisineslist of string
mealTypeslist of string
dietaryRestrictionslist of string
establishmentTypeslist of string
featureslist of string
popularDisheslist of string
menuUrlstring
openingHoursany
timezonestring
neighborhoodany
closedboolean
orderOnlineany
categoryRatingsany
attractionTypeslist of string
ticketOffersany
lowestTicketPricenumber
bookingUrlstring
nearestMetroStationsany
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · searchRestaurants
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchRestaurants","query":"Rome","limit":20}'

Example response rows

data · made-up names, real field names
[
  {
    "name": "Taberna do Rio",
    "kind": "restaurant",
    "city": "Lisbon",
    "country": "Portugal",
    "rating": 4.7,
    "reviews": 2310,
    "rank": 6,
    "rankOutOf": 4800,
    "priceRange": "$$",
    "cuisines": [
      "Portuguese",
      "Seafood"
    ],
    "taId": "1280646348",
    "tripadvisorUrl": "https://www.tripadvisor.com/taberna-do-rio-1000",
    "photos": [
      "https://img.tripadvisor.com/taberna-do-rio.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/taberna-do-rio-1000",
    "bookingUrl": "https://www.tripadvisor.com/taberna-do-rio-1000",
    "details": {}
  },
  {
    "name": "Pasteis & Co",
    "kind": "restaurant",
    "city": "Lisbon",
    "country": "Portugal",
    "rating": 4.5,
    "reviews": 1520,
    "rank": 28,
    "rankOutOf": 4800,
    "priceRange": "$",
    "cuisines": [
      "Bakery",
      "Cafe"
    ],
    "taId": "1383105578",
    "tripadvisorUrl": "https://www.tripadvisor.com/pasteis-co-1001",
    "photos": [
      "https://img.tripadvisor.com/pasteis-co.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/pasteis-co-1001",
    "bookingUrl": "https://www.tripadvisor.com/pasteis-co-1001",
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try search restaurants in the playground Examples and pricing for search restaurants
Search attractionssearchAttractions

Things to do for a destination. Every hit a full card.

FieldTypeMeaning
query *string · ≤300 charsA destination, or a dish for restaurants.
languagestring · BCP-47
currencystring · ISO 4217
limitinteger · 1-100

Response fields, each row of data

FieldType
taIdstring
kindstring
namestring
tripadvisorUrlstring
descriptionstring
addressany
citystring
countrystring
latitudenumber
longitudenumber
phonestring
emailstring
websitestring
ratingnumber
reviewsinteger
ratingBreakdownany
reviewTagsany
rankinteger
rankOutOfinteger
photoslist of string
photoCountinteger
subcategorieslist of string
hotelClassstring
roomsinteger
priceRangestring
priceLevelstring
amenitieslist of string
hotelOffersany
roomTipsany
categoryRatingBreakdownany
nearbyTransitany
cuisineslist of string
mealTypeslist of string
dietaryRestrictionslist of string
establishmentTypeslist of string
featureslist of string
popularDisheslist of string
menuUrlstring
openingHoursany
timezonestring
neighborhoodany
closedboolean
orderOnlineany
categoryRatingsany
attractionTypeslist of string
ticketOffersany
lowestTicketPricenumber
bookingUrlstring
nearestMetroStationsany
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · searchAttractions
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"searchAttractions","query":"Kyoto","limit":20}'

Example response rows

data · made-up names, real field names
[
  {
    "name": "Tram 28 Heritage Ride",
    "kind": "attraction",
    "city": "Lisbon",
    "country": "Portugal",
    "rating": 4.3,
    "reviews": 9840,
    "rank": 14,
    "rankOutOf": 640,
    "priceRange": "$",
    "lowestTicketPrice": 3,
    "taId": "3617795509",
    "tripadvisorUrl": "https://www.tripadvisor.com/tram-28-heritage-ride-1000",
    "photos": [
      "https://img.tripadvisor.com/tram-28-heritage-ride.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/tram-28-heritage-ride-1000",
    "bookingUrl": "https://www.tripadvisor.com/tram-28-heritage-ride-1000",
    "details": {}
  },
  {
    "name": "Belém Tower",
    "kind": "attraction",
    "city": "Lisbon",
    "country": "Portugal",
    "rating": 4.6,
    "reviews": 41200,
    "rank": 2,
    "rankOutOf": 640,
    "priceRange": "$",
    "lowestTicketPrice": 10,
    "taId": "997333992",
    "tripadvisorUrl": "https://www.tripadvisor.com/bel-m-tower-1001",
    "photos": [
      "https://img.tripadvisor.com/bel-m-tower.jpg"
    ],
    "menuUrl": "https://www.tripadvisor.com/bel-m-tower-1001",
    "bookingUrl": "https://www.tripadvisor.com/bel-m-tower-1001",
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try search attractions in the playground Examples and pricing for search attractions
Reviewsreviews

Reviews for up to ten places of any kind. Text, rating, dates, trip type, sub-ratings, owner response, reviewer.

FieldTypeMeaning
subjects *list of string · 1-10 itemsTripadvisor place URLs of any kind.
sincestring · YYYY-MM-DD
ratingslist of integer · each 1-5Star values to keep, 1-5.
languageslist of string · each BCP-47Keep reviews written in these languages (BCP-47 codes, "en", "fr"). Empty = every language.
limitinteger · 1-100

Response fields, each row of data

FieldType
reviewIdstring
reviewUrlstring
reviewTitlestring
reviewTextstring
ratingnumber
postedDatestring
travelDatestring
tripTypestring
languagestring
helpfulVotesinteger
subratingsany
photoslist of string
ownerResponseany
reviewerNamestring
reviewerProfilestring
reviewerLocationstring
reviewerContributionsinteger
reviewerAvatarstring
detailsobject

Every field is present on every row: a value the source had nothing for is null, an empty list is []. details is always the last field: everything else the source sent for that row, under our own field names. Its keys depend on the source that answered, so read them defensively; it is {} when there is nothing more.

example request · reviews
curl -X POST https://apiforagents.dev/v1/tripadvisor \
  -H "Authorization: Bearer $AFA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"op":"reviews","subjects":["https://www.tripadvisor.com/Attraction_Review-<place-id>-Reviews-Statue_of_Liberty-New_York_City_New_York.html"],"since":"2026-01-01","languages":["en"],"limit":25}'

Example response rows

data · made-up names, real field names
[
  {
    "reviewerName": "Hannah W.",
    "reviewerLocation": "Berlin, Germany",
    "rating": 5,
    "reviewTitle": "Worth every penny",
    "reviewText": "River view rooms are stunning. Ask for floor 5.",
    "tripType": "Couples",
    "travelDate": "2026-09",
    "postedDate": "2026-10-02",
    "helpfulVotes": 12,
    "reviewId": "2801231053",
    "reviewUrl": "https://www.tripadvisor.com/worth-every-penny-1000",
    "photos": [
      "https://img.tripadvisor.com/worth-every-penny.jpg"
    ],
    "details": {}
  },
  {
    "reviewerName": "Arjun S.",
    "reviewerLocation": "Pune, India",
    "rating": 4,
    "reviewTitle": "Great breakfast, slow check-in",
    "reviewText": "Breakfast was excellent; check-in took 40 minutes.",
    "tripType": "Friends",
    "travelDate": "2026-09",
    "postedDate": "2026-09-28",
    "helpfulVotes": 4,
    "reviewId": "1539881488",
    "reviewUrl": "https://www.tripadvisor.com/great-breakfast-slow-check-in-1001",
    "photos": [
      "https://img.tripadvisor.com/great-breakfast-slow-check-in.jpg"
    ],
    "details": {}
  }
]

An example to show the shape. The rows show the most used fields; a live row carries every field in the table above.

Try reviews in the playground Examples and pricing for reviews
Historyhistoryfree

Stored rating/review-count/rank series of places already held. Free.

FieldTypeMeaning
subjects *list of string · 1-10 items
metricenumrating · reviews · rank
daysinteger · 1-730
Try history in the playground

Guides and ideas.

Use it from your tools.

More in places & travel.

All platforms