Valorant and League of Legends matches
Esports matches. Valorant (vlr.gg): upcoming and live, or results, 50 a page with teams, countries, map score, winner, event and stage, and the time until or since the match (start_time_approx in UTC); pass next_page back as page. Valorant filters: team_id (that team's matches), event_id (every match of an event), date_from/date_to (matches of the page on those days); each match has has_vods. match_id returns one match instead: event and stage, UTC start time, patch, teams, series score, best-of, the map veto, every map with its score, who picked it and its duration, streams and per-map VOD links. League of Legends (lolesports.com): schedule of every league or one (league slug from /esports/v1/leagues) with start time, state, block, best-of, teams with game wins, outcome and record; pass older_cursor or newer_cursor back as cursor.
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
gamerequired | valorant | lol | valorant or lol. Example: valorant |
status | string | valorant: upcoming (default) or results. lol: all (default), upcoming, live or results. |
league | string | lol only: league slug (lck, lec, lpl, lcs, worlds, msi ...) or id. |
page | integer | valorant: page number. |
cursor | string | lol: older_cursor / newer_cursor from the previous answer. |
team_id | string | valorant only: a vlr.gg team id (e.g. 2593 for FNATIC): that team's upcoming matches or results (with status), paged. |
event_id | string | valorant only: a vlr.gg event id (e.g. 2004): every upcoming match or result of the event on one page. |
date_from | string | valorant only: YYYY-MM-DD; keeps the matches of the page on or after this day. |
date_to | string | valorant only: YYYY-MM-DD; keeps the matches of the page on or before this day. |
match_id | string | valorant only: a vlr.gg match id (the number in the match URL): that match's details (maps, veto, streams, VODs, patch) instead of a list. |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/esports/v1/matches?game=valorant" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/esports/v1/matches",
params={"game": "valorant"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/esports/v1/matches");
url.searchParams.set("game", "valorant");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).