metabot APImetabot.gg ↗
Access current TFT meta team compositions, champion stats, item builds, trait synergies, and performance metrics via the metabot.gg API.
What is the metabot API?
The metabot.gg TFT API exposes one endpoint — get_team_comps — that returns the full set of current-patch meta team compositions for Teamfight Tactics, with each composition containing over a dozen fields covering tier ratings, win rate, average placement, top-4 rate, pick rate, required champions with star levels and costs, carry champions with recommended item builds, active traits, and augment suggestions.
curl -X GET 'https://api.parse.bot/scraper/fe37aaf3-5626-4cf5-a39d-eea9c005ae9b/get_team_comps?sort=winRate' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace metabot-gg-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: MetabotTFT SDK — bounded, re-runnable; every call capped."""
from parse_apis.Metabot_TFT_Meta_API import MetabotTFT, Sort, ParseError
client = MetabotTFT()
# Fetch top meta compositions sorted by top-4 rate
for comp in client.compositions.list(sort=Sort.TOP_FOUR_RATE, limit=3):
print(comp.name, f"Tier={comp.metabot_tier}", f"Top4={comp.top_four_rate:.1f}%")
for champ in comp.champions[:3]:
print(f" {champ.name} ({champ.cost}g, {champ.recommended_stars}★)")
# Drill-down: inspect a single comp's carry builds
top_comp = client.compositions.list(sort=Sort.TOP_FOUR_RATE, limit=1).first()
if top_comp:
for carry in top_comp.carries[:2]:
print(f"Carry: {carry.champion_id}")
for item_set in carry.recommended_items[:1]:
print(f" Items: {item_set.item_names}, WR={item_set.win_rate:.1f}%")
# Typed error handling
try:
for comp in client.compositions.list(sort=Sort.PLACEMENT, limit=2):
print(comp.name, f"AvgPlace={comp.avg_placement:.2f}")
except ParseError as e:
print(f"error: {e}")
print("exercised: compositions.list")
Fetches the current patch's meta team compositions for TFT. Each composition includes its tier rating, performance metrics (average placement, first-place rate, top-4 rate, pick rate), required champions with costs and recommended star levels, carry champions with recommended items, active traits, and top item builds. Results are sorted by the chosen metric. Data refreshes hourly from ranked match statistics.
| Param | Type | Description |
|---|---|---|
| sort | string | Metric to sort compositions by. winRate sorts by top-4 rate (placing in top 4 out of 8 players), firstPlaceRate by actual first-place finishes, placement by average placement (ascending), pickRate by contested frequency. |
{
"type": "object",
"fields": {
"meta": "object with set number, patch version, sort metric, total comp count, sample size (total matches), and ISO last-updated timestamp",
"comps": "array of team composition objects with full champion, item, and trait data"
},
"sample": {
"data": {
"meta": {
"set": 17,
"sort": "winRate",
"patch": "16.15.1",
"sample_size": 11485,
"total_comps": 65,
"last_updated": "2026-08-03T10:56:49.554037+00:00"
},
"comps": [
{
"id": "TFT17_Aatrox-TFT17_Gragas-TFT17_Maokai-TFT17_MissFortune-TFT17_Morgana-TFT17_Ornn-TFT17_Rhaast-TFT17_Viktor",
"set": 17,
"name": "Conduit Miss Fortune",
"patch": "16.15.1",
"traits": [
{
"id": "TFT17_DRX",
"name": "N.O.V.A.",
"active_tier": 1
}
],
"carries": [
{
"champion_id": "TFT17_Viktor",
"recommended_items": [
{
"win_rate": 92.16,
"pick_rate": 7.36,
"item_names": [
"Jeweled Gauntlet",
"Rabadon's Deathcap",
"Rabadon's Deathcap"
]
}
]
}
],
"matches": 435,
"win_rate": 30.02,
"champions": [
{
"id": "TFT17_Aatrox",
"cost": 1,
"name": "Aatrox",
"traits": [
"N.O.V.A.",
"Bastion"
],
"recommended_stars": 2
}
],
"pick_rate": 0.51,
"team_size": 8,
"top_builds": [
{
"items": [
{
"id": "TFT_Item_JeweledGauntlet",
"name": "Jeweled Gauntlet"
}
],
"win_rate": 92.16,
"pick_rate": 7.36,
"champion_id": "TFT17_Viktor",
"avg_placement": 1.72,
"champion_name": "Viktor"
}
],
"metabot_tier": "S",
"avg_placement": 2.8,
"top_four_rate": 79.58,
"contested_risk": 76.56
}
]
},
"status": "success"
}
}About the metabot API
What the API Returns
The single get_team_comps endpoint returns two top-level objects. The meta object identifies the current TFT set number, patch version, the active sort metric, a total count of compositions returned, and an ISO 8601 timestamp indicating when the data was last updated. The comps array contains one object per team composition, each with its tier rating, all performance metrics, and the full roster of champions and items.
Compositions and Performance Data
Each composition in comps includes placement metrics (average placement, win rate, top-4 rate, pick rate) that reflect real match data for the current patch. Champions in a composition carry cost and recommended star-level fields, letting you distinguish early-game units from high-cost carries. Carry champions list specific recommended items, so item-building decisions can be derived directly from the response.
Sorting and Freshness
The optional sort parameter on get_team_comps lets you order results by a specific performance metric — useful when you want to surface compositions by win rate versus average placement versus pick rate. The meta.last_updated timestamp in the response tells you exactly how current the data is, which matters when the TFT patch cadence is fast. No pagination parameter is needed; all compositions for the current patch are returned in a single response.
The metabot API is a managed, monitored endpoint for metabot.gg — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when metabot.gg changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official metabot.gg API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Display a tier-ranked list of current TFT meta compositions inside a companion app or overlay
- Build a champion item-recommendation tool that surfaces carry builds from the
compsarray - Track win rate and average placement trends across patches by polling
get_team_compsafter each patch update - Filter and surface top-4 rate leaders for players optimizing for consistent placement over wins
- Populate a TFT coaching tool with trait synergy and augment data from current meta compositions
- Generate patch-note impact summaries by comparing composition tier ratings before and after a patch
- Feed composition pick rate data into a stats dashboard to identify rising and declining strategies
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does metabot.gg offer an official developer API?+
What does the `sort` parameter actually change in the response?+
sort parameter reorders the comps array by the metric you specify — for example, win rate, average placement, or pick rate. The meta.sort field in the response echoes back which metric is active. All compositions are still returned; only their order changes.Does the API cover historical patch data or multiple TFT sets?+
meta object returns the active set number and patch version, but prior patches and older sets are not accessible through this endpoint. You can fork it on Parse and revise it to add an endpoint that stores and queries historical snapshots.Are individual champion win rates or item win rates available separately from team compositions?+
How fresh is the data returned by `get_team_comps`?+
meta.last_updated ISO timestamp in every response tells you when the composition data was last refreshed. Freshness depends on the current TFT patch cycle — data typically reflects the active patch shortly after it goes live, but the timestamp is the definitive source of truth for any given response.