Skip to content
PyronetsPyronets
Ticket & Event Data

Ticket data extraction, at the depth the market actually trades at

Every listing on every event, across TickPick, StubHub, Ticketmaster and SeatGeek. Section, row, quantity, fees and the price a buyer really pays, collected on a schedule and delivered in your schema.

Already running

Read off a live pipeline's transfer manifest, not estimated.

1.2B+
Listing records
400+ daily files
3M+
On an ordinary day
30,000+ events
60M+
NFL season week
7 days
5M+
World Cup window
5 weeks
See the record
Why this data is difficult

Ticket prices are not a number, they are a distribution that changes hourly

A single popular event carries thousands of live listings, each with its own section, row, quantity, delivery method and fee treatment. The cheapest seat moves several times a day. Sellers reprice against each other continuously. Nothing about that is captured by an average, and none of it can be reconstructed after the fact, because listing history is not published anywhere. If it was not collected that day, it does not exist.

  • The advertised price and the paid price differ, by a margin that varies per site and per listing
  • The same physical seat can appear on three marketplaces at three prices
  • Marketplaces title the same event differently, so matching on name silently mismatches events
  • Listing pages paginate deeply, and stopping early biases every figure toward the cheap end
  • On-sale windows produce most of the interesting movement and last minutes, not days
What we do about it

Full depth, every event, on a schedule, with the fees kept separate

We take the complete listing table rather than the first page, keep every price component in its own column instead of blending them, and match events across marketplaces on venue and start time rather than title. Each run is validated against the agreed schema before it leaves us, and arrives with a manifest that says what should be there and what is.

Full depth
The entire listing table per event, not a sample of it
Separated fees
Display price, each fee component and the all-in figure, individually
Real joins
Event, performer and venue IDs that survive a title change
Kept history
Stable listing IDs, so one seat can be followed to sale
Verified transfer
A manifest per delivery, checked byte for byte
Across marketplaces

The same seat, listed in four places, at four prices

This is the question most people are really asking when they ask for ticket data. It sounds like a lookup and it is not. Two marketplaces will name the same concert differently, apply fees at different points, and describe the same section with different labels. Answering it properly means resolving the event, resolving the seat, and reconstructing the price a buyer would actually be charged on each site.

We match events on venue and local start time, normalise section and row against the venue's own map, and keep every fee component separate so the all-in comparison is auditable rather than asserted.

one event, resolved across four sources
marketplacelistedfeesall_in
tickpick$141.00included$141.00
stubhub$118.00$31.40$149.40
seatgeek$124.00$28.15$152.15
ticketmaster$135.00$26.80$161.80
Illustrative, to show the shape of the problem. The cheapest listed price and the cheapest actual price are frequently not the same row.
The delivery record

What this pipeline has actually moved

This is a live event-pricing pipeline on TickPick, running continuously. Not a projection, and not a capability estimate. Figures are rounded and kept current rather than quoted to the digit, because the pipeline adds to them every morning. The same infrastructure and the same schema carry the other three marketplaces.

1.2B+
listing records delivered
400+
daily files, one per collection day
14M+
event records across the run
0
failed transfers, start to date
every_delivery.manifest
files_expected   ✓ matched
files_verified   ✓ matched
bytes_verified   ✓ byte for byte
checksums        ✓ all pass
errors           [ ]
Every delivery ships with one of these. If a file arrives a byte short, the manifest says so before you find out the hard way.
Shape of a run
An ordinary day
3M+ listings across 30,000+ events
The busiest day
6M+ listings in a single delivery
NFL season week
60M+ rows over 7 days
World Cup window
5M+ rows over 5 weeks
Super Bowl run-up
1M+ rows over 2 weeks

Sample data is available on request

What is above is a summary. Ask and we will show you the rest directly, on a call or a screen share: the run history, the manifests, and a working sample built from your own target events in the schema you want it in. That sample is yours to keep and to test against.

What you will never be shown is another client's delivered dataset, and that is the same undertaking we make to you about yours.

What arrives

The schema, including the awkward parts

Two joined tables. Several price fields are nullable, because not every marketplace exposes a fee breakdown before checkout, and a column full of estimates is worse than an empty one. This is the working schema, not a cleaned-up version of it.

listings17 fields, one row per listing per run
  • marketplacestring

    Which site the listing came from

  • event_idstring

    Joins to the event table

  • listing_idstring

    Stable per listing, so you can track one seat over time

  • section_namestring

    Section as the site labels it

  • row_namestring

    Row within the section

  • seat_numbersstring

    Specific seats where the listing exposes them

  • ticket_quantityint

    How many seats the listing covers

  • value_scorefloat

    The marketplace's own value rating, where it has one

  • listing_notesstring

    Delivery method, restrictions, obstructed view

  • display_price_pre_checkoutdecimal

    The price shown on the listing page

  • all_in_price_pre_checkoutdecimal

    Display price with fees folded in, where shown up front

  • display_price_checkoutdecimal

    Price carried through to the checkout screen

  • buyer_fee_checkoutdecimal

    Service fee, itemised

  • other_fee_checkoutdecimal

    Delivery and processing charges

  • sales_tax_checkoutdecimal

    Tax, where it is broken out

  • all_in_price_checkoutdecimal

    What the buyer actually pays

  • cache_timetimestamp

    When this observation was taken

