# Q-Tickets Scraper (`aboo.script/q-tickets-scraper`) Actor

⚡ Fast Q-Tickets scraper. No login, no API key. Get concerts, shows, sports, tours and leisure events in Qatar, UAE, Bahrain and Nepal by country or event URL, with venue, dates, every session time and every ticket type with price and availability. Perfect for price monitoring.

- **URL**: https://apify.com/aboo.script/q-tickets-scraper.md
- **Developed by:** [Aboo Script](https://apify.com/aboo.script) (community)
- **Security:** Limited permissions
- **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

## Q-Tickets Scraper

![Q-Tickets Scraper](https://i.ibb.co/tMhkYK1t/q-tickets-banner.png)

**Q-Tickets Scraper** extracts events from [Q-Tickets](https://www.q-tickets.com/) in Qatar, the UAE, Bahrain and Nepal into clean, structured data you can download as JSON, CSV, Excel, or HTML. Paste a Q-Tickets events page or event URL and get the title, venue, dates, session times, and every ticket type with its price and availability. No account or login required.

### Introduction

[Q-Tickets](https://www.q-tickets.com/) is one of the main ticketing platforms in Qatar and the Gulf, selling tickets for concerts, comedy shows, theatre, sports, tours, water sports and leisure activities in Doha, Dubai, Abu Dhabi, Manama and Kathmandu. Its listings are a good view of what is happening in the region and at what price.

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 Q-Tickets?

- 🎫 Event title, description, and status
- 📍 Venue, address, and country
- 📅 Start and end dates, doors-open and show times
- 🕒 Every session (date and time) with its own ticket list
- 💲 Every ticket type with price, service charge, currency, and number of people admitted
- 📦 Available quantity, sold-out flag, and min/max tickets per order
- 💰 Lowest and highest ticket price per event
- 🖼️ Event image and seating layout image
- 🔗 Event page URL and booking URL

### Use Cases

- 📈 **Market research**: track which concerts, shows and activities are on sale in Qatar, the UAE, Bahrain and Nepal, and how they are priced.
- 🕵️ **Competitor monitoring**: follow ticket prices, sold-out ticket types and new events of promoters and venues.
- 🤝 **Lead generation**: build a list of venues and event organizers active in the Gulf.
- 🗂️ **Database building**: create your own calendar of events and leisure activities with all prices.
- 🤖 **AI and automation**: feed clean, structured data into spreadsheets, dashboards, or AI workflows.

### How to scrape Q-Tickets step by step

1. Paste one or more Q-Tickets URLs into **Start URLs**.
2. Optionally pick a **Category**, a date range, or a price range.
3. Set **Maximum number of results** to how many events you want per URL.
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**: Q-Tickets URLs to scrape. Supported pages: country events pages (`https://events.q-tickets.com/qatar/events`, `/uae/events`, `/bahrain/events`, `https://np.q-tickets.com/`), the theatre and leisure listings (`/qatar/theatre`, `/qatar/Leisurelist`), and single event pages (`/qatar/eventdetails/...`).
- **Maximum number of results**: how many events to collect for each start URL. Set 0 for no limit.
- **Category**: only scrape events of one category (Sports, Theatre, Water Sports, Leisure, Entertainment, Charity, Education, Food & Dining). Applies to country events pages.
- **From date** and **To date**: only scrape events running in this date range. Sessions outside the range are left out.
- **Minimum price** and **Maximum price**: the same price filter as on the website, in the local currency.
- **Maximum dates per event**: how many dates to load with session times and ticket prices for each event. Daily tours and activities can have more than 100 dates. Set 0 for all dates.

### Input Examples

Scrape upcoming events in Qatar:

```json
{
  "startUrls": [{ "url": "https://events.q-tickets.com/qatar/events" }],
  "maxResults": 5,
  "category": "all",
  "maxDatesPerEvent": 10
}
```

Scrape entertainment events in the UAE and Bahrain for November:

```json
{
  "startUrls": [
    { "url": "https://events.q-tickets.com/uae/events" },
    { "url": "https://events.q-tickets.com/bahrain/events" }
  ],
  "maxResults": 20,
  "category": "entertainment",
  "startDate": "2026-11-01",
  "endDate": "2026-11-30",
  "maxDatesPerEvent": 10
}
```

### Output

Each event is saved as one item in the dataset. Here is an example of a single item (ticket list shortened):

```json
{
  "url": "https://events.q-tickets.com/qatar/eventdetails/6540860098/mayfair-presents-abba-tribute-night",
  "eventId": "6540860098",
  "title": "MAYFAIR PRESENTS ABBA TRIBUTE NIGHT",
  "country": "Qatar",
  "currency": "QAR",
  "venue": "The Garden, Doha Golf Club",
  "address": null,
  "startDate": "2026-11-05",
  "endDate": "2026-11-05",
  "doorsOpen": null,
  "showTime": "07:00 PM",
  "minPrice": 215,
  "maxPrice": 7500,
  "availability": "In Stock",
  "eventStatus": "Scheduled",
  "admission": "18+",
  "description": "A NIGHT OF ABBA’S GREATEST HITS\nThe music of ABBA takes center stage for one unforgettable night in Doha. ...",
  "imageUrl": "https://admine.q-tickets.com/Uploads/MediaSEO/BANNER134363716705881473134363737303721646.webp",
  "seatingLayoutUrl": null,
  "bookingUrl": "https://events.q-tickets.com/Qatar/eventtickets/6540860098",
  "totalDates": 1,
  "sessions": [
    {
      "date": "2026-11-05",
      "startTime": "7:00 PM",
      "endTime": null,
      "startsAt": "2026-11-05T19:00:00+03:00",
      "tickets": [
        {
          "ticketId": 3357381,
          "name": "VIP Standing Phase 2",
          "description": null,
          "price": 325,
          "serviceCharge": 0,
          "discount": null,
          "admitCount": 1,
          "availableQuantity": 48,
          "isSoldOut": false,
          "minPerOrder": 1,
          "maxPerOrder": 10,
          "venue": "The Garden, Doha Golf Club",
          "gate": null
        },
        {
          "ticketId": 3357382,
          "name": "Silver (10 Pax)",
          "description": null,
          "price": 6500,
          "serviceCharge": 0,
          "discount": null,
          "admitCount": 10,
          "availableQuantity": 10,
          "isSoldOut": false,
          "minPerOrder": 1,
          "maxPerOrder": 1,
          "venue": "The Garden, Doha Golf Club",
          "gate": null
        }
      ]
    }
  ]
}
```

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

### Notes

- Supported countries: Qatar, UAE, Bahrain and Nepal (Oman, Kuwait and Saudi pages are supported too but currently list no events). The India website, movie pages, past events and the UAE attractions pages (`/uae/eventlist`, `/uae/categorylist/...`) are not supported; those URLs are skipped.
- Etihad Arena events in the UAE are sold on a seat map, so they come with dates, show times and the starting price, but without a ticket list.
- Prices are in the local currency of the country (QAR, AED, BHD, NPR) and are shown as on the website, before booking fees.
- The price filter works like the one on the website, which also looks at earlier or sold-out ticket phases, so an event can appear even if its current tickets are outside the range.
- `totalDates` shows how many dates the event has in total; only the first dates up to **Maximum dates per event** are loaded with sessions and tickets.
- Some events do not show doors-open time, an address or a seating layout; those fields are returned as `null`.

### Why use the Q-Tickets Scraper?

- ✅ **No login needed**: works with public data only, so there is no account to manage.
- 🎟️ **Every ticket, every session**: get all ticket types per date and time, not just the lowest price.
- 🧹 **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 and a date limit per event to 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 to get every event of the page. The actor stops when it reaches your limit or runs out of events.

#### Do I need a Q-Tickets account?

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

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

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

#### Why are some fields empty?

Some events simply do not show every piece of information. 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 with category, date and price filters. If you need other inputs, such as keyword search or the UAE attractions pages, 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 event ticketing platforms?

- [Webook Scraper - Events & Experiences](https://apify.com/aboo.script/webook-scraper): events and experiences in Saudi Arabia and the Gulf with ticket prices.
- [Virgin Megastore Tickets Scraper](https://apify.com/aboo.script/tickets-virginmegastore-me-scraper): concerts and shows sold by Virgin Megastore Tickets in the Middle East.
- [Etihad Arena Scraper](https://apify.com/aboo.script/etihadarena-ae-scraper): events at Etihad Arena in Abu Dhabi with ticket prices.
- [The Agenda Scraper - Dubai Concerts & Shows](https://apify.com/aboo.script/theagenda-scraper): concerts and shows in Dubai.
- [Ticketmaster Scraper](https://apify.com/aboo.script/ticketmaster-scraper): events, venues and ticket prices from Ticketmaster.

***

**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: [Q-Tickets](https://www.q-tickets.com/)

# Actor input Schema

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

Q-Tickets events URLs: a country events page (https://events.q-tickets.com/qatar/events, /uae/events, /bahrain/events, https://np.q-tickets.com/), a theatre or leisure listing (/qatar/theatre, /qatar/Leisurelist) or an event page (/qatar/eventdetails/...).

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

Maximum number of events to scrape per start URL. Set 0 for no limit.

## `category` (type: `string`):

Only scrape events of this category. Applies to country events pages; theatre and leisure listings keep their own category.

## `startDate` (type: `string`):

Only events (and sessions) on or after this date (YYYY-MM-DD). Applies to listing pages; sessions of event pages are filtered too.

## `endDate` (type: `string`):

Only events (and sessions) on or before this date (YYYY-MM-DD). Applies to listing pages; sessions of event pages are filtered too.

## `minPrice` (type: `integer`):

Website price filter in the local currency (QAR, AED, BHD, NPR). Applies to listing pages.

## `maxPrice` (type: `integer`):

Website price filter in the local currency (QAR, AED, BHD, NPR). Applies to listing pages.

## `maxDatesPerEvent` (type: `integer`):

Maximum number of dates to load with session times and ticket prices for each event (daily tours can have 100+ dates). Set 0 for all dates.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://events.q-tickets.com/qatar/events"
    }
  ],
  "maxResults": 5,
  "category": "all",
  "maxDatesPerEvent": 10
}
```

# 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://events.q-tickets.com/qatar/events"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("aboo.script/q-tickets-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://events.q-tickets.com/qatar/events" }] }

# Run the Actor and wait for it to finish
run = client.actor("aboo.script/q-tickets-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://events.q-tickets.com/qatar/events"
    }
  ]
}' |
apify call aboo.script/q-tickets-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,aboo.script/q-tickets-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/ptzCZxpPMiBASbPhU/builds/WPrGXc42CVZGfjwL3/openapi.json
