SeatGeek Scraper | Events, Performers, Venues & Listings avatar

SeatGeek Scraper | Events, Performers, Venues & Listings

Pricing

from $2.20 / 1,000 result written to datasets

Go to Apify Store
SeatGeek Scraper | Events, Performers, Venues & Listings

SeatGeek Scraper | Events, Performers, Venues & Listings

Scrape SeatGeek events, performers, venues and full ticket listings with prices, deal scores, sections and rows. Track price drops with webhook alerts. US & Canada, no API key needed.

Pricing

from $2.20 / 1,000 result written to datasets

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

34

Total users

20

Monthly active users

9.2 hours

Issues response

2 days ago

Last modified

Share

Scrape SeatGeek events, performers, venues, and full ticket listings — prices with and without fees, deal scores, sections and rows — without an API key, proxies, or your own browser stack.

Paste a city, performer, venue, category, or event URL → get clean structured rows in the dataset. Covers US & Canada. A practical SeatGeek API alternative for ticket price monitoring, deal hunting, market research, and event aggregation.

No SeatGeek API key needed. Anti-bot (DataDome), residential egress, and browser sessions are handled by the managed scrape worker — you just run the Actor.

Free Apify-plan users (developer policy): 10 runs / 200 results per run.


Output change: one row per ticket listing

When includeListings: true, every Dataset row is one ticket listing and one billed result. The event's key fields are copied onto every listing row. maxResults is the row budget for each listed URL or event ID. A scalar mode target (one city, performer, venue, event, category, search, or discovery request) counts as one input.

{
"rowType": "listing",
"id": "pVXHDE38Dq8",
"listingId": "pVXHDE38Dq8",
"eventId": "18494503",
"title": "New York Knicks vs. Boston Celtics",
"datetimeUtc": "2026-11-01T00:30:00Z",
"venueName": "Madison Square Garden",
"section": "101",
"row": "12",
"quantity": 2,
"priceWithFees": 214.25,
"dealScore": 82.4,
"url": "https://seatgeek.com/..."
}

Runs without ticket listings return parent rows with rowType: "event" and the event/entity ID in id. Listing rows never contain an embedded listings[] child array.


Features

CapabilityWhat it means for you
Ticket listings as rowsOne Dataset row per listing: section, row, quantity, price, price with fees, deal score/grade, ticket format, seat numbers, e-ticket / ADA / delivery flags, and broker seller marketplace name
Real SeatGeek deal scoresdealScore (0–100) and dealGrade come from SeatGeek's own data, not a derived estimate
Stable cursor deliveryLarge listing sets continue without duplicates through control-plane row plans while respecting each input's row budget and the run charge cap
Section summarysectionSummary[] aggregates per-section min/avg/max price and best deal score
Inventory filtersminDealScore and listingFilters support all-in price, section, purchasable quantity, market, delivery method and sorting. Filtering is local after full acquisition; original counts stay visible
Keyword searchsearch mode hits SeatGeek autosuggest directly — mixed event + performer + venue rows in one call, including the pre-fee lowestSgBasePrice
Seat mapsincludeSeatMap attaches venue/map identities, all sections, row lines, GeoJSON URLs and matching per-seat geometry. General-admission or unmatched seats have explicit status, not invented coordinates
Discovery modePaginated performers, venues and events; taxonomy availability depends on the source. recommendations and performerSections expose the public extra surfaces
US & CanadaVerified in Toronto, Montreal, Vancouver + all major US metros; prices in local currency (USD/CAD)
No API key, no proxiesCredentials, residential egress, and DataDome handling are built in
Venue street / leadsEvery row includes phones, emails, address (street = 门牌), org. SeatGeek publishes the street on list cards; no venue phone/email. hi@seatgeek.com is SeatGeek, not stamped on event rows.
Engine ladderOpen api.seatgeek.com/2 calls for all catalog surfaces (no browser, no proxy) → authenticated in-page listings fetch for seat-level inventory, chosen automatically per target

What you can do with it

1. Collect listing-level price data

In plain English: pick an event → the Actor returns one clean row for each ticket listing, up to maxResults.

You give:

FieldWhat to enter
Modeevent
Event URLThe SeatGeek event page URL
Include listingstrue
Maximum resultsNumber of listing rows to return

Run the same input on your own schedule and compare listing IDs and prices in your downstream system. trackChanges is skipped for listing-row runs because a row budget can represent only part of an event's inventory; partial data must not replace a complete tracking baseline.

Listing-row output and large events

includeListings: true works with events selected through city, performer, venue, category, sports, search and discoverType: events. All listing rows selected from one input share that input's limit. maxPages controls catalog pagination; the inventory endpoint is one complete snapshot per event.

