# Ticket Souq Scraper (`aboo.script/ticket-souq-scraper`) Actor

Scrape Ticket Souq events with dates, venues, organizers, and every ticket type with prices.

- **URL**: https://apify.com/aboo.script/ticket-souq-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.80 / 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

## Ticket Souq Scraper

![Ticket Souq Scraper](https://i.ibb.co/vCdtHnPK/ticket-souq-banner.png)

**Ticket Souq Scraper** extracts events and ticket prices from [Ticket Souq](https://www.ticket-souq.com/) into clean, structured data you can download as JSON, CSV, Excel, or HTML. Paste a Ticket Souq browse URL or type an artist or show name, and get the event name, date, venue, city, organizer, and every ticket type with its price, fees, and availability. No account or login required.

### Introduction

[Ticket Souq](https://www.ticket-souq.com/) is an event ticketing marketplace focused on Arab and SWANA audiences, selling tickets for stand-up comedy, concerts, DJ nights, and cultural shows across the Middle East, Europe, the UK, and North America. Its listings show which Arab artists are touring, where they play, and what tickets cost in each city.

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 Ticket Souq?

- 🎭 Event name, description, and categories
- 📅 Start and end date and time, plus the event time zone
- 🎟️ Every ticket type with total price, base price, fees, currency, and tickets remaining
- 💲 Lowest and highest ticket price per event
- ✅ Status: on sale, sold out, cancelled, or past
- 🏢 Organizer name and organizer page
- 📍 Venue name, full address, city, region, postcode, country, and map coordinates
- 🖼️ Event image
- 🔗 Direct URL to each event

### Use Cases

- 📈 **Market research**: see which Arab artists and shows are touring, in which cities, and at what price levels.
- 🕵️ **Competitor monitoring**: follow other promoters' events, ticket tiers, and how fast tickets sell out.
- 🤝 **Lead generation**: build a list of event organizers and venues working with Arab audiences.
- 🗂️ **Database building**: create your own calendar of upcoming events with venues and prices.
- 🤖 **AI and automation**: feed clean, structured data into spreadsheets, dashboards, or AI workflows.

### How to scrape Ticket Souq step by step

1. Paste one or more Ticket Souq URLs into **Start URLs**, or type artist or show names into **Search queries**.
2. Optionally set **Start date**, **End date**, or **Include past events** to narrow your search queries.
3. Set **Maximum number of results** to how many events you want per URL or per query.
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**: Ticket Souq URLs to scrape. Supported pages: the browse page (`https://www.ticket-souq.com/browse`), organizer pages (for example `https://minanader.ticket-souq.com/`), and single event pages. Any filters you apply on the browse page (search text, date range, city, venue, category, past events, sort order) are kept in the results.
- **Search queries**: artist or show names to search for, one per line. Each query is scraped separately.
- **Start date**: only events on or after this date. Applies to search queries only.
- **End date**: only events on or before this date. Applies to search queries only.
- **Include past events**: also return events that already took place. Applies to search queries only.
- **Maximum number of results**: how many events to collect for each start URL or search query. Use 0 for no limit.

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

### Input Examples

Scrape all upcoming events from the Ticket Souq browse page:

```json
{
  "startUrls": [{ "url": "https://www.ticket-souq.com/browse" }],
  "maxResults": 5
}
```

Search by artist or show name:

```json
{
  "searchQueries": ["mina nader", "comedy"],
  "maxResults": 5
}
```

### Output

Each event is saved as one item in the dataset. Here is an example of a single item:

```json
{
  "url": "https://levanto-entertainment.ticket-souq.com/events/180223",
  "id": 180223,
  "name": "SHADEN (أنا إمرأة تعبانة) Show // Stuttgart",
  "description": "SHADEN (أنا إمرأة تعبانة) Show // Stuttgart\nThe iconic standup comedian Shaden premieres her highly-anticipated, brand new special ...",
  "startDate": "2026-11-09T20:00:00",
  "endDate": "2026-11-09T21:30:00",
  "timezone": "Europe/Amsterdam",
  "status": "Published",
  "isOnSale": true,
  "isSoldOut": false,
  "isCancelled": false,
  "isPast": false,
  "isOnlineOnly": false,
  "hasSeatingPlan": false,
  "categories": ["Comedy Show"],
  "organizer": "Levanto Entertainment",
  "organizerUrl": "https://levanto-entertainment.ticket-souq.com",
  "venueName": "Theater am Olgaeck",
  "venueAddress": "Theater am Olgaeck, 44 Charlottenstraße, Stuttgart, Stuttgart, 70182",
  "city": "Stuttgart",
  "region": "Stuttgart",
  "postcode": "70182",
  "country": "Germany",
  "latitude": 48.7731798,
  "longitude": 9.1867398,
  "image": "https://assets.nuwebgroup.com/public/media/production/6127226/conversions/g0lBkBST4Y5kRjNm-page_header_conversion.png",
  "currency": "EUR",
  "minPrice": 25,
  "maxPrice": 50,
  "tickets": [
    {
      "name": "Zone A",
      "group": null,
      "type": "ticket",
      "description": null,
      "price": 50,
      "basePrice": 47.17,
      "fees": 2.83,
      "currency": "EUR",
      "isFree": false,
      "isVariablePrice": false,
      "minVariablePrice": null,
      "maxVariablePrice": null,
      "isOnSale": true,
      "isSoldOut": false,
      "remaining": 24,
      "minQuantity": 0,
      "maxQuantity": 50
    },
    {
      "name": "Zone B - Early Bird",
      "group": null,
      "type": "ticket",
      "description": null,
      "price": 38,
      "basePrice": 35.85,
      "fees": 2.15,
      "currency": "EUR",
      "isFree": false,
      "isVariablePrice": false,
      "minVariablePrice": null,
      "maxVariablePrice": null,
      "isOnSale": true,
      "isSoldOut": true,
      "remaining": 0,
      "minQuantity": 0,
      "maxQuantity": 50
    }
  ]
}
```

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

### Notes

- Only the browse page, organizer pages, and event pages are supported. Other Ticket Souq pages (such as marketing or info pages) are skipped.
- Dates are shown in the event's local time, exactly as on the website. The `timezone` field is the time zone the organizer set for the event.
- Prices are in the organizer's currency. `price` is what a buyer pays per ticket including fees; `basePrice` and `fees` show the split.
- When an organizer temporarily places visitors in a queue (for example during a big ticket release), or an organizer page cannot be opened, the event is still returned with its listing details, but `tickets` is empty and `currency`, `minPrice`, `maxPrice`, and `country` are `null`. Run the actor again later to get the prices.
- Descriptions keep the original language of the event (often Arabic and English).
- Works on Cloudflare-protected pages.

### Why use the Ticket Souq Scraper?

- ✅ **No login needed**: works with public data only, so there is no account to manage.
- 🎟️ **Full ticket breakdown**: every ticket tier with price, fees, and remaining stock, not just a "from" price.
- 🎯 **Keeps your filters**: paste any browse URL from your browser and get exactly what you see there.
- 🧹 **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 query 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 events.

#### Do I need a Ticket Souq 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 track new events, price changes, and sell-outs automatically.

#### Why are some fields empty?

Some events simply do not show every piece of information, such as a postcode or a category. 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, search queries, and date filters. If you need other filters or inputs, such as city or category for search queries, 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?

- [Virgin Megastore Tickets Scraper](https://apify.com/aboo.script/tickets-virginmegastore-me-scraper): concerts, shows, and sports events in the UAE, Qatar, Bahrain, and Oman with ticket prices.
- [Webook Scraper - Events & Experiences](https://apify.com/aboo.script/webook-scraper): events, concerts, matches, and experiences in Saudi Arabia and the Gulf.
- [Etihad Arena Scraper](https://apify.com/aboo.script/etihadarena-ae-scraper): Abu Dhabi events with dates and ticket details.
- [Get-In Scraper - Events](https://apify.com/aboo.script/get-in-scraper): events, parties, festivals, and concerts from Get-In.com.
- [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: [Ticket Souq](https://www.ticket-souq.com/)

# Actor input Schema

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

Ticket Souq browse URLs (with any category, city, or date filters), organizer pages, or event pages.

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

Keywords to search for in event names, e.g. an artist or show name. Each query is scraped separately.

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

Only events on or after this date. Applies to search queries only; start URLs keep their own filters.

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

Only events on or before this date. Applies to search queries only; start URLs keep their own filters.

## `includePastEvents` (type: `boolean`):

Also return events that already took place. Applies to search queries only.

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

Maximum number of events to scrape per start URL or search query. Use 0 for no limit.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.ticket-souq.com/browse"
    }
  ],
  "includePastEvents": false,
  "maxResults": 5
}
```

# 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.ticket-souq.com/browse"
        }
    ]
};

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

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,aboo.script/ticket-souq-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/3Rzvg6NPajjycQaB9/builds/ElnX6WxBlJDsHmDKS/openapi.json
