SeatGeek Scraper - Events, Tickets & Venues avatar

SeatGeek Scraper - Events, Tickets & Venues

Pricing

from $1.20 / 1,000 event, performer or venue records

Go to Apify Store
SeatGeek Scraper - Events, Tickets & Venues

SeatGeek Scraper - Events, Tickets & Venues

Scrape SeatGeek events with ticket price ranges (lowest, highest, average, median), venues, performers, dates and availability. Search by keyword, category, team, venue or date, or paste event links. Incremental monitoring, resume and MCP export.

Pricing

from $1.20 / 1,000 event, performer or venue records

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

2

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

SeatGeek Scraper: Events, Ticket Price Ranges & Venues

SeatGeek Scraper turns the SeatGeek ticket marketplace into a clean events data API. Get upcoming events with the source's own ticket price statistics (lowest, highest, average and median price, plus listing and ticket counts), performer directory entries (teams, artists, leagues) and venue details. Search by keyword, category, performer, venue or date range, or paste SeatGeek links, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.

Why This Scraper?

  • Three record kinds, one dataset. Events, performers and venues each come with their own named fields, plus the complete source object so nothing is lost.
  • Price ranges on every event, no extra fetch. Lowest, highest, average and median ticket price, plus listing and ticket counts, ride along with every event record.
  • Two ways to find data. Keyword search with category, performer, venue and date filters, or paste SeatGeek event, performer and venue links directly.
  • 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 support. Continue one interrupted large pull without paying twice for records it already collected.
  • Honest about coverage. Per-ticket listings require an authenticated account on the source, so the actor returns the aggregated price statistics the open interface publishes instead of inventing anything.
  • MCP export. Optionally pipe results into Notion, Linear, Airtable or other apps you already use.

Use Cases

  • Ticket price tracking: monitor a tour, team or venue's price statistics and catch new dates or reschedules on a schedule.
  • Event discovery apps: feed upcoming events, venues and performers into your own site, bot or alerting tool.
  • Market and pricing research: compare price ranges and listing counts across performers, venues or categories.
  • Fan tools and calendars: build a personal or team event calendar from a search or a list of pasted links.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
kind"event" (also "performer", "venue")
recordId"event:88880001"
title / shortTitle"The Marble Foxes World Tour" / "Marble Foxes"
eventType"concert"
startDateTimeUtc / startDateTimeLocal"2027-06-10T23:00:00" / "2027-06-10T19:00:00"
status"normal"
venueName / venueCity / venueState"Riverside Amphitheater" / "Harborview" / "CA"
venueCapacity19500
venueLatitude / venueLongitude37.77 / -122.42
headliner"The Marble Foxes"
performersbrief entries: id, name, type, headliner flag
performerIds[5001, 5002]
taxonomies["concert", "rock"]
lowestPrice / highestPrice45.0 / 210.0
averagePrice / medianPrice88.0 / 80.0
goodDealLowestPrice39.0
listingCount / ticketCount132 / 400
urlSeatGeek link to the event, performer or venue
changeType / changedFieldsincremental mode only: "UPDATED" / ["startDateTimeUtc"]
firstSeenAt / lastSeenAtincremental mode only: timestamps of first and latest sighting
rawthe complete source object

Performer records carry name, performerType, slug, numUpcomingEvents, image and profile link. Venue records carry name, city, state, capacity, coordinates and upcoming-event counts. Both share recordId, url, popularity, score and raw with event records.

How to Use

  1. Pick a mode: search (by keyword) or url (paste SeatGeek links).
  2. For search, pick a search type (events, performers or venues) and, for events, narrow with category, performer id, venue id, date range or sort.
  3. Set Max items (and optionally Max pages) to control run size and cost, then click Start.
  4. Download the dataset as JSON, CSV or Excel, or read it through the API.

Search for events by keyword:

{
"mode": "search",
"query": "coldplay",
"searchType": "events",
"maxItems": 20
}

Narrow an events search by category, venue and date range:

{
"mode": "search",
"searchType": "events",
"taxonomy": "sports",
"venueId": "35",
"dateFrom": "2027-01-01",
"dateTo": "2027-01-31",
"sort": "datetime_utc.asc",
"maxItems": 50
}

Paste links (event, performer or venue pages):

{
"mode": "url",
"urls": ["https://seatgeek.com/new-york-yankees-tickets"],
"maxItems": 100
}

Recurring monitoring, only new and changed events:

{
"mode": "search",
"query": "coldplay",
"searchType": "events",
"incrementalMode": true,
"stateKey": "coldplay-tour",
"maxItems": 0
}

Event links must be public SeatGeek pages that end in the numeric event id; performer pages end in -tickets; venue pages start with /venues/.

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/seatgeek-events-scraper").call(run_input={"mode": "search", "query": "coldplay"})
for record in client.dataset(run["defaultDatasetId"]).iterate_items():
print(record["title"], record.get("lowestPrice"), record.get("highestPrice"))

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/seatgeek-events-scraper').call({ mode: 'search', query: 'coldplay' });
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 and Max pages shape a run

The events interface returns at most 100 records per page. The actor walks page by page until Max items is reached or the results run out naturally. Max pages is an additional per scope cap (0 by default, meaning wide open) for when you want to bound how deep a single search or link is walked regardless of Max items. Events-only filters (category, performer id, venue id, date range, sort) apply only when Search type is Events; Performers and Venues directory searches ignore them.

Resume and recurring updates

