# Seatgeek Tickets Listings Scraper (`stealth_mode/seatgeek-tickets-listings-scraper`) Actor

Scrape detailed ticket listings from SeatGeek with seat-level precision. Collect 45+ fields per listing including pricing, seat locations, delivery methods, and seller info — essential for ticket aggregators, resellers, and event data analysts.

- **URL**: https://apify.com/stealth_mode/seatgeek-tickets-listings-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## SeatGeek Tickets Scraper: Extract Event Listing Data in Seconds

***

### What Is SeatGeek?

SeatGeek is a leading online ticket marketplace connecting buyers and sellers for concerts, sports, theater, and live events worldwide. It aggregates inventory from multiple sources, offering transparent pricing, deal ratings, and seat-level information. Manually collecting ticket data from SeatGeek pages is repetitive and inefficient — the **SeatGeek Tickets Scraper** automates this process, extracting comprehensive listing data with seat-level granularity.

***

### Overview

The **SeatGeek Tickets Scraper** extracts detailed ticket listing information from SeatGeek event pages, capturing price, seat details, deal quality, and delivery methods in structured format. It's built for:

- **Ticket resellers** monitoring market inventory and pricing
- **Event data analysts** tracking ticket availability and price trends
- **Research teams** studying live event ticket markets
- **Integration platforms** feeding SeatGeek data into aggregator systems

Key advantages include configurable item limits, robust error handling, and access to 47+ data points per listing including deal quality scores and delivery information.

***

### Input Format

The scraper accepts a JSON configuration specifying which ticket listings to extract:

```json
{
  "urls": [
    "https://seatgeek.com/fifa-world-cup-tickets/international-soccer/2026-06-12-6-pm/17176203?quantity=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
```

#### Input Parameters

| Parameter | Type | Description |
|---|---|---|
| `urls` | Array | Direct links to SeatGeek event listing pages. Paste individual URLs or use bulk edit to import a prepared list. Each URL should be a specific event page (not a search results page). |
| `ignore_url_failures` | Boolean | If `true`, the scraper continues running even if some URLs fail. Useful for large bulk operations to prevent interruptions. Default: `true`. |
| `max_items_per_url` | Integer | Maximum number of ticket listings to extract per URL. Range: 1–200. Higher values capture more inventory but increase runtime. Default: `20`. |

> **Tip:** Use specific event URLs (e.g., with date and quantity parameters) to ensure accurate data. Adjust `max_items_per_url` based on your needs—200 captures comprehensive inventory.

***

### Output Format

**Sample output**

```json
{
  "event_id": 18384062,
  "market_code": "exchange",
  "row_key": "20",
  "row_name": "Row 20",
  "row_label": "20",
  "delivery_method": "mobile_transfer",
  "listing_id": "2v0czRG6KXP",
  "in_hand_date": "2027-04-07",
  "is_instant_delivery": false,
  "has_obstructed_view": false,
  "is_verified": false,
  "section_slug": "107",
  "section_name": "Section 107",
  "section_label_raw": "107",
  "quantity": 8,
  "split_quantities": [
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8
  ],
  "map_key": "s:107 r:20",
  "price_with_fees_per_ticket": 1467.18,
  "fee_per_ticket": 243.18,
  "shipping_fee": 0,
  "display_fee": 244,
  "seo_slug": "globe-life-field-section-107",
  "seat_deal_buckets": [],
  "display_price_with_fees": 1468,
  "seat_numbers": [],
  "price_per_ticket": 1224,
  "is_standing_room": false,
  "is_wheelchair": false,
  "split_type": "",
  "delivery_id": 8,
  "group_key": "107_20",
  "sort_rank": 1468012917,
  "value_score": 3.392,
  "has_limited_view": false,
  "seller_description": null,
  "taxonomy_id": 1010100,
  "currency": "USD",
  "market": {
    "display_name": "SeatGeek",
    "seller_name": "SeatGeek",
    "checkout_explanation": "When you buy these tickets, your payment will go directly to SeatGeek.",
    "support_phone": "(888) 497-4335",
    "support_email": "hi@seatgeek.com"
  },
  "deal": {
    "bucket": 0,
    "bucket_label": "Amazing",
    "bucket_label_plural": "Amazing",
    "score": 88.33,
    "score_display": "9",
    "estimated_value": 1405.41,
    "estimated_value_same_section": 1405.41,
    "top_pick_rank": 12
  },
  "delivery": {
    "primary_label": "Mobile transfer",
    "secondary_label": "Delivered by 2027-04-07",
    "message": "Tickets will be delivered to your email address by 2027-04-07."
  },
  "seat_features": [
    {
      "id": 2217,
      "label": "In-seat mobile ordering available for purchase",
      "detail": ""
    }
  ],
  "view_image_url": "https://seatgeek.com/images/seatviews/f02aca34-74be-43e6-a7fe-00f67a58dce1/flat/800x600.jpg",
  "ugc_photos_in_section": 1,
  "ugc_photos_same_row": [],
  "total_price_all_tickets": 11737.44,
  "affirm_eligible": true,
  "verified_badge_url": null,
  "from_url": "https://seatgeek.com/texas-rangers-tickets/4-8-2027-arlington-texas-globe-life-field/mlb/18384062?quantity=2"
}
```

Each scraped ticket listing returns a record with 47 detailed fields:

#### Seat & Section Information

