# Ticketmaster Scraper (`solidcode/ticketmaster-scraper`) Actor

\[💰 $2.0 / 1K] Extract live events from Ticketmaster — concerts, sports, theater, arts, and family shows. Search by keyword or paste Ticketmaster URLs. Returns one row per event with venue, geo coordinates, dates, on-sale and presale times, lineup, and schedule-change flags.

- **URL**: https://apify.com/solidcode/ticketmaster-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 27 total users, 11 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 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.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Ticketmaster Scraper

Pull live events from Ticketmaster at scale — concerts, sports, theater, arts, and family shows — with venue geocoordinates, start dates, on-sale and presale windows, full artist lineups, category, and schedule-change flags, one clean row per event. Search by keyword, browse a category in any city, or paste Ticketmaster URLs straight in. Built for event-discovery platforms, market analysts, and venue and promoter lead teams who need structured, current event data without clicking through Ticketmaster page by page.

### Why This Scraper?

- **Five event categories in one actor** — Music, Sports, Arts & Theatre, Family, and Miscellaneous, switchable from a single dropdown when paired with a city.
- **Latitude and longitude on 99% of venues** — plus venue name, street address, city, country and postal code on every row, and the Ticketmaster venue page URL wherever the source publishes one (about 4 in 5 events), so events drop straight onto a map.
- **Public on-sale date on 99% of events** — alongside every announced presale window with its name, start and end time. Presales are dense on tours and sports (roughly 1 in 4 rows on a sports, comedy or wrestling feed) and genuinely rare on long-running theatre residencies.
- **Artist and attraction lineups on ~9 in 10 events** — each performer's name and Ticketmaster page, plus a headliner portrait image on 100% of rows (venue image as fallback).
- **13 Ticketmaster marketplaces** — search the US (default), Canada, UK, Ireland, Australia, New Zealand, Germany, France, Spain, Netherlands, Belgium, Sweden, or Mexico.
- **Schedule-change flags on every row** — cancelled, postponed and rescheduled are set per event, so a calendar you sync never keeps a date that moved, plus TBA, virtual, sold-out, limited-availability and partner-listing columns.
- **Date-window filtering at the source** — set an earliest date, a latest date, or both (YYYY-MM-DD), and Ticketmaster narrows the results before you are billed. Works the same on keyword searches, pasted URLs, and city or category browsing.
- **Up to 10,000 events per run** — set Maximum Results to 0 for unlimited and the actor walks every page until the marketplace is exhausted.
- **One row per event, not per time slot** — timed-entry attractions and residencies are listed by Ticketmaster once per slot (a Chicago family browse returns 385 listings that are only 299 real events, 87 of them one balloon exhibit). Those are merged into a single row carrying the slot count and the first and last slot dates, so a 100-result run buys you 100 events.
- **37 fields per event, one flat row** — event name, ID, URL, timezone, category, session count, partner flag, and an event image, ready for any spreadsheet or database with no nested unpacking.

### Use Cases

**Event Discovery & Aggregation**

- Build a "what's on near me" feed by browsing a category in any city
- Aggregate every concert for a touring artist across multiple marketplaces
- Power a calendar app with start dates, timezones, and on-sale countdowns
- Surface family and arts events for a local listings site

**Market & Competitive Research**

- Track which artists and tours are routing through a region
- Map event density by venue, city, and category over a date window
- Track cancelled, postponed and rescheduled dates across a city or category
- Compare event supply across US, UK, and EU Ticketmaster marketplaces

**Lead Generation**

- Build venue contact lists with name, full address, and venue page URL
- Identify active promoters by category and city for outreach
- Source touring artists and attractions for booking and sponsorship pitches
- Target high-frequency venues for partnership programs

**Travel & Hospitality Planning**

- Match hotel and travel packages to events by venue geocoordinates and date
- Plan around presale and on-sale windows for high-demand shows
- Cluster events by city and weekend for trip-planning tools

**Data Enrichment & Integration**

- Enrich a ticketing or CRM database with canonical event IDs and venue geo
- Feed on-sale and presale timings into alerting and dashboard systems
- Backfill artist lineups and category labels onto existing event records

### Getting Started

#### Search by Keyword

The simplest run — one artist, team, or show name:

```json
{
    "searchTerms": ["Taylor Swift"],
    "maxResults": 100
}
```

#### Browse a Category in a City

Category browsing works when you pair it with a city:

```json
{
    "category": ["music"],
    "location": "Los Angeles",
    "countryCode": "US",
    "sort": "date",
    "maxResults": 200
}
```

