# Ticketing Box Office Scraper (`aboo.script/ticketingboxoffice-scraper`) Actor

⚡ Fast Ticketing Box Office scraper. No login, no API key. Get upcoming concerts, plays, sports and festivals in Lebanon, Turkey and Egypt by keyword, country, group or event URL, with date, venue, GPS, sold-out status and every ticket category price. Perfect for price monitoring.

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

## Ticketing Box Office Scraper

![Ticketing Box Office Scraper](https://i.ibb.co/LXQk0PJd/ticketingboxoffice-banner.png)

**Ticketing Box Office Scraper** extracts upcoming events from [Ticketing Box Office](https://www.ticketingboxoffice.com/) in Lebanon, Turkey and Egypt into clean, structured data you can download as JSON, CSV, Excel, or HTML. Paste a country, search, group or event URL, or type a few keywords, and get the event title, date, venue, coordinates, sold-out status and every ticket category with its price. No account or login required.

### Introduction

[Ticketing Box Office](https://www.ticketingboxoffice.com/) is the leading ticketing platform in Lebanon, selling tickets for concerts, plays, festivals, sports, conferences and kids' shows, plus selected events in Turkey and Egypt. Its event pages show the full seating price list, which makes it a valuable source of live entertainment and ticket pricing data for the region.

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 Ticketing Box Office?

- 🎤 Event title, category and event ID
- 📅 Start date and time (with time zone) and the date text shown on the site
- 📍 Venue, hall, address, country, latitude and longitude
- 💲 Every ticket category: name, section, description, price, currency, availability and free seating
- 📊 Lowest and highest price, service charge percentage and sold-out status
- 👀 Number of page views
- 🖼️ Event poster image
- 🔗 Direct URL to each event page

### Use Cases

- 📈 **Market research**: track ticket prices and demand for concerts and shows across Lebanon, Turkey and Egypt.
- 🕵️ **Competitor monitoring**: follow which artists and venues are on sale, and at what price levels.
- 🎟️ **Event discovery**: build an up-to-date calendar of concerts, plays and festivals for your app or newsletter.
- 🗂️ **Database building**: create your own searchable catalog of events, venues and seating categories.
- 🤖 **AI and automation**: feed clean, structured data into spreadsheets, dashboards, or AI workflows.

### How to scrape Ticketing Box Office step by step

1. Paste one or more Ticketing Box Office URLs into **Start URLs**, or type keywords into **Search queries**.
2. Optionally pick a **Country** for your search queries and one or more **Categories**.
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**: Ticketing Box Office URLs to scrape. Supported pages: the homepage, country pages (`/Lebanon`, `/Turkey`, `/Egypt`), search result pages, event group pages (one show with several dates) and single event pages.
- **Search queries**: keywords to search on Ticketing Box Office (artist, show or venue), one per line. Only upcoming events are returned. Each query is scraped separately.
- **Maximum number of results**: how many events to collect for each start URL or search query. Set `0` for no limit.
- **Country**: search queries only. Limit the search to Lebanon, Turkey or Egypt, or leave it empty to search all countries. Country pages in Start URLs keep their own country.
- **Categories**: only keep events from these categories (for example Concerts, Sports, Kids or Theatrical plays). Applies to search queries and to homepage, country, search and group URLs. Leave empty for all categories.

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

### Input Examples

Scrape upcoming events in Lebanon:

```json
{
  "startUrls": [{ "url": "https://www.ticketingboxoffice.com/Lebanon" }],
  "maxResults": 5
}
```

Search by keywords:

```json
{
  "searchQueries": ["concert"],
  "maxResults": 5
}
```

Only concerts and sports events in Turkey:

```json
{
  "searchQueries": ["concert"],
  "country": "turkey",
  "categories": ["concerts", "sports"],
  "maxResults": 5
}
```

### Output

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

```json
{
  "url": "https://www.ticketingboxoffice.com/hiba-tawaji-tickets/event/23267/en",
  "eventId": "23267",
  "title": "HIBA TAWAJI",
  "category": "Concerts",
  "startDate": "2026-10-24T20:30:00+03:00",
  "dateText": "Saturday 24 October 2026 | 08:30 PM",
  "venue": "Casino du Liban",
  "hall": "Theatre HT",
  "address": "Jounieh Highway, Lebanon",
  "country": "Lebanon",
  "latitude": 34.014779,
  "longitude": 35.63979,
  "imageUrl": "https://cdn.ticketingboxoffice.com/uploadImages/EventsPics/Events-P-23267-639239561511240125.png",
  "views": 13398,
  "currency": "USD",
  "minPrice": 35,
  "maxPrice": 150,
  "serviceChargePercent": 5,
  "isSoldOut": false,
  "priceCategories": [
    {
      "name": "Salle",
      "section": "Salle",
      "description": null,
      "price": 150,
      "priceText": "150.00 USD",
      "currency": "USD",
      "isAvailable": true,
      "isFreeSeating": false
    },
    {
      "name": "Salle",
      "section": "Salle",
      "description": null,
      "price": 120,
      "priceText": "120.00 USD",
      "currency": "USD",
      "isAvailable": false,
      "isFreeSeating": false
    }
  ]
}
```

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

### Notes

- Only upcoming events are collected. Past events found in search results are skipped.
- The homepage shows the site's default country (Lebanon). Use `/Turkey` or `/Egypt` to get events from the other countries.
- Some events in Lebanon take place abroad (for example concerts in Istanbul), so they can appear in more than one country.
- `minPrice` and `maxPrice` use the ticket categories that are still on sale; when everything is sold out, all categories are used.
- Some events show only a time or no date at all (passes, open-dated activities); `startDate` is `null` for them. Coordinates are `null` when the venue has no map.
- Prices are shown in the currency used by the site (usually USD). The service charge is only present when the event page mentions it.
- Unsupported pages (outlets, news, blog) are skipped.

### Why use the Ticketing Box Office Scraper?

- ✅ **No login needed**: works with public data only, so there is no account to manage.
- 🎟️ **Full price lists**: every seating category with its price and availability, not just the cheapest ticket.
- 🌍 **Three countries**: Lebanon, Turkey and Egypt in one actor, with country and category filters.
- 🧹 **Clean data**: numbers are real numbers, dates use the ISO 8601 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 all upcoming events. The actor keeps going until it reaches your limit or runs out of events.

#### Do I need a Ticketing Box Office 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 how prices and availability change over time.

#### 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, search queries, a country filter and a category filter. If you need other filters or inputs, such as a date range or Arabic texts, 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 ticketing platforms?

- [Virgin Megastore Tickets Scraper](https://apify.com/aboo.script/tickets-virginmegastore-me-scraper): concerts, shows and sports events with ticket prices from Virgin Megastore Tickets.
- [Webook Scraper - Events & Experiences](https://apify.com/aboo.script/webook-scraper): events, concerts, matches and experiences from Webook.
- [Etihad Arena Scraper](https://apify.com/aboo.script/etihadarena-ae-scraper): Abu Dhabi events with section and seat category prices.
- [The Agenda Scraper - Dubai Concerts & Shows](https://apify.com/aboo.script/theagenda-scraper): Dubai concerts and live shows with dates and prices.
- [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: [Ticketing Box Office](https://www.ticketingboxoffice.com/)

# Actor input Schema

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

Ticketing Box Office URLs: the homepage, a country page (/Lebanon, /Turkey, /Egypt), a search page (/Search/<keyword>/en), an event group page or an event page.

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

Keywords to search on Ticketing Box Office (artist, show or venue). Only upcoming events are returned. Each query is scraped separately.

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

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

## `country` (type: `string`):

Search queries only: limit the search to one country. Leave empty to search all countries. Start URLs keep their own country.

## `categories` (type: `array`):

Only keep events from these categories. Applies to search queries and to homepage, country, search and group start URLs. Leave empty for all categories.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.ticketingboxoffice.com/Lebanon"
    }
  ],
  "searchQueries": [
    "concert"
  ],
  "maxResults": 5,
  "country": "",
  "categories": []
}
```

# 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.ticketingboxoffice.com/Lebanon"
        }
    ],
    "searchQueries": [
        "concert"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("aboo.script/ticketingboxoffice-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.ticketingboxoffice.com/Lebanon" }],
    "searchQueries": ["concert"],
}

# Run the Actor and wait for it to finish
run = client.actor("aboo.script/ticketingboxoffice-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.ticketingboxoffice.com/Lebanon"
    }
  ],
  "searchQueries": [
    "concert"
  ]
}' |
apify call aboo.script/ticketingboxoffice-scraper --silent --output-dataset

```

## MCP server setup

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