StubHub Scraper - Events, Ticket Prices & Venues avatar

StubHub Scraper - Events, Ticket Prices & Venues

Pricing

from $2.20 / 1,000 results

Go to Apify Store
StubHub Scraper - Events, Ticket Prices & Venues

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

kane liu

Maintained by Community

Actor stats

1

Bookmarked

26

Total users

9

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

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

FieldDescriptionExample
eventIdEvent identifier159358883
titleEvent nameExample concert
datetimeLocalLocal start time2026-11-20T19:30:00
venueNameVenue nameExample Arena
lowestPriceLowest reported event price109.00
priceCurrencyPrice currencyUSD
urlEvent or entity linkhttps://www.stubhub.com/event/159358883/

Ticket listing rows

FieldDescriptionExample
listingIdListing identifier, when exposed3328712939
sectionSeating sectionFloor A
rowSeating row7
seatRangeAdvertised seat interval, not coordinates{"start": 1, "end": 2}
quantityTickets offered in this listing2
priceReported per-ticket buyer price109.00
inventoryStatusInventory coverage, not proof of a salepartial
inventoryCompleteWhether the returned slice covers the observed inventoryfalse

Performer profile rows

FieldDescriptionExample
performerIdPerformer identifier714235
nameArtist or team nameThe Weeknd
genresGenres shown on the profile["Pop"]

Venue profile rows

FieldDescriptionExample
venuePageIdID from the venue page URL; distinct from venueId137012189
venueCapacityCapacity when published20000
addressStructured venue address{"locality": "London"}

Suggestion rows

FieldDescriptionExample
entityTypeSuggested entity kindperformer
entityIdID to use in a subsequent input714235

Category rows

FieldDescriptionExample
categoryIdCategory identifierReturned category ID
parentTitleParent category nameSports

City rows

FieldDescriptionExample
citySlugPerformer city filter textlondon
cityIdMatching city filter ID4031

Sitemap discovery rows

These rows use kind to identify the linked page; they do not establish current inventory.

FieldDescriptionExample
kindDiscovered page kindevent
eventDateEvent date parsed from the URL, when present2026-11-20

How to scrape StubHub

  1. Open StubHub Scraper in Apify Console.
  2. Fill a target, such as query or eventUrl.
  3. Set maxResults to 3 for a small first run.
  4. Click Start and wait for completion.
  5. 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.

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

FieldWhat to enterDefault
modeA mode above, or automatic selectionauto
queryOne keyword or phraseEmpty; form sample weeknd
startUrlsList of StubHub event or list-page URLsEmpty
detailUrlsList of event URLsEmpty
eventUrl / eventIdOne canonical event link or numeric IDEmpty
listingIdsList of numeric event IDsEmpty
performerId / performerSlugArtist or team identifierEmpty
venueId / venueSlugVenue page identifierEmpty
groupingId / groupingSlugTour or show identifierEmpty
categoryId / categorySlugCategory identifierEmpty
citySlug / cityIdPerformer city filter pairEmpty
city / lat / lonExplore locationNew York City if omitted
hostStorefront domain listed abovestubhub.com
proxyCountryOptional two-letter country code, such as gbEmpty
maxResultsRows per input, 1–50070; form sample 1
maxPagesMaximum list pages, 1–201
maxShowMoreListing pagination effort, 0–205
includeListingsReturn individual ticket rowsfalse
includePerformerProfile / includeVenueProfileAdd the matching profile rowfalse
includeSeatMapAdd available section/row geometryfalse
enrichDetailsFill available event time and venue addresstrue
venueCompleteExpand venue event coveragefalse
venueUnionMaxPerformers / venueUnionMaxDetailChecksExpansion limits12 / 24
trackChangesCompare complete event inventory observationsfalse
alertWebhookUrlOptional change-alert destinationEmpty
sitemapChildLimitChild sitemaps to examine, 1–51No explicit cap
sitemapKindsPage kinds, such as event or performerAll 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 planPrice per rowPrice 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 ApifyClient
client = 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

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 inventoryStatus and inventoryComplete; hasActiveListings alone 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.

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.