#### Filter by Date Window

Restrict results to events in a specific date range:

```json
{
    "searchTerms": ["comedy"],
    "startDateFrom": "2026-07-01",
    "startDateTo": "2026-07-31",
    "sort": "date",
    "maxResults": 100
}
```

#### Search a Non-US Marketplace

```json
{
    "category": ["sports"],
    "location": "Toronto",
    "countryCode": "CA",
    "maxResults": 100
}
```

#### Paste Ticketmaster URLs

Already built a filtered search on the Ticketmaster website? Paste it in:

```json
{
    "startUrls": [
        "https://www.ticketmaster.com/search?q=u2",
        "https://www.ticketmaster.com/discover/concerts/new-york"
    ],
    "maxResults": 200
}
```

### Input Reference

#### What to Search

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `searchTerms` | string\[] | `["Taylor Swift"]` | Keywords to search — an artist, team, show, or venue. Each term runs as its own search. |
| `startUrls` | string\[] | `[]` | Paste Ticketmaster search or discover URLs directly. Each is scraped exactly as given. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `category` | select\[] | `[]` | Browse one or more categories: Music, Sports, Arts & Theatre, Family, Miscellaneous. Requires a Location. Pick several and the result limit is split evenly between them. Ignored when a search term is used. |
| `location` | string | — | City to browse events in (e.g. "Los Angeles"). Required when browsing by Category. Ignored when a search term is used, and the run says so. |
| `countryCode` | select | `US` | Ticketmaster marketplace: US, Canada, UK, Ireland, Australia, New Zealand, Germany, France, Spain, Netherlands, Belgium, Sweden, or Mexico. |
| `startDateFrom` | string | — | Only include events happening on or after this date (YYYY-MM-DD). Applies to searches, URLs, and city or category browsing. |
| `startDateTo` | string | — | Only include events happening on or before this date (YYYY-MM-DD). Applies to searches, URLs, and city or category browsing. |
| `sort` | select | `Relevance` | Order results by Relevance or Date (soonest first). |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum events to collect across all searches and URLs. With several searches the limit is split evenly between them, and an unused share rolls over. Set to 0 for unlimited (a 10,000-event safety cap still applies). |
| `includeAllSessions` | boolean | `false` | Off by default: repeat time slots of one event are merged into a single row. Turn it on to get one row per slot instead. |

### Output

Each event is returned as one flat row. Here is a representative result:

```json
{
    "name": "Coldplay: Music Of The Spheres World Tour",
    "eventId": "vvG1zZ9bWb1xyz",
    "discoveryId": "Z7r9jZ1A7xyz",
    "url": "https://www.ticketmaster.com/event/0E00612A1B2C3D4E",
    "startDate": "2026-08-14",
    "endDate": "2026-08-14",
    "onSaleDate": "2026-03-15T15:00:00Z",
    "dateDisplayMode": "showDateTime",
    "spanMultipleDays": false,
    "sessionCount": 1,
    "lastSessionDate": "2026-08-14",
    "presaleDates": [
        { "name": "Artist Presale", "startDateTime": "2026-03-12T15:00:00Z", "endDateTime": "2026-03-14T22:00:00Z" }
    ],
    "venueName": "SoFi Stadium",
    "venueCity": "Inglewood",
    "venueState": "CA",
    "venueCountry": "US",
    "venueAddress": "1001 Stadium Dr",
    "venuePostalCode": "90301",
    "venueUrl": "https://www.ticketmaster.com/sofi-stadium-inglewood-tickets-los-angeles/venue/229227",
    "latitude": 33.9534,
    "longitude": -118.3387,
    "timeZone": "America/Los_Angeles",
    "category": "Music",
    "categoryId": "KZFzniwnSyZfZ7v7nJ",
    "artists": [
        { "name": "Coldplay", "url": "https://www.ticketmaster.com/coldplay-tickets/artist/806431" }
    ],
    "imageUrl": "https://s1.ticketm.net/dam/a/abc/example_RETINA_PORTRAIT_16_9.jpg",
    "soldOut": false,
    "limitedAvailability": false,
    "ticketingStatus": "UNKNOWN",
    "cancelled": false,
    "postponed": false,
    "rescheduled": false,
    "tba": false,
    "virtual": false,
    "partnerEvent": false,
    "sourceQuery": "search: Coldplay",
    "scrapedAt": "2026-05-30T14:30:00Z"
}
```

#### Event Core

