---
title: Rone Arena API
url: https://rone.dev/projects/rone-arena-api
description: "A documented REST interface over public Mobile Legends: Bang Bang game data."
language: en-US
updated: 2026-09-27
translations:
  id: https://rone.dev/id/projects/rone-arena-api
---

# Rone Arena API

A documented REST interface over public Mobile Legends: Bang Bang game data.

[Projects](https://rone.dev/projects) / [API](https://rone.dev/projects/category/api)

Live · Started 2024 · 168 GitHub stars · 49 Forks

<Frame>
  ![The Rone Arena browser playground, open on the user endpoints](https://rone.dev/projects/rone-arena-api/playground.webp)
</Frame>

Rone Arena API turns publicly accessible Mobile Legends: Bang Bang data into a REST interface developers can build against: hero statistics, rankings, counters, builds, academy reference material, and authenticated player endpoints. Forty-nine operations sit across four groups, in seventeen content languages, behind one response envelope and one set of conventions. It is unofficial and community-maintained, with no affiliation to Moonton.

## Numbers

* **49** Operations
* **4** Endpoint groups
* **17** Content languages

## Project facts

|          |                                                                                                                                                                                                    |
| -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Status   | Live                                                                                                                                                                                               |
| Category | API                                                                                                                                                                                                |
| Started  | 2024                                                                                                                                                                                               |
| Role     | Design, build, and operations                                                                                                                                                                      |
| Stack    | Python, FastAPI, httpx, Fernet, Cloudflare Workers, FastAPI Cloud                                                                                                                                  |
| Licence  | BSD-3-Clause                                                                                                                                                                                       |
| Links    | [Live API](https://arena.rone.dev) · [API reference](https://arena.rone.dev/api/docs) · [Browser playground](https://arena.rone.dev/web) · [Source](https://github.com/ridwaanhall/rone-arena-api) |

## Overview

The game publishes a great deal of data — hero win rates by rank and lane, counters and synergies, equipment and emblem tables, patch history, player profiles — but publishes it for its own clients, not for anyone building on top of it. Rone Arena API sits in between: it reads those public sources and re-serves them as a stable, documented HTTP contract.

Four groups divide the surface. Heroes covers analytics and relationships; academy covers reference data, builds and ratings; user covers authentication and player history; addon covers small utilities such as the win-rate calculator. The same data is available in seventeen languages through a single query parameter.

It is a community project. Mobile Legends: Bang Bang and its assets are trademarks of Shanghai Moonton Technology, and the API states that in its own description rather than in the small print.

## One contract, whatever the caller

Every response uses the same envelope, hero endpoints accept either a numeric id or a name in the same path position, and errors are normalised into one payload shape by a handful of exception handlers rather than formatted per route.

The OpenAPI document gets two post-processing passes before it is served. Enum parameters carrying a default are inlined, because the framework otherwise emits a bare schema reference and the rendered documentation shows an opaque name where the caller needs the list of accepted values. Response examples are then reordered to match the property order of the schema they illustrate, so an example reads in the same sequence as the field table beside it.

Nothing is deleted outright. Eleven operations are currently marked deprecated in the schema: they still answer, they receive no further work, and callers get a machine-readable signal to move rather than a broken integration.

## Behaving under load

The service distinguishes two reasons it might be restricted, because they call for different client behaviour. Maintenance means the work is here and there is nowhere else to go. High traffic means this host is shedding load and a failover host exists, named in the response body so retry logic can read it instead of hardcoding a guess. One middleware enforces whichever state is active, while leaving the home page and the blog reachable so a caller can find out what is happening.

Hero identifier ranges are resolved by asking upstream for the highest valid id, which is a wasteful call to repeat, so the answer is cached in process for an hour per source and language. The caller’s own address is extracted once per request and forwarded upstream, so rate limiting applies to the person making the request rather than to the deployment.

The service itself runs on Cloudflare Workers: the same FastAPI application, as Python on Pyodide, deployed from the main branch by Workers Builds. Module-level work — building the OpenAPI catalogue, compiling templates — is done once at deploy and snapshotted, so an isolate does not pay for it on its first request. The identical application also deploys to FastAPI Cloud, which is the failover host the high-traffic response names.

Extracting that address is more finicky than it looks. The resolver reads x-forwarded-for, then the RFC 7239 Forwarded header, then x-real-ip, then the socket, stripping quoting, brackets and ports along the way, and it can be asked to skip anything not publicly routable — forwarding a private-range address upstream is worse than forwarding none.

## Publishing the source without publishing the sources

The repository is public. The upstream paths it reads are not especially secret, but there is no reason to hand out a ready-made list of them either, and hardcoding them would do exactly that.

They are stored as Fernet ciphertext and decrypted at runtime with the deployment secret. Cloning the repository gets you the whole application; running it against real data needs a key. It is a deliberately modest measure — anyone determined can watch the traffic — but it keeps the source honest about what it is: an interface to public data, not a directory of endpoints to hammer.

## Why it was renamed

The project spent most of its life called the MLBB Public Data API, on a matching hostname and package name. That put someone else’s trademark in the position that identifies who made the software, which is precisely the use trademark law restricts, and was never something this project was entitled to.

The rename to Rone Arena moved four public names — the API host, the Python package, and two companion sites — while changing no endpoint path, parameter, or response shape. What the data covers has not changed: it is still an API for Mobile Legends: Bang Bang data, and still says so. What moved is whose name is on it.

<Frame>
  ![The Rone Arena API reference, rendered from its OpenAPI schema](https://rone.dev/projects/rone-arena-api/docs.webp)
</Frame>

## What people building on it said

Rated 5 out of 5 · 5 reviews

> “Ridwaan’s [Rone Arena API] is clean and reliable, it made my Telegram bot integration smooth and effortless.”
>
> — **Austin (Limucc GK)**, Telegram bot developer (Rated 5 out of 5)

> “Ridwaan’s [Rone Arena API] is clean and easy to use, it made building MLBB Nexus effortless and supports developers.”
>
> — **Burak Bayram**, Founder of MLBB Nexus (Rated 5 out of 5)

> “Ridwan was responsive and helpful in clarifying how MLBB data is sourced, giving me clear direction.”
>
> — **Kartal**, Reverse engineering enthusiast (Rated 5 out of 5)

> “The updated [Rone Arena API] gave me exactly what I needed, fetching all hero details at once and saving effort.”
>
> — **Maharlikoders**, MLBB developer and contributor (Rated 5 out of 5)

> “Thank you for your API for MLBB, it has been very helpful and supports the community.”
>
> — **Tony Celestino**, CEO of G4 Club (Rated 5 out of 5)

<Note>
  Every one of these is a full five. Nobody was handed a rating scale — the feedback arrived as sentences, and none of them is qualified, so none is scored below five. If one ever comes back mixed, it will be published with the number it earned.
</Note>

<Note>
  Square brackets mark one edit and one only: a product name that has since changed. Rone Arena was called the MLBB Public Data API when some of these were written, and rewriting the sentence around it would have been misquoting the person who wrote it. Where a quote names the game or the data source rather than the product, it is untouched — those were accurate then and remain accurate now.
</Note>

<CardGroup cols={1}>
  <Card title="Next: Arena Academy" href="https://rone.dev/projects/arena-academy">
    The reading interface for the Rone Arena API — heroes, rankings, builds and counters.
  </Card>
</CardGroup>
