# Ticketmaster Scraper - Events, Tickets & Prices (`lentic_clockss/ticketmaster-scraper`) Actor

Collect Ticketmaster events, ticket prices, artist calendars and venue details across 23 supported markets. Pay per delivered row plus a small start fee; optional ticket and review rows use the same row limit.

- **URL**: https://apify.com/lentic_clockss/ticketmaster-scraper.md
- **Developed by:** [kane liu](https://apify.com/lentic_clockss) (community)
- **Categories:** Sports, Automation, Developer tools
- **Features:** Limited permissions
- **Stats:** 73 total users, 29 monthly users, 95.5% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.20 / 1,000 event rows

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

**Extract Ticketmaster events, ticket prices, artist calendars and venue details across 23 supported markets as rows you can export.**

- Search concerts, sports, theater and family events.
- Collect event dates, venue contacts and available pricing.
- Add separately billed ticket, offer and review rows when needed.
- Compare event snapshots and send change alerts.
- Pay $3 per 1,000 rows on the Free plan, plus a small start fee.

### What does Ticketmaster Scraper do?

Ticketmaster Scraper collects public event and ticket information from Ticketmaster country sites. Each row represents one entity, not an entire event's ticket inventory.

- `search`: keyword, classification or geographic search.
- `artist` and `venue`: calendars and available profile information.
- `category`: concerts, sports, arts and theater, or family events.
- `event`: event details from a URL or ID, including batch inputs.
- Optional listing, offer, review and suggestion rows share the input's row allowance and are billed like event rows. Their switches are off by default.

Supported `market` values are `us`, `uk`, `ie`, `ca`, `au`, `nz`, `mx`, `de`, `at`, `ch`, `fr`, `be`, `nl`, `it`, `es`, `se`, `no`, `dk`, `fi`, `pl`, `cz`, `ae` and `za`. Coverage varies by market and event; support does not guarantee ticket inventory for every event.

### What data can you extract from Ticketmaster?

Every row has `id` and `rowType`. The following fields are available when the source provides them. Examples illustrate structure, not current ticket availability.

#### Event rows

| Field | Description | Example |
| --- | --- | --- |
| `id` | Event identifier | `0D0064EA9A88501D` |
| `rowType` | Entity type | `event` |
| `title` | Event name | `Example Arena Concert` |
| `url` | Event page | `https://www.ticketmaster.com/example/event/0D0064EA9A88501D` |
| `datetimeLocal` | Local event date and time | `2027-05-15T19:30:00` |
| `venueName` | Venue name | `Example Arena` |
| `venueCity` | Venue city | `Miami` |
| `market` | Ticketmaster market | `us` |
| `lowestPrice` | Lowest reported price | `45` |
| `priceCurrency` | Price currency | `USD` |
| `ticketingStatus` | Reported ticketing status | `onsale` |
| `detailLevel` | Coverage label, not the requested setting | `discovery-metadata` |
| `inventorySystem` | Reported inventory label; `TMR` marks resale events | `TMR` |
| `totalResaleAvailable` | Resale tickets reported when offered | `128` |
| `resaleSections` | Resale section groups on the event row, when offered | `[{"section":"112"}]` |
| `tracking` | Snapshot comparison when enabled | `{"firstSnapshot": true}` |

#### Listing rows

| Field | Description | Example |
| --- | --- | --- |
| `eventId` | Parent event identifier | `0D0064EA9A88501D` |
| `listingKind` | `quickpick` for recommended picks, `resaleSection` for resale groups | `quickpick` |
| `listingSource` | Listing feed that produced the row; `edp-ssr-quickpicks` marks resale picks parsed from the event page markup | `ticketmaster-quickpicks` |
| `section` | Seating section | `112` |
| `row` | Seating row | `F` |
| `price` | Reported listing price | `89` |
| `available` | Reported open resale count for the group, when offered | `6` |
| `pickSize` | Pick group size, not remaining stock | `2` |

#### Offer rows

| Field | Description | Example |
| --- | --- | --- |
| `offerKind` | Offer or price-level grouping | `rasPriceLevel` |
| `faceValue` | Price-level face value | `80` |
| `openSeats` | Open seats reported for that price level | `12` |

#### Review rows

| Field | Description | Example |
| --- | --- | --- |
| `rating` | Artist review rating | `5` |
| `text` | Public review text | `Example review text` |
| `author` | Public reviewer name | `Jane Doe` |

#### Suggestion rows

| Field | Description | Example |
| --- | --- | --- |
| `suggestedEventId` | Suggested event identifier | `0D0064EA9A88501D` |
| `title` | Suggested event name | `Example Arena Concert` |

#### Artist rows

| Field | Description | Example |
| --- | --- | --- |
| `title` | Artist name | `Example Artist` |
| `url` | Artist page | `https://www.ticketmaster.com/artist/779049` |

#### Venue rows

| Field | Description | Example |
| --- | --- | --- |
| `phones` | Public venue phone objects, when present | `[{"value":"+1 555 0100","type":"landline"}]` |
| `address` | Structured venue address | `{"locality":"Miami"}` |

#### Category rows

| Field | Description | Example |
| --- | --- | --- |
| `id` | Category identifier | `category:KZFzniwnSyZfZ7v7nJ` |
| `title` | Category label | `Music` |

### How to scrape Ticketmaster

1. Open [Ticketmaster Scraper](https://apify.com/lentic_clockss/ticketmaster-scraper) in Apify Console.
2. Fill one target field and leave `mode` on `auto`.
3. Set `maxResults` to `3` for a small first run.
4. Click **Start** and wait for completion.
5. Open the dataset and download your rows.

Empty input starts a `concert` search with the form's prefilled limit of 3 rows. This example uses normal pricing; it is not an uncharged preview. A single target selects its matching mode automatically. If you select a mode but leave its target empty, the Actor follows the target you supplied instead.

#### Search

Fill `query`, or use `classificationId` or paired `latitude` and `longitude`. Leave dates empty for all upcoming dates. Choose either a keyword or a classification rather than combining them.

#### Artist

Fill `artistId`; `artistSlug` alone is not sufficient. Enable `includeReviews` if you also want review rows.

#### Venue

Fill `venueId`; `venueSlug` is optional. Public box-office contacts may be included with `enrichDetails` enabled.

#### Category

Fill `categorySlug`, `categoryId` or `classificationId`. Category slugs are `concerts`, `sports`, `arts-theater` and `family`.

#### Event

Fill `eventUrl` or `eventId`. For batches, use `startUrls`, `detailUrls` or `listingIds`; nonempty target lists replace scalar event targets. `startUrls` also accepts browse pages. Turn on `includePricing` for listing and offer rows.

Resale-marketplace events carry `inventorySystem: TMR`. `includePricing` adds resale section rows (`listingKind: resaleSection`) when the resale feed offers them; when it declines, the event row still returns and the run reports a warning in `RUN_SUMMARY`.

### What to fill in

| Field | What to enter | Default |
| --- | --- | --- |
| `mode` | `auto`, `search`, `artist`, `venue`, `category`, `event` | `auto` |
| `query` | Search keyword | Prefill `concert` |
| `eventUrl`, `eventId` | Event link or 6–40 character ID | Empty |
| `artistId`, `artistSlug` | Artist ID and optional slug | Empty |
| `venueId`, `venueSlug` | Venue ID and optional slug | Empty |
| `categorySlug`, `categoryId` | Category slug or segment ID | Empty |
| `classificationId` | Classification ID or alias such as `comedy` | Empty |
| `startUrls`, `detailUrls`, `listingIds` | Lists of Ticketmaster URLs or event IDs | Empty |
| `market` | Supported country code | `us` |
| `maxResults` | Rows per input, 1–500 | `70`; prefill `3` |
| `startDate`, `endDate` | Calendar dates, `YYYY-MM-DD` | Empty |
| `sort` | `relevance` or `date` | `relevance` in form |
| `latitude`, `longitude` | Paired search coordinates | Empty |
| `radius`, `radiusUnit` | Distance and `miles` or `km` | `50`, `miles` |
| `detailLevel` | `full` or reduced-detail `fast` | `full` |
| `includePricing` | Add listing and offer rows | `false` |
| `includeSeatManifest` | Request layout and availability details | `false` |
| `includeReviews` | Add artist review rows | `false` |
| `includeSuggestions` | Add suggestion rows | `false` |
| `enrichDetails` | Add available venue contacts | `true` |
| `shardByDate`, `dateShardDays` | Search in date windows of 1–92 days | `false`, `7` |
| `enumerate`, `seedKind` | Browse saved `classification`, `venue`, `attraction` or `all` targets | `false`, `classification` |
| `trackChanges` | Compare event snapshots across runs | `false` |
| `alertWebhookUrl` | Public HTTPS change-alert destination | Empty |
| `maxPages` | Page hint, 1–25; row limit still applies | `1` |
| `timeBudgetSecs` | Time allowance, 30–3600 seconds | Run timeout |
| `onTimeout` | `partial` or `fail` | `partial` |
| `progressIntervalSecs` | Progress refresh, 2–30 seconds | `4` |

Search:

```json
{"query":"concert","market":"us","maxResults":3}
```

Artist:

```json
{"artistId":"779049","includeReviews":true,"maxResults":3}
```

Venue:

```json
{"venueId":"106601","maxResults":3}
```

Category:

```json
{"categorySlug":"concerts","market":"uk","maxResults":3}
```

Event, using a format example; replace the ID with a current event:

```json
{"eventId":"0D0064EA9A88501D","includePricing":true,"maxResults":3}
```

Saved-target enumeration, which is not the empty-input example:

```json
{"enumerate":true,"market":"us","seedKind":"classification","maxResults":3}
```

- For ordinary runs, `maxItems` and `limit` are accepted aliases for `maxResults`.
- Ordinary runs correct close field-name misspellings and ignore other unknown fields with a warning. Invalid optional filters such as `sort: "newest"` are dropped. Targetless enumeration skips these corrections; use canonical field names.
- Invalid targets or dates stop with `INVALID_INPUT: <field> — <how to fix>` before any row is charged. The start fee still applies.
- Each run writes its input interpretation to `INPUT_REPORT` in the default key-value store.
- Dates do not move forward automatically. No automatic keyword translation is promised.

### Output example

Illustrative event row, not a live ticket quote:

```json
{
  "id": "0D0064EA9A88501D",
  "eventId": "0D0064EA9A88501D",
  "rowType": "event",
  "title": "Example Arena Concert",
  "url": "https://www.ticketmaster.com/example/event/0D0064EA9A88501D",
  "datetimeLocal": "2027-05-15T19:30:00",
  "venueName": "Example Arena",
  "venueCity": "Miami",
  "market": "us",
  "lowestPrice": 45,
  "priceCurrency": "USD",
  "ticketingStatus": "onsale",
  "detailLevel": "discovery-metadata"
}
```

Export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table.

### Why use this Ticketmaster scraper?

- **Row-based billing.** You pay for delivered rows plus the start fee, not unsuccessful page attempts.
- **Partial delivery.** `onTimeout=partial` saves available rows at the collection deadline. Already stored rows remain accessible after a stop; unsaved rows are not guaranteed after a manual abort.
- **Clear failures.** Input errors explain what to fix; collection failures have an `ERROR_SUMMARY`.
- **Missing means missing.** Unavailable prices or contacts stay empty rather than being invented.
- **Batch inputs.** Collect several event URLs or IDs in one run.
- **No proxy setup.** You do not need to set up proxies.

### How much does it cost to scrape Ticketmaster?

The Actor uses pay-per-event pricing. Platform usage is included in these prices.

| Apify plan | Start event | Price per row | Price per 1,000 rows |
| --- | --- | --- | --- |
| Free | $0.005 | $0.003 | $3.00 |
| Starter | $0.005 | $0.003 | $3.00 |
| Scale | $0.005 | $0.0026 | $2.60 |
| Business | $0.005 | $0.0022 | $2.20 |
| Platinum | $0.005 | $0.002 | $2.00 |
| Diamond | $0.005 | $0.0016 | $1.60 |

The start charge is one event per GB of memory, with a minimum of one event. At the default **256 MB**, the start costs **$0.005**.

- `maxResults` applies to each explicit URL or ID; a scalar search is one input. The default is 70, and larger requests are collected in parts of 70.
- All row types share that input's allowance. Asking for 3 rows does not mean 3 events plus unlimited tickets.
- Free Apify plan runs are capped at 200 rows, with a developer-set allowance of 10 runs.
- The whole run stops at **Maximum cost per run** (`maxTotalChargeUsd` in the API).
- The Apify Free plan includes **$5.00** in monthly usage credit (about **1,666 rows** at `$0.003` per row across Free-plan runs capped at 200 rows per run).

Example: three event URLs delivering 5 rows each produce 15 billed rows. On the Free plan at 256 MB: `15 × $0.003 + $0.005 = $0.050`.

### What happens when the run timeout is too short

When a queued request needs longer than the remaining run time, the run can pause as `ABORTED` with the message "Queued on the collection backend; this run will resume automatically when results are ready (about N s)." When ready, the same run resumes, reports "Resumed: delivering N rows.", writes to the same dataset and finishes as `SUCCEEDED` if delivery succeeds. Already delivered rows are not delivered or charged again.

This can happen at most 3 times per run. Keep the default timeout of 3600 seconds to reduce interruptions. A collection deadline is different: `onTimeout=partial` keeps available rows, while `fail` rejects that unfinished result. Reaching the deadline without rows fails with a reason.

The synchronous endpoints `run-sync` and `run-sync-get-dataset-items` wait at most 300 seconds and may return an empty dataset while a run is paused. For longer jobs, start asynchronously and read the dataset after `SUCCEEDED`, or use a succeeded-event webhook.

### Use with AI agents and the API

#### Apify MCP server

In Claude, ChatGPT, Cursor, VS Code or another remote MCP client, add:

```text
https://mcp.apify.com?tools=lentic_clockss/ticketmaster-scraper
```

Sign in with Apify through OAuth, or send `Authorization: Bearer <YOUR_APIFY_TOKEN>`. The tool returns run and dataset IDs; read the rows with `get-dataset-items`. For clients without remote support, run `npx @apify/actors-mcp-server --tools lentic_clockss/ticketmaster-scraper` with `APIFY_TOKEN` set.

Example prompt: "Find 3 Ticketmaster concert rows in the US using query concert. Return event names, dates and venues."

- **Agent execution note:** Set `maxResults` between `5` and `20` on exploratory tool calls to keep responses compact, and read `RUN_SUMMARY` and `INPUT_REPORT` from the default key-value store to inspect normalized inputs and delivered row counts. When a long run briefly reports `ABORTED` with the automatic-resume status message, wait for the same run ID to finish as `SUCCEEDED` instead of starting a duplicate run.

#### Apify API

Python:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("lentic_clockss/ticketmaster-scraper").call(
    run_input={"query": "concert", "market": "us", "maxResults": 3}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

JavaScript:

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('lentic_clockss/ticketmaster-scraper')
  .call({ query: 'concert', market: 'us', maxResults: 3 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

For HTTP, send input JSON to `POST https://api.apify.com/v2/acts/lentic_clockss~ticketmaster-scraper/runs` with an `Authorization: Bearer` header. Read rows with `GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json`.

#### Integrations

Use the **Integrations** tab for Google Sheets, Make, Zapier, n8n, Slack, Airtable or webhooks. Use Apify Schedules for repeated runs.

### FAQ

#### Is it legal to scrape Ticketmaster?

This Actor collects public data. You are responsible for Ticketmaster's terms and applicable data-protection law. Processing personal data requires a lawful basis. This tool is independent of Ticketmaster and Live Nation Entertainment.

#### Why did my run end as ABORTED?

It may be the automatic pause described above. Check the status message before restarting; a manual abort is not the same as an automatic pause.

#### How many results can I get?

Set `maxResults` from 1 to 500 per input. Actual rows depend on source availability, selected options, time and spending limits. Free-plan runs stop at 200 rows.

#### Why are some fields empty?

Not every page exposes prices, seats, contacts or reviews. Metadata-only results do not prove that an event has no tickets.

#### Why do `leadAbsences` reasons look different from earlier runs?

From 13 November 2026 each `leadAbsences` value keeps its `reason` and `surface` keys, and both are English. `reason` was `"\u672c\u7ad9\u65e0"`, `"\u672a\u9a8c\u8bc1"` or `"\u95f8\u95e8\u9501"`; it is now `not_verified`, `not_on_list_page` or `not_collected`. `surface` names where the Actor looks for the field, not what Ticketmaster lacks. For example, a search row's `phones` value changed from `{"reason": "\u672a\u9a8c\u8bc1", "surface": "venue HTML enrich did not return venueInfo"}` to `{"reason": "not_verified", "surface": "venue page box office sections"}`.

Event detail rows without venue page data used to report `leadReveal` as `gated` when they had no phone. They now report `visible` when the row shows a phone, venue name or street line, otherwise `absent`, as search rows do.

#### Why did my resale event return no listing rows?

Resale-marketplace events (`inventorySystem: TMR`) rely on the resale feed. When it offers sections, they arrive as separately billed rows with `listingKind: resaleSection` and reported `available` counts. When it declines, the event row is still delivered with a warning in `RUN_SUMMARY`; an absent `resaleSections` value means none were offered, not that none exist.

#### Are ticket quantities remaining inventory?

Not always. Recommended picks describe purchase groups. Static seating geometry describes layout. Only reported availability counts describe observed availability; prices and stock can change after collection.

#### How do change alerts work?

Enable `trackChanges` and schedule repeated event runs. The first snapshot does not alert. Later changes can send `ticketmaster.event.changed` to `alertWebhookUrl`. Use a public HTTPS destination; redirects are not followed. Alerts compare observed snapshots, not continuous monitoring.

#### Does geographic search work everywhere?

Keyword searches in US and Canada support geographic filters directly. Other markets and category searches filter fetched events by venue coordinates, so coverage depends on available rows. Supply a keyword or classification with coordinates outside US/Canada.

#### Can I buy tickets with this Actor?

No. It collects public information, not purchases, reservations or account data.

### Limitations

- Greece, Brazil, Chile, Peru, Argentina and Colombia are not supported markets.
- Seat-level pricing and resale availability are not guaranteed for every event or country; resale-marketplace (TMR) events may return metadata only when the resale feed declines.
- `detailLevel` output labels describe returned coverage: `bff-metadata`, `ras-avsc`, `ras-manifest`, `tmr-ismds`, `edp-qp-resale`, `edp-metadata` or `discovery-metadata`; none alone proves live inventory.
- Resale events (`inventorySystem=TMR`) can emit per-listing resale rows parsed from the event page markup (`listingSource=edp-ssr-quickpicks`, `priceBasis=listed`): section, row, listed price, delivery method. These are the listings the page displays, not a complete resale inventory.
- Venue emails and named venue staff are not provided by the supported contact fields.
- Date-window searches and saved-target enumeration do not guarantee a complete market census.
- Optional rows compete with event rows for the same allowance; attribute lists are capped at 50 entries.

### Related scrapers

More event and ticketing scrapers from the same publisher:

- [SeatGeek Scraper](https://apify.com/lentic_clockss/seatgeek-scraper)
- [StubHub Scraper](https://apify.com/lentic_clockss/stubhub-scraper)
- [AXS Scraper](https://apify.com/lentic_clockss/axs-scraper)
- [Eventim Scraper](https://apify.com/lentic_clockss/eventim-scraper)
- [Eventbrite Scraper](https://apify.com/lentic_clockss/eventbrite-scraper)
- [Stealth Web Scraper](https://apify.com/lentic_clockss/stealth-web-scraper)
- [Email Validator](https://apify.com/lentic_clockss/email-risk-validator)

Browse all of our scrapers at [apify.com/lentic_clockss](https://apify.com/lentic_clockss).

### Support

Report problems or request a field through the **Issues** tab of this Actor's page. Include the run ID and the input you used.

# Actor input Schema

## `mode` (type: `string`):

Leave on Auto to select a mode from your target fields. If a selected mode has no target, the Actor follows another target you supplied.

## `query` (type: `string`):

Search keyword, such as concert. With no target fields, the Actor starts a normally billed concert example with at most 3 rows.

## `eventUrl` (type: `string`):

Link to a Ticketmaster event page on a supported country site, with or without www. The event ID is read from the event link.

## `eventId` (type: `string`):

Event ID from a Ticketmaster link: 6 to 40 letters, numbers, underscores or hyphens. Standard and resale event IDs are accepted.

## `artistId` (type: `string`):

Numeric artist ID from a Ticketmaster artist page, such as 779049. Required for artist mode unless you provide a target URL list.

## `artistSlug` (type: `string`):

Optional artist URL label alongside artistId. A slug alone does not identify an artist for collection.

## `venueId` (type: `string`):

Numeric venue ID from a Ticketmaster venue page, such as 106601. Required for venue mode unless you provide a target URL list.

## `venueSlug` (type: `string`):

Optional venue URL label alongside venueId. A slug alone does not identify a venue for collection.

## `categorySlug` (type: `string`):

Browse concerts, sports, arts-theater or family events. Use categoryId or classificationId for other supported category filters.

## `categoryId` (type: `string`):

Ticketmaster segment ID, such as KZFzniwnSyZfZ7v7nJ for Music. Known IDs select the matching category.

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

List of Ticketmaster event or browse page URLs. A nonempty target list replaces scalar event targets; each input has its own maxResults allowance.

## `detailUrls` (type: `array`):

List of Ticketmaster event page URLs. Each input has its own maxResults allowance.

## `listingIds` (type: `array`):

List of event IDs or Ticketmaster event page URLs. A nonempty target list replaces eventId and eventUrl.

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

Maximum delivered and billed rows per input, shared by events and optional rows: default 70, prefill 3, maximum 500; larger requests are collected in parts of 70. The run also stops at your maximum cost; Free plan users have 10 runs with at most 200 rows per run.

## `market` (type: `string`):

Ticketmaster country site to search, such as us, uk, de or au. Choose one of the 23 listed markets; event and ticket coverage varies by country.

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

Include events on or after this calendar date in YYYY-MM-DD format. Leave empty for all upcoming dates; it must not be later than endDate.

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

Include events on or before this calendar date in YYYY-MM-DD format. Use a current or future date, not earlier than startDate, or leave empty.

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

Search ordering: relevance or date. The input form selects relevance.

## `classificationId` (type: `string`):

Classification ID, category slug or alias such as comedy, rock, nfl or musicals. Use it instead of query to browse a classification.

## `latitude` (type: `number`):

Search-center latitude from -90 to 90. Supply longitude as well.

## `longitude` (type: `number`):

Search-center longitude from -180 to 180. Supply latitude as well.

## `radius` (type: `number`):

Search radius from 0.1 to 20000 in radiusUnit. When omitted, the distance is 50.

## `radiusUnit` (type: `string`):

Distance unit for geographic search: miles or km. The default is miles.

## `detailLevel` (type: `string`):

Choose full for more event details, or fast for reduced-detail collection. Returned detailLevel labels describe actual coverage and do not guarantee live inventory.

## `includePricing` (type: `boolean`):

Add separately billed listing and offer rows within the same maxResults allowance as the event. Recommended pick quantity is a purchase group size, not remaining stock.

## `includeSeatManifest` (type: `boolean`):

Request seating layout and available seat counts; price levels may add separately billed offer rows within maxResults. Layout geometry is not remaining inventory.

## `includeReviews` (type: `boolean`):

Add separately billed public artist review rows when available. Reviews share the same maxResults allowance.

## `includeSuggestions` (type: `boolean`):

Add separately billed suggested-event rows in browse modes when available. Suggestions share the same maxResults allowance.

## `enrichDetails` (type: `boolean`):

Add available public venue box-office phone numbers and address details. Enabled by default; missing contacts remain empty.

## `shardByDate` (type: `boolean`):

Split supported browse searches into date windows to work beyond individual search-page limits. Results are deduplicated by event ID but still respect row and cost limits.

## `dateShardDays` (type: `integer`):

Date-window length when shardByDate is enabled: 1 to 92 days. The default is 7.

## `enumerate` (type: `boolean`):

With no keyword or ID target, browse saved targets for the selected market instead of starting the small example search. Coverage depends on available targets and does not guarantee every event.

## `seedKind` (type: `string`):

Saved target family for enumerate: classification, venue, attraction or all. Classification targets find events; venue and attraction targets can provide profile rows.

## `trackChanges` (type: `boolean`):

Compare delivered rows with previously saved pricing and status snapshots and add a tracking field. The first snapshot does not trigger an alert.

## `alertWebhookUrl` (type: `string`):

With trackChanges enabled, send ticketmaster.event.changed alerts to this public HTTPS URL when observed prices or status change. First snapshots do not alert; redirects are not followed.

## `maxPages` (type: `integer`):

Page-count hint from 1 to 25. Collection can continue until the row allowance is filled or the source ends.

## `workerBaseUrl` (type: `string`):

Leave empty. Used only by the developer for testing.

## `timeBudgetSecs` (type: `integer`):

Total time allowance, including waiting, from 30 to 3600 seconds. Leave empty to use the run timeout; if both are set, the shorter limit applies.

## `onTimeout` (type: `string`):

Choose partial to save available rows and finish with RUN_SUMMARY.status=PARTIAL, or fail to reject the unfinished result without saving those rows. A deadline reached without rows fails with a reason.

## `progressIntervalSecs` (type: `integer`):

How often the status message and PROGRESS record are refreshed, from 2 to 30 seconds. The default is 4.

## Actor input object example

```json
{
  "mode": "auto",
  "query": "concert",
  "eventId": "0D0064EA9A88501D",
  "artistId": "779049",
  "artistSlug": "shakira",
  "venueId": "106601",
  "categorySlug": "concerts",
  "maxResults": 3,
  "market": "us",
  "sort": "relevance",
  "classificationId": "comedy",
  "latitude": 40.7128,
  "longitude": -74.006,
  "radius": 25,
  "radiusUnit": "miles",
  "detailLevel": "full",
  "includePricing": false,
  "includeSeatManifest": false,
  "includeReviews": false,
  "includeSuggestions": false,
  "enrichDetails": true,
  "shardByDate": false,
  "dateShardDays": 7,
  "enumerate": false,
  "seedKind": "classification",
  "trackChanges": false,
  "maxPages": 1,
  "onTimeout": "partial",
  "progressIntervalSecs": 4
}
```

# Actor output Schema

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

Collected rows with an id and rowType. Event rows contain compact summaries; listing and offer rows carry their parent event context.

## `runSummary` (type: `string`):

Run outcome, delivered row count, applicable limits, tracking results and available detail-coverage counts.

## `progress` (type: `string`):

Current step, rows collected, time remaining and the final collection state.

## `inputEcho` (type: `string`):

Normalized non-secret input settings understood by the Actor.

## `errorSummary` (type: `string`):

Failure details when the Actor cannot deliver valid public rows.

# 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 = {
    "query": "concert",
    "maxResults": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("lentic_clockss/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 = {
    "query": "concert",
    "maxResults": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("lentic_clockss/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 '{
  "query": "concert",
  "maxResults": 3
}' |
apify call lentic_clockss/ticketmaster-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lentic_clockss/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/gYolotEoBsIadpsFo/builds/16vycEonWnTbfIICo/openapi.json