| Field | Type | Description |
|-------|------|-------------|
| `name` | string | Event title |
| `eventId` | string | Ticketmaster event identifier |
| `discoveryId` | string | Ticketmaster Discovery API identifier |
| `url` | string | Direct Ticketmaster event page URL |
| `category` | string | Top-level category (Music, Sports, Arts & Theatre, Family, Miscellaneous) |
| `categoryId` | string | Ticketmaster category (segment) identifier |
| `sourceQuery` | string | Which search term or URL produced this row |
| `scrapedAt` | string | ISO 8601 timestamp of data extraction |

#### Date & Sale

| Field | Type | Description |
|-------|------|-------------|
| `startDate` | string | Event start date |
| `endDate` | string | Event end date, when Ticketmaster publishes one (about 1 in 5 events) |
| `onSaleDate` | string | Public on-sale date and time |
| `presaleDates` | object\[] | Presale windows: name, start, and end times. Empty when no presale has been announced |
| `dateDisplayMode` | string | How the date is displayed (showDateTime / showDate) |
| `spanMultipleDays` | boolean | Whether the event runs across multiple days |
| `sessionCount` | integer | How many time slots this event was listed under. `1` for a normal event; higher for a timed-entry attraction or residency. |
| `lastSessionDate` | string | Start of the event's last time slot. Equals `startDate` when `sessionCount` is 1, so `startDate` to `lastSessionDate` is the full run. |
| `timeZone` | string | Venue timezone (e.g. America/Los\_Angeles) |

#### Venue & Location

| Field | Type | Description |
|-------|------|-------------|
| `venueName` | string | Venue name |
| `venueCity` | string | Venue city |
| `venueState` | string | Venue state or region — empty in markets that do not use them |
| `venueCountry` | string | Venue country code |
| `venueAddress` | string | Venue street address |
| `venuePostalCode` | string | Venue postal code |
| `venueUrl` | string | Ticketmaster venue page URL, when the source publishes one (about 4 in 5 events) |
| `latitude` | number | Venue latitude |
| `longitude` | number | Venue longitude |

#### Classification & Artists

| Field | Type | Description |
|-------|------|-------------|
| `artists` | object\[] | Performers and attractions: name and Ticketmaster page URL. Empty when Ticketmaster lists no attraction for the event |
| `imageUrl` | string | Headliner portrait image, with venue image as fallback |

#### Media & Status

| Field | Type | Description |
|-------|------|-------------|
| `soldOut` | boolean | Sold-out flag exactly as Ticketmaster publishes it on the event feed |
| `limitedAvailability` | boolean | Limited-availability flag exactly as Ticketmaster publishes it |
| `ticketingStatus` | string | Raw status token from Ticketmaster's event feed. It arrives as `UNKNOWN` or empty on virtually every event — read `onSaleDate` and the cancelled / postponed / rescheduled flags for availability instead |
| `cancelled` | boolean | Cancelled flag |
| `postponed` | boolean | Postponed flag |
| `rescheduled` | boolean | Rescheduled flag |
| `tba` | boolean | Date-to-be-announced flag |
| `virtual` | boolean | Virtual-event flag |
| `partnerEvent` | boolean | Whether the listing is a partner or resale event |

### Tips for Best Results

- **Category browsing needs a city — keyword search does not** — pair Category with a Location or the run skips the category and tells you to add one. A keyword like "Taylor Swift" searches the whole selected country at once, and because the two are separate searches, a Location set alongside a search term is skipped rather than blended in.
- **Read availability from `onSaleDate`, not `ticketingStatus`** — Ticketmaster's public event feed ships `ticketingStatus` as `UNKNOWN` on virtually every event, so use the on-sale date (present on 99% of rows) plus the cancelled, postponed and rescheduled flags to tell what is live.
- **Multiple categories share one limit** — choosing Music and Sports for the same city splits Maximum Results evenly, so both come back populated. Raise the limit rather than expecting each category to get the full amount.
- **Set the right marketplace for the city** — match `countryCode` to the city's country (e.g. "London" with UK, not US) so same-named cities resolve correctly.
- **Sort by Date for upcoming-event feeds** — choose Date (soonest first) so the earliest shows lead your results; Relevance is best for artist and team searches.
- **Tighten the date window to control cost** — `startDateFrom` and `startDateTo` filter at the source, so you only pay for events inside your range.
- **Check `sessionCount` before assuming a one-night show** — a value above 1 means the event runs as repeated time slots between `startDate` and `lastSessionDate`; switch on "List every time slot separately" if you need each slot as its own row.
- **Paste pre-filtered URLs to reuse your work** — if you have already built a search on the Ticketmaster website, paste that URL into `startUrls` and it runs exactly as shown.

