# StubHub FIFA World Cup 2026 Ticket Resale Scraper (`jungle_synthesizer/stubhub-fifa-world-cup-2026-ticket-resale-scraper`) Actor

Scrapes all FIFA World Cup 2026 ticket resale listings from StubHub — prices, sections, availability, and event details for all 104 matches. Returns min price, section, row, and inventory depth per listing.

- **URL**: https://apify.com/jungle\_synthesizer/stubhub-fifa-world-cup-2026-ticket-resale-scraper.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** Travel, Sports
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## StubHub FIFA World Cup 2026 Ticket Resale Scraper

Scrapes ticket resale listings from [StubHub](https://www.stubhub.com) for all 104 FIFA World Cup 2026 matches. Returns prices, sections, row data, inventory depth, and event metadata for every available listing.

---

### StubHub World Cup Scraper Features

- Extracts all 104 WC 2026 match event pages from the StubHub grouping index automatically
- Returns listing price, section, row, and quantity for every resale ticket on the market
- Collects event metadata — match name, venue, city, and scheduled date — alongside each listing
- Includes seller listing IDs for deduplication across runs
- Timestamps each record with `last_seen_at` so you can track price movement over time
- Respects `maxItems` — stop after N listings if you only need a sample
- No browser required. Bright Data Web Unlocker handles Akamai and renders the StubHub SPA server-side.

---

### What Can You Do With StubHub World Cup Ticket Data?

- **Event arbitrageurs** — Monitor price floors per match and buy when listings drop below historical thresholds
- **Sports travel agencies** — Pull live inventory with venue and section data to build package quotes
- **Marketplaces and resellers** — Track competing listings by section and row to price competitively
- **Journalists and researchers** — Quantify ticket markup from face value across all 104 matches
- **Fan communities** — Alert members when listings for a specific match drop below a target price

---

### How the StubHub World Cup Scraper Works

1. Loads the WC 2026 grouping page from StubHub (`/world-cup-tickets/grouping/45410`), which indexes all 104 match events
2. Extracts individual match event URLs from the SSR JSON embedded in the page
3. For each event page, parses listing IDs, prices, sections, rows, and quantities from the server-rendered payload
4. Saves one record per listing, enriched with event metadata (match name, venue, city, date)

---

### Input

```json
{
  "maxItems": 10
}
````

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `maxItems` | integer | — | Maximum total listings to return across all matches. Leave empty to scrape all available listings across all 104 matches. |

***

### StubHub World Cup Scraper Output Fields

```json
{
  "event_id": "155234891",
  "event_title": "Switzerland vs Canada - FIFA World Cup - Group A",
  "event_date_utc": "2026-06-14T14:00:00Z",
  "venue_name": "SoFi Stadium",
  "venue_city": "Inglewood, CA",
  "section": "207",
  "row": "C",
  "quantity": 2,
  "listing_price": 1374.04,
  "currency": "USD",
  "is_zone_seating": false,
  "delivery_type": "Mobile Entry",
  "seller_listing_id": "2347891023",
  "last_seen_at": "2026-06-24T09:12:31Z",
  "source": "https://www.stubhub.com/world-cup-switzerland-canada-tickets-6-14-2026/event/155234891/"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `event_id` | string | StubHub event ID |
| `event_title` | string | Full match name (e.g. Scotland vs Brazil - World Cup - Group C) |
| `event_date_utc` | string | Match start date/time in ISO 8601 UTC format |
| `venue_name` | string | Stadium name |
| `venue_city` | string | City where the match is played |
| `section` | string | Seating section (e.g. 207, Category 1) |
| `row` | string | Row within the section |
| `quantity` | integer | Number of tickets available in this listing |
| `listing_price` | number | Minimum price per ticket in this listing (USD, before fees) |
| `currency` | string | Currency code (always USD for StubHub US) |
| `is_zone_seating` | boolean | Whether this is a zone/flexible seating listing rather than specific seats |
| `delivery_type` | string | Delivery method (Mobile Entry, E-Ticket, Club, etc.) |
| `seller_listing_id` | string | StubHub listing ID — use this for deduplication across runs |
| `last_seen_at` | string | ISO 8601 timestamp when this listing was last scraped |
| `source` | string | Source URL of the event page |

***

### FAQ

#### How many matches does this cover?

The StubHub World Cup Scraper covers all 104 FIFA World Cup 2026 matches — group stage through the final. It reads the full match index on every run, so new listings appear as they go on sale.

#### Does this work without a browser?

No browser is launched. The StubHub SPA embeds full listing data as server-side JSON in the page source, which this scraper extracts directly. Rendering is handled by Bright Data's Web Unlocker.

#### Can I track price changes over time?

Run the scraper on a schedule and store results in a dataset. Each listing record includes a `last_seen_at` timestamp and a `seller_listing_id` for joining runs together. Price tracking requires an external pipeline — this actor handles the data collection.

#### Why does this cost more than other scrapers?

StubHub uses the Akamai bot detection stack. Getting through it cleanly requires Bright Data's Web Unlocker service, which bills per request. The `price_coefficient: 3.0` reflects that cost. You're still getting market data that would otherwise require manual browser sessions or a bespoke bot operation.

#### What happens when a match sells out?

The event page returns an empty listing set. The scraper skips it and moves to the next match. No errors, no empty records.

***

### Need More Features?

Open a request at [orbtop.com](https://orbtop.com) — match filtering, webhook delivery, and scheduled runs are all on the table.

### Why Use the StubHub World Cup Scraper?

- **Full coverage** — All 104 WC 2026 matches, not just a handful of high-profile games
- **Listing-level granularity** — Section, row, quantity, and delivery type per listing, not just floor prices
- **Runs clean** — Akamai and the StubHub SPA are handled at the infrastructure level; you get records, not error logs

# Actor input Schema

## `sp_intended_usage` (type: `string`):

Please describe how you plan to use the data extracted by this crawler.

## `sp_improvement_suggestions` (type: `string`):

Provide any feedback or suggestions for improvements.

## `sp_contact` (type: `string`):

Provide your email address so we can get in touch with you.

## `maxItems` (type: `integer`):

Maximum number of ticket listings to scrape across all matches. Leave empty to scrape all available listings.

## `directEventUrl` (type: `string`):

Optional: scrape a single StubHub event page directly instead of crawling all 104 WC 2026 matches. Useful for targeted single-event runs. Example: https://www.stubhub.com/world-cup-la-tickets-7-5-2026/event/153020467/

## Actor input object example

```json
{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "maxItems": 10
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/stubhub-fifa-world-cup-2026-ticket-resale-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/stubhub-fifa-world-cup-2026-ticket-resale-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "maxItems": 10
}' |
apify call jungle_synthesizer/stubhub-fifa-world-cup-2026-ticket-resale-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=jungle_synthesizer/stubhub-fifa-world-cup-2026-ticket-resale-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "StubHub FIFA World Cup 2026 Ticket Resale Scraper",
        "description": "Scrapes all FIFA World Cup 2026 ticket resale listings from StubHub — prices, sections, availability, and event details for all 104 matches. Returns min price, section, row, and inventory depth per listing.",
        "version": "0.1",
        "x-build-id": "sPecM4Vmi1yMWVkA3"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/jungle_synthesizer~stubhub-fifa-world-cup-2026-ticket-resale-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-jungle_synthesizer-stubhub-fifa-world-cup-2026-ticket-resale-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/jungle_synthesizer~stubhub-fifa-world-cup-2026-ticket-resale-scraper/runs": {
            "post": {
                "operationId": "runs-sync-jungle_synthesizer-stubhub-fifa-world-cup-2026-ticket-resale-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/jungle_synthesizer~stubhub-fifa-world-cup-2026-ticket-resale-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-jungle_synthesizer-stubhub-fifa-world-cup-2026-ticket-resale-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "maxItems"
                ],
                "properties": {
                    "sp_intended_usage": {
                        "title": "What is the intended usage of this data?",
                        "minLength": 1,
                        "type": "string",
                        "description": "Please describe how you plan to use the data extracted by this crawler."
                    },
                    "sp_improvement_suggestions": {
                        "title": "How can we improve this crawler for you?",
                        "minLength": 1,
                        "type": "string",
                        "description": "Provide any feedback or suggestions for improvements."
                    },
                    "sp_contact": {
                        "title": "Contact Email",
                        "minLength": 1,
                        "type": "string",
                        "description": "Provide your email address so we can get in touch with you."
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "type": "integer",
                        "description": "Maximum number of ticket listings to scrape across all matches. Leave empty to scrape all available listings."
                    },
                    "directEventUrl": {
                        "title": "Direct Event URL",
                        "type": "string",
                        "description": "Optional: scrape a single StubHub event page directly instead of crawling all 104 WC 2026 matches. Useful for targeted single-event runs. Example: https://www.stubhub.com/world-cup-la-tickets-7-5-2026/event/153020467/"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
