ATG Tickets Scraper API
Capture live ATG Tickets ticket inventory without building or maintaining your own ATG Tickets scraper. Send a public atgtickets.com event URL and receive current listings, pricing, fees, sections, rows, quantities, availability, and seat maps as structured JSON, captured live and never cached.
The API endpoint is https://api.tickets.dev/v1/capture/atg
ATG Tickets scraper API for live inventory
Each request captures current listing-level inventory with sections, rows, quantities, prices, fees, and optional seat maps in the same normalized JSON used across every marketplace.
{
"status": "Loading example…"}Capture a ATG Tickets event
Submit a public event page URL. The request runs the capture and returns one normalized snapshot when it completes.
| Method | Endpoint |
|---|---|
| GET | /v1/capture/atg |
import requests
endpoint = "https://api.tickets.dev/v1/capture/atg"
response = requests.get(
endpoint,
params={"eventUrl": event_url},
headers={"x-api-key": api_key},
)
snapshot = response.json()Query parameters
| Parameter | Type | Description |
|---|---|---|
eventUrl | string required | A public ATG Tickets event page URL to capture, from atgtickets.com or us.atgtickets.com. Any country domain or subdomain of those works as well. The match is on the marketplace name, not the exact host. An event URL from a different marketplace returns 400 marketplace_mismatch. |
includeVenueMaps | boolean optional | Render the venue maps for this capture and host them, filling sectionLevelUrl and seatLevelUrl, and fill venueLayout with the sections, rows and seats of the venue. Off by default, because the maps add render and upload time to a request most callers make for pricing alone, so the URLs come back as empty strings and venueLayout at level none unless you pass true. |
apiKey | string optional | Your API key, when you send it in the query string rather than the x-api-key header. Either is accepted, and the key is required one way or the other. Keep it server-side. It carries your full quota. The public sandbox key tk_test_sandbox hits the same URL and returns fixture snapshots without spending a capture. |
Example response
One capture of a real ATG Tickets event, trimmed to two listings. Every marketplace returns this same shape, so a parser written once works against all of them.
{
"source": "atg",
"eventId": "3D58900E-E30F-4EBE-B162-2E93BD85100B",
"eventName": "Harry Potter and the Cursed Child",
"performers": [
{
"performerId": "harry-potter-and-the-cursed-child",
"name": "Harry Potter and the Cursed Child",
"master": true
}
],
"venueId": "168DC45F-641C-4A7E-B7D9-8BDA58E98DE3",
"venueName": "Lyric Theatre",
"venueAddress": "",
"venueCity": "",
"venueState": "",
"venueTimezone": "",
"eventDateLocal": "2026-12-30T19:00:00-05:00",
"eventDateUtc": "2026-12-31T00:00:00+00:00",
"sourceUrl": "https://us.atgtickets.com/events/harry-potter-and-the-cursed-child/lyric-broadway/tickets/3D58900E-E30F-4EBE-B162-2E93BD85100B",
"capturedAt": "2026-09-22T15:43:54.142842+00:00",
"currency": "USD",
"note": "",
"seatLevelUrl": "https://storage.tickets.dev/seatmaps/atg/seat/3D58900E-E30F-4EBE-B162-2E93BD85100B/1790091833.svg",
"sectionLevelUrl": "https://storage.tickets.dev/seatmaps/atg/section/3D58900E-E30F-4EBE-B162-2E93BD85100B/1790091832.svg",
"stats": {
"listingCount": 164,
"ticketCount": 1018,
"getInPrice": 148.83,
"medianPrice": 328,
"avgPrice": 316.61,
"maxPrice": 543
},
"listings": [
{
"listingId": "",
"inventoryType": "primary",
"section": "Balcony",
"row": "C",
"quantity": 10,
"ticketPrice": 132,
"fee": 16.83,
"totalPrice": 148.83,
"ticketType": "Harry Potter Full Price",
"sellableQuantities": "1,2,3,4,5,6,7,8,9",
"group": "Balcony",
"seats": "2,4,6,8,10,12,14,16,18,20",
"listingNotes": "A handrail will be in your sightline throughout the production.",
"dealScore": ""
},
{
"listingId": "",
"inventoryType": "primary",
"section": "Balcony",
"row": "C",
"quantity": 6,
"ticketPrice": 132,
"fee": 16.83,
"totalPrice": 148.83,
"ticketType": "Harry Potter Full Price",
"sellableQuantities": "1,2,3,4,5,6",
"group": "Balcony",
"seats": "9,11,13,15,17,19",
"listingNotes": "A handrail will be in your sightline throughout the production.",
"dealScore": ""
}
// …162 more listings
],
"venueLayout": {
"level": "seat",
"capacity": 1622,
"sections": [
{
"section": "Orchestra",
"group": "Orchestra",
"ga": false,
"capacity": 802,
"rows": [
{
"row": "AA",
"capacity": 8,
"seats": "7,5,3,1,2,4,6,8"
},
{
"row": "A",
"capacity": 20,
"seats": "19,17,15,13,11,9,7,5,3,1,2,4,6,8,10,12,14,16,18,20"
}
// …25 more rows
]
}
// …2 more sections
]
}
}Real-time ATG Tickets pricing and availability
Store successive captures to monitor new and removed listings, price changes, fee changes, quantity movement, and inventory depth over time. The ticket price API guide covers all-in comparison, price alerts, resale analytics, and dynamic pricing workflows.
ATG Tickets API questions
What does the ATG Tickets API return?
One normalized snapshot of the event as it looks right now: every open seat with its section, row, seat number, published price and all-in total, plus event and venue details. Ask for venue maps and the same response carries hosted section and seat level map images tied to those seats.
Why use a ATG Tickets scraper API?
Catalog and partner APIs often focus on events, performers, or seller workflows. Tickets.dev captures the inventory visible on a public event page, including current listings, buyer-facing prices, fees, quantities, locations, and availability. It also removes the browser fleet, parsers, network routing, retries, and marketplace page maintenance involved in operating a production scraper.
Which ATG Tickets URLs does it accept?
Any public event page URL from atgtickets.com and us.atgtickets.com. Country domains and subdomains work as well. The match is on the marketplace, not the exact host.
Is the ATG Tickets data live or cached?
Live. Each call opens the event page and reads its current seat availability and prices. There is no crawl schedule to wait on and no cached row to go stale.
Does ATG Tickets use the same response shape as the other marketplaces?
Yes. Every Tickets.dev marketplace API returns the identical snapshot schema, so a parser written against ATG Tickets works unchanged against Ticketmaster, StubHub, SeatGeek, TickPick, Vivid Seats, Gametime, Viagogo, GoTickets, Paciolan, ProVenue and GoFevo.
How is the ATG Tickets API priced?
Per completed capture, starting at $0.050 each on the Starter plan. Failed requests are never charged, and every plan includes every marketplace and live seat maps.
Does the response include the venue's seating chart and capacity?
Yes. Ask for venue maps and venueLayout carries the venue map as data: every section, row and seat, with capacities counted from the seats. Names match the listings and the maps, so a listing binds to its row and seats without a lookup table.
Are there any restrictions on how I can use the data?
No. A capture only reads public data: the listings, prices, fees and seat maps the marketplace shows any visitor on its event page, with no login. Tickets.dev puts no license terms on what a capture returns. Store it, analyze it, build products on it and show it to your own users, with no attribution required.
Other marketplace APIs
The same endpoint shape and the same response schema cover every marketplace we support: Ticketmaster API, StubHub API, SeatGeek API, TickPick API, Vivid Seats API, Gametime API, Viagogo API, GoTickets API, Paciolan API, ProVenue API, and GoFevo API. Start with the ticket scraping API, explore live ticket inventory, real-time ticket pricing and seat maps, see every ticket marketplace API, check per-capture pricing, or talk to us about volume.