Every listing includes rawFields, preserving all original abbreviated keys, including sparse keys and null values. Readable fields include broker names, SeatGeek price/fees, delivery details, seat features and spatial keys. includeRaw: true also retains complete event/entity objects.

{
"mode": "venue",
"venueSlug": "td-garden",
"maxResults": 2,
"includeListings": true,
"includeSeatMap": true,
"listingFilters": {
"maxPrice": 250,
"quantity": 2,
"sort": "dealScore"
}
}

inventorySourceTotal, inventoryUnfilteredTotal, inventoryTotal, inventoryContractDropped, inventoryComplete and inventoryFiltered distinguish source inventory, validated inventory and selected rows. The control plane requests bounded units and follows the worker's stable nextCursor until each input's maxResults budget or the whole-run charge cap is met.

For stale IDs, optional eventHints supplies the previous title, venueId and datetimeUtc, keyed by old ID. Only after both inventory and metadata return 404 does the worker look for same-venue candidates within one day and title similarity ≥0.85. Ambiguous matches are not substituted. eventResolution identifies candidate matching as probabilistic, not an official redirect.

SeatGeek does not publish venue phone/email fields in this schema. Empty contact arrays are intentional. Unavailable SSE and transaction-only APIs are not inventory sources. Short-run success does not establish 14-day reliability.

2. Find underpriced tickets with deal scores

In plain English: pull an event's full listing inventory → filter to listings with dealScore ≥ 80 → see only the seats SeatGeek itself flags as great deals, with section, row, and all-in price.

You give: mode event, an event URL, minDealScore: 80.

You get back: the filtered listings (e.g. 26 of 258), sectionSummary per section, and unfilteredTotal so you always know the true inventory size.

3. Monitor a whole city or team

In plain English: scrape upcoming events for a city, performer, venue, or category → get dates, venues, price ranges, and ticket counts for your market research or aggregation pipeline.

You give: mode city + chicago (or performer + new-york-yankees, venue + fenway-park, category + mlb-tickets).

You get back (one row per event):

TitleDateVenueLowest priceListings
Yankees vs. Red Sox2026-08-10 19:05Yankee Stadium$45342
...............

4. Discover performers, venues, and event IDs

In plain English: find slugs and IDs for your scraping targets — search "boston red sox" → get the performer slug, popularity, and upcoming event count in about a second.

You give: mode discover, discoverType: performers|venues|taxonomies|events, a query.

You get back: matching performers/venues/taxonomies/events with IDs, slugs, and metadata — ready to feed into the other modes.


More Actors like this

Need data from other sites? Use a specialized Actor when one exists — structured fields, better coverage, lower cost.

General tools

Dedicated site scrapers by category

Jobs & Freelance

E-commerce

Real Estate

Travel & Stays

Social, Ads & Maps

→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.


How to use (no code required)

  1. Click "Try for Free" at the top of this page
  2. Pick a mode: city, performer, venue, category, sports, event, search, or discover
  3. Enter the slug or URL (e.g. city nyc, performer taylor-swift, or a full event URL)
  4. Turn on Include ticket listings to receive one row per listing
  5. Set Maximum results to the rows you need for each URL, ID, or scalar mode target
  6. Click Start — results appear in the Dataset tab

Download your results as CSV, Excel, or JSON. That's it.

maxResults defaults to 70 rows per input. Larger values are collected in parts of 70. Event/entity and ticket-listing rows count together for that input. The whole run stops at your maximum total charge. On the free Apify plan, this Actor is limited to 200 rows per run and 10 runs.

Not sure which slug to use? Run search mode with a keyword (query) — it returns matching events, performers, and venues in one call — or discover mode for a browsable entity list.


What you get back

