# Tiqets Reviews Scraper (`stealth_mode/tiqets-reviews-scraper`) Actor

Scrape verified traveler reviews from Tiqets.com by tour ID. Collect ratings, reviewer details, review body, media, and aggregated stats — perfect for reputation monitoring, sentiment analysis, and travel market research.

- **URL**: https://apify.com/stealth\_mode/tiqets-reviews-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Tiqets.com Reviews Scraper: Extract Tour & Attraction Reviews at Scale

***

### What Is Tiqets.com?

Tiqets.com is a global booking platform for museums, attractions, and experiences, operating in dozens of countries. Each listing accumulates verified post-visit reviews that contain rich signals about customer satisfaction, product quality, and traveler demographics. Collecting this data manually is impractical at scale — the **Tiqets.com Reviews Scraper** automates extraction from any tour or attraction by ID, returning clean structured records ready for analysis.

***

### Overview

The **Tiqets Reviews Scraper** targets the review section of any Tiqets product page. It is useful for:

- **Travel brands** monitoring reputation across their listings
- **Market researchers** studying traveler sentiment by attraction or region
- **Aggregator platforms** enriching product pages with review data
- **Data analysts** building NLP/sentiment pipelines on tourism content

***

### Input Format

The scraper uses a parameter-based input — no URL required. Identify a product by its **Tour ID**, found in the listing URL:

```
https://www.tiqets.com/en/musee-dorsay-tickets-l141867/ -> Tour ID: 141867
```

```json
{
  "tour_id": "141867",
  "sort_by": "score_desc",
  "page": 2,
  "max_items_per_url": 200,
  "ignore_url_failures": true
}
```

#### Input Field Reference

| Field | Type | Description |
|---|---|---|
| `tour_id` | string | The numeric ID extracted from the Tiqets listing URL (e.g., `141867` from `/en/musee-dorsay-tickets-l141867/`) |
| `sort_by` | string (enum) | Sort order for reviews. Options: `relevance-desc` (Relevance), `date-desc` (New to Old), `date-asc` (Old to New), `rating-desc` (High to Low), `rating-asc` (Low to High) |
| `page` | integer | Page number to start collecting from. Default: `1`. Use `2`+ to resume or skip already-collected pages |
| `max_items_per_url` | integer | Maximum reviews to collect per run. Default: `20`. Set up to `200`+ for bulk collection |
| `ignore_url_failures` | boolean | If `true`, the scraper continues running when a request fails rather than halting the entire run |

> **Tip:** To collect all reviews for a high-volume attraction, set `max_items_per_url` to a high value and start from `page: 1`. Use `sort_by: date-desc` to always capture the most recent reviews first.

***

### Output Format

#### Sample Record

```json
{
  "id": 2291072,
  "date": "2025-10-22",
  "rating": 5.0,
  "reviewer": "Helene",
  "country": {
    "name": "United States",
    "flag_url": "https://aws-tiqets-cdn.imgix.net/images/flags/US.png?auto=format%2Ccompress&fit=crop&q=70&s=7147173af75f7c738e516fee0287f64f"
  },
  "pictures": [],
  "body": "Booking the tickets was very simple and everything went smoothly. Unfortunately, I had to cancel one of the two, and that went just as easily. Would definitely recommend using Tiqets.",
  "language": "en",
  "product": {
    "title": "Musée d'Orsay: Renoir and Love (1865-1885)",
    "url": "/en/things-to-do-in-paris-c66746/tickets-for-orsay-museum-exhibition-p1080858/"
  },
  "media": [],
  "review_hash": "GVM1B0",
  "product_average_rating": 4.440855323020928,
  "product_total_reviews": 6594,
  "total_helpful_reviews": 1,
  "from_url": "https://www.tiqets.com/web_api/reviews/venue/141867?page=2&pageSize=20&language=en&sortDirection=desc&sortField=relevance&sort=score_desc"
}
```

Each review returns the following fields:

#### Review Identity

| Field | Meaning |
|---|---|
| `ID` | Unique internal identifier for the review |
| `Review Hash` | Fingerprint hash for deduplication across runs |
| `Date` | Date the review was submitted |
| `Language` | Language the review was written in |

#### Reviewer Info

| Field | Meaning |
|---|---|
| `Reviewer` | Display name or anonymized identifier of the reviewer |
| `Country` | Reviewer's country of origin |

#### Review Content

| Field | Meaning |
|---|---|
| `Rating` | Numeric score given by the reviewer (typically 1–5) |
| `Body` | Full text of the review |
| `Pictures` | URLs of photos attached by the reviewer |
| `Media` | Additional media assets (videos or supplementary images) |

#### Product & Aggregates

| Field | Meaning |
|---|---|
| `Product` | Name and metadata of the reviewed attraction or tour |
| `Product Average Rating` | Overall average rating across all reviews for this product |
| `Product Total Reviews` | Total number of reviews the product has received |
| `Total Helpful Reviews` | Number of reviews marked as helpful by other users |

***

### How to Use

1. **Find the Tour ID** — Open any Tiqets listing. The ID is the number after the final `-l` in the URL (e.g., `/en/louvre-museum-l98234/` → `98234`).
2. **Set sort order** — Use `date-desc` for fresh reviews; `rating-asc` to surface critical feedback.
3. **Configure page and limit** — Start at `page: 1` with `max_items_per_url` matching your target volume.
4. **Run and export** — Download results as JSON or CSV for use in spreadsheets, BI tools, or NLP pipelines.

**Common issues:**

- If `tour_id` is incorrect, the run returns no data. Double-check the URL pattern.
- Set `ignore_url_failures: true` for uninterrupted bulk runs across multiple tour IDs.

***

### Use Cases & Business Value

- **Reputation management:** Track rating trends over time for your own or competitor listings
- **Sentiment analysis:** Feed `Body` + `Language` fields into NLP models for multilingual insight
- **Content enrichment:** Pull review snippets and ratings into third-party travel platforms
- **Research:** Analyze traveler demographics (`Country`) and satisfaction patterns by attraction type

***

### Conclusion

The **Tiqets.com Reviews Scraper** turns a platform's public review data into a structured, analysis-ready dataset with minimal configuration. With flexible sorting, pagination control, and rich per-review output, it is a practical tool for anyone working with travel reputation data at scale.

# Actor input Schema

## `tour_id` (type: `string`):

Enter Tour ID. For example, /en/musee-dorsay-tickets-l141867/ -> 141867)

## `sort_by` (type: `string`):

Select your option to sort reviews

## `page` (type: `integer`):

Page to start from

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "tour_id": "141867",
  "page": 1,
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "tour_id": "141867",
    "page": 1,
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/tiqets-reviews-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "tour_id": "141867",
    "page": 1,
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/tiqets-reviews-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "tour_id": "141867",
  "page": 1,
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/tiqets-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/tiqets-reviews-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/aQstvKmyhNoq9RLPJ/builds/bNAalvjojILeoCRfO/openapi.json
