SeatDataDocs

Getting Started with the SeatData API

Step-by-step guide to setting up and using the SeatData API

Follow these instructions to begin using the SeatData API.

Step 1: Create an Account

If you don't already have a SeatData account, create one at: https://seatdata.io/register/

Existing Users

If you already have a SeatData account (Basic, Pro, etc.), you can add API access to your existing account—no need to create a new one.

Step 2: Subscribe to API Access

  1. Log into your SeatData account
  2. Navigate to the Pricing page
  3. Choose an API subscription tier or pay-as-you-go and complete checkout

API access is available two ways: monthly subscription tiers that include a set request allowance (requests beyond the allowance bill at your tier's overage rate), or pay-as-you-go with no subscription, billed per request from a prepaid credit balance. Current rates are listed on the Pricing page.

Step 3: Generate Your API Key

  1. After subscribing, open the API Keys page from the sidebar
  2. Click "Generate API Key"
  3. Copy your API key immediately—for security, it will only be shown once

Important

Store your API key securely. If you lose it, you'll need to regenerate a new one (which invalidates the old key).

Step 4: Using the API

Authentication

All API requests must be authenticated. Send your API key as a bearer token (preferred):

Authorization: Bearer <your-64-character-key>

The legacy api-key header is also accepted on any endpoint:

api-key: <your-64-character-key>

API Documentation

Full API documentation is available in the API Reference. If you already call the v0.3 sales endpoints, see Migrating Sales Data to v1.

Example Request (Python SDK)

This example uses our official Python SDK:

pip install seatdata-sdk
from seatdata import SeatDataClient

client = SeatDataClient(api_key="your_64_char_api_key")

# Verify auth, and see your plans and rate limits
account = client.get_account()
print(account["plans"])

# Search events
events = client.search_events(
    venue_name="Madison Square Garden",
    venue_city="New York",
)

# One page of sales for an event
page = client.get_event_sales(event_id=12345, limit=50)
for row in page["data"]:
    print(row["source"], row["price"], row["quantity"])

# Or walk every page. first_page holds the metadata the server sends once.
iterator = client.iter_event_sales(event_id=12345, source="all")
rows = list(iterator)
print(len(rows), "rows of", iterator.first_page["total_count"])

An async client (AsyncSeatDataClient) and the v0.x methods are documented in the SDK README.

Example Request (Python)

Calling the API directly, without the SDK:

import requests

response = requests.get(
    "https://seatdata.io/api/v1/events/12345/sales",
    params={"limit": 200},
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)
response.raise_for_status()
page = response.json()

for sale in page["data"]:
    print(sale)

This returns one page

GET /v1/events/{event_id}/sales is cursor paginated, so the request above returns at most limit rows. When next_cursor is not null, keep calling with starting_after=<next_cursor> until it is, or you will silently miss rows. The API Reference has a worked paging example in five languages.

Pricing

The API is billed per request, either against your subscription tier's monthly allowance or against your pay-as-you-go credit balance. Current rates for every tier and pay-as-you-go are listed on the Pricing page.

Most endpoints are free. Of those that consume pulls, several charge only when they return something new, and paging through a result set is always free. The API Reference lists which endpoints charge and under exactly what conditions, endpoint by endpoint.

Batch Sales Data Requests

To fetch sales data for multiple events in one call, use POST /v1/events/sales/batch instead of calling the sales data endpoint once per event. The v0.3 equivalent, POST /v0.3/salesdata/batch, remains fully supported.

  • Accepts up to 100 events per request.
  • Send a JSON body with event_ids (SeatData Event IDs), event_ids_sh (Marketplace Event IDs), or both. Each GET /v1/events/search result carries both: event_id, and sh_event_id (null when SeatData has not matched the event on that marketplace).
  • The response's results object is keyed by whichever identifier you sent for each event. A top-level events object, keyed the same way, gives each served event's seatdata_event_id, sh_event_id, and vs_event_id.
  • Billing is identical to the single sales data endpoint: one pull per event that returns sales data. Events with no sales are free.
  • The v0.3 endpoint gzips every response; v1 does not force gzip.

See the API Reference for the full request and response schema.

Data Freshness for Requested Events

Requesting an event through the sales or listings endpoints prioritizes it for re-scanning — prioritized events are scanned at least every 30 minutes.

Daily Event CSV Download

If you subscribe to the Daily Event CSV add-on, the nightly file can also be retrieved through the API with GET /v0.5/daily-csv/download. The endpoint returns the CSV once it has been generated — even if the email delivery failed — making it a reliable alternative to inbox delivery for scheduled pipelines. See the API Reference for details.

Monitoring Usage

Usage is available through the API and in the dashboard.

Through the API. GET /v1/usage returns call counts for the current billing period with a per-endpoint breakdown, plus the period start and end. GET /v1/account returns your active subscriptions and the rate-limit catalog. Neither call is charged, so both are safe to poll from a monitoring job. See the API Reference for the response schemas.

usage = requests.get(
    "https://seatdata.io/api/v1/usage",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
).json()

print(usage["period_start"], "→", usage["period_end"])
print(usage["totals"])

In the dashboard. The API Keys page shows total requests for the current billing period and a per-endpoint breakdown, updated every 15 minutes. Billing details are at Dashboard → API Billing.

Managing Your API Key

From the API Keys page, you can:

  • Regenerate your key if compromised (immediately invalidates the old key)
  • Revoke your key to disable API access
  • Generate additional keys — multiple keys per account are supported for separate applications or environments

Need Help?

If you have any questions or run into issues, please contact us at support@seatdata.io.

On this page