| Field | Meaning |
|---|---|
| `Section` | Section name or identifier (e.g., "Upper Level 301") |
| `Row` | Row designation within the section |
| `Seat Numbers` | Specific seat numbers (e.g., "101, 102") |
| `Quantity` | Number of seats available in this listing |
| `Seat Positions` | Position descriptors (aisle, corner, center) |
| `Section Slug` | URL-friendly section identifier |
| `Map Key` | Venue map reference key |
| `Grid Key` | Seating grid reference for the venue |
| `Wheelchair Accessible` | Boolean flag for ADA-compliant seating |
| `Obstructed View` | Boolean—seat has limited sightlines |
| `Partial View` | Boolean—seat has partially obstructed views |
| `Standing Room Only` | Boolean—general admission standing area |

#### Pricing & Fees

| Field | Meaning |
|---|---|
| `Price` | Base ticket price in USD |
| `Fee` | SeatGeek platform and seller fees |
| `Price With Fee` | Total cost per ticket (base + fees) |
| `Display Price` | Price displayed to end-users |
| `Display Fee` | Fee displayed to end-users |
| `SeatGeek Price` | SeatGeek's own pricing tier |
| `SeatGeek Display Price` | SeatGeek display price variant |
| `SeatGeek Fee` | SeatGeek-specific fees |

#### Deal Quality & Valuation

| Field | Meaning |
|---|---|
| `Deal Quality Score` | SeatGeek's deal rating (0–100 scale; higher = better value) |
| `Deal Quality Display` | Human-readable deal quality (e.g., "Great Deal") |
| `Expected Value` | Estimated ticket value based on seat location |
| `Expected Value Same Section` | EV for comparable seats in the same section |
| `Market Score` | Historical market pricing benchmark |
| `Deal Listing` | Boolean—flagged as a special deal offering |
| `Split Deal Quality` | Deal score if ticket is split from a larger group |

#### Delivery & Fulfillment

| Field | Meaning |
|---|---|
| `Delivery Method` | How tickets are delivered (e.g., email, mobile) |
| `Delivery Type` | Delivery category (eTicket, physical mail, will-call) |
| `E-Ticket Type` | Type of electronic ticket format |
| `Stock Type` | Listing source (e.g., resale, presale) |
| `Marketplace` | Ticket source platform identifier |
| `In Hand Date` | Expected delivery date to buyer |
| `Days Until Event` | Countdown to event date |

#### Listing Metadata & Flags

| Field | Meaning |
|---|---|
| `Listing ID` | Unique identifier for this ticket listing |
| `Fulfillment ID` | Fulfillment/order reference ID |
| `Section ID` | Venue section database ID |
| `Group ID` | Ticket group identifier (same seller, section) |
| `Event ID` | Unique SeatGeek event identifier |
| `VIP` | Boolean—premium VIP seating |
| `Pick Your Seats` | Boolean—buyer can select specific seats |
| `Hidden` | Boolean—listing hidden from public view |
| `Section Hidden` | Boolean—entire section is unlisted |
| `EPass Enabled` | Boolean—mobile pass functionality available |
| `Auto Exchange` | Boolean—ticket auto-exchange permitted |
| `Multiple Entry` | Boolean—multi-event pass |
| `Special Type` | Special designation (e.g., "Mystery Seats") |

#### Split & Restriction Flags

| Field | Meaning |
|---|---|
| `Split Forbidden` | Boolean—tickets cannot be split or separated |
| `Split Consecutive Only` | Boolean—can only split into consecutive seats |

***

### How to Use

1. **Find event URLs** — Navigate to SeatGeek, search for an event, and copy the listing page URL. Include any query parameters (e.g., `?quantity=2`).
2. **Configure input** — Paste URLs into the `urls` array. Adjust `max_items_per_url` based on how much inventory you need (typical: 50–200).
3. **Set error handling** — Keep `ignore_url_failures: true` for multi-URL runs to prevent interruptions.
4. **Run the scraper** — Start the actor and monitor real-time output in the run log.
5. **Export data** — Download results as JSON, CSV, or Excel for analysis or integration.

**Best practices:**

- Use event detail pages, not search results pages.
- Set `max_items_per_url` to 200 to capture all available inventory.
- Test with 1–2 URLs before running bulk operations.

***

### Use Cases & Benefits

- **Pricing intelligence:** Monitor competitor pricing and deal scores in real-time
- **Inventory tracking:** Track available seat supply by section and price tier
- **Market research:** Analyze demand patterns across events and venues
- **Reseller automation:** Feed pricing data into automated pricing or arbitrage systems
- **BI dashboards:** Populate data warehouses with ticketing metrics

The scraper eliminates manual data collection, delivering machine-readable records that integrate directly into analytics platforms, spreadsheets, and APIs.

***

### Conclusion

The **SeatGeek Tickets Scraper** provides fast, reliable access to granular ticket listing data across 47 fields. Whether you're tracking pricing trends, building market intelligence, or automating resale operations, this scraper transforms SeatGeek's web pages into structured, actionable data in seconds.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the tickets listings urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## `proxy` (type: `object`):

Select proxies to be used by your scraper.

## Actor input object example

```json
{
  "urls": [
    "https://seatgeek.com/texas-rangers-tickets/4-8-2027-arlington-texas-globe-life-field/mlb/18384062?quantity=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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 = {
    "urls": [
        "https://seatgeek.com/texas-rangers-tickets/4-8-2027-arlington-texas-globe-life-field/mlb/18384062?quantity=2"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/seatgeek-tickets-listings-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 = {
    "urls": ["https://seatgeek.com/texas-rangers-tickets/4-8-2027-arlington-texas-globe-life-field/mlb/18384062?quantity=2"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/seatgeek-tickets-listings-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "urls": [
    "https://seatgeek.com/texas-rangers-tickets/4-8-2027-arlington-texas-globe-life-field/mlb/18384062?quantity=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call stealth_mode/seatgeek-tickets-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,stealth_mode/seatgeek-tickets-listings-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/8jUFH81gFRzdulL2U/builds/TN2KiMo34LqHs3fDD/openapi.json
