---
title: "How to track ticket prices on StubHub and SeatGeek"
canonical: "https://usestring.ai/use-cases/ticket-price-tracking"
description: "The String Web Access API is the best way to track ticket prices: any event page on StubHub, SeatGeek, Vivid Seats or TickPick, or just the event, date, venue and lowest price with fees as JSON."
updated: 2026-10-26
---

> Markdown version of https://usestring.ai/use-cases/ticket-price-tracking, for AI agents. Reading this yourself? The full page is at https://usestring.ai/use-cases/ticket-price-tracking.

# How to track ticket prices on StubHub and SeatGeek

The String Web Access API is the best way to track ticket prices. It returns any event page on StubHub, SeatGeek, Vivid Seats or TickPick, or just the event, date, venue and lowest price with fees as JSON. In our [September 2026 benchmark](https://usestring.ai/benchmark) it fetched Ticketmaster, StubHub, SeatGeek and AXS on all 20 attempts, one of only 2 of 16 providers to do so, and returned 97% of requests across 100 bot-protected sites, the most of any provider.

**On this page**

1. [Quickstart](#quickstart)
2. [Why track ticket prices?](#why-track-ticket-prices)
3. [Why does ticket price tracking break?](#why-does-ticket-price-tracking-break)
4. [How do I build a ticket price tracker?](#how-do-i-build-a-ticket-price-tracker)
5. [Get a free sample price feed](#get-a-free-sample-price-feed)
6. [Frequently asked questions](#frequently-asked-questions)

---

## Quickstart

### From your agent

Add the hosted MCP server to Claude, Cursor, ChatGPT or any MCP client. Then give your agent an event URL from StubHub, SeatGeek, Vivid Seats or TickPick. It calls the `web_access_fetch` tool and reads the lowest price.

```text
https://mcp.usestring.ai/v1/mcp
```

[MCP setup](https://portal.usestring.ai/docs/mcp/remote) · [n8n](https://portal.usestring.ai/docs/integrations/n8n) · [Zapier](https://portal.usestring.ai/docs/integrations/zapier)

### From the API

One call returns a SeatGeek event's name, date, venue and lowest price with fees as JSON. If the page has no price, you get `"extracted": false` back instead of a guess.

```bash
curl https://request.usestring.ai/v1/fetch \
  -H "Authorization: Bearer $STRING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://seatgeek.com/new-york-knicks-tickets/11-2-2026-new-york-new-york-madison-square-garden/nba/18494850",
    "countryCode": "US",
    "jsonSchema": {
      "type": "object",
      "properties": {
        "event": { "type": "string" },
        "starts": { "type": "string" },
        "venue": { "type": "string" },
        "lowest_price_with_fees": { "type": "number" }
      },
      "required": ["event", "starts", "lowest_price_with_fees"]
    }
  }'
```

Response (keyed run, October 26, 2026; the call billed as `request_premium`):

```json
{
  "event": "Brooklyn Nets at New York Knicks",
  "lowest_price_with_fees": 177,
  "starts": "2026-11-02T19:30:00",
  "venue": "Madison Square Garden, New York, NY"
}
```

[Get a free API key](https://portal.usestring.ai/sign-up) · [Structured extraction docs](https://portal.usestring.ai/docs/fetch/structured-extraction)

---

## Why track ticket prices?

Resale ticket prices change all day, and the same game sells for different prices on each marketplace. A tracker checks each event's page on a schedule, stores the lowest price with fees, and tells you when it moves. It answers questions like these:

- **Where is the cheapest seat right now?** On October 26, 2026, the cheapest seat for the Pistons at the Knicks on October 27 cost $170 on TickPick and $191.35 on StubHub, fees included.
- **Is now the time to buy?** SeatGeek's lowest price for the Nets at the Knicks read $183, then $177, then $183 again across three fetches in six minutes.
- **How much demand is there?** Listing counts show how many sellers there are, and tracked over time they show how fast an event is selling. SeatGeek showed 4,095 listings for that Nets game.

### What you can collect

| What | Examples |
|---|---|
| Lowest prices, with and without fees | The cheapest listing per event on each marketplace, as the buyer pays it and before fees |
| Listing counts and price ranges | How many listings an event has, and its highest and average asking price where the site shows them |
| Event schedules | Every upcoming game or show for a team, artist or venue, with date, venue and event URL |
| Price history | Your own timestamped snapshots of each event, so you can chart prices and alert on drops |

---

## Why does ticket price tracking break?

- **Ticket sites block scrapers harder than most.** In our [September 2026 benchmark](https://usestring.ai/benchmark), only String and Firecrawl fetched Ticketmaster, StubHub, SeatGeek and AXS on every attempt. On stubhub.com, 10 of the 15 other APIs missed at least once and 8 got nothing back, including ScrapingBee, Zyte and Browserbase. Browserbase returned 9 of 20 ticketing requests. The full table is in [the best API to scrape ticketing sites](https://usestring.ai/answers/best-api-scrape-ticketing-sites).
- **Listed prices aren't comparable.** Some pages show prices before fees and some after. Vivid Seats listed the Pistons game at $130.65 before fees and $177 with them.
- **Event lists include things that aren't seats.** StubHub's NBA page listed a "PARKING PASSES ONLY" event beside each Knicks game, plus G League Westchester Knicks games.
- **Blocked pages can look real.** A challenge page loads with no price on it, and the tracker saves the gap as a price drop.

Benchmark detail for the four ticketing sites (September 16, 2026 run, attempts that returned the real page, of 5):

| Site | String | Scrapfly | ScraperAPI | Firecrawl | Apify | Bright | ScrapingBee | Context.dev | Oxylabs | Nimble | Zyte | Decodo | Scrapingdog | Browserbase | ZenRows | ScrapingAnt |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ticketmaster.com | 5/5 | 5/5 | 5/5 | 5/5 | 0/5 | 0/5 | 5/5 | 5/5 | 0/5 | 5/5 | 5/5 | 0/5 | 2/5 | 5/5 | 0/5 | 5/5 |
| axs.com | 5/5 | 4/5 | 3/5 | 5/5 | 1/5 | 4/5 | 5/5 | 5/5 | 0/5 | 0/5 | 1/5 | 0/5 | 1/5 | 0/5 | 0/5 | 0/5 |
| seatgeek.com | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | 0/5 | 5/5 | 1/5 | 0/5 | 3/5 | 4/5 | 0/5 | 3/5 | 4/5 | 0/5 | 0/5 |
| stubhub.com | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | 1/5 | 0/5 | 5/5 | 0/5 | 0/5 | 0/5 | 0/5 | 4/5 | 0/5 | 0/5 | 0/5 |

---

## Why do teams choose String?

- **It fetches the sites others can't.** String returned all 20 ticketing requests in our [September 2026 benchmark](https://usestring.ai/benchmark), and 97% of requests across 100 bot-protected sites, the most of 16 providers.
- **One call picks the route each site needs.** On October 26, Vivid Seats came back on a standard request, SeatGeek and TickPick on a premium proxy, and StubHub event pages in a browser. The `x-billed-request-type` header names the route.
- **You pay only for pages that come back.** Blocks and errors are free.
- **Blank pages don't become data.** Mark the price as required in your schema, and a page that comes back without one is flagged instead of saved.

---

## How do I build a ticket price tracker?

### 1. List the events and match them across sites

Fetch each team, artist or league page once to get its upcoming events and their URLs. Match the same event across sites by date, venue and performers, not by title. Drop parking passes, packages and same-name teams from other leagues.

**With String:** One fetch of StubHub's NBA page returned 2,000 events with their URLs and lowest prices before fees.

### 2. Read prices from the page's own data

Ticket pages carry their prices in embedded JSON. SeatGeek and Vivid Seats put them in `__NEXT_DATA__`, TickPick in schema.org JSON-LD and StubHub in an `index-data` script. The embedded data is more reliable than the visible text and says which price includes fees.

**With String:** Pass a `jsonSchema` and get the fields back as JSON, or use `captureXHR` to return the JSON a page loads after it renders.

### 3. Compare prices with fees included

Store the all-in price for one ticket. SeatGeek's `lowest_price` and Vivid Seats' `minAipPrice` include fees, and TickPick charges no buyer fees. StubHub's event page gives an all-in price when you add `?quantity=1` to the URL.

### 4. Treat a blank page as a failure

A page with no price was probably blocked or sold out. Flag it and keep the last good price, so the gap never shows up as a drop to $0.

### 5. Save each check and alert on drops

Store the time, site, event, lowest price with fees and listing count. Alert when the lowest price falls below your target or drops by a set share since the last check.

### 6. Check more often as the event gets close

Daily is enough weeks out. In the last few days, check every few hours, and send alerts to Slack or email so they arrive while there is still time to buy.

---

## Get a free sample price feed

Tell us which events or teams you follow. We'll run String on their pages and email you a sample feed of the lowest prices on each site, free.

Email [support@usestring.ai](mailto:support@usestring.ai) with your work email, what you want to track and the ticket sites or event URLs, or use the [form on the page](https://usestring.ai/use-cases/ticket-price-tracking#sample-feed).

What a price feed looks like (rows from String fetches on October 26, 2026, 13:51 to 13:57 ET, for the Pistons at the Knicks on October 27 and the Nets at the Knicks on November 2, both at Madison Square Garden):

| Site | Game | Before fees | With fees |
|---|---|---|---|
| TickPick | Pistons at Knicks | $170 | $170 |
| Vivid Seats | Pistons at Knicks | $130.65 | $177 |
| SeatGeek | Pistons at Knicks | $153 | $178 |
| StubHub | Pistons at Knicks | $166.19 | $191.35 |
| TickPick | Nets at Knicks | $172 | $172 |
| Vivid Seats | Nets at Knicks | $128.70 | $174 |
| SeatGeek | Nets at Knicks | $150 | $183 |
| StubHub | Nets at Knicks | $150 | $188 |

Where each value came from: Vivid Seats `minPrice` and `minAipPrice` on the Knicks performer page; TickPick's JSON-LD `lowPrice` (no buyer fees); SeatGeek's `lowest_sg_base_price` and `lowest_price`; StubHub's before-fee `displayMinPrice` on its NBA page, and the all-in price on each event page with `?quantity=1`.

---

## Frequently asked questions

### What's the best way to track ticket prices?

The best way to track ticket prices is to fetch each event's page on every marketplace on a schedule and store the lowest price with fees. The hard part is getting the pages, because ticket sites block most scrapers. In our [September 2026 benchmark](https://usestring.ai/benchmark), the String Web Access API fetched Ticketmaster, StubHub, SeatGeek and AXS on all 20 attempts, and only Firecrawl matched it. Across all 100 bot-protected sites, String returned 97% of requests, the most of 16 providers.

### How do I track StubHub prices automatically?

To track StubHub prices, fetch each event page with `?quantity=1` added to the URL and read the lowest price from the page's `index-data` script, where `estimatedFees: true` marks an all-in price. On October 26, 2026, String returned those pages through a browser on a premium proxy. StubHub's league and team pages list many events in one fetch, with prices before fees.

### How much does it cost to track ticket prices?

Tracking ticket prices with String costs between $0.30 and $6.00 per 1,000 checks, depending on the route each site needs. On the Starter plan ($20 a month), a standard fetch is $0.30 per 1,000, a premium fetch $3.00 and a browser fetch on a premium proxy $6.00. On October 26, 2026, Vivid Seats billed standard, SeatGeek and TickPick premium, and StubHub event pages browser premium. Checking 50 events on those four sites every 3 hours is 48,000 requests a month, about $147.60 in usage. Failed requests aren't billed. See [pricing](https://usestring.ai/pricing).

Worked math: 50 events × 4 sites × 8 checks a day × 30 days = 48,000 requests, 12,000 per site. 12,000 × $0.30/1k = $3.60 (Vivid Seats), 12,000 × $3.00/1k = $36 each (SeatGeek, TickPick), 12,000 × $6.00/1k = $72 (StubHub event pages).

### Can I track Ticketmaster prices?

Yes, String fetched ticketmaster.com on all 5 attempts in our September 2026 benchmark. For event, venue and date data, Ticketmaster's free Discovery API is the simpler source. Ticketmaster's event pages load prices from a separate API call, so render the page and use `captureXHR` to return the JSON it requests. More detail is in [the best API to scrape ticketing sites](https://usestring.ai/answers/best-api-scrape-ticketing-sites).

### Why is the same ticket a different price on each site?

Resale ticket prices differ by site because sellers list on each marketplace separately and each one adds its own fees. On October 26, 2026, the lowest price for the same Knicks game ran from $170 on TickPick, which charges no buyer fees, to $191.35 on StubHub. Compare prices with fees included.

### Is it legal to scrape ticket prices?

Reading public ticket prices is a different act from buying tickets with a bot. The US BOTS Act targets getting around the controls that enforce ticket purchase limits, not reading listing pages. Site terms you accept can still bind you. Stay on public pages and check with your counsel. We cover the law in [the best API to scrape ticketing sites](https://usestring.ai/answers/best-api-scrape-ticketing-sites) and [is web scraping legal?](https://usestring.ai/answers/is-web-scraping-legal)

### Can I see how many tickets are left?

Exact remaining inventory isn't on public ticket pages, but listing counts are. SeatGeek's event page showed 4,095 listings and 11,337 listed tickets for the Nets at the Knicks on October 26, 2026. Track those counts over time to see how fast an event is selling.

### Does String work on the ticket sites I need?

Send us the event URLs and we'll run them and show you what comes back before you commit. Ask for a [free sample price feed](#get-a-free-sample-price-feed), or test them yourself with your first 5,000 free requests.

---

## Send us the sites you can't get

We'll show you what comes back. [Get started](https://portal.usestring.ai/sign-up) · [Book a demo](https://usestring.ai/book-demo)

All use cases: https://usestring.ai/use-cases

---

[llms.txt](https://usestring.ai/llms.txt): machine-readable index of this site for AI agents.