Two related but different features live in the same input section:

  • Resume (resumeFromRunId): paste a previous run ID or dataset ID and the actor skips records already collected there. Use it to continue one large pull that was interrupted.
  • Incremental mode (incrementalMode): for scheduled monitoring of the same search or links. The first run returns everything as NEW. Later runs return only NEW, UPDATED and REAPPEARED records, each stamped with changeType, changedFields, firstSeenAt and lastSeenAt. Records that vanish are marked EXPIRED (with emitExpired), but only after a run that scanned the whole search without caps or errors. EXPIRED rows are added at the end of the run on top of Max items, so a large tracked scope can return more rows than Max items on the run where many records vanish. stateKey names or shares the stored state; leave it empty to let the actor derive one automatically from the search or link scope. Ticket price statistics and listing counts move hourly, so they are excluded from the change fingerprint: a price move alone never produces an UPDATED row, but the live price values are always in the emitted record.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each record, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (keyword search) or url (paste SeatGeek links).
querystringcoldplaySearch mode: the keyword to look up (used with Search type).
searchTypestringeventsSearch mode: events, performers or venues.
taxonomystringemptyEvents search only: narrow to concert, sports, theater, family or comedy.
performerIdsarrayemptyEvents search only: numeric performer ids; returns events featuring any of them.
venueIdstringemptyEvents search only: a numeric venue id; only events at that venue.
dateFromstringemptyEvents search only: only events on or after this date (YYYY-MM-DD).
dateTostringemptyEvents search only: only events on or before this date (YYYY-MM-DD).
sortstringsoonest firstEvents search only: datetime_utc.asc, datetime_utc.desc, score.desc, lowest_price.asc or highest_price.desc.
urlsarraysample performer linkURL mode: SeatGeek pages to read (event, performer or venue links).
maxItemsinteger20Stop after this many records (0 = no limit).
maxPagesinteger0Upper bound on pages walked per scope (0 = wide open; Max items is the only cap).
resumeFromRunIdstring(none)Paste a previous run ID or dataset ID to continue an interrupted pull.
incrementalModebooleanfalseTurn on for recurring monitoring: return only new and changed records.
stateKeystring(none)Name or share an incremental-mode state; auto-derived from the search/link scope if left empty.
emitUnchangedbooleanfalseAlso return (and bill) unchanged records.
emitExpiredbooleanfalseAlso return (and bill) records no longer found, once a run has fully scanned the tracked scope. Not counted against Max items.
mcpConnectorsarray(none)Optional: send a summary of each record to apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which item pages are created.
maxNotifyListingsinteger50Cap on items written to each connector per run.
proxyConfigurationobjectApify ProxyConnection settings. The prefilled default works on every Apify plan.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"kind": "event",
"recordId": "event:88880001",
"eventId": 88880001,
"url": "https://seatgeek.com/the-marble-foxes-tickets/riverside-amphitheater/2027-06-10/88880001",
"title": "The Marble Foxes World Tour",
"shortTitle": "Marble Foxes",
"eventType": "concert",
"startDateTimeUtc": "2027-06-10T23:00:00",
"startDateTimeLocal": "2027-06-10T19:00:00",
"status": "normal",
"venueName": "Riverside Amphitheater",
"venueCity": "Harborview",
"venueState": "CA",
"venueCapacity": 19500,
"venueLatitude": 37.77,
"venueLongitude": -122.42,
"headliner": "The Marble Foxes",
"performers": [{ "performerId": 5001, "name": "The Marble Foxes", "type": "band", "primary": true }],
"performerIds": [5001],
"taxonomies": ["concert", "rock"],
"lowestPrice": 45.0,
"highestPrice": 210.0,
"averagePrice": 88.0,
"medianPrice": 80.0,
"goodDealLowestPrice": 39.0,
"listingCount": 132,
"ticketCount": 400,
"raw": {}
}

Plan Requirement

The default connection setting works on every Apify plan: this actor reads SeatGeek's own open events interface directly, and a refused connection falls back automatically rather than failing the run. Pick a different proxy group under Connection only if your organization's network policies require it.

FAQ

How much does it cost?

You pay per record returned. The Pricing tab shows the current rate. Use Max items to cap the cost of any run (with Emit expired on, EXPIRED rows are added on top of that cap).

This actor collects only publicly available event, price-range and venue data. You are responsible for how you use it: follow SeatGeek's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution.

Does this include individual ticket listings?

No. Per-ticket offers behind each event require an authenticated account on the source. The actor returns each event's aggregated price statistics instead (lowest, highest, average, median, listing and ticket counts), which the open data interface publishes for every event.

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 and updated records, and unchanged ones are not billed unless you turn on Emit unchanged.

Why did my run fail instead of returning an empty dataset?

If every request was rejected, the run stops with a clear message so "nothing matched" is never confused with "nothing could be read". Run it again in a few minutes. A search that genuinely matches nothing still succeeds quietly with a status message.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

🔗 Want more e-commerce data?

Pair this actor with these related scrapers from the same team:

⚽ Eventim Scraper
Scrape CTS Eventim Germany and EU event catalogue: concerts, festivals, comedy, sports...
🧩 Viagogo Scraper
Scrape Viagogo events by artist, production, venue, city, category, or URL. Extract event...
🧩 Songkick Scraper
Scrape Songkick concert and event calendars: upcoming and past dates, venues, cities...
🧩 Ticketmaster Scraper
Discover and scrape Ticketmaster events across the US, UK, Australia and Canada. Search...
✈️ Pollstar Scraper
Scrape Pollstar upcoming concerts and tour dates: play date, venue with full address and...
🧩 Fever Scraper
Scrape Fever events by city, category, keyword or URL. Extract from-prices, venues, dates...

👉 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 contact@abotapi.com or message Telegram @abotapi.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.