Ticketmaster Scraper - Events, Artists & Venues
Pricing
from $1.20 / 1,000 event records
Ticketmaster Scraper - Events, Artists & Venues
Discover and scrape Ticketmaster events across the US, UK, Australia and Canada. Search by keyword, artist or venue, filter by city and date, or paste URLs directly. Includes incremental monitoring and resume support for ongoing event tracking.
Pricing
from $1.20 / 1,000 event records
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
Ticketmaster Scraper: Events, Venues, Artists and Presale Dates
Ticketmaster Scraper turns Ticketmaster event listings into structured data you can use anywhere. Get upcoming events across the US, UK, Australia and Canada, with venue details, full artist lineups, presale windows and live status flags such as sold out, cancelled or postponed. Search by keyword on one market, or paste Ticketmaster search, venue and artist links to read their listings directly. Narrow by city or date, then export to JSON, CSV or Excel, or pull records straight into your app through the API.
Why This Scraper?
- Two ways to find events. Search by keyword on one market, or paste search, venue and artist links to read exact listings without building URLs by hand.
- Four markets. United States, United Kingdom, Australia and Canada, each read from its own site.
- Rich event records. Venue address and coordinates, the full artist lineup, every presale window, and status flags for cancelled, postponed, rescheduled, sold out and limited availability shows.
- Narrow without extra requests. City and date filters trim the fetched rows down to just what you need.
- Built for schedules. Incremental mode returns only new and changed events on recurring runs, and a refused run fails loudly instead of returning an empty dataset.
- Resume anytime. Continue an interrupted crawl without paying twice for records you already collected.
- Nothing lost. The complete source event object rides along with every record.
Use Cases
- Ticket resale and pricing tools: track lineups, sold out status and onsale dates to plan when to buy or list tickets.
- Fan alert services: watch an artist or venue for newly announced shows and presale windows.
- Event aggregators and listing sites: build a searchable calendar of concerts, sports and other live events across multiple markets.
- Tour and venue analytics: track how often venues host events, and which cities an artist is touring through.
- Marketing and CRM teams: match upcoming shows in a city to customer segments for local promotions.
Data You Get
Sample shape: values are illustrative placeholders, not from a live record.
| Field | Example |
|---|---|
kind | "event" |
recordId | "us:SAMPLE0001A" |
eventId / discoveryId | "SAMPLE0001A" / "sampleDiscoveryId1" |
market | "us" (also "uk", "au", "ca") |
title | "Sample Arena Rock Night" |
url | Ticketmaster link to the event page |
startDate / onsaleDate | "2027-06-12T19:30:00Z" / "2027-01-05T14:00:00Z" |
spanMultipleDays / timeZone | false / "America/New_York" |
cancelled / postponed / rescheduled | false / false / false |
soldOut / limitedAvailability | false / false |
ticketingStatus / virtual | "onsale" / false |
venueName / venueCity | "Sample Arena" / "Sampleville" |
venueState / venueCountry / venueCountryCode | "SV" / "Sample Country" / "SC" |
venueAddress / venuePostalCode | "1 Sample Way" / "00000" |
venueLatitude / venueLongitude | 40.0 / -75.0 |
venueUrl / venueImageUrl | venue page link / venue photo link |
artists | [{ "name": "Sample Act", "url": "...", "imageUrl": "..." }] |
artistNames | ["Sample Act"] |
presales | [{ "name": "Artist Presale", "startDateTime": "...", "endDateTime": "..." }] |
seatmapImageUrl | static seatmap image link |
categoryId | "SampleCategoryId1" |
changeType / changedFields | "NEW" / [] (incremental mode only) |
firstSeenAt / lastSeenAt | timestamps (incremental mode only) |
raw | the complete source object |
Per-event ticket price tiers are not part of any record: Ticketmaster serves them only on its event detail pages, and those pages refuse automated reads on every connection. The listing pages this actor reads carry no price fields either.
How to Use
- Pick a mode:
search(keyword lookup on one market) orurl(paste Ticketmaster links). - For search mode, set the market, search query, and optionally sort, city filter or a date range. For URL mode, paste one or more Ticketmaster links.
- Set Max items and, if needed, Max pages to control run size and cost, then click Start.
- Download the dataset as JSON, CSV or Excel, or read it through the API.
Search by keyword:
{"mode": "search","query": "sample rock festival","market": "us","maxItems": 20}
Narrow by city and date range:
{"mode": "search","query": "concerts","city": "Chicago","dateFrom": "2027-01-01","dateTo": "2027-03-31","maxItems": 50}
Paste links (search, venue or artist):
{"mode": "url","urls": ["https://www.ticketmaster.com/search?q=sample+festival","https://www.ticketmaster.com/sample-arena-tickets-sampleville/venue/000000"],"maxItems": 100}
Track one search across scheduled runs:
{"mode": "search","query": "sample band tour","incrementalMode": true,"stateKey": "sample-band-tour-us","maxItems": 0}
Event detail links cannot be read by automated clients and are skipped with a warning; paste the venue or artist link instead, or use search mode for the keyword.
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/ticketmaster-event-discovery").call(run_input={"mode": "search", "query": "sample rock festival", "market": "us"})for event in client.dataset(run["defaultDatasetId"]).iterate_items():print(event["title"], event["venueCity"], event["startDate"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/ticketmaster-event-discovery').call({mode: 'search', query: 'sample rock festival', market: 'us',});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
How Max items works across multiple links
In URL mode, Max items is split evenly across the links you paste, calculated once at the start of the run. A link with fewer available events than its share cannot hand its unused budget to another link that has plenty more available. If one link needs a much larger share than the others, give it its own run, or space your links across a few runs instead of one.
Resume and recurring updates
- Resume (
resumeFromRunId) continues one interrupted run: paste its run or dataset ID and the actor skips every record id already collected there, so you don't pay twice. Ids are matched on therecordIdfield only, so the ID must belong to a run or dataset of this actor. An ID whose items carry norecordIdseeds nothing (the log shows "0 record id(s) seeded") and every record is collected and billed again. - Incremental mode (
incrementalMode) is for scheduled runs over the same search or links. Each record is classifiedNEW,UPDATED(withchangedFields),UNCHANGED(suppressed and not billed unlessemitUnchangedis on),REAPPEAREDorEXPIRED(only after a run that scanned the whole scope end to end, and only withemitExpired).stateKeynames or shares the stored state. With Incremental mode off, output is exactly as before. - Do not turn on Resume from run and Incremental mode in the same run. The actor does not block the combination. Records that Resume skips are never added to the Incremental baseline, so if they were not already in it (for example on the first Incremental run, or when the interrupted run never saved its state), the next Incremental run reports them as
NEWagain and bills them a second time. To pick up an interrupted Incremental schedule, simply run it again with Incremental mode alone. - Expired rows in URL mode. If one pasted link hits an error partway through its listing (for example a page the actor cannot parse), that link is skipped with a "Link ... errored" warning in the log, but the run still counts as a complete scan. With
emitExpiredon, every stored event from that link's unread pages is then returned asEXPIREDand billed, even though it is still live, and the next clean run returns the same events asREAPPEARED, billed again. The run succeeds and shows no status warning. Search mode is not affected: there the same error stops the run without saving state. Workaround: in URL mode, leaveemitExpiredoff, or check the log for "errored" before acting onEXPIREDrows.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | search (keyword lookup) or url (paste Ticketmaster links). |
query | string | concerts | Search mode: a keyword, for example an artist, team, venue or city name. |
market | string | us | Search mode: us, uk, au or ca. Each market reads its own site. |
sort | string | (none, effectively relevance) | Search mode: relevance or date result order. |
city | string | (none) | Narrow rows to a venue city, state or country substring. Applied after the fetch. |
dateFrom | string | (none) | Keep events starting on or after this date (YYYY-MM-DD). Applied after the fetch. |
dateTo | string | (none) | Keep events starting on or before this date (YYYY-MM-DD). Applied after the fetch. |
urls | array | ["https://www.ticketmaster.com/search?q=concerts"] | URL mode: one or more Ticketmaster search, venue or artist links. Event detail links are skipped with a warning. |
maxItems | integer | 20 | Maximum event records returned. 0 means no limit. |
maxPages | integer | 0 | Maximum listing pages read per scope. 0 means no page cap. |
proxyConfiguration | object | Apify Proxy (Residential) | Connection settings. The default residential group is recommended: the source refuses most datacenter connections. |
resumeFromRunId | string | (none) | Continue an interrupted crawl: record ids (recordId) from this actor's run or dataset id are skipped. |
incrementalMode | boolean | false | Track this search across runs: only new or changed events are returned, with changeType stamps. Do not combine with Resume from run: the combination is not blocked and can bill skipped records again as NEW later (see the tips above). |
stateKey | string | (none) | Custom baseline name for Incremental mode. Leave empty to derive one from the mode, market, query, filters and links. |
emitUnchanged | boolean | false | Incremental mode: also return (and bill) unchanged events, with changeType UNCHANGED. |
emitExpired | boolean | false | Incremental mode: also return (and bill) events that vanished since the last run, with changeType EXPIRED. In URL mode a link that errors partway can produce false EXPIRED rows (see the tips above). |
Output Example
Sample shape: values are illustrative placeholders, not from a live record.
{"kind": "event","recordId": "us:SAMPLE0001A","eventId": "SAMPLE0001A","discoveryId": "sampleDiscoveryId1","market": "us","url": "https://www.ticketmaster.com/sample-arena-rock-night-sampleville/event/SAMPLE0001A","title": "Sample Arena Rock Night","startDate": "2027-06-12T19:30:00Z","onsaleDate": "2027-01-05T14:00:00Z","spanMultipleDays": false,"timeZone": "America/New_York","cancelled": false,"postponed": false,"rescheduled": false,"soldOut": false,"limitedAvailability": false,"ticketingStatus": "onsale","virtual": false,"venueName": "Sample Arena","venueCity": "Sampleville","venueState": "SV","venueCountry": "Sample Country","venueCountryCode": "SC","venueAddress": "1 Sample Way","venuePostalCode": "00000","venueLatitude": 40.0,"venueLongitude": -75.0,"venueUrl": "https://www.ticketmaster.com/sample-arena-tickets-sampleville/venue/000000","venueImageUrl": "https://example.invalid/sample-venue.jpg","artists": [{ "name": "Sample Act", "url": "https://www.ticketmaster.com/sample-act-tickets/artist/000000", "imageUrl": "https://example.invalid/sample-act.jpg" }],"artistNames": ["Sample Act"],"presales": [{ "name": "Artist Presale", "startDateTime": "2027-01-03T14:00:00Z", "endDateTime": "2027-01-05T02:00:00Z" }],"seatmapImageUrl": "https://example.invalid/sample-seatmap.png","categoryId": "SampleCategoryId1","raw": {}}
Plan Requirement
This actor's default connection setting already uses the residential proxy group, since the source refuses most plain datacenter connections. The actor also rotates to a fresh connection automatically when one is refused. No extra setup is required to get started; check your plan for residential proxy availability under Connection if you see refused requests.
FAQ
How much does it cost?
You pay per event record returned, plus a small per run start charge. The Pricing tab shows the current rates for your plan tier. Use Max items to cap the cost of any run.
Is it legal to scrape Ticketmaster?
This actor collects only publicly available event listings. You are responsible for how you use it: follow Ticketmaster's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Event and venue facts are generally not protected, but artist and venue photos may be subject to third party rights.
Can I get only new or changed events on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated, reappeared or expired records for that search or link set, and unchanged ones are not billed unless you turn that on too. Do not add Resume from run to these runs: records it skips are not added to the baseline and can come back later as NEW and be billed again. In URL mode with Emit expired on, a link that errors partway through can return still-live events as EXPIRED, so check the log for "errored" before acting on those rows, or leave Emit expired off.
Why doesn't this include ticket prices?
Ticketmaster serves per-event ticket price tiers only on its event detail pages, and those pages refuse automated reads on every connection. The listing pages this actor reads carry no price fields either, so price tiers are never part of a record. Paste a venue or artist link instead of an event link to read everything else about the same show.
Why did my run fail instead of returning an empty dataset?
If every request is refused, the run stops with a clear message so "no events found" is never confused with "nothing could be read". Run it again in a few minutes. If only some pages or links could be read, you still get what was found, and the run succeeds.
Can I use it with AI agents?
Yes. Call it from any Apify integration, or through Apify's API, and read the results from your own agent or app.
๐ More scrapers you might like
Pair this actor with these related scrapers from the same team:
| ๐งฉ Songkick Scraper Scrape Songkick concert and event calendars: upcoming and past dates, venues, cities... | ๐งฉ Viagogo Scraper Scrape Viagogo events by artist, production, venue, city, category, or URL. Extract event... |
| โฝ Eventim Scraper Scrape CTS Eventim Germany and EU event catalogue: concerts, festivals, comedy, sports... | ๐งฉ Bandsintown Scraper Scrape Bandsintown concert and festival dates: artist tour calendars, venue profiles... |
| โ๏ธ Pollstar Scraper Scrape Pollstar upcoming concerts and tour dates: play date, venue with full address and... | ๐ SeatGeek Scraper Scrape SeatGeek events with ticket price ranges (lowest, highest, average, median)... |
๐ Browse all abotapi scrapers
๐ฌ Support & custom scrapers
- ๐ Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
- ๐ ๏ธ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
- โญ Enjoying it? A quick review on the actor page helps other users find it.