SeatGeek Scraper - Events, Tickets & Venues
Pricing
from $1.20 / 1,000 event, performer or venue records
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
Maintained by CommunityActor stats
2
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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.
| Field | Example |
|---|---|
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" |
venueCapacity | 19500 |
venueLatitude / venueLongitude | 37.77 / -122.42 |
headliner | "The Marble Foxes" |
performers | brief entries: id, name, type, headliner flag |
performerIds | [5001, 5002] |
taxonomies | ["concert", "rock"] |
lowestPrice / highestPrice | 45.0 / 210.0 |
averagePrice / medianPrice | 88.0 / 80.0 |
goodDealLowestPrice | 39.0 |
listingCount / ticketCount | 132 / 400 |
url | SeatGeek link to the event, performer or venue |
changeType / changedFields | incremental mode only: "UPDATED" / ["startDateTimeUtc"] |
firstSeenAt / lastSeenAt | incremental mode only: timestamps of first and latest sighting |
raw | the 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
- Pick a mode:
search(by keyword) orurl(paste SeatGeek links). - For search, pick a search type (events, performers or venues) and, for events, narrow with category, performer id, venue id, date range or sort.
- Set Max items (and optionally 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 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 ApifyClientclient = 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 asNEW. Later runs return onlyNEW,UPDATEDandREAPPEAREDrecords, each stamped withchangeType,changedFields,firstSeenAtandlastSeenAt. Records that vanish are markedEXPIRED(withemitExpired), but only after a run that scanned the whole search without caps or errors.EXPIREDrows 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.stateKeynames 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 anUPDATEDrow, 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.
- Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto 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
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | search (keyword search) or url (paste SeatGeek links). |
query | string | coldplay | Search mode: the keyword to look up (used with Search type). |
searchType | string | events | Search mode: events, performers or venues. |
taxonomy | string | empty | Events search only: narrow to concert, sports, theater, family or comedy. |
performerIds | array | empty | Events search only: numeric performer ids; returns events featuring any of them. |
venueId | string | empty | Events search only: a numeric venue id; only events at that venue. |
dateFrom | string | empty | Events search only: only events on or after this date (YYYY-MM-DD). |
dateTo | string | empty | Events search only: only events on or before this date (YYYY-MM-DD). |
sort | string | soonest first | Events search only: datetime_utc.asc, datetime_utc.desc, score.desc, lowest_price.asc or highest_price.desc. |
urls | array | sample performer link | URL mode: SeatGeek pages to read (event, performer or venue links). |
maxItems | integer | 20 | Stop after this many records (0 = no limit). |
maxPages | integer | 0 | Upper bound on pages walked per scope (0 = wide open; Max items is the only cap). |
resumeFromRunId | string | (none) | Paste a previous run ID or dataset ID to continue an interrupted pull. |
incrementalMode | boolean | false | Turn on for recurring monitoring: return only new and changed records. |
stateKey | string | (none) | Name or share an incremental-mode state; auto-derived from the search/link scope if left empty. |
emitUnchanged | boolean | false | Also return (and bill) unchanged records. |
emitExpired | boolean | false | Also return (and bill) records no longer found, once a run has fully scanned the tracked scope. Not counted against Max items. |
mcpConnectors | array | (none) | Optional: send a summary of each record to apps you authorized under Integrations. |
notionParentPageUrl | string | (none) | Notion connector only: page under which item pages are created. |
maxNotifyListings | integer | 50 | Cap on items written to each connector per run. |
proxyConfiguration | object | Apify Proxy | Connection 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).
Is it legal to scrape SeatGeek?
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... |
💬 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.