StubHub Scraper - Events, Ticket Prices & Venues
Pricing
from $2.20 / 1,000 results
StubHub Scraper - Events, Ticket Prices & Venues
Collect public StubHub events, ticket prices, performer profiles and venue details. Search the main storefront or supply regional event URLs. Pay per delivered row plus a start fee.
Pricing
from $2.20 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
1
Bookmarked
26
Total users
9
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
StubHub Scraper
Export StubHub events, ticket prices, venues and performers as structured rows for event research and price monitoring.
- Event dates, venues, prices and availability information.
- Individual ticket listings with section, row, quantity and currency when available.
- Performer and venue profiles, category IDs and city filters.
- Public catalog URLs for discovering events.
- Rows cost $3.00 per 1,000 on the Free plan, plus a start fee.
What does StubHub Scraper do?
StubHub Scraper collects public event and ticket information for concerts, sports, theater, comedy and festivals. It is an unofficial Actor, not affiliated with StubHub, and does not buy or reserve tickets.
- Find events: search by keyword, performer, venue, tour, category or location.
- Inspect tickets: collect event details or individual listing rows.
- Find IDs: use autocomplete, categories and performer city presets.
- Discover URLs: read the public sitemap; discovery rows are not price quotes.
- Optional rows: performer profiles, venue profiles and ticket listings are off by default. Each delivered row is billed at the same rate and shares its input's row limit.
The default host is stubhub.com. Other selectable hosts are stubhub.co.uk, stubhub.ie, stubhub.de, stubhub.fr, stubhub.es, stubhub.nl and stubhub.com.au. Their coverage is not guaranteed across modes. Keep regional event URLs on their original host; event IDs are not interchangeable between storefronts.
What data can you extract from StubHub?
Fields vary by page. Use rowType to distinguish events, listings, profiles and helper rows.
Event rows
| Field | Description | Example |
|---|---|---|
eventId | Event identifier | 159358883 |
title | Event name | Example concert |
datetimeLocal | Local start time | 2026-11-20T19:30:00 |
venueName | Venue name | Example Arena |
lowestPrice | Lowest reported event price | 109.00 |
priceCurrency | Price currency | USD |
url | Event or entity link | https://www.stubhub.com/event/159358883/ |
Ticket listing rows
| Field | Description | Example |
|---|---|---|
listingId | Listing identifier, when exposed | 3328712939 |
section | Seating section | Floor A |
row | Seating row | 7 |
seatRange | Advertised seat interval, not coordinates | {"start": 1, "end": 2} |
quantity | Tickets offered in this listing | 2 |
price | Reported per-ticket buyer price | 109.00 |
inventoryStatus | Inventory coverage, not proof of a sale | partial |
inventoryComplete | Whether the returned slice covers the observed inventory | false |
Performer profile rows
| Field | Description | Example |
|---|---|---|
performerId | Performer identifier | 714235 |
name | Artist or team name | The Weeknd |
genres | Genres shown on the profile | ["Pop"] |
Venue profile rows
| Field | Description | Example |
|---|---|---|
venuePageId | ID from the venue page URL; distinct from venueId | 137012189 |
venueCapacity | Capacity when published | 20000 |
address | Structured venue address | {"locality": "London"} |
Suggestion rows
| Field | Description | Example |
|---|---|---|
entityType | Suggested entity kind | performer |
entityId | ID to use in a subsequent input | 714235 |
Category rows
| Field | Description | Example |
|---|---|---|
categoryId | Category identifier | Returned category ID |
parentTitle | Parent category name | Sports |
City rows
| Field | Description | Example |
|---|---|---|
citySlug | Performer city filter text | london |
cityId | Matching city filter ID | 4031 |
Sitemap discovery rows
These rows use kind to identify the linked page; they do not establish current inventory.
| Field | Description | Example |
|---|---|---|
kind | Discovered page kind | event |
eventDate | Event date parsed from the URL, when present | 2026-11-20 |
How to scrape StubHub
- Open StubHub Scraper in Apify Console.
- Fill a target, such as
queryoreventUrl. - Set
maxResultsto3for a small first run. - Click Start and wait for completion.
- Download the dataset or read it through the API.
Empty input starts an example search for weeknd, limited to 1 row. It is still a billed run. With mode set to auto, one target selects the mode. Explicit explore, categories and sitemap inputs need no target and do not become example searches.
Search
Fill query with an artist, team or event name. Prefer English search terms; automatic translation is not documented for this Actor.
Performer
Use performerId or performerSlug. Add citySlug and cityId from cities to restrict the events. includePerformerProfile adds a billed profile row.
Event
Paste the canonical eventUrl, or use eventId, detailUrls or listingIds. Despite its name, listingIds accepts event IDs, not ticket-listing IDs. Enable includeListings for individual ticket rows instead of an embedded listing array.
Venue
Copy the ID after /venue/ into venueId, or supply venueSlug. includeVenueProfile adds a billed profile row. venueComplete expands the search but does not guarantee all events.
Grouping
Use groupingId or groupingSlug for a tour or show grouping.
Category
Use categoryId from categories. A categorySlug without an ID falls back to keyword search.
Explore
Set city to a preset such as london, or supply both lat and lon. Without a recognized location, the location defaults to New York City.
Suggest
Choose suggest explicitly and supply query to find entity IDs rather than event rows.
Categories
Choose categories explicitly for category rows and their parent categories.
Cities
Choose cities with a performer ID or slug to obtain that performer's city filters.
Sitemap
Choose sitemap for discovery URLs. Use sitemapChildLimit and sitemapKinds to narrow discovery, then pass selected event URLs to detailUrls in another run.
What to fill in
| Field | What to enter | Default |
|---|---|---|
mode | A mode above, or automatic selection | auto |
query | One keyword or phrase | Empty; form sample weeknd |
startUrls | List of StubHub event or list-page URLs | Empty |
detailUrls | List of event URLs | Empty |
eventUrl / eventId | One canonical event link or numeric ID | Empty |
listingIds | List of numeric event IDs | Empty |
performerId / performerSlug | Artist or team identifier | Empty |
venueId / venueSlug | Venue page identifier | Empty |
groupingId / groupingSlug | Tour or show identifier | Empty |
categoryId / categorySlug | Category identifier | Empty |
citySlug / cityId | Performer city filter pair | Empty |
city / lat / lon | Explore location | New York City if omitted |
host | Storefront domain listed above | stubhub.com |
proxyCountry | Optional two-letter country code, such as gb | Empty |
maxResults | Rows per input, 1–500 | 70; form sample 1 |
maxPages | Maximum list pages, 1–20 | 1 |
maxShowMore | Listing pagination effort, 0–20 | 5 |
includeListings | Return individual ticket rows | false |
includePerformerProfile / includeVenueProfile | Add the matching profile row | false |
includeSeatMap | Add available section/row geometry | false |
enrichDetails | Fill available event time and venue address | true |
venueComplete | Expand venue event coverage | false |
venueUnionMaxPerformers / venueUnionMaxDetailChecks | Expansion limits | 12 / 24 |
trackChanges | Compare complete event inventory observations | false |
alertWebhookUrl | Optional change-alert destination | Empty |
sitemapChildLimit | Child sitemaps to examine, 1–51 | No explicit cap |
sitemapKinds | Page kinds, such as event or performer | All kinds |
Auto:
{"query": "lakers", "maxResults": 3}
Search:
{"mode": "search", "query": "hamilton", "maxResults": 3}
Performer:
{"mode": "performer", "performerId": "714235", "maxResults": 3}
Event:
{"mode": "event", "eventId": "159358883", "includeListings": true, "maxResults": 3}
Venue:
{"mode": "venue", "venueId": "137012189", "maxResults": 3}
Grouping:
{"mode": "grouping", "groupingId": "130466796", "maxResults": 3}
Category:
{"mode": "category", "categorySlug": "concerts", "maxResults": 3}
Explore:
{"mode": "explore", "city": "london", "maxResults": 3}
Suggest:
{"mode": "suggest", "query": "weeknd", "maxResults": 3}
Categories:
{"mode": "categories", "maxResults": 3}
Cities:
{"mode": "cities", "performerId": "714235", "maxResults": 3}
Sitemap:
{"mode": "sitemap", "sitemapKinds": ["event"], "sitemapChildLimit": 1, "maxResults": 3}
maxItems and limit are aliases for maxResults; keyword maps to query, and urls maps to startUrls. Close misspellings can be corrected; other unknown fields are ignored with a note. Invalid host or collection-option values are dropped with a warning.
When targets conflict in automatic selection, priority is start URLs, detail URLs, event URL, event IDs, performer, venue, grouping, category, query, then city. Non-event startUrls select list collection. Use one target type to avoid ambiguity.
Input validation errors begin with INVALID_INPUT: and explain the expected field format before rows are charged; the start fee can still apply. The INPUT_REPORT record in the default key-value store records corrections, ignored fields and mode selection.
Output example
Illustrative listing row, not a current ticket offer:
{"rowType": "listing","id": "3328712939","listingId": "3328712939","eventId": "159358883","eventTitle": "Example concert","datetimeLocal": "2026-11-20T19:30:00","venueName": "Example Arena","section": "Floor A","row": "7","quantity": 2,"price": 109.0,"priceCurrency": "USD","inventoryStatus": "partial","inventoryComplete": false}
Export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table. RUN_SUMMARY contains counts, warnings and whether results were partial.
Why use this StubHub scraper?
- Pay for delivered rows: event, listing and helper rows use the same pricing.
- Keep usable partial results: when collection returns valid partial rows, the Actor delivers them and records incompleteness; a forced stop before delivery can still leave no rows.
- Understand input errors: validation messages explain the expected format.
- Batch URLs or IDs: use the supported array fields for several inputs.
- No proxy setup: you do not need to set up proxies.
How much does it cost to scrape StubHub?
Pay-per-event pricing includes platform usage. The start event is $0.005 per GB of Actor memory, with a minimum of one event. At the default 256 MB, the start fee is $0.005, plus delivered rows:
| Apify plan | Price per row | Price per 1,000 rows |
|---|---|---|
| Free | $0.003 | $3.00 |
| Starter | $0.003 | $3.00 |
| Scale | $0.0026 | $2.60 |
| Business | $0.0022 | $2.20 |
| Platinum | $0.002 | $2.00 |
| Diamond | $0.0016 | $1.60 |
maxResults applies to each input, defaults to 70 and accepts up to 500; larger requests are collected in parts of up to 70. Profiles and listings share that input's limit. Free Apify plans are limited to 200 rows per run and 10 runs of this Actor, a limit set by the publisher.
The whole run stops at Maximum cost per run (maxTotalChargeUsd in the API). Example: three event URLs returning five listing rows each give 15 rows. On the Free plan at 256 MB, that is 15 × $0.003 + $0.005 = $0.050.
What happens when the run timeout is too short
A run can pause with the status message "Queued on the collection backend; this run will resume automatically when results are ready (about N s)." It temporarily shows ABORTED. When results are ready, the same run resumes, reports "Resumed: delivering N rows.", writes to the same dataset and finishes as SUCCEEDED. Previously delivered rows are not delivered or charged twice.
This can happen at most three times per run. Keep the default timeout of 3600 seconds to reduce interruptions. The synchronous endpoints run-sync and run-sync-get-dataset-items wait at most 300 seconds and may return an empty dataset while the run is paused. For longer requests, start asynchronously and read the dataset after SUCCEEDED, or use a succeeded-event webhook.
Use with AI agents and the API
Apify MCP server
Add this remote server in Claude, ChatGPT, Cursor, VS Code or another compatible MCP client:
https://mcp.apify.com?tools=lentic_clockss/stubhub-scraper
Sign in with Apify through OAuth, or send Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool starts a run and returns run and dataset IDs; read the rows with get-dataset-items.
Without remote MCP support, run npx @apify/actors-mcp-server --tools lentic_clockss/stubhub-scraper with APIFY_TOKEN set. Example prompt: "Find three Lakers events on StubHub and return their dates, venues and lowest prices."
Apify API
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("lentic_clockss/stubhub-scraper").call(run_input={"query": "lakers", "maxResults": 3})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('lentic_clockss/stubhub-scraper').call({query: 'lakers', maxResults: 3,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
For asynchronous HTTP, send the input as JSON to POST https://api.apify.com/v2/acts/lentic_clockss~stubhub-scraper/runs with an Authorization: Bearer <YOUR_APIFY_TOKEN> header. After completion, read GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json.
Integrations
Use the Actor's Integrations tab to connect Google Sheets, Make, Zapier, n8n, Slack, Airtable or your webhook. Use Apify Schedules for repeat runs.
FAQ
Is it legal to scrape StubHub?
This Actor collects public data. You are responsible for checking applicable terms and data-protection law; processing personal data requires a lawful basis. Public availability is not permission for every use.
Why did my run end as ABORTED?
The automatic pause described above can show ABORTED temporarily. Check the status message: a manually aborted run or another failure is not necessarily scheduled to resume.
How many results can I get?
Request up to 500 rows per input, subject to available data, page limits, your maximum charge and the Free-plan limits above. Increasing maxResults does not guarantee that many rows exist.
Why are some fields empty?
StubHub does not expose every field on every page. Venue capacity, precise seats and performer details may be missing. Venue phone numbers and email addresses should not be expected.
Can I track price changes?
Use trackChanges with event listings. Only complete inventory observations update snapshots; partial observations are skipped. alertWebhookUrl receives change alerts after the first snapshot. Removed listings do not prove completed sales.
Can I use a UK event ID on stubhub.com?
No. Keep regional URLs on their original host. Matching numbers can refer to different events across storefronts; a selectable host does not guarantee every mode works there.
Are individual seats and maps guaranteed?
No. Seat numbers and ranges depend on the listing. includeSeatMap returns available section/row geometry, not individual-seat coordinates or ticket availability.
Why do currencies differ?
Prices depend on the storefront and displayed offer. Read priceCurrency on each row; do not compare amounts in different currencies as though they were equivalent.
Limitations
- Missing inventory is not sold-out evidence. Check
inventoryStatusandinventoryComplete;hasActiveListingsalone is unreliable. - Small row limits can make inventory incomplete and prevent tracking updates.
- Some listings lack authoritative IDs; fallback identities can change with displayed labels.
- Sitemap rows can describe old URLs and do not confirm current prices or availability.
- Regional coverage, complete tours and complete venue calendars are not guaranteed.
- Examples show input shapes, not verified current availability. Replace event links with current targets.
Related scrapers
More event and ticketing scrapers from the same publisher:
Browse all of our scrapers at apify.com/lentic_clockss.
Support
Found a problem or need another field? Open an issue in the Issues tab of this Actor's page and include the run ID and the input you used.