# Tripadvisor data in Python. Pay per record.

> Get Tripadvisor data into Python: one HTTPS call per operation, a free quote first, pay per record from $0.0018 per record.

Canonical: https://apiforagents.dev/integrations/python/tripadvisor · Updated 2026-10-21

Call the Tripadvisor API from Python with one HTTPS request per operation: hotels, restaurants, attractions and search hotels. Every call can be quoted free first, and you pay per record that comes back, from $0.0018 per record, from a prepaid balance with $0.10 free to start.

- Works with: Python
- Operations: 7
- Price: From $0.0018 per record
- Free to start: $0.10

## Set it up in Python

1. pip install requests, and put your API key in the AFA_KEY environment variable.
2. Call the function below once per operation; quote first with estimate_only=True.

## Hotels

python · Tripadvisor hotels:

```python
import os, requests

def tripadvisor(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/tripadvisor",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = tripadvisor("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"},
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Restaurants

python · Tripadvisor restaurants:

```python
import os, requests

def tripadvisor(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/tripadvisor",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = tripadvisor("restaurants", {
    "subjects": ["https://www.tripadvisor.com/Restaurant_Review-<place-id>-Reviews-Katz_s_Delicatessen-New_York_City_New_York.html"],
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Attractions

python · Tripadvisor attractions:

```python
import os, requests

def tripadvisor(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/tripadvisor",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = tripadvisor("attractions", {
    "subjects": ["https://www.tripadvisor.com/Attraction_Review-<place-id>-Reviews-Statue_of_Liberty-New_York_City_New_York.html"],
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Search hotels

python · Tripadvisor searchHotels:

```python
import os, requests

def tripadvisor(op: str, params: dict, estimate_only: bool = False) -> dict:
    r = requests.post(
        "https://apiforagents.dev/v1/tripadvisor",
        headers={"Authorization": f"Bearer {os.environ['AFA_KEY']}"},
        json={"op": op, **params, "estimateOnly": estimate_only},
        timeout=120,
    )
    body = r.json()
    if r.status_code != 200:
        raise RuntimeError(f"{body.get('error')}: {body.get('error_description')}")
    return body  # read body["coverage"] before body["data"]

quote = tripadvisor("searchHotels", {
    "query": "Lisbon",
    "currency": "EUR",
    "limit": 20,
    "stay": {"checkIn":"2027-03-12","checkOut":"2027-03-15"},
}, estimate_only=True)
print(quote["cost"]["wouldChargeUsd"])
```

## Tripadvisor operations you can call

List prices per record. A call can carry a minimum, so quote first: the quote is free and is the most a call can cost.

| Operation | Price per record |
|---|---|
| Hotels | $0.0018 |
| Restaurants | $0.0018 |
| Attractions | $0.0018 |
| Search hotels | $0.0018 |
| Search restaurants | $0.0018 |
| Search attractions | $0.0018 |
| Reviews | $0.0018 |

## Each operation in detail

- [Tripadvisor Hotels API](https://apiforagents.dev/platforms/tripadvisor/hotels-api): inputs, fields, sample, price
- [Tripadvisor Restaurants API](https://apiforagents.dev/platforms/tripadvisor/restaurants-api): inputs, fields, sample, price
- [Tripadvisor Attractions API](https://apiforagents.dev/platforms/tripadvisor/attractions-api): inputs, fields, sample, price
- [Tripadvisor Hotel Search API](https://apiforagents.dev/platforms/tripadvisor/hotel-search-api): inputs, fields, sample, price
- [Tripadvisor Restaurant Search API](https://apiforagents.dev/platforms/tripadvisor/restaurant-search-api): inputs, fields, sample, price
- [Tripadvisor Attraction Search API](https://apiforagents.dev/platforms/tripadvisor/attraction-search-api): inputs, fields, sample, price
- [Tripadvisor Reviews API](https://apiforagents.dev/platforms/tripadvisor/reviews-api): inputs, fields, sample, price

## Questions

### Is there an SDK?

No SDK is needed: it is one HTTPS POST per call to https://apiforagents.dev/v1/tripadvisor, so requests or httpx is enough.

### How do I handle errors?

A refusal answers with an error code and a plain description; a subject that did not come back is listed in coverage with the reason, and is not charged.

### What does Tripadvisor data cost?

Pay as you go, from $0.0018 per record at the list price. Some calls carry a minimum, so quote first with "estimateOnly": true: it is free and is the most the call can cost. Records that do not come back are refunded.

## Why API for Agents

- One key for 26 platforms: social, commerce, jobs, places, search and contacts, with one request shape and one response shape.
- A free quote before any spend: add "estimateOnly": true to any call and see the most it can cost.
- Pay per record in US dollars. No subscription, nothing expires, top-ups from $5.
- $0.10 free to try, no card. An AI agent can sign itself up in one request; a person claims it later.
- Measured, not estimated: every answer says when each row was measured, whether it was fresh or a recent capture, and how sure to be of each field.
- Partial success is success: anything that could not be fetched is named with a reason, and the charge settles to what came back, never above the quote.
- Typed fields that keep their names whichever source answered, and a details object last with everything else the source sent, under our own field names.
- Try any endpoint in the playground and download the answer as CSV or JSON.

## Start

The playground runs any endpoint by hand: pick a platform and what you want from it, fill a short form named in plain words (or press Use sample input), see the free quote on the Run button, run it, then read the answer as a table or JSON and download it as CSV or JSON. The same call is written out as cURL, Python and Node while you type. Open it at https://apiforagents.dev/dashboard/run?platform=tripadvisor (sign in first).

Agents register at https://apiforagents.dev/auth.md (one POST, $0.10 free). People: https://apiforagents.dev/docs#start. Prices: https://apiforagents.dev/pricing.md
