Discovery API
ticketmaster · Commerce
The Ticketmaster Discovery API allows you to search for events, attractions, or venues.
Authentication
Sample Requests
Find attractions (artists, sports, packages, plays and so on) and filter your search by name, and much more.
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/attractions?id=&page=0&size=20&sort=relevance%2Cdesc&locale=en&source=&keyword=&includeTest=no&classificationId=&includeSpellcheck=no&classificationName=&includeLicensedContent=no"
import requests
params = {
"id": "",
"page": "0",
"size": "20",
"sort": "relevance,desc",
"locale": "en",
"source": "",
"keyword": "",
"includeTest": "no",
"classificationId": "",
"includeSpellcheck": "no",
"classificationName": "",
"includeLicensedContent": "no"
}
response = requests.get(
"https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/attractions",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/attractions');
url.searchParams.set('id', '');
url.searchParams.set('page', '0');
url.searchParams.set('size', '20');
url.searchParams.set('sort', 'relevance,desc');
url.searchParams.set('locale', 'en');
url.searchParams.set('source', '');
url.searchParams.set('keyword', '');
url.searchParams.set('includeTest', 'no');
url.searchParams.set('classificationId', '');
url.searchParams.set('includeSpellcheck', 'no');
url.searchParams.set('classificationName', '');
url.searchParams.set('includeLicensedContent', 'no');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/attractions")
q := baseURL.Query()
q.Set("id", "")
q.Set("page", "0")
q.Set("size", "20")
q.Set("sort", "relevance,desc")
q.Set("locale", "en")
q.Set("source", "")
q.Set("keyword", "")
q.Set("includeTest", "no")
q.Set("classificationId", "")
q.Set("includeSpellcheck", "no")
q.Set("classificationName", "")
q.Set("includeLicensedContent", "no")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/attractions")
uri.query = URI.encode_www_form({
"id" => "",
"page" => "0",
"size" => "20",
"sort" => "relevance,desc",
"locale" => "en",
"source" => "",
"keyword" => "",
"includeTest" => "no",
"classificationId" => "",
"includeSpellcheck" => "no",
"classificationName" => "",
"includeLicensedContent" => "no"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/attractions?" . http_build_query([
"id" => "",
"page" => "0",
"size" => "20",
"sort" => "relevance,desc",
"locale" => "en",
"source" => "",
"keyword" => "",
"includeTest" => "no",
"classificationId" => "",
"includeSpellcheck" => "no",
"classificationName" => "",
"includeLicensedContent" => "no"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Find classifications and filter your search by name, and much more. Classifications help define the nature of attractions and events.
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/classifications?id=&page=0&size=20&sort=name%2Casc&locale=en&source=&keyword=&includeTest=no&includeSpellcheck=no&includeLicensedContent=no"
import requests
params = {
"id": "",
"page": "0",
"size": "20",
"sort": "name,asc",
"locale": "en",
"source": "",
"keyword": "",
"includeTest": "no",
"includeSpellcheck": "no",
"includeLicensedContent": "no"
}
response = requests.get(
"https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/classifications",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/classifications');
url.searchParams.set('id', '');
url.searchParams.set('page', '0');
url.searchParams.set('size', '20');
url.searchParams.set('sort', 'name,asc');
url.searchParams.set('locale', 'en');
url.searchParams.set('source', '');
url.searchParams.set('keyword', '');
url.searchParams.set('includeTest', 'no');
url.searchParams.set('includeSpellcheck', 'no');
url.searchParams.set('includeLicensedContent', 'no');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/classifications")
q := baseURL.Query()
q.Set("id", "")
q.Set("page", "0")
q.Set("size", "20")
q.Set("sort", "name,asc")
q.Set("locale", "en")
q.Set("source", "")
q.Set("keyword", "")
q.Set("includeTest", "no")
q.Set("includeSpellcheck", "no")
q.Set("includeLicensedContent", "no")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/classifications")
uri.query = URI.encode_www_form({
"id" => "",
"page" => "0",
"size" => "20",
"sort" => "name,asc",
"locale" => "en",
"source" => "",
"keyword" => "",
"includeTest" => "no",
"includeSpellcheck" => "no",
"includeLicensedContent" => "no"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/classifications?" . http_build_query([
"id" => "",
"page" => "0",
"size" => "20",
"sort" => "name,asc",
"locale" => "en",
"source" => "",
"keyword" => "",
"includeTest" => "no",
"includeSpellcheck" => "no",
"includeLicensedContent" => "no"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Find events and filter your search by location, date, availability, and much more.
Hover any highlighted part to learn what it does
curl -X GET "https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/events?id=&city=&page=0&size=20&sort=relevance%2Cdesc&unit=miles&dmaId=&locale=en&radius=50&source=&keyword=&latlong=&venueId=&geoPoint=&marketId=&segmentId=&stateCode=&includeTBA=no%20if%20date%20parameter%20sent%2C%20yes%20otherwise&includeTBD=no%20if%20date%20parameter%20sent%2C%20yes%20otherwise&postalCode=&promoterId=&countryCode=&endDateTime=&includeTest=no&segmentName=&attractionId=&startDateTime=&classificationId=&clientVisibility=&includeSpellcheck=no&onsaleEndDateTime=&onsaleOnStartDate=&classificationName=&onsaleStartDateTime=&includeLicensedContent=no&onsaleOnAfterStartDate="
import requests
params = {
"id": "",
"city": "",
"page": "0",
"size": "20",
"sort": "relevance,desc",
"unit": "miles",
"dmaId": "",
"locale": "en",
"radius": "50",
"source": "",
"keyword": "",
"latlong": "",
"venueId": "",
"geoPoint": "",
"marketId": "",
"segmentId": "",
"stateCode": "",
"includeTBA": "no if date parameter sent, yes otherwise",
"includeTBD": "no if date parameter sent, yes otherwise",
"postalCode": "",
"promoterId": "",
"countryCode": "",
"endDateTime": "",
"includeTest": "no",
"segmentName": "",
"attractionId": "",
"startDateTime": "",
"classificationId": "",
"clientVisibility": "",
"includeSpellcheck": "no",
"onsaleEndDateTime": "",
"onsaleOnStartDate": "",
"classificationName": "",
"onsaleStartDateTime": "",
"includeLicensedContent": "no",
"onsaleOnAfterStartDate": ""
}
response = requests.get(
"https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/events",
params=params,
)
print(response.json())const url = new URL('https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/events');
url.searchParams.set('id', '');
url.searchParams.set('city', '');
url.searchParams.set('page', '0');
url.searchParams.set('size', '20');
url.searchParams.set('sort', 'relevance,desc');
url.searchParams.set('unit', 'miles');
url.searchParams.set('dmaId', '');
url.searchParams.set('locale', 'en');
url.searchParams.set('radius', '50');
url.searchParams.set('source', '');
url.searchParams.set('keyword', '');
url.searchParams.set('latlong', '');
url.searchParams.set('venueId', '');
url.searchParams.set('geoPoint', '');
url.searchParams.set('marketId', '');
url.searchParams.set('segmentId', '');
url.searchParams.set('stateCode', '');
url.searchParams.set('includeTBA', 'no if date parameter sent, yes otherwise');
url.searchParams.set('includeTBD', 'no if date parameter sent, yes otherwise');
url.searchParams.set('postalCode', '');
url.searchParams.set('promoterId', '');
url.searchParams.set('countryCode', '');
url.searchParams.set('endDateTime', '');
url.searchParams.set('includeTest', 'no');
url.searchParams.set('segmentName', '');
url.searchParams.set('attractionId', '');
url.searchParams.set('startDateTime', '');
url.searchParams.set('classificationId', '');
url.searchParams.set('clientVisibility', '');
url.searchParams.set('includeSpellcheck', 'no');
url.searchParams.set('onsaleEndDateTime', '');
url.searchParams.set('onsaleOnStartDate', '');
url.searchParams.set('classificationName', '');
url.searchParams.set('onsaleStartDateTime', '');
url.searchParams.set('includeLicensedContent', 'no');
url.searchParams.set('onsaleOnAfterStartDate', '');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/events")
q := baseURL.Query()
q.Set("id", "")
q.Set("city", "")
q.Set("page", "0")
q.Set("size", "20")
q.Set("sort", "relevance,desc")
q.Set("unit", "miles")
q.Set("dmaId", "")
q.Set("locale", "en")
q.Set("radius", "50")
q.Set("source", "")
q.Set("keyword", "")
q.Set("latlong", "")
q.Set("venueId", "")
q.Set("geoPoint", "")
q.Set("marketId", "")
q.Set("segmentId", "")
q.Set("stateCode", "")
q.Set("includeTBA", "no if date parameter sent, yes otherwise")
q.Set("includeTBD", "no if date parameter sent, yes otherwise")
q.Set("postalCode", "")
q.Set("promoterId", "")
q.Set("countryCode", "")
q.Set("endDateTime", "")
q.Set("includeTest", "no")
q.Set("segmentName", "")
q.Set("attractionId", "")
q.Set("startDateTime", "")
q.Set("classificationId", "")
q.Set("clientVisibility", "")
q.Set("includeSpellcheck", "no")
q.Set("onsaleEndDateTime", "")
q.Set("onsaleOnStartDate", "")
q.Set("classificationName", "")
q.Set("onsaleStartDateTime", "")
q.Set("includeLicensedContent", "no")
q.Set("onsaleOnAfterStartDate", "")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/events")
uri.query = URI.encode_www_form({
"id" => "",
"city" => "",
"page" => "0",
"size" => "20",
"sort" => "relevance,desc",
"unit" => "miles",
"dmaId" => "",
"locale" => "en",
"radius" => "50",
"source" => "",
"keyword" => "",
"latlong" => "",
"venueId" => "",
"geoPoint" => "",
"marketId" => "",
"segmentId" => "",
"stateCode" => "",
"includeTBA" => "no if date parameter sent, yes otherwise",
"includeTBD" => "no if date parameter sent, yes otherwise",
"postalCode" => "",
"promoterId" => "",
"countryCode" => "",
"endDateTime" => "",
"includeTest" => "no",
"segmentName" => "",
"attractionId" => "",
"startDateTime" => "",
"classificationId" => "",
"clientVisibility" => "",
"includeSpellcheck" => "no",
"onsaleEndDateTime" => "",
"onsaleOnStartDate" => "",
"classificationName" => "",
"onsaleStartDateTime" => "",
"includeLicensedContent" => "no",
"onsaleOnAfterStartDate" => ""
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://api.apis.guru/v2/specs/ticketmaster.com/discovery/v2/discovery/v2/events?" . http_build_query([
"id" => "",
"city" => "",
"page" => "0",
"size" => "20",
"sort" => "relevance,desc",
"unit" => "miles",
"dmaId" => "",
"locale" => "en",
"radius" => "50",
"source" => "",
"keyword" => "",
"latlong" => "",
"venueId" => "",
"geoPoint" => "",
"marketId" => "",
"segmentId" => "",
"stateCode" => "",
"includeTBA" => "no if date parameter sent, yes otherwise",
"includeTBD" => "no if date parameter sent, yes otherwise",
"postalCode" => "",
"promoterId" => "",
"countryCode" => "",
"endDateTime" => "",
"includeTest" => "no",
"segmentName" => "",
"attractionId" => "",
"startDateTime" => "",
"classificationId" => "",
"clientVisibility" => "",
"includeSpellcheck" => "no",
"onsaleEndDateTime" => "",
"onsaleOnStartDate" => "",
"classificationName" => "",
"onsaleStartDateTime" => "",
"includeLicensedContent" => "no",
"onsaleOnAfterStartDate" => ""
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Postman Setup Guide
- See official documentation for authentication and setup.
What can you build with Discovery API?
Discovery API is a Commerce API. Developers commonly use commerce APIs for:
- syncing product catalogues and inventory levels
- building price comparison and deal-finder tools
- processing orders and tracking shipments
- managing customer wishlists and reviews
- automating abandoned-cart and promotional emails
No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. Discovery API is free to use, making it a low-risk choice to experiment with.
New to APIs? Read our beginner's guide