PandaScore esports data - live scores, matches, tournaments, teams, players, and odds across major titles.
Bring your own key. This API needs your own PandaScore Esports 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("pandascore/get_additions");One install, one key - the same client calls every API on the marketplace.
Pagination in the form of `page=2` or `page[size]=30&page[number]=2`
Equivalent to `page[size]`
Filter by result type(s)
Filter out older results
Filter by videogame(s)
List additions
List changes
List deletions
List changes, additions and deletions
List leagues
/**
* PandaScoreEsports - generated by OmniStream from PandaScore Esports's OpenAPI spec.
* One typed method per endpoint. A single Omni key reaches the API.
*/
const DEFAULT_BASE = "https://grid.skinvaults.online/v1/proxy/pandascore";
export class PandaScoreEsportsError extends Error {
status: number;
code?: string;
constructor(status: number, code: string | undefined, message?: string) {
super(message || `PandaScoreEsports error ${status}`);
this.name = "PandaScoreEsportsError";
this.status = status;
this.code = code;
}
}
export interface PandaScoreEsportsOptions {
baseUrl?: string;
fetch?: typeof fetch;
timeoutMs?: number;
}
export class PandaScoreEsports {
/** @param token Your OmniStream key (one key for every API). */
constructor(private token: string, private opts: PandaScoreEsportsOptions = {}) {
if (!token) throw new Error("PandaScoreEsports: 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 PandaScoreEsportsError(res.status, data?.error?.code, data?.error?.message);
return data.data ?? data;
}
/** List additions */
getAdditions(params: { "page"?: string; "per_page"?: number; "type"?: string; "since"?: string; "videogame"?: string }): Promise<any> {
return this._request("GET", "/additions", { params });
}
/** List changes */
getChanges(params: { "page"?: string; "per_page"?: number; "type"?: string; "since"?: string; "videogame"?: string }): Promise<any> {
return this._request("GET", "/changes", { params });
}
/** List deletions */
getDeletions(params: { "page"?: string; "per_page"?: number; "type"?: string; "since"?: string; "videogame"?: string }): Promise<any> {
return this._request("GET", "/deletions", { params });
}
/** List changes, additions and deletions */
getIncidents(params: { "page"?: string; "per_page"?: number; "type"?: string; "since"?: string; "videogame"?: string }): Promise<any> {
return this._request("GET", "/incidents", { params });
}
/** List leagues */
getLeagues(params: { "search"?: string; "sort"?: string; "range"?: string; "filter"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/leagues", { params });
}
/** Get a league */
getLeaguesLeagueIdOrSlug(params: { "league_id_or_slug": string }): Promise<any> {
return this._request("GET", "/leagues/{league_id_or_slug}", { params });
}
/** Get matches for a league */
getLeaguesLeagueIdOrSlugMatches(params: { "league_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/leagues/{league_id_or_slug}/matches", { params });
}
/** Get past matches for league */
getLeaguesLeagueIdOrSlugMatchesPast(params: { "league_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/leagues/{league_id_or_slug}/matches/past", { params });
}
/** Get running matches for league */
getLeaguesLeagueIdOrSlugMatchesRunning(params: { "league_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/leagues/{league_id_or_slug}/matches/running", { params });
}
/** Get upcoming matches for league */
getLeaguesLeagueIdOrSlugMatchesUpcoming(params: { "league_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/leagues/{league_id_or_slug}/matches/upcoming", { params });
}
/** List series of a league */
getLeaguesLeagueIdOrSlugSeries(params: { "league_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/leagues/{league_id_or_slug}/series", { params });
}
/** Get tournaments for a league */
getLeaguesLeagueIdOrSlugTournaments(params: { "league_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/leagues/{league_id_or_slug}/tournaments", { params });
}
/** List lives matches */
getLives(params: { "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/lives", { params });
}
/** List matches */
getMatches(params: { "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/matches", { params });
}
/** Get past matches */
getMatchesPast(params: { "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/matches/past", { params });
}
/** Get running matches */
getMatchesRunning(params: { "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/matches/running", { params });
}
/** Get upcoming matches */
getMatchesUpcoming(params: { "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/matches/upcoming", { params });
}
/** Get a match */
getMatchesMatchIdOrSlug(params: { "match_id_or_slug": string }): Promise<any> {
return this._request("GET", "/matches/{match_id_or_slug}", { params });
}
/** Get match's opponents */
getMatchesMatchIdOrSlugOpponents(params: { "match_id_or_slug": string }): Promise<any> {
return this._request("GET", "/matches/{match_id_or_slug}/opponents", { params });
}
/** List players */
getPlayers(params: { "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/players", { params });
}
/** Get a player */
getPlayersPlayerIdOrSlug(params: { "player_id_or_slug": string }): Promise<any> {
return this._request("GET", "/players/{player_id_or_slug}", { params });
}
/** Get matches for a player */
getPlayersPlayerIdOrSlugMatches(params: { "player_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/players/{player_id_or_slug}/matches", { params });
}
/** List series */
getSeries(params: { "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/series", { params });
}
/** Get past series */
getSeriesPast(params: { "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/series/past", { params });
}
/** Get running series */
getSeriesRunning(params: { "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/series/running", { params });
}
/** Get upcoming series */
getSeriesUpcoming(params: { "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/series/upcoming", { params });
}
/** Get a serie */
getSeriesSerieIdOrSlug(params: { "serie_id_or_slug": string }): Promise<any> {
return this._request("GET", "/series/{serie_id_or_slug}", { params });
}
/** Get matches for a serie */
getSeriesSerieIdOrSlugMatches(params: { "serie_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/series/{serie_id_or_slug}/matches", { params });
}
/** Get past matches for serie */
getSeriesSerieIdOrSlugMatchesPast(params: { "serie_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/series/{serie_id_or_slug}/matches/past", { params });
}
/** Get running matches for serie */
getSeriesSerieIdOrSlugMatchesRunning(params: { "serie_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/series/{serie_id_or_slug}/matches/running", { params });
}
/** Get upcoming matches for serie */
getSeriesSerieIdOrSlugMatchesUpcoming(params: { "serie_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/series/{serie_id_or_slug}/matches/upcoming", { params });
}
/** Get players for a serie */
getSeriesSerieIdOrSlugPlayers(params: { "serie_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/series/{serie_id_or_slug}/players", { params });
}
/** Get tournaments for a serie */
getSeriesSerieIdOrSlugTournaments(params: { "serie_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/series/{serie_id_or_slug}/tournaments", { params });
}
/** List teams */
getTeams(params: { "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/teams", { params });
}
/** Get a team */
getTeamsTeamIdOrSlug(params: { "team_id_or_slug": string }): Promise<any> {
return this._request("GET", "/teams/{team_id_or_slug}", { params });
}
/** Get leagues for a team */
getTeamsTeamIdOrSlugLeagues(params: { "team_id_or_slug": string; "search"?: string; "sort"?: string; "range"?: string; "filter"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/teams/{team_id_or_slug}/leagues", { params });
}
/** Get matches for team */
getTeamsTeamIdOrSlugMatches(params: { "team_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/teams/{team_id_or_slug}/matches", { params });
}
/** Get series for a team */
getTeamsTeamIdOrSlugSeries(params: { "team_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/teams/{team_id_or_slug}/series", { params });
}
/** Get tournaments for a team */
getTeamsTeamIdOrSlugTournaments(params: { "team_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/teams/{team_id_or_slug}/tournaments", { params });
}
/** List tournaments */
getTournaments(params: { "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/tournaments", { params });
}
/** Get past tournaments */
getTournamentsPast(params: { "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/tournaments/past", { params });
}
/** Get running tournaments */
getTournamentsRunning(params: { "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/tournaments/running", { params });
}
/** Get upcoming tournaments */
getTournamentsUpcoming(params: { "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/tournaments/upcoming", { params });
}
/** Get a tournament */
getTournamentsTournamentIdOrSlug(params: { "tournament_id_or_slug": string }): Promise<any> {
return this._request("GET", "/tournaments/{tournament_id_or_slug}", { params });
}
/** Get a tournament's brackets */
getTournamentsTournamentIdOrSlugBrackets(params: { "tournament_id_or_slug": string; "filter"?: string; "range"?: string; "sort"?: string; "search"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/tournaments/{tournament_id_or_slug}/brackets", { params });
}
/** Get matches for tournament */
getTournamentsTournamentIdOrSlugMatches(params: { "tournament_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/tournaments/{tournament_id_or_slug}/matches", { params });
}
/** Get players for a tournament */
getTournamentsTournamentIdOrSlugPlayers(params: { "tournament_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/tournaments/{tournament_id_or_slug}/players", { params });
}
/** Get rosters for a tournament */
getTournamentsTournamentIdOrSlugRosters(params: { "tournament_id_or_slug": string }): Promise<any> {
return this._request("GET", "/tournaments/{tournament_id_or_slug}/rosters", { params });
}
/** Get tournament standings */
getTournamentsTournamentIdOrSlugStandings(params: { "tournament_id_or_slug": string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/tournaments/{tournament_id_or_slug}/standings", { params });
}
/** Get teams for a tournament */
getTournamentsTournamentIdOrSlugTeams(params: { "tournament_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/tournaments/{tournament_id_or_slug}/teams", { params });
}
/** List videogames */
getVideogames(params: { "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/videogames", { params });
}
/** Get a videogame */
getVideogamesVideogameIdOrSlug(params: { "videogame_id_or_slug": string }): Promise<any> {
return this._request("GET", "/videogames/{videogame_id_or_slug}", { params });
}
getVideogamesVideogameIdOrSlugLeagues(params: { "videogame_id_or_slug": string; "search"?: string; "sort"?: string; "range"?: string; "filter"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/videogames/{videogame_id_or_slug}/leagues", { params });
}
/** List series for a videogame */
getVideogamesVideogameIdOrSlugSeries(params: { "videogame_id_or_slug": string; "filter"?: string; "search"?: string; "sort"?: string; "range"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/videogames/{videogame_id_or_slug}/series", { params });
}
/** Get tournaments for a videogame */
getVideogamesVideogameIdOrSlugTournaments(params: { "videogame_id_or_slug": string; "filter"?: string; "range"?: string; "sort"?: string; "search"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/videogames/{videogame_id_or_slug}/tournaments", { params });
}
/** List videogame versions */
getVideogamesVideogameIdOrSlugVersions(params: { "videogame_id_or_slug": string; "filter"?: string; "range"?: string; "sort"?: string; "search"?: string; "page"?: string; "per_page"?: number }): Promise<any> {
return this._request("GET", "/videogames/{videogame_id_or_slug}/versions", { params });
}
}
export default PandaScoreEsports;
No reviews yet. Be the first to rate this API.
Yes. PandaScore Esports uses bearer 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.
PandaScore esports data - live scores, matches, tournaments, teams, players, and odds across major titles. It exposes 56 endpoints over GET, including GET /additions, GET /changes, GET /deletions.
Install the OmniStream SDK for your language and call PandaScore Esports 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 PandaScore Esports itself, and PandaScore Esports's own rate limits still apply to your provider key.
SkinAPI: Steam & CS2 data API.
Get a league
Get matches for a league
Get past matches for league
Get running matches for league
Get upcoming matches for league
List series of a league
Get tournaments for a league
List lives matches
List matches
Get past matches
Get running matches
Get upcoming matches
Get a match
Get match's opponents
List players
Get a player
Get matches for a player
List series
Get past series
Get running series
Get upcoming series
Get a serie
Get matches for a serie
Get past matches for serie
Get running matches for serie
Get upcoming matches for serie
Get players for a serie
Get tournaments for a serie
List teams
Get a team
Get leagues for a team
Get matches for team
Get series for a team
Get tournaments for a team
List tournaments
Get past tournaments
Get running tournaments
Get upcoming tournaments
Get a tournament
Get a tournament's brackets
Get matches for tournament
Get players for a tournament
Get rosters for a tournament
Get tournament standings
Get teams for a tournament
List videogames
Get a videogame
List series for a videogame
Get tournaments for a videogame
List videogame versions