Every event row includes:

  • Event ID, title, type — e.g. 18239007, Yankees vs. Red Sox, mlb
  • Date/time — local and UTC
  • Venue — name, city, state/country
  • Price stats — lowest / highest / median price, listing count, lowestSgBasePrice (SeatGeek's pre-fee net price)
  • Timing — createdAt, salesEndDatetimeUtc (resale listing cutoff — not an on-sale time), endDatetimeUtc, venueTimezone (IANA)
  • URL — direct SeatGeek event page
  • Venue contact / leads — phones, emails, address (street = venue 门牌/line), geo, person, org, web, leadSource, leadReveal, leadAbsences (see below)

With Include ticket listings, each row is one listing and carries:

  • Identity: rowType: "listing", id, listingId, eventId
  • Ticket details: section, row, seats, quantity, splitQuantities, ticketFormat
  • Price/value: price, priceWithFees, fees, dealScore, dealGrade
  • Marketplace/delivery: seller, market, deliveryMethod, accessibility and entry flags
  • Parent event context: title, dates, performers, venue/address/geo, URL and source fields
  • Source fidelity: rawFields plus inventory totals/completeness copied onto the row

trackChanges is not applied to listing-row runs, because a bounded row budget can contain only part of an event inventory.


Lead / contact fields

Every dataset row includes these keys (empty arrays/objects plus leadAbsences when the site has no value). Samples below are live public values from 2026-08-19 recon — not redacted.

FieldTypeWhat it means on SeatGeek
phones[{value, type, e164?}]本站无. Venue/event JSON has no phone/telephone. Madison Square Garden venue HTML + cmsContent scanned: no box-office number, no tel:, no show-phone control. Always [] with leadAbsences.phones=本站无.
emails[{value, type}]本站无 on venue/event rows. Sitewide JSON-LD Organization.email is hi@seatgeek.com (SeatGeek). That address is not copied onto event rows.
address{street, unit, locality, region, postalCode, country, full}Venue street. unit = 门牌 in the lead schema; SeatGeek stores the building/street in street (venue.address), so unit is null. US sample: 4 Pennsylvania Plaza, New York, NY 10001. Also 226 West 46th Street (Richard Rodgers Theatre). Canada: 888 Yonge Street, Toronto, ON M4W 2J2.
geo{lat, lng}Venue coordinates (supplement to street). MSG 40.7509, -73.9943.
person{name, role}No named box-office agent (本站无). Performer is an org, not a person.
org{name, id?}Venue name + numeric id (Madison Square Garden / 93), or the performer name on discover-performer rows.
web{website, socials[]}Venue/performer SeatGeek URL. socials stays empty: venue.links=[]; footer Facebook/Twitter/Instagram is SeatGeek's.
leadSourceenumsearch (city/category/performer lists), entity (venue / discover-venues), detail (event).
leadRevealenumStreet is already visible in __NEXT_DATA__. No click-to-reveal XHR.
leadAbsencesobjectPer-subfield reason: 本站无 / 闸门锁 / 未验证.

Reveal cost

  • No click-to-reveal XHR for phones or emails. List cards already include the street.
  • enrichDetails (default true) attaches the lead keys from the venue object already in the page JSON. Fetching /venues/{slug}/tickets again does not add a phone (verified on Madison Square Garden).
  • Help/About have no Call-us control. /contact redirects to /help.
  • Turning enrichDetails off still leaves the worker attaching the same keys (the street is not behind a second fetch). Phones remain [] with leadAbsences.

Honest limitations

LeadStatusWhy
Venue street + geoAvailablevenue.address on city/category/venue/performer/event JSON
Venue phone本站无No key, no tel:, no reveal button on venue HTML
Venue email本站无No mailbox; do not stamp hi@seatgeek.com
Named box-office person本站无No agent field
Performer phone / email / own social本站无performer.links=[]; footer social is SeatGeek
Help public phone本站无Help Center has articles, no tel
UK / other TLDs未验证seatgeek.co.uk not opened this session
Listings body schema部分/api/event_listings_v2 path seen; body not stored

Pricing

Pay per run + pay per result. No subscription; Apify platform usage is covered by the developer — you only pay the event charges below. Pricing effective from August 22, 2026.

What triggers a chargePrice
Actor start$0.005 per run
Result written to datasetfrom $0.003 per row (see plan tiers)

Per-result price by Apify plan:

PlanPer 1,000 results
Free / Bronze$3.00
Silver$2.60
Gold$2.20
Platinum$2.00
Diamond$1.60
Volume (Free/Bronze)Estimated cost
100 results~$0.305
1,000 results~$3.005
10,000 results~$30.005

How this compares: other SeatGeek Actors charge $10 per 1,000 events without row-level listings; building your own protected-inventory pipeline means weeks of browser and egress work. This Actor bills only the listing/entity rows it writes.

Failed or blocked pages are not written to the dataset, so you never pay for empty results.


Connect to your tools

Use this Actor from your existing stack — no coding needed:

PlatformHow to connect
Make.comSearch "Apify" → "Run Actor" → Actor ID: lentic_clockss/seatgeek-scraper
n8nAdd Apify node → "Run Actor" action → same Actor ID
ZapierApify integration → "Run Actor" trigger
LangChainApifyActorsTool("lentic_clockss/seatgeek-scraper")
Python / Node.jsApify SDK or direct HTTPS call

API call example

curl "https://api.apify.com/v2/acts/lentic_clockss~seatgeek-scraper/runs" \
-X POST \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode": "event", "eventUrl": "https://seatgeek.com/new-york-yankees-tickets/mlb/2026-08-10-7-05-pm/18239007", "includeListings": true, "maxResults": 3}'

Results come back in JSON via the Apify Dataset API:

GET https://api.apify.com/v2/datasets/{datasetId}/items?format=json

FAQ

Q: Do I need a SeatGeek API key? A: No. Unlike Actors built on the official SeatGeek API (which requires registering for a client ID — and which has no ticket listings), this Actor is batteries-included: credentials, egress, and anti-bot handling are built in.

Q: What is the deal score? A: dealScore (0–100) and dealGrade are SeatGeek's own value ratings for each listing — higher means a better price for that seat relative to the market. Use minDealScore to keep only strong deals.

Q: How is this different from the SeatGeek API? A: The official API returns event metadata but no ticket listings. This Actor gives you resale inventory as individual rows (section, row, all-in prices, deal scores) plus discovery search.

Q: Does it work for Canada? A: Yes. Verified in Toronto, Montreal, and Vancouver; other Canadian city slugs (calgary, edmonton, ottawa, winnipeg) work the same way. Prices come in local currency (currency.code = USD or CAD).

Q: How do I track ticket prices over time? A: Put the Actor on an Apify Schedule and compare listingId plus priceWithFees in your downstream store. Built-in trackChanges is skipped for bounded listing-row runs so partial inventory cannot replace a complete baseline.

Q: Why does an event run take 60–90 seconds with listings? A: SeatGeek protects listing data with DataDome. The Actor loads the event page in an authenticated browser session and captures the listings feed in-page — the credential is earned and spent inside that session. Catalog surfaces (city, performer, venue, category, sports, search, metadata-only runs) answer straight from SeatGeek's open api.seatgeek.com/2 and return in about a second.

Q: What happens when a page is blocked? A: Catalog data comes from the open /2/* API; only seat-level listings need a browser session. If listings cannot be fetched, diagnostics and warnings explain the failure rather than inventing empty listing rows.

Q: Can I get events for a whole city or team? A: Yes — use city, performer, venue, category, or sports mode with maxResults up to 500 and maxPages for pagination. maxResults applies to each listed URL or event ID; scalar modes count as one input. Values above 70 are collected in parts of 70.

Q: What happens if a performer or search has no upcoming events? A: The run succeeds with zero dataset rows — a valid empty answer, not a failure. You are only charged the $0.005 start; with no rows written, no per-result charges apply. Genuine errors (blocked pages, bad input) still fail the run with an ERROR_SUMMARY.

Q: Where do venue addresses and phone numbers come from? A: List cards already include the street (venue.address, e.g. 4 Pennsylvania Plaza). SeatGeek does not publish a venue box-office phone or email on city, venue, or event pages. Rows still include phones/emails keys as empty arrays plus leadAbsences. Platform email hi@seatgeek.com is SeatGeek's, not the venue's.


Input reference

For developers who want full control:

ParameterTypeDefaultDescription
modestringcitycity, performer, venue, event, category, sports, search, or discover
citystringnycCity slug for mode=city — US (nyc, la, chicago, …) and Canada (toronto, montreal, vancouver, …)
cityTabstring—City filter: concerts, sports, theater, festivals, comedy, family, nightlife
performerSlugstring—Performer/team slug for mode=performer, e.g. new-york-yankees
venueSlugstring—Venue slug for mode=venue, e.g. madison-square-garden
eventIdstring—Numeric event ID for mode=event
eventUrlstring—Full event URL for mode=event (ID derived if missing)
categorySlugstring—Category for mode=category/sports, e.g. sports-tickets, mlb-tickets
maxResultsinteger70Dataset rows per listed URL or event ID; scalar modes count as one input (1–500). Values above 70 are collected in parts of 70. All row types count together. The run stops at your maximum total charge; free Apify plan: 200 rows per run and 10 runs.
maxPagesinteger1Max catalog pages to inspect (1–50)
includeListingsbooleanfalseReturn one row per ticket listing; event fields are copied onto every row
includeSeatMapbooleanfalseEvent rows: attach seat map (mapConfigId, GeoJSON/row-lines URLs, sections) via open venue_configs — no browser
enrichDetailsbooleantrueAttach lead keys (street/org). SeatGeek has no venue phone; does not invent numbers
minDealScorenumber—Keep only listings with dealScore ≥ threshold (0–100); unfilteredTotal preserves the true count
trackChangesbooleanfalseReserved for complete parent-inventory snapshots; skipped for listing-row runs
alertWebhookUrlstring—Used only when a complete tracking diff is available
discoverTypestringperformersmode=discover: performers, venues, taxonomies, or events
querystring—mode=search (required): keyword across events/performers/venues. mode=discover: optional filter text
startUrlsarray—Explicit SeatGeek URLs; mode inferred per URL
detailUrlsarray—Event detail URLs (alias of startUrls)
listingIdsarray—Numeric event IDs
workerBaseUrlstring—Override worker origin (advanced)

Full output schema is available in the Dataset tab.


All 77 public Actors from lentic_clockss. Click a name to open the Store detail page.

Jobs & Freelance

Real Estate

E-commerce

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ Browse the full profile: apify.com/lentic_clockss