# Ticombo Scraper - Event Tickets, Seller Listings, EUR Prices (`zen-studio/ticombo-scraper`) Actor

Extract event tickets from ticombo.com with venue, dates, EUR prices, availability, and seat-level seller listings. 33+ fields per event: section/row inventory, ticket types, geo, image, sales status. Search by keyword, paste URLs, or browse by category (sports, music, theatre). Export JSON or CSV.

- **URL**: https://apify.com/zen-studio/ticombo-scraper.md
- **Developed by:** [Zen Studio](https://apify.com/zen-studio) (community)
- **Categories:** Automation, Travel, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.99 / 1,000 events

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## Ticombo Tickets Scraper — European Event Tickets, Seller Listings, EUR Prices (2026)

![Ticombo Scraper](https://iili.io/CHyUjTP.png)

<blockquote style="border-left:4px solid #4C945E;background:#F0FDF4;padding:12px 16px">
<span style="font-size:16px;font-weight:700;color:#1C1917">33 fields per event, up to 200 seller listings per event, all EUR-normalized</span> <span style="font-size:15px;color:#57534E"> — sports, music, theatre, comedy. The fastest and richest Ticombo scraper on Apify.</span>
</blockquote>

<table>
<tr>
<td colspan="3" style="padding:10px 14px;background:#4C945E;border:none;border-radius:4px 4px 0 0">
<span style="color:#FAFAF9;font-size:14px;font-weight:700;letter-spacing:0.5px">Zen Studio Events &amp; Tickets</span>
<span style="color:#E8F5E9;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Live inventory across the European event marketplaces</span>
</td>
</tr>
<tr>
<td style="padding:12px 16px;border:1px solid #E7E5E4;border-radius:0 0 0 4px;background:#E8F5E9;border-right:none;border-top:none;vertical-align:top;width:33%">
&#127915;&nbsp;<a href="https://apify.com/zen-studio/ticombo-scraper" style="color:#4C945E;text-decoration:none;font-weight:700;font-size:14px">Ticombo Scraper</a><br>
<span style="color:#4C945E;font-size:12px;font-weight:600">&#10148; You are here</span>
</td>
<td style="padding:12px 16px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:33%">
<img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-Oy8cfw5IuzRzJidqx-9j7J9h99FL-eventim-api-logo.png" width="24" height="24" style="vertical-align:middle"> &nbsp;<a href="https://apify.com/zen-studio/eventim-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:14px">Eventim Scraper</a><br>
<span style="color:#78716C;font-size:12px">Concerts, prices, availability</span>
</td>
<td style="padding:12px 16px;border:1px solid #E7E5E4;border-radius:0 0 4px 0;border-top:none;vertical-align:top;width:33%">
<img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-G7kur4paCzryfTAeX-ZQYIeUVyoV-Gemini_Generated_Image_iebjpriebjpriebj.png" width="24" height="24" style="vertical-align:middle"> &nbsp;<a href="https://apify.com/zen-studio/10times-events-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:14px">10times Events</a><br>
<span style="color:#78716C;font-size:12px">Trade shows and conferences</span>
</td>
</tr>
</table>

#### Copy to your AI assistant

````

zen-studio/ticombo-scraper on Apify. Scrapes European event tickets from ticombo.com — events with venue, geo, dates, EUR-normalized price band, and optional per-listing seller data (section, row, quantity, price, seller). Call ApifyClient("TOKEN").actor("zen-studio/ticombo-scraper").call(run\_input={...}), then client.dataset(run\["defaultDatasetId"]).list\_items().items. Provide at least one of searchTerms, eventUrls, or category. Full spec: GET https://api.apify.com/v2/acts/zen-studio~ticombo-scraper/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations

````

### Key Features

- **33 fields per event** — name, venue, geo, dates, availability, price band, ticket types, tags, status, timestamps, image, and an event-detail URL.
- **Optional seller listings** — opt-in to embed up to 200 individual listings per event with section, row, quantity, listing price, original price, delivery method, and seller flags.
- **Three input modes** — keyword search, paste-any-Ticombo-URL (event, competition, venue, search-result), or browse a whole category.
- **28 currencies** — EUR by default; pick USD, GBP, CHF, JPY, and 23 more. Conversion uses the same live rate Ticombo's own frontend uses.
- **Day pass + monthly pass** — flat-fee unlimited polling for active ticket hunters and resellers ($4.99 / 24h or $49 / 30d). Waives all per-event and per-listing charges. **No auto-renew, no surprise subscription.**
- **Free tier** — 20 events per run, 100 events lifetime. No credit card needed to try.

### How to Scrape Ticombo Events

#### Basic — search by keyword

```json
{
    "searchTerms": ["champions league final"],
    "maxResults": 50
}
````

#### Browse an entire category

```json
{
    "category": "sports",
    "subcategory": "tennis",
    "maxResults": 100
}
```

#### Scrape a specific event by URL

```json
{
    "eventUrls": [
        "https://www.ticombo.com/en/sports-tickets/football-tickets/final-champions-league-2606022100/8e9d7b03-e0ec-453b-be67-2835de36c521"
    ]
}
```

#### Filter by date and price, enrich with seller listings

```json
{
    "searchTerms": ["roland garros"],
    "dateFrom": "2026-05-25",
    "dateTo": "2026-06-08",
    "priceMin": 100,
    "priceMax": 800,
    "maxResults": 25,
    "includeListings": true,
    "maxListingsPerEvent": 200
}
```

### Input Parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchTerms` | array | `["champions league final"]` | Keywords to search. Results are merged across all terms. |
| `eventUrls` | array | — | Any Ticombo URL: event, competition, venue, or search-result page. |
| `category` | string | `""` | One of `sports`, `music`, `theatre`. Browse a whole category. |
| `subcategory` | string | — | Narrow the category browse (e.g. `football`, `tennis`, `rock`). |
| `dateFrom` | string | — | ISO date. Only events on or after this day. |
| `dateTo` | string | — | ISO date. Inclusive — covers every event on the selected day. |
| `priceMin` | integer | — | Minimum EUR price. |
| `priceMax` | integer | — | Maximum EUR price. |
| `language` | string | `en` | Output language for `name` and `description`. en, de, fr, es, it. |
| `currency` | string | `EUR` | Output currency for every price field. 28 supported (EUR/USD/GBP/CHF/JPY/CNY/...). |
| `maxResults` | integer | `50` | Total unique events across all input modes. |
| `includeListings` | boolean | `false` | Embed per-event seller listings. Each listing is billed separately (or free with an active pass). |
| `maxListingsPerEvent` | integer | `200` | Per-event cap on collected seller listings (max 200). |
| `dayPassPurchase` | boolean | `false` | Set `true` (alone) to buy a $4.99 24-hour day pass. |
| `monthlyPassPurchase` | boolean | `false` | Set `true` (alone) to buy a $49 30-day monthly pass. |

### What Data Can You Extract from Ticombo?

Every event row includes:

- **Identity & URL** — `eventId`, `slug`, `altSlugs`, deep-link `url`.
- **Naming & taxonomy** — `name`, `descriptionTitle`, `description`, `category`, `subcategory`, `tags`, `filters` (artist, team, competition, genre).
- **Timing** — `dateStart`, `dateEnd`, `timezone`, `inHandDate`, `createdDate`, `updatedDate`.
- **Venue & location** — `venue` (id, name, slug), `location` (city, state, country, address, zip).
- **Inventory & price band** — `availableTickets`, `startPrice`, `avgPrice`, `maxPrice`, `finalStartPrice`, `finalMaxPrice`, `currency` (reflects your `currency` input), `ticketsWanted`, `lowRiskTickets`.
- **Ticket structure** — `ticketTypes[]` with names and section lists.
- **Trust signals** — `ticketProtection`, `status`, `salesStatus`, `imageUrl`.
- **Optional seller listings** — `listings[]` with `listingId`, `price`, `originalPrice`, `currency`, `facePercentage`, `quantity`, `category`, `section`, `row`, `ticketType`, `splitType`, `deliveryCity`, `deliveryCountry`, `deliveryMethods`, `instantDownload`, `sellerName`, `sellerTrusted`, `status`.

#### Output Example

```json
{
  "eventId": "039f822c-e30d-4e4b-a499-9c1793f25fc8",
  "slug": "wednesday-2nd-round-ladies-and-gentlemens-singles-stade-roland-garros-suzanne-lenglen-court-french-open-2026-2605271100",
  "altSlugs": [],
  "url": "https://www.ticombo.com/en/sports-tickets/tennis-tickets/wednesday-2nd-round-ladies-and-gentlemens-singles-stade-roland-garros-suzanne-lenglen-court-french-open-2026-2605271100/039f822c-e30d-4e4b-a499-9c1793f25fc8",
  "name": "Wednesday 2nd round Ladies' & Gentlemen's Singles Stade Roland Garros, Suzanne-Lenglen Court French Open 2026",
  "descriptionTitle": "",
  "description": "From 11AM\n2nd round Ladies' & Gentlemen's Singles\n| 4 matches",
  "category": "sports",
  "subcategory": "tennis",
  "tags": [],
  "status": "A",
  "salesStatus": "Unknown",
  "dateStart": "2026-05-27T11:00:00.000Z",
  "dateEnd": null,
  "timezone": "Europe/Paris",
  "venue": {
    "venueId": "df4d6ca6-aeea-44c6-af6a-3c81403f6fe5",
    "name": "Stade Roland Garros, Suzanne-Lenglen Court",
    "slug": "stade-roland-garros-suzanne-lenglen-court"
  },
  "location": {
    "city": "Paris",
    "state": null,
    "country": "FR",
    "address": "2 Av. Gordon Bennett",
    "zip": "75016"
  },
  "availableTickets": 305,
  "avgPrice": 584.85,
  "startPrice": 155.89,
  "maxPrice": 1339,
  "finalStartPrice": 218.25,
  "finalMaxPrice": 1740.7,
  "currency": "EUR",
  "ticketsWanted": 6,
  "lowRiskTickets": 95,
  "ticketTypes": [
    { "name": "Category Or/gold", "sections": ["Category Gold", "Stairs 1", "L16", "L17"] },
    { "name": "Category 1", "sections": ["L14", "L5", "Stairs 11", "Stairs 17"] },
    { "name": "Category 2", "sections": ["L14", "L17", "L11", "L15/15"] }
  ],
  "filters": {
    "artist": null,
    "genres": ["Tennis"],
    "team": [],
    "competition": ["French Open"],
    "group": null
  },
  "ticketProtection": false,
  "inHandDate": {
    "dateRange": { "from": null, "to": null },
    "daysBeforeEvent": null,
    "isInHandDateSet": false
  },
  "imageUrl": "https://img.ticombo.com/...roland-garros.jpg",
  "createdDate": "2026-01-08T11:34:55.601Z",
  "updatedDate": "2026-05-22T11:58:14.020Z",
  "listings": [
    {
      "listingId": "m1-p1KWMODwC3HL",
      "price": 204,
      "originalPrice": 95,
      "currency": "EUR",
      "facePercentage": 214.74,
      "quantity": 1,
      "category": "Category 3",
      "section": "L3",
      "row": null,
      "ticketType": "m-tickets",
      "splitType": 0,
      "deliveryCity": "Paris",
      "deliveryCountry": "France",
      "deliveryMethods": ["mobile"],
      "instantDownload": false,
      "sellerName": null,
      "sellerTrusted": null,
      "status": "ACTIVE"
    }
  ]
}
```

### Advanced Usage

#### German output for German-speaking users

```json
{
    "searchTerms": ["bundesliga"],
    "language": "de",
    "maxResults": 50
}
```

#### Whole-venue scrape (every upcoming event at one venue)

```json
{
    "eventUrls": ["https://www.ticombo.com/en/venues/o2-arena-london"],
    "maxResults": 50
}
```

#### Cheap inventory check (price band only, no listings)

```json
{
    "category": "music",
    "subcategory": "rock",
    "priceMax": 80,
    "maxResults": 100,
    "includeListings": false
}
```

#### Full seller-level data for one competition

```json
{
    "searchTerms": ["champions league"],
    "maxResults": 20,
    "includeListings": true,
    "maxListingsPerEvent": 200
}
```

#### USD-priced output for US dashboards

```json
{
    "category": "music",
    "maxResults": 50,
    "currency": "USD"
}
```

#### Buy a 24-hour day pass for active hunting

```json
{ "dayPassPurchase": true }
```

#### Buy a 30-day monthly pass for always-on monitoring

```json
{ "monthlyPassPurchase": true }
```

#### High-frequency hunt under an active day pass

Once a pass is active, simply run normally — no flag needed. Schedule the Apify scheduler to run this every 15 or 30 minutes during the hunt:

```json
{
    "eventUrls": ["https://www.ticombo.com/en/sports-tickets/football-tickets/final-champions-league-2606022100/8e9d7b03-e0ec-453b-be67-2835de36c521"],
    "includeListings": true,
    "maxListingsPerEvent": 200
}
```

### Pricing

Two ways to pay: metered (Pay Per Event) for casual use, or flat-fee passes for active hunting and always-on monitoring. **Pick whichever is cheaper for your usage pattern — passes waive every per-event and per-listing charge while active.**

#### Pay Per Event (default, metered)

| Event | Per call |
|-------|----------|
| Event scraped | $0.005 |
| Ticket listing scraped (opt-in) | $0.001 |

Best for: one-shot scrapes, price research, occasional checks.

#### Day pass — $4.99 / 24 hours

Unlimited events, unlimited listings, unlimited runs for 24 hours after activation. **No per-event or per-listing fees during the window.**

Best for: actively hunting tickets for one or more specific events. Poll every minute if you want — the actor can handle it. The pass pays for itself almost immediately at any polling rate above a handful of runs per day.

**No auto-renew.** When the 24-hour window ends, billing returns to pay-per-event automatically. You'll never be silently charged for another pass — buy it again only when you want another one.

#### Monthly pass — $49.00 / 30 days

Unlimited events, unlimited listings, unlimited runs for 30 days. **No per-event or per-listing fees during the window.**

Best for: resellers, market analysts, aggregators, and always-on monitoring. Cheaper than the day pass if you'll run the actor on more than 10 distinct days per month.

**No auto-renew.** When the 30-day window ends, billing returns to pay-per-event automatically. You decide when (or if) to buy the next pass — there are no recurring subscription charges.

#### How to buy a pass

Run the actor once with the matching flag set to `true`. No other input is needed.

```json
{ "dayPassPurchase": true }
```

```json
{ "monthlyPassPurchase": true }
```

The first run charges the flat fee and writes a record against your Apify user id. Every subsequent run within the window automatically detects the pass and waives charges — no flag needed on those runs. The output of the purchase run is a single status row telling you when the pass expires.

#### Free tier

20 events per run, 100 events lifetime, no credit card. Upgrade your Apify plan for unlimited metered usage, or buy a pass.

### FAQ

**How many results can I extract per run?**
Up to your `maxResults`. There is no hard upper bound on paying tiers. Free tier caps at 20 events per run and 100 events lifetime.

**How fresh is the data?**
Each run hits Ticombo live. Prices, availability, and listings reflect the current state at scrape time.

**What currency are prices in?**
EUR by default. Pick any of 28 supported currencies via the `currency` input (USD, GBP, CHF, JPY, CNY, and 23 more). Conversion uses the same live EUR-based rate Ticombo's own frontend uses, so output matches what users see on the site.

**Why does my Taylor-Swift-style search return nothing or unrelated results?**
Ticombo is a European resale marketplace. Inventory is bounded — popular US-only artists may not be listed. Searches return Ticombo's actual catalogue, not a wishlist.

**What is "ticket protection"?**
A Ticombo guarantee flag on the event. When `true`, eligible tickets are covered by their replacement-or-refund policy.

**Can I scrape an entire venue?**
Yes. Paste any Ticombo venue URL into `eventUrls` and the actor will collect every upcoming event listed at that venue.

**Why does each event have at most ~200 seller listings, even for huge events?**
Ticombo's public catalogue caps anonymous paginations at ~200 listings per event. This is a Ticombo platform limit, not a scraper limit.

**Where does the actor route traffic from?**
Apify Residential, Germany — fixed. Ticombo only serves EU visitors, so the route is hardcoded to avoid accidental misconfiguration.

**What languages are supported?**
English, German, French, Spanish, Italian. Other languages fall back to English when a translation is missing.

**Can I get notifications when new events appear?**
Not yet — this is a batch scraper. Schedule a recurring run from the Apify Console (a day pass makes high-frequency polling free during the 24-hour window), then diff the dataset rows yourself.

**When should I buy a day pass vs a monthly pass vs pay-as-you-go?**

- **Pay-as-you-go (PPE)** if you scrape once in a while, or run small one-shot queries. A 100-event scrape costs $0.50.
- **Day pass ($4.99)** if you're actively hunting one or more events and want to poll aggressively — every minute if you want, the actor can handle it. The pass pays for itself within the first few hundred listings.
- **Monthly pass ($49)** if you'll run the actor on more than 10 distinct days per month — typical for resellers, aggregators, and continuous monitoring.

**How does the pass apply to subsequent runs?**
The pass is tied to your Apify user account, not to a single run. Buy it once, then every run from your account within the window automatically detects the pass and waives all per-event and per-listing charges. You don't need to set any flag on follow-up runs.

**Do passes auto-renew?**
No. Both the day pass and the monthly pass are one-shot purchases. When the window ends, billing returns to pay-per-event and that's it — no silent renewal, no recurring subscription charge. You buy the next pass only when (and if) you want one. This is deliberate: ticket hunting is bursty, and surprise monthly charges suck.

**What happens if I buy a pass and it doesn't activate?**
The purchase run will fail loudly with a status row explaining why (insufficient Apify plan budget, free tier user, or the pass feature is still being activated by Apify after a price change). No partial charge is recorded — either the pass is active for the full window or no money moves.

**Why does the purchase say "Day pass is not yet available"?**
Apify takes 7-14 days to activate new pricing events on the platform after they're added or changed. During that window pass purchases are intentionally blocked to prevent charge errors. Regular pay-per-event billing continues to work normally; you'll be notified or can re-check when the passes go live.

**Can I have both a day pass and a monthly pass active at the same time?**
Yes. The actor checks both. If either is active, charges are waived. Useful if you have a monthly pass and want a "boost" on a heavy day, though typically a monthly pass alone is enough.

### Support

- **Bugs:** Issues tab
- **Features:** Issues tab

### Legal Compliance

Extracts publicly available data. Users must comply with Ticombo terms of service and data protection regulations (GDPR, CCPA).

***

*Scrape European event tickets, venues, and seller listings from ticombo.com — structured events with EUR-normalized prices, ticket types, and section-level inventory.*

# Actor input Schema

## `searchTerms` (type: `array`):

Add one or more keywords. Each term is searched independently and results are merged and de-duplicated.<br><br>Examples:<br>• <code>champions league final</code><br>• <code>roland garros</code><br>• <code>coldplay</code>

## `eventUrls` (type: `array`):

Paste any Ticombo URL — event detail pages, competition pages, venue pages, or full search-result URLs all work.<br><br>Examples:<br>• <code>https://www.ticombo.com/en/sports-tickets/football-tickets/final-champions-league-2606022100/...</code><br>• <code>https://www.ticombo.com/en/venues/stade-roland-garros-outside-courts</code><br>• <code>https://www.ticombo.com/en/discover/search?q=french%20open</code>

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

Browse every upcoming event in a category instead of searching.<br><br>Combine with <b>Subcategory</b> to narrow further (e.g. Sports + <code>football</code>).

## `subcategory` (type: `string`):

Narrow the category browse to one subcategory.<br><br>Examples by category:<br>• Sports: <code>football</code>, <code>tennis</code>, <code>basketball</code>, <code>formula-1</code><br>• Music: <code>rock</code>, <code>pop</code>, <code>electronic</code>, <code>classical</code><br>• Theatre: <code>musicals</code>, <code>opera</code>, <code>ballet</code>

## `dateFrom` (type: `string`):

Only events on or after this date (inclusive). Leave empty for no lower bound.

## `dateTo` (type: `string`):

Only events on or before this date (inclusive — includes every event during the selected day).

## `priceMin` (type: `integer`):

Only events whose lowest listing is at or above this price.

## `priceMax` (type: `integer`):

Only events whose lowest listing is at or below this price.

## `language` (type: `string`):

Language for event names and descriptions. English is the default; other languages fall back to English when no translation exists.

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

Currency for every price field in the output. EUR is the source-of-truth (Ticombo prices everything in EUR internally). Other currencies are converted using the live EUR-based rate Ticombo's own frontend uses.

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

Total number of unique events to return across every input mode combined.<br><br>Each event row is billed once. Keep low for a cheap first run.

## `includeListings` (type: `boolean`):

Fetch individual seller listings for every event (section, row, quantity, price, seller, delivery method).<br><br><b>Cost note:</b> each listing is billed as a separate event. A single event can return up to 200 listings.

## `maxListingsPerEvent` (type: `integer`):

Per-event cap on collected listings when <b>Include ticket listings</b> is on. The Ticombo public catalogue caps at ~200 listings per event.

## `dayPassPurchase` (type: `boolean`):

<b>⚠️ This is a real-money purchase.</b> Setting <code>true</code> immediately charges <b>$4.99</b> to your Apify plan for a 24-hour day pass.<br><br>While active, every event and listing in every run is free — no per-event or per-listing fees. Ideal when you're actively hunting tickets for a specific event and want to poll aggressively — every minute if you want, the actor can handle it.<br><br><b>No auto-renew.</b> When the 24-hour window ends, billing returns to pay-per-event. You're never silently charged for another pass.<br><br>Run with this flag alone — no search terms or URLs needed. Subsequent runs within the window detect the pass automatically.

## `monthlyPassPurchase` (type: `boolean`):

<b>⚠️ This is a real-money purchase.</b> Setting <code>true</code> immediately charges <b>$49.00</b> to your Apify plan for a 30-day monthly pass.<br><br>While active, every event and listing in every run is free for 30 days. Cheaper than the day pass if you'll run this actor on more than 10 distinct days in a month — typical for resellers, aggregators, and always-on monitoring.<br><br><b>No auto-renew.</b> When the 30-day window ends, billing returns to pay-per-event. No recurring subscription, no silent monthly charge — buy the next pass only when you want one.<br><br>Run with this flag alone to purchase. The pass attaches to your Apify account and applies to all subsequent runs within the window.

## Actor input object example

```json
{
  "searchTerms": [
    "champions league final"
  ],
  "category": "",
  "language": "en",
  "currency": "EUR",
  "maxResults": 50,
  "includeListings": false,
  "maxListingsPerEvent": 200,
  "dayPassPurchase": false,
  "monthlyPassPurchase": false
}
```

# Actor output Schema

## `results` (type: `string`):

Scraped events and (optionally) ticket listings

# 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 = {
    "searchTerms": [
        "champions league final"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zen-studio/ticombo-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 = { "searchTerms": ["champions league final"] }

# Run the Actor and wait for it to finish
run = client.actor("zen-studio/ticombo-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 '{
  "searchTerms": [
    "champions league final"
  ]
}' |
apify call zen-studio/ticombo-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Ticombo Scraper - Event Tickets, Seller Listings, EUR Prices",
        "description": "Extract event tickets from ticombo.com with venue, dates, EUR prices, availability, and seat-level seller listings. 33+ fields per event: section/row inventory, ticket types, geo, image, sales status. Search by keyword, paste URLs, or browse by category (sports, music, theatre). Export JSON or CSV.",
        "version": "0.0",
        "x-build-id": "ywViRR99jyLpeh072"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/zen-studio~ticombo-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-zen-studio-ticombo-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/zen-studio~ticombo-scraper/runs": {
            "post": {
                "operationId": "runs-sync-zen-studio-ticombo-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/zen-studio~ticombo-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-zen-studio-ticombo-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "searchTerms": {
                        "title": "🔍 Search terms",
                        "type": "array",
                        "description": "Add one or more keywords. Each term is searched independently and results are merged and de-duplicated.<br><br>Examples:<br>• <code>champions league final</code><br>• <code>roland garros</code><br>• <code>coldplay</code>",
                        "items": {
                            "type": "string"
                        }
                    },
                    "eventUrls": {
                        "title": "🔗 Ticombo URLs",
                        "type": "array",
                        "description": "Paste any Ticombo URL — event detail pages, competition pages, venue pages, or full search-result URLs all work.<br><br>Examples:<br>• <code>https://www.ticombo.com/en/sports-tickets/football-tickets/final-champions-league-2606022100/...</code><br>• <code>https://www.ticombo.com/en/venues/stade-roland-garros-outside-courts</code><br>• <code>https://www.ticombo.com/en/discover/search?q=french%20open</code>",
                        "items": {
                            "type": "string"
                        }
                    },
                    "category": {
                        "title": "📂 Browse by category",
                        "enum": [
                            "",
                            "sports",
                            "music",
                            "theatre"
                        ],
                        "type": "string",
                        "description": "Browse every upcoming event in a category instead of searching.<br><br>Combine with <b>Subcategory</b> to narrow further (e.g. Sports + <code>football</code>).",
                        "default": ""
                    },
                    "subcategory": {
                        "title": "Subcategory",
                        "type": "string",
                        "description": "Narrow the category browse to one subcategory.<br><br>Examples by category:<br>• Sports: <code>football</code>, <code>tennis</code>, <code>basketball</code>, <code>formula-1</code><br>• Music: <code>rock</code>, <code>pop</code>, <code>electronic</code>, <code>classical</code><br>• Theatre: <code>musicals</code>, <code>opera</code>, <code>ballet</code>"
                    },
                    "dateFrom": {
                        "title": "Date from",
                        "type": "string",
                        "description": "Only events on or after this date (inclusive). Leave empty for no lower bound."
                    },
                    "dateTo": {
                        "title": "Date to",
                        "type": "string",
                        "description": "Only events on or before this date (inclusive — includes every event during the selected day)."
                    },
                    "priceMin": {
                        "title": "Minimum price (EUR)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only events whose lowest listing is at or above this price."
                    },
                    "priceMax": {
                        "title": "Maximum price (EUR)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only events whose lowest listing is at or below this price."
                    },
                    "language": {
                        "title": "🌐 Output language",
                        "enum": [
                            "en",
                            "de",
                            "fr",
                            "es",
                            "it"
                        ],
                        "type": "string",
                        "description": "Language for event names and descriptions. English is the default; other languages fall back to English when no translation exists.",
                        "default": "en"
                    },
                    "currency": {
                        "title": "💱 Output currency",
                        "enum": [
                            "EUR",
                            "USD",
                            "GBP",
                            "CHF",
                            "CAD",
                            "AUD",
                            "JPY",
                            "CNY",
                            "AED",
                            "ARS",
                            "BRL",
                            "CLP",
                            "DKK",
                            "HUF",
                            "ISK",
                            "KRW",
                            "MKD",
                            "MXN",
                            "MYR",
                            "NOK",
                            "PEN",
                            "QAR",
                            "RSD",
                            "RUB",
                            "SAR",
                            "SEK",
                            "SGD",
                            "UYU"
                        ],
                        "type": "string",
                        "description": "Currency for every price field in the output. EUR is the source-of-truth (Ticombo prices everything in EUR internally). Other currencies are converted using the live EUR-based rate Ticombo's own frontend uses.",
                        "default": "EUR"
                    },
                    "maxResults": {
                        "title": "📦 Maximum events",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Total number of unique events to return across every input mode combined.<br><br>Each event row is billed once. Keep low for a cheap first run.",
                        "default": 50
                    },
                    "includeListings": {
                        "title": "Include ticket listings",
                        "type": "boolean",
                        "description": "Fetch individual seller listings for every event (section, row, quantity, price, seller, delivery method).<br><br><b>Cost note:</b> each listing is billed as a separate event. A single event can return up to 200 listings.",
                        "default": false
                    },
                    "maxListingsPerEvent": {
                        "title": "Maximum listings per event",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Per-event cap on collected listings when <b>Include ticket listings</b> is on. The Ticombo public catalogue caps at ~200 listings per event.",
                        "default": 200
                    },
                    "dayPassPurchase": {
                        "title": "Purchase 24-hour day pass — $4.99",
                        "type": "boolean",
                        "description": "<b>⚠️ This is a real-money purchase.</b> Setting <code>true</code> immediately charges <b>$4.99</b> to your Apify plan for a 24-hour day pass.<br><br>While active, every event and listing in every run is free — no per-event or per-listing fees. Ideal when you're actively hunting tickets for a specific event and want to poll aggressively — every minute if you want, the actor can handle it.<br><br><b>No auto-renew.</b> When the 24-hour window ends, billing returns to pay-per-event. You're never silently charged for another pass.<br><br>Run with this flag alone — no search terms or URLs needed. Subsequent runs within the window detect the pass automatically.",
                        "default": false
                    },
                    "monthlyPassPurchase": {
                        "title": "Purchase 30-day monthly pass — $49.00",
                        "type": "boolean",
                        "description": "<b>⚠️ This is a real-money purchase.</b> Setting <code>true</code> immediately charges <b>$49.00</b> to your Apify plan for a 30-day monthly pass.<br><br>While active, every event and listing in every run is free for 30 days. Cheaper than the day pass if you'll run this actor on more than 10 distinct days in a month — typical for resellers, aggregators, and always-on monitoring.<br><br><b>No auto-renew.</b> When the 30-day window ends, billing returns to pay-per-event. No recurring subscription, no silent monthly charge — buy the next pass only when you want one.<br><br>Run with this flag alone to purchase. The pass attaches to your Apify account and applies to all subsequent runs within the window.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