events9 fields, joined on event_id
  • marketplacestring

    Source site

  • event_idstring

    Primary key for the event

  • event_namestring

    Full event title as listed

  • event_categorystring

    MLB Baseball, NHL Hockey, Concerts, and so on

  • performer_idstring

    Stable ID for the team or artist

  • performer_namestring

    Home team, headline act

  • venue_idstring

    Stable ID for the venue

  • venue_namestring

    Stadium, arena or hall

  • event_timestamp_localtimestamp

    Local start time, not UTC-shifted

This is what our running pipeline delivers. Yours is whatever you sign off on: rename the fields, drop the ones you will never query, add the ones we have not thought of. The schema is agreed before any collection starts, and it does not change underneath you afterwards.

What gets collected

Concerts, every major league, and the long tail underneath

The counts below are events seen in a single day of collection. The mix is lopsided because the real market is lopsided: concerts outnumber everything else by an order of magnitude, and most sports volume sits in a handful of leagues.

Concerts21,000+MLB Baseball3,900+NHL Hockey1,700+College Football1,500+College Basketball650+NFL Football400+Soccer (MLS)280+Soccer (USL)240+

Full market, daily

Every event on the marketplace, collected once a day. The baseline our running pipeline uses.

Scoped to a league or tour

One competition, one artist, one venue. Cheaper, faster to validate, and usually where a first project should start.

Short intensive windows

A single week, an on-sale, a tournament. We have run a seven-day league collection that produced over 60 million rows.

Bring us the scope

Bring it to us properly and the job gets done

The projects that go well all start the same way. Somebody arrives knowing which marketplaces matter, which events or categories they care about, and what they intend to do with the data once it lands. Give us that much and the rest is our problem: the collection, the schema, the validation, the schedule, and every site change that comes afterwards.

You do not need the technical half worked out. You do not need to know whether a site is difficult, how deep the pagination goes, or what the fee structure does at checkout. That is what you are hiring. What you do need is a clear picture of the question you are trying to answer, because a brief with that in it produces data worth having, and one without it produces columns nobody uses.

A brief we can price in a day
  1. 01
    Which marketplaces
    One to start with, or all four.
  2. 02
    Which events
    A league, a tour, a venue, a category, or the whole market.
  3. 03
    What you need to know
    The question the data is meant to answer.
  4. 04
    How often
    Daily is the usual baseline. Tighter around an on-sale.
  5. 05
    Where it lands
    Your bucket, your warehouse, an endpoint, a file drop.

Missing a few of these is fine. Send what you have and we will fill the gaps on the call. Start with the project brief.

Questions

What people ask before starting a ticket project

TickPick, StubHub, Ticketmaster and SeatGeek are the four we have dedicated pages for, because they are what people ask for. The pipeline is not limited to them. Any publicly accessible ticketing or resale site can be added, and regional marketplaces are a routine request.

Over 1.2 billion listing records and 14 million event records, across more than 400 daily deliveries on a live event-pricing pipeline that is still running. Zero failed transfers in that time. That record is on TickPick; the other three marketplaces run on the same infrastructure and the same schema. We keep these figures rounded rather than quoted to the digit, because the pipeline adds to them every morning.

Yes. Sample data is available on request, and we would rather you asked. Send us three events or a category you care about and we will build a working sample from your own targets, in the schema you want, then walk you through it live including which fields come back null and why. That sample is yours to keep and test against. What you will never be shown is another client's delivered dataset, and that is the same undertaking we make to you about yours.

Daily is the common baseline and what our running pipeline does. Intraday and near-real-time collection are available where the event set justifies the cost. Around a major on-sale, a single event can warrant a cadence the rest of the catalogue does not.

Both, in separate columns. Display price, buyer fee, delivery and processing charges, tax and the resulting all-in price are each their own field. This matters more than it sounds: marketplaces apply fees at different points, so comparing advertised prices across sites reliably produces the wrong answer.

The marketplaces that matter, the events or categories you care about, and what you intend to do with the data once it lands. You do not need the technical half worked out. Whether a site is difficult, how deep the pagination goes, what the fees do at checkout, all of that is ours to solve. Bring the question you are trying to answer and the job gets done.

Parquet over SFTP is the usual choice at this volume, and it is what the running pipeline uses. CSV, JSON, a REST endpoint or a direct load into your warehouse are all available. Every delivery carries a manifest of expected files, verified files and byte counts.

Yes, and it is usually the better place to start. Scoped collections cost less and validate faster. We have run single-league weeks, a tournament window and a single event's run-up alongside a full-market daily job.

Send us three events and see what comes back

Name the marketplace, the events and the fields you care about. You get a feasibility read, a proposed schema and a real sample pulled from your own targets, before any commitment.

No retainer required to find out whether your sources are feasible.