Real-time ticket listings, prices and fees across major ticket marketplaces.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer YOUR_MCP_API_KEY. Copy the key from Dashboard, Settings, MCP Access at ticketsdata.com
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Work on the COMPLETE response of an earlier get_event_listings, compare_marketplaces or find_events call, including items too many to show inline. Pass the file link from that result. Free: spends no credits and makes no new fetch. Works for 15 minutes after the fetch, only for the account that made it. For marketplace listings it uses one standard row per listing with the same field names on every marketplace: section, row, quantity (tickets available), splits (quantities you can buy), price (per ticket before fees), fees, price_total (all-in per ticket), face_value, currency, notes, area, ticket_type, inventory_type, deal_score, delivery, is_parking, listing_id, marketplace. Any other field name is read from the original listing (prefix 'raw.' to force that). compare_marketplaces results merge every marketplace's listings into one list with a marketplace field. Filter with conditions (AND) and tickets, sort, pick fields, get min/median/max of a numeric field, and count or price items per group (per section, per marketplace, per row). Every reply includes an overview of all matches: count, tickets, price range and the cheapest listing.
The file link from an earlier result (https://mcp.ticketsdata.com/mcp?file=...) or just its token.
How many matching items to return (0 for summary only). Default 50.
Conditions every returned item must meet, combined with AND. Example: [{"field":"price_total","op":"<=","value":300},{"field":"section","op":"in","value":["101","102"]}].
Return only these fields of each item. Omit to return the standard rows (or raw items when there is no standard view).
Skip this many matching items, for paging.
Field to sort matches by, e.g. 'price_total'. Numbers (including prices written as text) sort numerically. Items without the field go last.
Keep only listings where exactly this many tickets can be bought together (uses splits, or quantity when the marketplace gives no splits).
Field to group matches by, e.g. 'section' or 'marketplace'. Returns count per group (and prices with stats_field), cheapest group first.
Dotted path of a list in the raw response to analyze instead, e.g. 'body.events'. Turns off the standard view.
Sort from highest to lowest.
Add the original listing under 'raw' to each standard row.
Numeric field to summarise over ALL matches: min, p25, median, p75, max, mean. Also adds min, median and max to each group.
Work on the COMPLETE response of an earlier get_event_listings, compare_marketplaces or find_events call, including items too many to show inline. Pass the file link from that result. Free: spends no credits and makes no new fetch. Works for 15 minutes after the fetch, only for the account that made it. For marketplace listings it uses one standard row per listing with the same field names on every marketplace: section, row, quantity (tickets available), splits (quantities you can buy), price (per ticket before fees), fees, price_total (all-in per ticket), face_value, currency, notes, area, ticket_type, inventory_type, deal_score, delivery, is_parking, listing_id, marketplace. Any other field name is read from the original listing (prefix 'raw.' to force that). compare_marketplaces results merge every marketplace's listings into one list with a marketplace field. Filter with conditions (AND) and tickets, sort, pick fields, get min/median/max of a numeric field, and count or price items per group (per section, per marketplace, per row). Every reply includes an overview of all matches: count, tickets, price range and the cheapest listing.
| Argument | Type | Description |
|---|---|---|
| file* | string | The file link from an earlier result (https://mcp.ticketsdata.com/mcp?file=...) or just its token. |
| limit | integer | How many matching items to return (0 for summary only). Default 50. |
| where | any | Conditions every returned item must meet, combined with AND. Example: [{"field":"price_total","op":"<=","value":300},{"field":"section","op":"in","value":["101","102"]}]. |
| fields | any | Return only these fields of each item. Omit to return the standard rows (or raw items when there is no standard view). |
| offset | integer | Skip this many matching items, for paging. |
| sort_by | any | Field to sort matches by, e.g. 'price_total'. Numbers (including prices written as text) sort numerically. Items without the field go last. |
| tickets | any | Keep only listings where exactly this many tickets can be bought together (uses splits, or quantity when the marketplace gives no splits). |
| group_by | any | Field to group matches by, e.g. 'section' or 'marketplace'. Returns count per group (and prices with stats_field), cheapest group first. |
| list_path | any | Dotted path of a list in the raw response to analyze instead, e.g. 'body.events'. Turns off the standard view. |
| descending | boolean | Sort from highest to lowest. |
| include_raw | boolean | Add the original listing under 'raw' to each standard row. |
| stats_field | any | Numeric field to summarise over ALL matches: min, p25, median, p75, max, mean. Also adds min, median and max to each group. |
{
"type": "object",
"$defs": {
"Condition": {
"type": "object",
"title": "Condition",
"required": [
"field"
],
"properties": {
"op": {
"enum": [
"=",
"!=",
"<",
"<=",
">",
">=",
"contains",
"not_contains",
"in",
"not_in",
"exists",
"missing"
],
"type": "string",
"title": "Op",
"default": "=",
"description": "Comparison. Number ops also read prices given as text like \"$225.00\". '=' on a list field (e.g. available quantities) matches when any element equals the value."
},
"field": {
"type": "string",
"title": "Field",
"description": "Item field exactly as it appears in the result, dotted for nested values, e.g. 'rawPrice' or 'price.amount'."
},
"value": {
"title": "Value",
"default": null,
"description": "Value to compare with. A list for 'in' and 'not_in'. Not needed for 'exists' and 'missing'."
}
}
}
},
"title": "analyze_listingsArguments",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"title": "File",
"description": "The file link from an earlier result (https://mcp.ticketsdata.com/mcp?file=...) or just its token."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 50,
"maximum": 500,
"minimum": 0,
"description": "How many matching items to return (0 for summary only). Default 50."
},
"where": {
"anyOf": [
{
"type": "array",
"items": {
"$ref": "#/$defs/Condition"
}
},
{
"type": "null"
}
],
"title": "Where",
"default": null,
"description": "Conditions every returned item must meet, combined with AND. Example: [{\"field\":\"price_total\",\"op\":\"<=\",\"value\":300},{\"field\":\"section\",\"op\":\"in\",\"value\":[\"101\",\"102\"]}]."
},
"fields": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"title": "Fields",
"default": null,
"description": "Return only these fields of each item. Omit to return the standard rows (or raw items when there is no standard view)."
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0,
"minimum": 0,
"description": "Skip this many matching items, for paging."
},
"sort_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Sort By",
"default": null,
"description": "Field to sort matches by, e.g. 'price_total'. Numbers (including prices written as text) sort numerically. Items without the field go last."
},
"tickets": {
"anyOf": [
{
"type": "integer",
"maximum": 100,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Tickets",
"default": null,
"description": "Keep only listings where exactly this many tickets can be bought together (uses splits, or quantity when the marketplace gives no splits)."
},
"group_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Group By",
"default": null,
"description": "Field to group matches by, e.g. 'section' or 'marketplace'. Returns count per group (and prices with stats_field), cheapest group first."
},
"list_path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "List Path",
"default": null,
"description": "Dotted path of a list in the raw response to analyze instead, e.g. 'body.events'. Turns off the standard view."
},
"descending": {
"type": "boolean",
"title": "Descending",
"default": false,
"description": "Sort from highest to lowest."
},
"include_raw": {
"type": "boolean",
"title": "Include Raw",
"default": false,
"description": "Add the original listing under 'raw' to each standard row."
},
"stats_field": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Stats Field",
"default": null,
"description": "Numeric field to summarise over ALL matches: min, p25, median, p75, max, mean. Also adds min, median and max to each group."
}
}
}Cross-market report for ONE event. Give any marketplace's event URL: TicketsData finds the same event on the other marketplaces, fetches all of them live, and returns matched URLs, normalized listings per marketplace, per-market price and fee summaries, the cheapest all-in entry point and per-section price spreads between marketplaces. Returns the complete TicketsData API response, unchanged: always as a link to a JSON file, and also inline (the report's analytics in full, listings cut to the first part when large). The report also contains each matched marketplace's own full listings response, so there is no need to call get_event_listings for those marketplaces afterwards. EXPENSIVE: costs 1 report plus up to 12 API credits and takes 20 to 60 seconds. Needs a Pro plan or above. Only one can run at a time per account. Use get_event_listings instead when the user asks about a single marketplace.
| Argument | Type | Description |
|---|---|---|
| event_url* | string | Full event URL from ticketmaster, stubhub, seatgeek, vividseats, gametime, tickpick or viagogo. |
{
"type": "object",
"title": "compare_marketplacesArguments",
"required": [
"event_url"
],
"properties": {
"event_url": {
"type": "string",
"title": "Event Url",
"description": "Full event URL from ticketmaster, stubhub, seatgeek, vividseats, gametime, tickpick or viagogo."
}
}
}List upcoming events for a performer, artist, team, organizer or venue page on one marketplace. Use it to discover event URLs, then pass one to get_event_listings or compare_marketplaces. Real time, costs 1 API credit. Returns the complete TicketsData API response, unchanged: always as a link to a JSON file, and also inline when it is small enough. Pass performer_url for most platforms. venue_url is for dice only (dice.fm/venue/... and dice.fm/promoters/... pages). For eventbrite pass the organizer page URL as performer_url. viagogo and axs are not supported here.
| Argument | Type | Description |
|---|---|---|
| platform* | string | Marketplace id: ticketmaster, stubhub, seatgeek, vividseats, gametime, tickpick, dice, eventbrite. |
| venue_url | any | dice only: venue or promoter page URL. |
| performer_url | any | Performer, artist, team or organizer page URL on that marketplace. |
{
"type": "object",
"title": "find_eventsArguments",
"required": [
"platform"
],
"properties": {
"platform": {
"type": "string",
"title": "Platform",
"description": "Marketplace id: ticketmaster, stubhub, seatgeek, vividseats, gametime, tickpick, dice, eventbrite."
},
"venue_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Venue Url",
"default": null,
"description": "dice only: venue or promoter page URL."
},
"performer_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Performer Url",
"default": null,
"description": "Performer, artist, team or organizer page URL on that marketplace."
}
}
}Fetch live ticket listings for ONE event on ONE marketplace: section, row, quantity, price and fees. Real time, not cached. Costs 1 API credit per call. Returns the complete TicketsData API response, unchanged: always as a link to a JSON file, and also inline (whole when small, otherwise the first part of the listings in the API's order). The body structure differs per marketplace. Primary platforms (ticketmaster, dice, eventbrite, axs) return face-value offers and ticket tiers rather than resale listings. axs needs a Pro plan or above. The result also says where the listings sit and what the price fields mean for that marketplace.
| Argument | Type | Description |
|---|---|---|
| mode | any | Optional. gametime: 'all' (quantities 1 to 10) or 'qty=N'. ticketmaster: 'availability', 'pricing' or 'quickpicks'. Omit for other platforms. |
| platform* | string | Marketplace id: ticketmaster, stubhub, seatgeek, vividseats, gametime, tickpick, viagogo, dice, eventbrite, axs. |
| event_url* | string | Full event URL on that marketplace. ticketmaster, gametime and dice also accept a bare event ID. |
{
"type": "object",
"title": "get_event_listingsArguments",
"required": [
"platform",
"event_url"
],
"properties": {
"mode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Mode",
"default": null,
"description": "Optional. gametime: 'all' (quantities 1 to 10) or 'qty=N'. ticketmaster: 'availability', 'pricing' or 'quickpicks'. Omit for other platforms."
},
"platform": {
"type": "string",
"title": "Platform",
"description": "Marketplace id: ticketmaster, stubhub, seatgeek, vividseats, gametime, tickpick, viagogo, dice, eventbrite, axs."
},
"event_url": {
"type": "string",
"title": "Event Url",
"description": "Full event URL on that marketplace. ticketmaster, gametime and dice also accept a bare event ID."
}
}
}List the marketplaces TicketsData supports, the URL or ID format each one expects, which ones support event discovery and cross-market comparison, and valid mode values. Free: uses no credits. Call this first when unsure how to format an input.
No arguments.
{
"type": "object",
"title": "list_marketplacesArguments",
"properties": {}
}