
TikTok Shop Scraper
scrape.ly/store/shelfbright/tiktok-shop-scraperE-commerceSocial media
1 monthly user

Scrape StubHub ticket listings (section, row, quantity, price with and without fees, delivery, seller notes, deal score) and events from performer, venue and search pages (date, venue, lowest price, listing count). No login.
Scrape live ticket listings from any StubHub event: section, row, seats, quantity, the all-in price and the price without fees, delivery method, seller notes and StubHub's deal score. Feed it performer, team, venue or search pages and it returns the upcoming events with their date, venue, lowest price and number of listings. No login, no browser, export to JSON, CSV or Excel.
| Field | What it does |
|---|---|
startUrls | StubHub URLs. Event pages give listings; performer, team, grouping, venue and search pages give events. |
searchQueries | Keywords (artist, team, show, venue). Each one returns matching events. |
maxListingsPerEvent | Listings saved per event (default 20). |
maxEvents | Events saved per performer, venue, grouping or keyword input (default 20). |
includeListings | Also scrape the listings of every event found. |
dateFrom / dateTo | Keep only events in this date range. |
quantity | Only listings that can sell this many tickets together (0 = any). |
sortListingsBy | Price low to high (default), high to low, best value, best seats or recommended. |
currency | USD by default; EUR, GBP, CAD, AUD and more. |
includePriceWithoutFees | Adds priceWithoutFees (on by default). |
{
"startUrls": [
"https://www.stubhub.com/celine-dion-nanterre-tickets-5-29-2027/event/161266292/",
"https://www.stubhub.com/madison-square-garden-tickets/venue/1282"
],
"searchQueries": ["taylor swift"],
"maxListingsPerEvent": 50,
"maxEvents": 20,
"currency": "USD"
}
Listing rows ("type": "listing"):
| Field | Description |
|---|---|
listingId, eventId | StubHub IDs |
eventName, eventDateLocal, venueName, venueCity | The event |
section, zone, row, seats | Where the seats are |
quantity, splits | Tickets in the listing and the quantities you can buy |
price, priceWithoutFees, currency | Price per ticket with and without StubHub's estimated fees |
delivery | Ticket type, for example mobile transfer or e-ticket |
notes, noteDetails | Seller and venue notes (aisle seat, clear view, under-18 rules...) |
dealScore, starRating, seatQualityScore, tags | StubHub's value signals |
listedAt, listingUrl | When it was listed and a direct link |
Event rows ("type": "event"): eventId, name, url, dateUtc, dateLocal, venueName, venueCity, venueState, venueCountry, minPrice, maxPrice, currency, listingCount, hasActiveListings, onSaleDate, badges.
{
"type": "listing",
"listingId": 13608673785,
"eventId": 160379577,
"eventName": "Always Celine - Celine Dion Tribute",
"eventDateLocal": "2026-10-18T19:00:00-04:00",
"venueName": "Greg Rowles Legacy Theatre",
"venueCity": "North Myrtle Beach",
"section": "Section B",
"zone": "Sections",
"row": "E",
"seats": null,
"quantity": 2,
"splits": [1, 2],
"price": 73.63,
"priceWithoutFees": 56.7,
"currency": "USD",
"delivery": "Mobile Transfer ticket",
"notes": ["Clear view"],
"dealScore": 10,
"starRating": 5,
"tags": ["Cheapest", "Amazing Value"],
"listedAt": "2026-08-08T02:55:34.4270000Z",
"listingUrl": "https://www.stubhub.com/celine-dion-tribute-north-myrtle-beach-tickets-10-18-2026/event/160379577/?listingId=13608673785"
}
{
"type": "event",
"eventId": 160334468,
"name": "Harry Styles",
"url": "https://www.stubhub.com/harry-styles-new-york-tickets-10-17-2026/event/160334468/",
"dateLocal": "2026-10-17T20:00:00-04:00",
"venueName": "Madison Square Garden",
"venueLocation": "New York, NY, USA",
"minPrice": 265.15,
"maxPrice": 11694.74,
"currency": "USD",
"listingCount": 698
}
Pay per result: $8.00 per 1,000 ticket listings and $4.00 per 1,000 events, plus a small amount of platform usage (compute and proxy traffic). Example: 1,000 listings cost about $8 plus a few cents of usage. Rows that fail are never charged, and the run stops cleanly at your spending limit.
Is it legal to scrape StubHub? The actor only reads public pages that anyone can open without an account. Check StubHub's terms and your local law for how you use the data.
Do I need a StubHub account or my own proxy? No. It needs no login, and US residential proxies are included by default.
How many listings can I get? All listings StubHub shows for an event, up to your limit. Big shows can have thousands.
Why is the price different from what I see? StubHub shows prices in your local currency and with estimated fees. Pick the currency in the input; price includes the estimated fees, priceWithoutFees does not. Final checkout fees can still differ slightly.
Why is a field empty? Sellers don't always give seat numbers or face value, and some events have no listings yet.
Can I schedule it or use the API? Yes. Schedule runs to track prices over time, and start runs or read results over the REST API.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
startUrlsarrayOptionalStubHub URLs
Event URLs return the event's ticket listings (section, row, quantity, price with and without fees, delivery, seller notes). Performer, team, grouping, venue and search URLs return their upcoming events (date, venue, lowest price, listing count). Bare event IDs work too.
searchQueriesarrayOptionalSearch keywords
Artist, team, show or venue names. Each keyword returns matching upcoming events, like StubHub's search box.
maxListingsPerEventintegerOptionaldefault 20Max listings per event
How many ticket listings to save from each event.
maxEventsintegerOptionaldefault 20Max events per URL or keyword
How many events to save from each performer, venue, grouping or search input.
includeListingsbooleanOptionaldefault falseAlso scrape the listings of every event found
For performer, venue, grouping and search inputs: also save the ticket listings of each event found (up to Max listings per event).
includeEventRowsbooleanOptionaldefault trueKeep the event rows when scraping their listings
With the option above on: also save one row per event. Turn off to get listing rows only.
dateFromstringOptionalEvents from
Only events on or after this date (event's local date, YYYY-MM-DD).
dateTostringOptionalEvents until
Only events on or before this date (YYYY-MM-DD).
quantityintegerOptionaldefault 0Number of tickets
Only listings that can sell this many tickets together. 0 = any quantity.
includeParkingbooleanOptionaldefault falseInclude parking passes
Parking-pass events are skipped unless this is on.
sortListingsByenumOptionaldefault "price_asc"Listing order
Which listings come first (matters when you cap the listings per event).
currencyenumOptionaldefault "USD"Currency
Currency for all prices.
includePriceWithoutFeesbooleanOptionaldefault trueAdd the price without fees
Fetch every listing twice (with and without StubHub's estimated fees) and add priceWithoutFees next to the all-in price.
includeEventPricesbooleanOptionaldefault trueAdd lowest price and listing count to events
One extra small request per event for its lowest and highest price and the number of listings.
maxConcurrencyintegerOptionaldefault 8Max concurrency
Requests at once.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy configuration
US residential addresses are used by default. StubHub's bot check is cleared automatically by the built-in solver.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| type | string | |
| listingId | number | null | |
| eventId | number | null | |
| price | number | null | |
| priceWithoutFees | number | null | |
| quantity | number | null | |
| minPrice | number | null | |
| listingCount | number | null | |
| name | string | null | |
| eventName | string | null | |
| url | string | null | |
| eventUrl | string | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Event | One StubHub event saved (date, venue, lowest and highest price, listing count). Failed rows are free. | $0.004 |
| Ticket listing | One StubHub ticket listing saved (section, row, quantity, prices, delivery, notes). Failed rows are free. | $0.008 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('shelfbright/stubhub-scraper').call({
"startUrls": [
"https://www.stubhub.com/celine-dion-nanterre-tickets-5-29-2027/event/161266292/"
],
"maxListingsPerEvent": 20,
"maxEvents": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
],
"scrapelyProxyCountry": "US"
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run shelfbright/stubhub-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=shelfbright/stubhub-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Cheapest ticket listings for up to 5 Hamilton events.
Event info and prices for one event URL in EUR.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.