# Thrillark Scraper (`aboo.script/thrillark-scraper`) Actor

⚡ Fast Thrillark scraper. No login, no API key. Get attractions, tours and tickets in Dubai, Abu Dhabi, Bali, Singapore and more by city name or URL: prices in 20 currencies, every ticket option with time slots, price calendar, ratings, photos, inclusions and location.

- **URL**: https://apify.com/aboo.script/thrillark-scraper.md
- **Developed by:** [Aboo Script](https://apify.com/aboo.script) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.10 / 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Thrillark Scraper

![Thrillark Scraper](https://i.ibb.co/kY5j0Sf/thrillark-banner.png)

**Thrillark Scraper** extracts attractions, tours, and tickets from [Thrillark](https://www.thrillark.com/) into clean, structured data you can download as JSON, CSV, Excel, or HTML. Paste a Thrillark city, category, or attraction URL, or type a city name, and get the name, price, rating, photos, inclusions, location, FAQs, and every ticket option with time slots and prices for each attraction. No account or login required.

### Introduction

[Thrillark](https://www.thrillark.com/) is an online booking platform for tours, attraction tickets, and things to do in cities such as Dubai, Abu Dhabi, Riyadh, Singapore, Bali, Bangkok, and Kuala Lumpur. Its listings show live prices, ticket types, and time slots, which makes it a useful source for travel pricing and market research.

This actor collects the same public information you see in your browser and turns it into a ready-to-use dataset. You can run it once, schedule it to run daily, or connect it to your own tools.

### What data can you extract from Thrillark?

- 🏷️ Attraction name, ID, code, city, and breadcrumbs
- 💲 "From" price, original price, and currency (20 currencies to choose from)
- 🎟️ All ticket options with inclusions, group size, availability, and time slots with adult, child, infant, and senior prices
- 📅 Price calendar with the lowest price for every available date
- ⭐ Rating and number of reviews
- 📝 Overview, highlights, description, features, inclusions, exclusions, insider tips, and additional information
- 📋 Cancellation policy, voucher information, and FAQs
- 📍 How to get there, address, latitude, longitude, and Google Maps link
- 🖼️ Main image and photo gallery
- 🔗 Direct URL to each attraction

### Use Cases

- 📈 **Market research**: compare tour and ticket prices across cities, dates, and ticket types.
- 🕵️ **Competitor monitoring**: track what Thrillark sells, at which price, and how prices change over time.
- 🧳 **Travel planning tools**: build itineraries or comparison sites with real attraction data and time slots.
- 🗂️ **Database building**: create your own catalog of attractions with descriptions, photos, and locations.
- 🤖 **AI and automation**: feed clean, structured data into spreadsheets, dashboards, or AI workflows.

### How to scrape Thrillark step by step

1. Paste one or more Thrillark URLs into **Start URLs**, or type city names into **Cities**.
2. Set **Maximum number of results** to how many attractions you want per URL or per city.
3. Optionally choose a **Currency**, a **Ticket date**, and how cities are sorted in **Sort by**.
4. Click **Start** and wait for the run to finish.
5. Download your data in JSON, CSV, Excel, or HTML from the **Output** tab.

### Input

- **Start URLs**: Thrillark URLs to scrape. Supported pages: city lists (for example `https://www.thrillark.com/dubai-tours/`), city pages (`things-to-do-in-...`), categories (for example `https://www.thrillark.com/dubai-adventure-c-26/`), and single attraction pages. The sort order in the URL is kept.
- **Cities**: city names, one per line (for example Dubai, Abu Dhabi, Bali). Each city is scraped separately.
- **Maximum number of results**: how many attractions to collect for each start URL or city. Set 0 for no limit.
- **Sort by**: Popular experiences or New arrivals. Applies to cities only.
- **Currency**: the currency of all prices, USD by default.
- **Ticket date**: the date for ticket options and time slots. Leave it empty to get the first available date of each attraction.

You can use start URLs, cities, or both in the same run.

### Input Examples

Scrape a city list from Thrillark:

```json
{
  "startUrls": [
    { "url": "https://www.thrillark.com/dubai-tours/?filters=1&sort_type=POPULARITY&sort_order=ASC" }
  ],
  "maxResults": 5,
  "currency": "USD"
}
```

Scrape by city name:

```json
{
  "searchQueries": ["Abu Dhabi"],
  "maxResults": 5,
  "sortBy": "POPULARITY",
  "currency": "USD"
}
```

### Output

Each attraction is saved as one item in the dataset. Here is an example of a single item (long texts and lists are shortened):

```json
{
  "url": "https://www.thrillark.com/la-perle-by-dragone-show-dubai-tickets-t-167/",
  "id": 167,
  "code": "ED00066",
  "name": "La Perle by Dragone Show Tickets",
  "city": "Dubai",
  "price": 44.93,
  "originalPrice": null,
  "currency": "USD",
  "rating": 4.9,
  "reviewCount": 128,
  "image": "https://thrillark.b-cdn.net/attractions/ED00066/2f6e07475c611c0a45aba29852db431f.jpg",
  "images": [
    "https://thrillark.b-cdn.net/attractions/ED00066/2f6e07475c611c0a45aba29852db431f.jpg",
    "https://thrillark.b-cdn.net/attractions/ED00066/e56bc8c097bda38410f32b8ee2c62141.jpg"
  ],
  "overview": "Book your tickets for La Perle by Dragone on your trip to Dubai, where you’ll experience one of the city’s most spectacular live shows...",
  "highlights": [
    "Witness the world's most technically advanced aqua-theatre: a 2.7-million-litre pool stage that transforms from dry stage to full depth in 60 seconds..."
  ],
  "description": "La Perle by Dragone is the Middle East's first and only permanent resident aqua-theatre show...",
  "features": ["Instant Confirmation", "E-tickets accepted", "Skip the Line Access"],
  "inclusions": [
    "General admission to La Perle by Dragone — 90-minute aqua-theatre show",
    "Your selected seat in your chosen category (Bronze, Silver, Gold, Platinum, or VIP)"
  ],
  "exclusions": [
    "Hotel transfers (taxi or private transport recommended — see Getting There in Additional Information)"
  ],
  "insiderTips": "La Perle is CLOSED on Sundays and Mondays - plan your Dubai itinerary accordingly...",
  "additionalInfo": "SHOW SCHEDULE:\n- La Perle performs Tuesday to Saturday only\n- CLOSED every Sunday, Monday, and during Ramadan...",
  "cancellationPolicy": "- La Perle show tickets cannot be refunded once the booking has been confirmed",
  "voucherInfo": "Your La Perle e-tickets will be emailed within minutes of completing your booking...",
  "howToGetThere": "La Perle by Dragone is located Al Habtoor City on Sheikh Zayed Rd...",
  "address": null,
  "latitude": 25.1841959,
  "longitude": 55.2543481,
  "googleMapsUrl": "https://maps.app.goo.gl/NytVsjQjbG2g2WkC8",
  "faqs": [
    {
      "category": "General",
      "question": "What is the best time to visit La Perle by Dragone?",
      "answer": "La Perle runs year-round from Tuesday to Saturday, excluding Ramadan..."
    }
  ],
  "breadcrumbs": ["Home", "Dubai", "Dubai Tours", "La Perle by Dragone Show Tickets"],
  "ticketDate": "2026-10-23",
  "ticketOptions": [
    {
      "name": "Platinum Seat with Lounge Access",
      "code": "VN7070",
      "type": "PAX",
      "minPax": null,
      "maxPax": 10,
      "fromPrice": 134.8,
      "available": true,
      "inclusions": [
        "90 - Minute Show",
        "Premium seating with a great view of the show",
        "Access to the VIP lounge",
        "Complimentary valet parking"
      ],
      "timeslots": [
        {
          "startTime": "06:30 PM",
          "endTime": "06:30 PM",
          "adultPrice": 134.8,
          "childPrice": 134.8,
          "infantPrice": null,
          "seniorPrice": null
        },
        {
          "startTime": "09:00 PM",
          "endTime": "09:00 PM",
          "adultPrice": 134.8,
          "childPrice": 134.8,
          "infantPrice": null,
          "seniorPrice": null
        }
      ]
    }
  ],
  "calendarPrices": [
    { "date": "2026-10-23", "price": 134.8 },
    { "date": "2026-10-25", "price": 134.86 }
  ]
}
```

You can download the dataset in JSON, CSV, Excel, XML, or HTML, or access it through the Apify API.

### Notes

- Only city lists, city pages, categories, and attraction pages are supported. Other pages, such as "discover" collections or other language versions, are skipped.
- A city page (`things-to-do-in-...`) returns all attractions of that city, not only the ones featured on the page.
- Attractions that are currently not bookable on Thrillark do not appear in lists, so the number of results can be lower than the total shown on the site.
- Thrillark ignores price sorting and the time-of-day and price filters on its list pages, so only Popular experiences and New arrivals are offered as sort options.
- `price` is the "from" price shown on Thrillark. Ticket option prices depend on the chosen date and can be higher.
- Ticket options that have no time slot on the chosen date are returned with `available: false` and an empty `timeslots` list.
- A city name that does not exist on Thrillark returns no results and is reported in the log.

### Why use the Thrillark Scraper?

- ✅ **No login needed**: works with public data only, so there is no account to manage.
- 🎟️ **Every ticket option**: all ticket types and time slots with prices per traveler type, plus a price calendar.
- 💱 **Any currency**: get prices in one of 20 currencies supported by Thrillark.
- 🧹 **Clean data**: numbers are real numbers, dates use one standard format, and text is free of HTML.
- 💸 **Pay for what you need**: set a result limit per URL or city and keep every run small and cheap.
- 🔄 **Ready for automation**: schedule runs, export to Google Sheets, or connect to Make, Zapier, and n8n.

### FAQ

#### How many results can I scrape?

You can set any number in **Maximum number of results**, or 0 for no limit. The actor keeps going until it reaches your limit or runs out of attractions.

#### Do I need a Thrillark account?

No. The actor only collects publicly available data. You do not need to log in or provide any account details.

#### Can I get ticket prices for a specific date?

Yes. Set **Ticket date** and every attraction returns its ticket options and time slots for that date. The price calendar is always included.

#### Can I scrape data on a schedule?

Yes. Use Apify Schedules to run the actor every hour, day, or week, and get fresh data automatically.

#### Why are some fields empty?

Some attractions simply do not show every piece of information, such as an address or an original price. When a field is not available on the website, it is returned as `null`.

#### Can I request a new feature or filter?

Yes. Right now the actor supports start URLs, city names, sorting, currency, and ticket date. If you need other inputs, such as reviews or a category filter for cities, get in touch and they can be added.

#### Can I get a custom or private version?

Yes. The actor can be customized for your workflow, delivered as a private version, or a new scraper can be built for a different website. Use the contact details below.

### Need to scrape other tours and attractions platforms?

- [Rayna Tours Scraper](https://apify.com/aboo.script/raynatours-scraper): tours, attractions, and events in 50+ cities with prices.
- [Tiqets Scraper - Attractions & Tours](https://apify.com/aboo.script/tiqets-scraper): attractions, tours, and tickets from Tiqets.
- [GetYourGuide Scraper - Activities & Attractions](https://apify.com/aboo.script/getyourguide-scraper): activities and attractions with prices and ratings.
- [Agoda Activities Scraper](https://apify.com/aboo.script/agoda-scraper): tours, attractions, and activities listed on Agoda.
- [Viator Scraper](https://apify.com/aboo.script/viator-scraper): tours and experiences from Viator.

***

**Need help or want a custom solution?**

- 📧 Email: aboo.script@gmail.com
- 🧩 More scrapers: [Apify profile](https://apify.com/aboo.script)

### Image Credit

Image credit: [Thrillark](https://www.thrillark.com/)

# Actor input Schema

## `startUrls` (type: `array`):

Thrillark city list (e.g. https://www.thrillark.com/dubai-tours/), city page (things-to-do-in-...), category (e.g. https://www.thrillark.com/dubai-adventure-c-26/) or attraction URLs. Sorting in the URL is kept.

## `searchQueries` (type: `array`):

City names to scrape all attractions from, e.g. Dubai, Abu Dhabi, Bali, Singapore. Each city is scraped separately.

## `maxResults` (type: `integer`):

Maximum number of attractions to scrape per start URL or city. Set 0 for no limit.

## `sortBy` (type: `string`):

Order of attractions for cities in 'Cities'. Start URLs keep their own sorting.

## `currency` (type: `string`):

Currency for all prices.

## `date` (type: `string`):

Date for ticket options and time slots (YYYY-MM-DD). Leave empty to use the first available date of each attraction.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.thrillark.com/dubai-tours/?filters=1&sort_type=POPULARITY&sort_order=ASC"
    }
  ],
  "searchQueries": [
    "Abu Dhabi"
  ],
  "maxResults": 5,
  "sortBy": "POPULARITY",
  "currency": "USD"
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "startUrls": [
        {
            "url": "https://www.thrillark.com/dubai-tours/?filters=1&sort_type=POPULARITY&sort_order=ASC"
        }
    ],
    "searchQueries": [
        "Abu Dhabi"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("aboo.script/thrillark-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 = {
    "startUrls": [{ "url": "https://www.thrillark.com/dubai-tours/?filters=1&sort_type=POPULARITY&sort_order=ASC" }],
    "searchQueries": ["Abu Dhabi"],
}

# Run the Actor and wait for it to finish
run = client.actor("aboo.script/thrillark-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.thrillark.com/dubai-tours/?filters=1&sort_type=POPULARITY&sort_order=ASC"
    }
  ],
  "searchQueries": [
    "Abu Dhabi"
  ]
}' |
apify call aboo.script/thrillark-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,aboo.script/thrillark-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/RuPUrQgdseIuL3shJ/builds/1312Gd2nfxYfdoBV9/openapi.json
