The Ticketmaster Discovery API allows you to search for events, attractions, or venues.
Bring your own key. This API needs your own Ticketmaster key - get one from the provider, add it once below, and the proxy injects it on every call. Your OmniStream plan covers the unified SDK, key storage, and proxy - the provider's own rate limits still apply to your key.
This is a community listing. If you own this API, you can request ownership.
npm install omnistream-sdkimport { OmniClient } from "omnistream-sdk";
const omni = new OmniClient({ token: process.env.OMNI_KEY! });
// One key reaches every API on the marketplace.
const data = await omni.call("ticketmaster/find");One install, one key - the same client calls every API on the marketplace.
Sorting order of the search result. Allowable Values : 'name,asc', 'name,desc', 'relevance,asc', 'relevance,desc'
Filter attractions by classification name: name of any segment, genre, sub-genre, type, sub-type
Filter attractions by classification id: id of any segment, genre, sub-genre, type, sub-type
Keyword to search on
Filter entities by its id
Filter entities by its source name
True if you want to have entities flag as test in the response. Only, if you only wanted test entities
Page number
Page size of the response
The locale in ISO code format. Multiple comma-separated values can be provided. When omitting the country part of the code (e.g. only 'en' or 'fr') then the first matching locale is used. When using a '*' it matches all locales. '*' can only be used at the end (e.g. 'en-us,en,*')
Yes if you want to display licensed content
yes, to include spell check suggestions in the response.
Attraction Search
Get Attraction Details
Classification Search
Get Genre Details
/**
* Ticketmaster - generated by OmniStream from Ticketmaster's OpenAPI spec.
* One typed method per endpoint. A single Omni key reaches the API.
*/
const DEFAULT_BASE = "https://grid.skinvaults.online/v1/proxy/ticketmaster";
export class TicketmasterError extends Error {
status: number;
code?: string;
constructor(status: number, code: string | undefined, message?: string) {
super(message || `Ticketmaster error ${status}`);
this.name = "TicketmasterError";
this.status = status;
this.code = code;
}
}
export interface TicketmasterOptions {
baseUrl?: string;
fetch?: typeof fetch;
timeoutMs?: number;
}
export class Ticketmaster {
/** @param token Your OmniStream key (one key for every API). */
constructor(private token: string, private opts: TicketmasterOptions = {}) {
if (!token) throw new Error("Ticketmaster: token is required");
}
rateLimit: { remainingMinute?: number; remainingDay?: number } | null = null;
private async _request(method: string, path: string, { params, body }: { params?: Record<string, unknown>; body?: unknown } = {}): Promise<any> {
const f = this.opts.fetch ?? globalThis.fetch;
const url = new URL((this.opts.baseUrl ?? DEFAULT_BASE).replace(/\/+$/, "") + path);
if (params) for (const [k, v] of Object.entries(params)) if (v != null) url.searchParams.set(k, String(v));
const headers: Record<string, string> = { "x-omni-key": this.token };
if (body !== undefined) headers["content-type"] = "application/json";
const res = await f(url, { method, headers, body: body !== undefined ? JSON.stringify(body) : undefined });
this.rateLimit = {
remainingMinute: Number(res.headers.get("x-ratelimit-remaining-minute")) || undefined,
remainingDay: Number(res.headers.get("x-ratelimit-remaining-day")) || undefined,
};
const data = await res.json().catch(() => ({}));
if (!res.ok) throw new TicketmasterError(res.status, data?.error?.code, data?.error?.message);
return data.data ?? data;
}
/** Attraction Search */
find(params: { "sort"?: string; "classificationName"?: unknown[]; "classificationId"?: unknown[]; "keyword"?: string; "id"?: string; "source"?: string; "includeTest"?: string; "page"?: string; "size"?: string; "locale"?: string; "includeLicensedContent"?: string; "includeSpellcheck"?: string }): Promise<any> {
return this._request("GET", "/discovery/v2/attractions", { params });
}
/** Get Attraction Details */
get(params: { "id": string; "locale"?: string; "includeLicensedContent"?: string }): Promise<any> {
return this._request("GET", "/discovery/v2/attractions/{id}", { params });
}
/** Classification Search */
getdiscoveryV2Classifications(params: { "sort"?: string; "keyword"?: string; "id"?: string; "source"?: string; "includeTest"?: string; "page"?: string; "size"?: string; "locale"?: string; "includeLicensedContent"?: string; "includeSpellcheck"?: string }): Promise<any> {
return this._request("GET", "/discovery/v2/classifications", { params });
}
/** Get Genre Details */
getGenre(params: { "id": string; "locale"?: string; "includeLicensedContent"?: string }): Promise<any> {
return this._request("GET", "/discovery/v2/classifications/genres/{id}", { params });
}
/** Get Segment Details */
getSegment(params: { "id": string; "locale"?: string; "includeLicensedContent"?: string }): Promise<any> {
return this._request("GET", "/discovery/v2/classifications/segments/{id}", { params });
}
/** Get Sub-Genre Details */
getSubgenre(params: { "id": string; "locale"?: string; "includeLicensedContent"?: string }): Promise<any> {
return this._request("GET", "/discovery/v2/classifications/subgenres/{id}", { params });
}
/** Get Classification Details */
getdiscoveryV2ClassificationsId(params: { "id": string; "locale"?: string; "includeLicensedContent"?: string }): Promise<any> {
return this._request("GET", "/discovery/v2/classifications/{id}", { params });
}
/** Event Search */
getdiscoveryV2Events(params: { "sort"?: string; "startDateTime"?: string; "endDateTime"?: string; "onsaleStartDateTime"?: string; "onsaleOnStartDate"?: string; "onsaleOnAfterStartDate"?: string; "onsaleEndDateTime"?: string; "city"?: string; "countryCode"?: string; "stateCode"?: string; "postalCode"?: string; "venueId"?: string; "attractionId"?: string; "segmentId"?: string; "segmentName"?: string; "classificationName"?: unknown[]; "classificationId"?: unknown[]; "marketId"?: string; "promoterId"?: string; "dmaId"?: string; "includeTBA"?: string; "includeTBD"?: string; "clientVisibility"?: string; "latlong"?: string; "radius"?: string; "unit"?: string; "geoPoint"?: string; "keyword"?: string; "id"?: string; "source"?: string; "includeTest"?: string; "page"?: string; "size"?: string; "locale"?: string; "includeLicensedContent"?: string; "includeSpellcheck"?: string }): Promise<any> {
return this._request("GET", "/discovery/v2/events", { params });
}
/** Get Event Details */
getdiscoveryV2EventsId(params: { "id": string; "locale"?: string; "includeLicensedContent"?: string }): Promise<any> {
return this._request("GET", "/discovery/v2/events/{id}", { params });
}
/** Get Event Images */
getImages(params: { "id": string; "locale"?: string; "includeLicensedContent"?: string }): Promise<any> {
return this._request("GET", "/discovery/v2/events/{id}/images", { params });
}
/** Find Suggest */
getdiscoveryV2Suggest(params: { "keyword"?: string; "source"?: string; "latlong"?: string; "radius"?: string; "unit"?: string; "size"?: string; "includeFuzzy"?: string; "clientVisibility"?: string; "countryCode"?: string; "includeTBA"?: string; "includeTBD"?: string; "segmentId"?: string; "geoPoint"?: string; "locale"?: string; "includeLicensedContent"?: string; "includeSpellcheck"?: string }): Promise<any> {
return this._request("GET", "/discovery/v2/suggest", { params });
}
/** Venue Search */
getdiscoveryV2Venues(params: { "sort"?: string; "stateCode"?: string; "countryCode"?: string; "latlong"?: string; "radius"?: string; "unit"?: string; "geoPoint"?: string; "keyword"?: string; "id"?: string; "source"?: string; "includeTest"?: string; "page"?: string; "size"?: string; "locale"?: string; "includeLicensedContent"?: string; "includeSpellcheck"?: string }): Promise<any> {
return this._request("GET", "/discovery/v2/venues", { params });
}
/** Get Venue Details */
getdiscoveryV2VenuesId(params: { "id": string; "locale"?: string; "includeLicensedContent"?: string }): Promise<any> {
return this._request("GET", "/discovery/v2/venues/{id}", { params });
}
}
export default Ticketmaster;
No reviews yet. Be the first to rate this API.
Yes. Ticketmaster uses apiKey authentication, so you bring your own key from the provider. You store it once on OmniStream and the proxy injects it into every call, so your code only ever sends your Omni key.
The Ticketmaster Discovery API allows you to search for events, attractions, or venues. It exposes 13 endpoints over GET, including GET /discovery/v2/attractions, GET /discovery/v2/attractions/{id}, GET /discovery/v2/classifications.
Install the OmniStream SDK for your language and call Ticketmaster through it. The client is generated from this API's OpenAPI spec, so parameters and responses are fully typed, and the same client also calls every other API in the marketplace.
You can start on the free plan. OmniStream charges for the unified SDK, key storage and proxy rather than for Ticketmaster itself, and Ticketmaster's own rate limits still apply to your provider key.
Get Segment Details
Get Sub-Genre Details
Get Classification Details
Event Search
Get Event Details
Get Event Images
Find Suggest
Venue Search
Get Venue Details