mcpField
T
tripadvisor

tripadvisor

github.com/borski生产力78088 次安装2 天前更新
代码仓库

关于 tripadvisor

用于查询 TripAdvisor Content API 的技能,可获取酒店、餐厅和景点信息,包括排名、评价、照片与设施;不提供价格或预订功能。

主要功能

  1. 01按名称或类别搜索地点
  2. 02获取评分与排名数据
  3. 03查询近期评价和照片
  4. 04按坐标查找附近地点
  5. 05查看设施、奖项和细分评分

适用场景

  1. 01按评分和设施比较酒店
  2. 02查找酒店附近的餐厅
  3. 03调研目的地周边景点

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/borski/travel-hacking-toolkit --skill tripadvisor

安装后在 Claude Code 中输入/tripadvisor确认已加载。

详细介绍

TripAdvisor 内容 API

搜索并检索 TripAdvisor 的酒店、餐厅和景点数据,包括评分、排名、评论、照片、设施、细分评分、旅行类型和奖项。

基础 URL: https://api.content.tripadvisor.com/api/v1

速率限制: 每秒 50 次调用。

每月配额: 每月 5,000 次 API 调用。每个 curl 请求 = 1 次调用。完整查询一家酒店(搜索 + 详情 + 评论 + 照片)= 4 次调用。请合理安排配额。优先使用搜索 + 详情(2 次调用),仅在确有需要时获取评论或照片。

API 限制: 每次搜索最多返回 10 条结果。每个地点最多返回 5 条评论和 5 张照片。

身份验证

首次设置时的注意事项: TripAdvisor 要求先在 https://www.tripadvisor.com/developers 将出站 IP 加入白名单,之后密钥才能生效。若未完成此操作,每次调用都会返回 User is not authorized to access this resource with an explicit deny。这是首次使用时最常见的故障原因。请先添加白名单,再排查身份验证或配额问题。

  • 如何查找当前 IP: curl ifconfig.me
  • 生效时间: 更改需要 1-5 分钟生效(AWS 边缘缓存)。
  • 多个 IP: 居民 CGNAT、VPN 出口和不同网络都需要分别添加。
  • 无 Referer 替代方案: 免费层要求将 IP 加入白名单;不支持 HTTP Referer 限制。
  • 确认密钥对应关系: 开发者门户仅显示末尾 4 个字符(例如“Ends in 11D7”),因此无需暴露密钥即可确认。

在 .env 文件中设置 TRIPADVISOR_API_KEY:

# In .env (gitignored)
TRIPADVISOR_API_KEY=your_key_here

然后在调用前加载该文件:

export $(grep TRIPADVISOR_API_KEY .env | xargs)
错误特征
响应含义解决方法
User is not authorized to access this resource with an explicit denyIP 不在白名单中在开发者门户中将当前 IP 加入白名单,并等待 1-5 分钟
Forbidden / 403 with no body密钥无效或已过期重新生成密钥
429 Too Many Requests已达到每月配额(5,000 次调用)等到下个月或升级套餐

端点

1. 地点搜索

按名称查找地点。最多返回 10 条结果。

curl -s "https://api.content.tripadvisor.com/api/v1/location/search?key=$TRIPADVISOR_API_KEY&searchQuery=NOFO+Hotel+Stockholm&category=hotels&language=en"

参数:

参数必填说明
searchQuery是文本搜索查询(酒店、餐厅或城市的名称)
category否筛选:hotels、restaurants、attractions、geos
phone否电话号码筛选(任意格式,不带开头的 +)
address否地址筛选
latLong否纬度/经度对,例如 59.3127,18.0716
radius否距离 latLong 的半径(数字)
radiusUnit否km、mi 或 m
language否默认值为 en。支持 40 多种语言。

响应结构:

{
  "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"
      }
    }
  ]
}
2. 地点详情

通过 ID 获取地点的综合信息。这是信息最丰富的端点。

curl -s "https://api.content.tripadvisor.com/api/v1/location/{locationId}/details?key=$TRIPADVISOR_API_KEY&language=en&currency=USD"

参数:

参数必填说明
locationId是(路径参数)搜索结果中的 TripAdvisor 地点 ID
language否默认值为 en
currency否ISO 4217 代码,默认值为 USD

