SeatGeek Scraper | Events, Performers, Venues & Listings
Pricing
from $2.20 / 1,000 result written to datasets
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
Maintained by CommunityActor stats
1
Bookmarked
34
Total users
20
Monthly active users
9.2 hours
Issues response
2 days ago
Last modified
Categories
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
| Capability | What it means for you |
|---|---|
| Ticket listings as rows | One 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 scores | dealScore (0–100) and dealGrade come from SeatGeek's own data, not a derived estimate |
| Stable cursor delivery | Large listing sets continue without duplicates through control-plane row plans while respecting each input's row budget and the run charge cap |
| Section summary | sectionSummary[] aggregates per-section min/avg/max price and best deal score |
| Inventory filters | minDealScore 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 search | search mode hits SeatGeek autosuggest directly — mixed event + performer + venue rows in one call, including the pre-fee lowestSgBasePrice |
| Seat maps | includeSeatMap 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 mode | Paginated performers, venues and events; taxonomy availability depends on the source. recommendations and performerSections expose the public extra surfaces |
| US & Canada | Verified in Toronto, Montreal, Vancouver + all major US metros; prices in local currency (USD/CAD) |
| No API key, no proxies | Credentials, residential egress, and DataDome handling are built in |
| Venue street / leads | Every 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 ladder | Open 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:
| Field | What to enter |
|---|---|
| Mode | event |
| Event URL | The SeatGeek event page URL |
| Include listings | true |
| Maximum results | Number 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):
| Title | Date | Venue | Lowest price | Listings |
|---|---|---|---|---|
| Yankees vs. Red Sox | 2026-08-10 19:05 | Yankee Stadium | $45 | 342 |
| ... | ... | ... | ... | ... |
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
- Stealth Web Scraper — Cloudflare-protected pages, any URL list
- Email Risk Validator
- Phone Number Intelligence
Dedicated site scrapers by category
Jobs & Freelance
E-commerce
Real Estate
Travel & Stays
Social, Ads & Maps
- YouTube Research Scraper
- TikTok Scraper
- Reddit Scraper
- Facebook Ad Library Scraper
- Google Maps Scraper
→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.
How to use (no code required)
- Click "Try for Free" at the top of this page
- Pick a mode:
city,performer,venue,category,sports,event,search, ordiscover - Enter the slug or URL (e.g. city
nyc, performertaylor-swift, or a full event URL) - Turn on Include ticket listings to receive one row per listing
- Set Maximum results to the rows you need for each URL, ID, or scalar mode target
- 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:
rawFieldsplus 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.
| Field | Type | What 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. |
leadSource | enum | search (city/category/performer lists), entity (venue / discover-venues), detail (event). |
leadReveal | enum | Street is already visible in __NEXT_DATA__. No click-to-reveal XHR. |
leadAbsences | object | Per-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}/ticketsagain does not add a phone (verified on Madison Square Garden).- Help/About have no Call-us control.
/contactredirects to/help. - Turning
enrichDetailsoff still leaves the worker attaching the same keys (the street is not behind a second fetch). Phones remain[]withleadAbsences.
Honest limitations
| Lead | Status | Why |
|---|---|---|
| Venue street + geo | Available | venue.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 charge | Price |
|---|---|
| Actor start | $0.005 per run |
| Result written to dataset | from $0.003 per row (see plan tiers) |
Per-result price by Apify plan:
| Plan | Per 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:
| Platform | How to connect |
|---|---|
| Make.com | Search "Apify" → "Run Actor" → Actor ID: lentic_clockss/seatgeek-scraper |
| n8n | Add Apify node → "Run Actor" action → same Actor ID |
| Zapier | Apify integration → "Run Actor" trigger |
| LangChain | ApifyActorsTool("lentic_clockss/seatgeek-scraper") |
| Python / Node.js | Apify 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:
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | city | city, performer, venue, event, category, sports, search, or discover |
city | string | nyc | City slug for mode=city — US (nyc, la, chicago, …) and Canada (toronto, montreal, vancouver, …) |
cityTab | string | — | City filter: concerts, sports, theater, festivals, comedy, family, nightlife |
performerSlug | string | — | Performer/team slug for mode=performer, e.g. new-york-yankees |
venueSlug | string | — | Venue slug for mode=venue, e.g. madison-square-garden |
eventId | string | — | Numeric event ID for mode=event |
eventUrl | string | — | Full event URL for mode=event (ID derived if missing) |
categorySlug | string | — | Category for mode=category/sports, e.g. sports-tickets, mlb-tickets |
maxResults | integer | 70 | Dataset 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. |
maxPages | integer | 1 | Max catalog pages to inspect (1–50) |
includeListings | boolean | false | Return one row per ticket listing; event fields are copied onto every row |
includeSeatMap | boolean | false | Event rows: attach seat map (mapConfigId, GeoJSON/row-lines URLs, sections) via open venue_configs — no browser |
enrichDetails | boolean | true | Attach lead keys (street/org). SeatGeek has no venue phone; does not invent numbers |
minDealScore | number | — | Keep only listings with dealScore ≥ threshold (0–100); unfilteredTotal preserves the true count |
trackChanges | boolean | false | Reserved for complete parent-inventory snapshots; skipped for listing-row runs |
alertWebhookUrl | string | — | Used only when a complete tracking diff is available |
discoverType | string | performers | mode=discover: performers, venues, taxonomies, or events |
query | string | — | mode=search (required): keyword across events/performers/venues. mode=discover: optional filter text |
startUrls | array | — | Explicit SeatGeek URLs; mode inferred per URL |
detailUrls | array | — | Event detail URLs (alias of startUrls) |
listingIds | array | — | Numeric event IDs |
workerBaseUrl | string | — | Override worker origin (advanced) |
Full output schema is available in the Dataset tab.
Related Actors
All 77 public Actors from lentic_clockss. Click a name to open the Store detail page.
Jobs & Freelance
- LinkedIn Jobs Scraper
- Bayt Jobs Scraper
- Fiverr Gigs Scraper
- Freelancer.com Scraper
- Glassdoor Scraper
- Himalayas Jobs Scraper
- Indeed Jobs Scraper
- Jobicy Remote Jobs Scraper
- RemoteOK Jobs Scraper
- SEEK Jobs Scraper
- Upwork Jobs Scraper
Real Estate
- Zillow & Zumper Scraper
- Realtor.com Scraper
- 99.co Scraper
- Realtor.com Agents Scraper
- Apartments.com Rental Scraper
- Bayut Scraper
- Craigslist Housing Scraper
- Daft.ie Scraper
- Dot Property Scraper
- FINN.no Scraper
- Funda Scraper
- Hepsiemlak Scraper
- Idealista Scraper
- Immobiliare.it Scraper
- ImmoScout24 Scraper
- Naver Land Scraper
- OpenSooq Scraper
- Otodom Scraper
- Property Finder Scraper
- PropertyGuru Scraper
- realestate.com.au Scraper
- Realtor.ca Scraper
- Rightmove Scraper
- SeLoger Scraper
- SUUMO Scraper
- Zillow Group Scraper
E-commerce
- Shopee Search Scraper
- E-commerce Scraper
- 1688 Global Product Search Scraper
- Allegro Scraper
- Amazon Search Scraper
- ASOS Product Scraper
- Cdiscount Product Scraper
- Costco Product Scraper
- Coupang Product Scraper
- Etsy Scraper
- Lazada Scraper
- MercadoLibre Scraper
- Mercari Japan Scraper
- Rakuten Japan Scraper
- SHEIN Product Scraper
- Target Product Scraper
- Temu Product Scraper
- Walmart Product Scraper
Travel & Stays
- Booking.com & Airbnb Scraper
- Agoda Scraper
- Airbnb Listings Scraper
- Booking.com Hotels Scraper
- Despegar Scraper
- Expedia Scraper
- Traveloka Scraper
- Travelstart Flights Scraper
- Trip.com Scraper
- TripAdvisor Scraper
Social & Content
Ads Intelligence
Local & Maps
General Tools
→ Browse the full profile: apify.com/lentic_clockss