### Pricing

**From $2.00 per 1,000 results** — pay only for the events you collect. No compute charges: you are billed per result returned, and Apify's loyalty tiers lower the rate as your subscription tier rises.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.235 | $0.225 | $0.215 | $0.200 |
| 1,000 | $2.35 | $2.25 | $2.15 | $2.00 |
| 10,000 | $23.50 | $22.50 | $21.50 | $20.00 |
| 100,000 | $235.00 | $225.00 | $215.00 | $200.00 |

Tiered rates take effect on 12 September 2026. Until then every plan pays the current $2.00 per 1,000 results. A "result" is one event row in the output dataset. Platform fees (storage and data transfer) are billed by Apify according to your plan.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate event discovery, market research, and lead generation. You are responsible for complying with applicable laws and Ticketmaster's Terms of Service. Do not use extracted data for spam, harassment, ticket-resale fraud, or any unlawful purpose. Treat any personal data encountered with care and in line with applicable privacy regulations.

# Actor input Schema

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

Keywords to search on Ticketmaster — an artist, team, show, or venue (e.g. 'Taylor Swift', 'Lakers', 'Hamilton'). Each term runs as its own search. Leave empty if you are pasting URLs instead.

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

Paste Ticketmaster search or event URLs directly (e.g. 'https://www.ticketmaster.com/search?q=u2'). Each URL is scraped exactly as given — handy if you have already built a filtered search on the Ticketmaster website.

## `category` (type: `array`):

Browse events in these categories. Category browsing needs a Location too (set a city below). Pick several and the Maximum Results limit is split evenly between them, so every category you choose comes back with events. Categories are ignored when you use a search term — keyword search already covers every category.

## `location` (type: `string`):

City to browse events in (e.g. 'Los Angeles', 'New York'). Required when you browse by Category. Not used with search terms — those search everywhere in the selected country, and the run tells you the city was skipped.

## `countryCode` (type: `string`):

Which Ticketmaster marketplace to search.

## `startDateFrom` (type: `string`):

Only include events happening on or after this date (YYYY-MM-DD). Applies to search terms, pasted URLs and city or category browsing alike. A multi-day run or residency is kept when any part of it falls on or after the date. Leave empty for no lower bound.

## `startDateTo` (type: `string`):

Only include events happening on or before this date (YYYY-MM-DD). Applies to search terms, pasted URLs and city or category browsing alike. A multi-day run or residency is kept when any part of it falls on or before the date. Leave empty for no upper bound.

## `sort` (type: `string`):

How to order results. 'Date' shows the soonest events first. Sorting applies to search terms and pasted search URLs.

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

Maximum total number of events to collect across all searches and URLs. When a run has several searches (multiple search terms, URLs or categories) the limit is split evenly between them, and any share a search doesn't use rolls over to the next one. Set to 0 for unlimited, in which case a safety cap of 10,000 events still applies. Each event counts as one result.

## `includeAllSessions` (type: `boolean`):

Some attractions and residencies are sold as many timed entry slots that all lead to the same ticket page — a museum exhibit with a slot every 15 minutes, for example. By default those are combined into one row per event, showing how many slots it has and the last slot's date. Turn this on to get one row per time slot instead.

## Actor input object example

```json
{
  "searchTerms": [
    "Taylor Swift"
  ],
  "startUrls": [],
  "category": [],
  "countryCode": "US",
  "sort": "relevance",
  "maxResults": 100,
  "includeAllSessions": false
}
```

# Actor output Schema

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

All scraped events with the key fields: name, date, venue, location, and status.

# 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": [
        "Taylor Swift"
    ],
    "startUrls": [],
    "category": [],
    "countryCode": "US",
    "sort": "relevance",
    "maxResults": 100,
    "includeAllSessions": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/ticketmaster-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": ["Taylor Swift"],
    "startUrls": [],
    "category": [],
    "countryCode": "US",
    "sort": "relevance",
    "maxResults": 100,
    "includeAllSessions": False,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/ticketmaster-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 '{
  "searchTerms": [
    "Taylor Swift"
  ],
  "startUrls": [],
  "category": [],
  "countryCode": "US",
  "sort": "relevance",
  "maxResults": 100,
  "includeAllSessions": false
}' |
apify call solidcode/ticketmaster-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,solidcode/ticketmaster-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/323kdcaqseoG8bxMM/builds/pjXYenINlt1Y14Mcr/openapi.json
