MLBB APImlbb.gg ↗
Access Mobile Legends: Bang Bang hero tier ratings, win/ban/pick rates, roles, lanes, specialties, and synergy data for every hero via the MLBB.GG API.
What is the MLBB API?
The MLBB.GG API exposes hero performance data for Mobile Legends: Bang Bang across 4 endpoints, covering tier ratings, win/ban/pick rates, roles, lanes, specialties, and synergy partnerships. Use get_hero_attributes to pull stats for a single named hero, or get_all_hero_attributes to retrieve the full roster in one call. Each response includes up to 10 structured fields per hero, giving you everything needed to build tier lists, draft tools, or team composition analyzers.
curl -X GET 'https://api.parse.bot/scraper/2afbecad-7167-4362-9936-663d8553c8c1/get_hero_attributes?hero_name=Miya' \ -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 mlbb-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: mlbb_gg SDK — bounded, re-runnable; every call capped."""
from parse_apis.MLBB_GG_Hero_Attributes_API import MlbbGg, HeroNotFound
client = MlbbGg()
# List all heroes, capped at 3 for the walkthrough
for hero in client.heros.list(limit=3):
print(hero.hero_name, hero.tier, hero.win_rate, hero.specialties)
# Fetch a specific hero by name
miya = client.heros.get(hero_name="Miya")
print(miya.hero_name, miya.tier, miya.points, miya.roles)
# Walk synergy partners for a hero
for partner in miya.synergies.list(limit=3):
print(partner.hero_name, partner.strength, partner.roles)
# List all hero synergies (bulk), capped at 2
for hs in client.hero_synergies.list(limit=2):
print(hs.hero_name, len(hs.synergy))
# Typed error handling for a non-existent hero
try:
client.heros.get(hero_name="FakeHero123")
except HeroNotFound as e:
print("not found:", e.hero_name)
print("exercised: heros.list, heros.get, hero.synergies.list, hero_synergies.list")
Retrieve attributes for a specific hero by name. Returns performance metrics including tier, points score, win/ban/pick rates, roles, lanes, and specialties. Hero name matching is case-insensitive.
| Param | Type | Description |
|---|---|---|
| hero_namerequired | string | Hero name (case-insensitive), e.g. 'Miya', 'Aamon', 'Lapu-Lapu'. |
{
"type": "object",
"fields": {
"tier": "string — current tier rating (SS, S, A, B, C, D)",
"lanes": "string — primary lane assignment",
"roles": "array of role name strings",
"points": "number — numeric tier score",
"hero_id": "integer — internal hero ID",
"ban_rate": "number — ban rate percentage",
"win_rate": "number — win rate percentage",
"hero_name": "string — hero display name",
"pick_rate": "number — pick rate percentage",
"specialties": "array of specialty name strings"
},
"sample": {
"data": {
"tier": "S",
"lanes": "Gold Lane",
"roles": [
"Marksman"
],
"points": 3521.34,
"hero_id": 1,
"ban_rate": 13.32,
"win_rate": 53.47,
"hero_name": "Miya",
"pick_rate": 3.1,
"specialties": [
"Finisher"
]
},
"status": "success"
}
}About the MLBB API
Hero Attributes
get_hero_attributes accepts a hero_name string (case-insensitive) and returns a single hero's current competitive data: tier (SS through D), a numeric points score, win_rate, ban_rate, pick_rate, primary lanes, an array of roles, and an array of specialties. The internal hero_id is also returned, which maps consistently across endpoints. get_all_hero_attributes takes no inputs and returns the same field set for every hero in the roster, along with a total count.
Hero Synergies
get_hero_synergies accepts a hero_name and returns a synergy array listing heroes that pair well with the queried hero. Each partner object includes hero_id, hero_name, a strength rating, and a roles array. This makes it straightforward to build "best duo" features or draft-assist tools. get_all_hero_synergies returns the same structure for the entire roster in a single request, with a total field indicating how many heroes were returned.
Coverage and Freshness
Data reflects the statistics and tier ratings published on mlbb.gg, which tracks the current competitive meta. Tier placements and rates shift with game patches and meta changes, so values reflect the state of the source at retrieval time. Hero name matching is case-insensitive across all endpoints that accept hero_name, so inputs like 'miya', 'Miya', and 'MIYA' all resolve correctly.
The MLBB API is a managed, monitored endpoint for mlbb.gg — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when mlbb.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 mlbb.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?+
- Build a tier list display showing each hero's SS–D rating alongside win and ban rates
- Power a draft assistant that suggests synergy partners using the
synergyarray andstrengthfield - Track meta shifts over time by logging
win_rate,pick_rate, andpointsacross patch cycles - Filter heroes by
rolesorspecialtiesto recommend picks for a specific playstyle - Compare lane coverage across the full roster using
get_all_hero_attributesand thelanesfield - Identify ban priorities by sorting all heroes by
ban_ratefrom the full-roster endpoint - Populate hero selection screens in MLBB companion apps with live tier and rate data
| 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 MLBB.GG have an official developer API?+
What does the `get_hero_synergies` endpoint return, and how is `strength` defined?+
get_hero_synergies returns a synergy array where each entry represents a hero that pairs well with the queried hero. Each partner object includes hero_id, hero_name, a strength value (a numeric rating indicating how strong the pairing is according to mlbb.gg's compatibility analysis), and a roles array for that partner.Does the API include match history, individual player stats, or ranked ladder data?+
Are stats broken down by rank tier, region, or game mode?+
win_rate, ban_rate, pick_rate, and tier fields reflect aggregate statistics as published on mlbb.gg without segmentation by rank bracket, server region, or game mode. You can fork this API on Parse and revise it to target rank- or region-specific breakdowns if mlbb.gg exposes them.How do hero names with special characters work in the `hero_name` parameter?+
'lapu-lapu' or 'Lapu-Lapu' both resolve correctly. Use the canonical hero display name including hyphens or apostrophes as they appear in the game. The hero_name field in any response always returns the canonical display name you can use as a reference.