响应包含:

  • name、web_url、address_obj、latitude、longitude、timezone、phone
  • rating(字符串,例如 "4.6")、num_reviews(字符串,例如 "845")
  • review_rating_count:按星级划分的数量({"1": "7", "2": "10", ...})
  • ranking_data:ranking(第 10 名)、ranking_out_of(168)、ranking_string(“斯德哥尔摩 168 家酒店中的第 10 名”)
  • subratings:位置、睡眠质量、客房、服务、性价比、清洁度(每项范围为 0.0 到 5.0)
  • price_level:"$"、"$$"、"$$$"、"$$$$"
  • amenities:字符串数组
  • styles:数组(例如 "Family"、"Centrally Located")
  • neighborhood_info:包含 location_id 和名称的数组
  • trip_types:商务、情侣、独行、家庭、朋友及对应数量
  • awards:Travelers Choice、Best of Best 等,包含年份和图片
  • parent_brand、brand:所属连锁品牌
  • category、subcategory:酒店/餐厅/景点
  • photo_count、see_all_photos URL
  • write_review URL
3. 地点评论

获取最近的最多 5 条评论。

curl -s "https://api.content.tripadvisor.com/api/v1/location/{locationId}/reviews?key=$TRIPADVISOR_API_KEY&language=en"

参数:

参数必填说明
locationId是(路径)TripAdvisor 地点 ID
language否默认值为 en
limit否结果数量(免费套餐最多 5 条)
offset否第一条结果的索引

响应结构:

{
  "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": {}
    }
  ]
}

注意: 对于英文评论较少的地点,评论可能返回空的 data: []。对于国际酒店,可以尝试不同的 language 值。

4. 地点照片

获取最近的最多 5 张照片,并提供多种尺寸选项。

curl -s "https://api.content.tripadvisor.com/api/v1/location/{locationId}/photos?key=$TRIPADVISOR_API_KEY&language=en"

参数:

参数必填说明
locationId是(路径)TripAdvisor 地点 ID
language否默认值为 en
limit否结果数量(免费套餐最多 5 条)
offset否第一条结果的索引
source否逗号分隔:Expert、Management、Traveler

响应中的照片尺寸:

  • thumbnail:50x50,裁剪后
  • small:150x150,裁剪后
  • medium:最长边为 250px
  • large:最长边为 550px
  • original:原始分辨率
5. 附近地点搜索

查找坐标附近的地点。最多返回 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"

参数:

参数必填说明
latLong是纬度/经度对,例如 59.3127,18.0716
category否hotels、restaurants、attractions、geos
phone否电话号码筛选条件
address否地址筛选条件
radius否距离 latLong 的半径
radiusUnit否km、mi、m
language否默认值为 en

每条结果都包含 distance(公里)和 bearing(例如 “northwest”)。

常见工作流

酒店调研(最常见)
# 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&currency=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"

适用场景

  • 评估酒店(评分、排名、细分评分、评论情感)
  • 比较酒店附近或某个街区内的餐厅
  • 查找目的地附近的景点和活动
  • 获取 TripAdvisor 排名数据(“斯德哥尔摩 168 家酒店中的第 1 名”)
  • 查看设施、旅行类型细分数据和获奖情况
  • 核实酒店所属连锁品牌和街区信息

不适用场景

  • 价格或空房情况。 TripAdvisor Content API 不提供价格数据。查询价格请使用 serpapi、liteapi、chase-travel、amex-travel 或 rapidapi。
  • 预订。 此处仅提供只读数据,不支持预订。
  • 批量抓取。 每月 5,000 次调用,请谨慎使用。

酒店比较的关键数据点

比较酒店时,请提取并展示:

字段路径示例
评分rating"4.6"
评论数num_reviews"845"
排名ranking_data.ranking_string"斯德哥尔摩 168 家酒店中的第 10 名"
位置细分评分subratings.0.value"4.7"
服务细分评分subratings.3.value"4.7"
清洁度细分评分subratings.5.value"4.8"
价格等级price_level"$$$$"
占比最高的旅行类型最高的 trip_types[].value"情侣:381"
奖项awards[].display_name"Travelers Choice 2025"
早餐amenities 包含 "Breakfast included"是/否
连锁品牌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

搜索斯堪的纳维亚酒店的当地语言评论时,丹麦语使用 da,挪威语使用 no,瑞典语使用 sv。

评论

支持 Markdown