Discover/Brawlhalla API
live

Brawlhalla APIbrawlhalla.com ↗

Access Brawlhalla ranked leaderboards by region and game mode, the full legend roster with bios, crossover characters, and news articles via a single API.

Endpoint health
verified 5d ago
list_legends
get_legend
list_crossovers
search_rankings
list_news
6/6 passing latest checkself-healing
Endpoints
6
Updated
12d ago

What is the Brawlhalla API?

This API covers 6 endpoints for Brawlhalla data: ranked leaderboard pages filterable by region and game mode via search_rankings, the complete legend roster and per-legend detail pages, every crossover character with source franchise info, and a paginated news archive with full article bodies. Each leaderboard entry exposes rank, tier, player IDs, and team composition; each legend record includes weapons, lore biography in both HTML and plain text, and splash art URLs.

This call costs1 credit / call— charged only on success
Try it
1-based page number within the result set for the given filters.
Leaderboard region to query. ALL spans every region.
Username to search for (case-insensitive, fuzzy). Omitted = the full leaderboard in rank order.
Ranked queue whose leaderboard is returned. 2v2 rows are two-player teams; the other modes are single players.
Rows per page; values above 50 are clamped to 50.
→ api.parse.bot/scraper/bcc90fc6-37a1-4d21-b7d1-d1035cd59238/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/bcc90fc6-37a1-4d21-b7d1-d1035cd59238/search_rankings?region=ALL&search=Lopes&game_mode=1v1' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 brawlhalla-com-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: Brawlhalla SDK — legends, news, rankings, and crossovers."""
from parse_apis.brawlhalla_com_api import Brawlhalla, Region, GameMode, InputNotFound

client = Brawlhalla()

# Browse the legend roster and drill into one legend's full bio
legend_summary = client.legend_summaries.list(limit=1).first()
if legend_summary is not None:
    print(legend_summary.name, "-", legend_summary.subtitle)
    legend = legend_summary.details()
    print(legend.bio_text[:120])
    print("Weapons:", ", ".join(w.name for w in legend.weapons))

# Point-lookup a legend by slug (derived from a summary above)
if legend_summary is not None:
    detail = client.legends.get(slug=legend_summary.slug)
    print(detail.name, detail.url)

# Latest news — list summaries then fetch the full article
article_summary = client.article_summaries.list(per_page=5, limit=1).first()
if article_summary is not None:
    print(article_summary.title, article_summary.date_gmt)
    article = article_summary.details()
    print(article.content_text[:200])

# Crossovers — each links back to its base legend
for xover in client.crossovers.list(limit=3):
    base = xover.legend.name if xover.legend else "unknown"
    print(f"{xover.name} (base legend: {base})")

# Top-ranked 1v1 players in Europe
for entry in client.rankings.list(region=Region.EU, game_mode=GameMode.MODE_1V1, limit=5):
    names = ", ".join(p.username for p in entry.players)
    print(f"#{entry.rank} {names} — {entry.rating} Elo ({entry.tier})")

# Search for a player by name across all regions
hit = client.rankings.list(search="Lopes", limit=1).first()
if hit is not None:
    player = hit.players[0]
    print(f"Found {player.username} (id {player.player_id}) at rank {hit.rank}")

# Graceful handling of a missing legend
try:
    client.legends.get(slug="no-such-legend")
except InputNotFound:
    print("Unknown legend slug handled gracefully")

print("exercised: legend_summaries.list / legends.get / article_summaries.list"
      " / ArticleSummary.details / crossovers.list / rankings.list / InputNotFound")
All endpoints · 6 totalmissing one? ·

Returns one page of the Brawlhalla ranked leaderboard for a region and game mode, ordered by rank. Each row is one leaderboard entry: a single player in 1v1, solo_2v2 and 3v3, or a two-player team in 2v2 (the players array carries every member with its numeric player_id and current username). Rows carry the current season Elo rating, the peak rating for the season, wins, losses, tier and home region. An optional search term filters entries whose username resembles the term (the site's matching is fuzzy, so loosely related names may also appear); when a search is supplied, rows come from across the whole leaderboard and ranks are not contiguous. Pagination is caller-controlled through page (1-based, default 1) and max_results (rows per page, default 25, clamped to 50); total_pages and has_more describe the remaining pages for the same filters, and a page beyond total_pages returns an empty rankings array. One upstream request per call. Unknown region or game_mode values are rejected before any request.

Input
ParamTypeDescription
pageinteger1-based page number within the result set for the given filters.
regionstringLeaderboard region to query. ALL spans every region.
searchstringUsername to search for (case-insensitive, fuzzy). Omitted = the full leaderboard in rank order.
game_modestringRanked queue whose leaderboard is returned. 2v2 rows are two-player teams; the other modes are single players.
max_resultsintegerRows per page; values above 50 are clamped to 50.
Response
{
  "type": "object",
  "fields": {
    "page": "page number returned",
    "region": "region code the results were queried with",
    "search": "search term applied, or null when none",
    "has_more": "boolean, true when page < total_pages",
    "rankings": "array of leaderboard entries in rank order",
    "game_mode": "game mode the results were queried with",
    "max_results": "effective rows-per-page after clamping",
    "total_pages": "total number of pages available for these filters (from the site)",
    "rankings[].rank": "integer leaderboard position within the queried region/mode",
    "rankings[].tier": "ranked tier label such as Diamond, Platinum 2, Gold 1",
    "rankings[].wins": "integer ranked wins this season",
    "rankings[].losses": "integer ranked losses this season",
    "rankings[].rating": "current season Elo rating (integer)",
    "rankings[].region": "home region code of the entry",
    "rankings[].players": "array of {player_id (integer), username} — one member for solo modes, two for 2v2 teams",
    "rankings[].peak_rating": "highest Elo rating reached this season (integer)"
  },
  "sample": {
    "data": {
      "page": 1,
      "region": "EU",
      "search": null,
      "has_more": true,
      "rankings": [
        {
          "rank": 1,
          "tier": "Diamond",
          "wins": 105,
          "losses": 45,
          "rating": 2465,
          "region": "EU",
          "players": [
            {
              "username": "Blaze",
              "player_id": 1766641
            },
            {
              "username": "acno?",
              "player_id": 2768493
            }
          ],
          "peak_rating": 2472
        },
        {
          "rank": 2,
          "tier": "Diamond",
          "wins": 85,
          "losses": 26,
          "rating": 2427,
          "region": "EU",
          "players": [
            {
              "username": "Blew",
              "player_id": 919693
            },
            {
              "username": "Kresuu",
              "player_id": 2926802
            }
          ],
          "peak_rating": 2429
        }
      ],
      "game_mode": "2v2",
      "max_results": 10,
      "total_pages": 2422
    },
    "status": "success"
  }
}

About the Brawlhalla API

Ranked Leaderboards

The search_rankings endpoint returns one page of the Brawlhalla ranked leaderboard. Filter by region (use ALL to span every region), game_mode (1v1, 2v2, solo_2v2, 3v3), and page. Each entry in the rankings array includes the player's rank, tier label (e.g. Diamond, Platinum 2), and a players array carrying each member's numeric player_id. In 2v2 mode the players array contains two members; all other modes carry one. Pass a search string for fuzzy, case-insensitive username lookup. Results cap at 50 rows per page (max_results); the has_more and total_pages fields tell you whether additional pages exist.

Legend Roster and Detail

list_legends returns the full roster in site display order — no pagination required. Each entry includes the legend's name, slug, subtitle, icon URL, and a weapons array of {name, slug} pairs. Pass any slug to get_legend for the full detail record: bio_html and bio_text (lore biography in both rendered HTML and plain text), splash art URL (may be null), the opaque site id, and the same weapons and subtitle fields. list_crossovers covers every crossover character in a single request, each row linking back to its base legend via a {name, slug} object and listing sources franchises plus a video_url (YouTube trailer or null).

News Archive

list_news paginates the news archive newest-first. Each article summary includes id, slug, title, excerpt, date_gmt, author, categories, and tags. Pass a slug to get_news_article to retrieve the complete article: content_html (rendered HTML body) plus all the same summary fields. The per_page parameter accepts up to 100 articles per request and the total field reflects the full count of published articles.

Reliability & maintenanceVerified

The Brawlhalla API is a managed, monitored endpoint for brawlhalla.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when brawlhalla.com 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 brawlhalla.com 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.

Last verified
5d ago
Latest check
6/6 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Track a player's ranked tier and leaderboard position across regions using search_rankings with a username search
  • Build a legend picker tool displaying each character's weapons and lore using list_legends and get_legend
  • Populate a crossover character browser showing source franchises and trailer links from list_crossovers
  • Aggregate Brawlhalla patch notes and news into a Discord bot using list_news and get_news_article
  • Monitor top-100 Diamond rankings per game mode for meta analysis using search_rankings with max_results and page
  • Generate a static legend wiki with biography text and splash art from get_legend bio_text and splash fields
  • Surface new crossover announcements by polling list_news and filtering by categories or tags
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Brawlhalla have an official developer API?+
Yes. Blue Mammoth Games publishes the Brawlhalla API at https://dev.brawlhalla.com/, which provides player stats, clan data, and legend game stats using a Steam-authenticated key. That official API does not expose the ranked leaderboard pages, news articles, or the crossover roster that this API covers.
What does search_rankings return for 2v2 mode compared to other game modes?+
In 2v2 mode each rankings entry represents a two-player team, and the players array contains two objects each with a numeric player_id and the player's current name. In 1v1, solo_2v2, and 3v3 modes the entry represents a single player and the players array carries one member. The rank and tier fields are present in all modes.
Are individual player stats — wins, losses, damage dealt, or legend-specific records — available?+
Not currently. The API returns leaderboard position, tier label, and player identity fields from the rankings pages; it does not expose per-player career statistics. You can fork this API on Parse and revise it to add an endpoint that fetches individual player stat pages.
How does pagination work across the endpoints that support it?+
search_rankings and list_news both return has_more (boolean) and total_pages so you can iterate without guessing. search_rankings caps max_results at 50 rows per page; list_news caps per_page at 100. list_legends and list_crossovers return all records in a single response with no pagination.
Does the API cover regional leaderboards separately, or only the global ALL view?+
search_rankings accepts a region parameter that can be set to any region code the site supports, not only ALL. The response echoes back the region value used. However, the available region codes beyond ALL are not enumerated in the API schema — you would need to supply known Brawlhalla region strings (e.g. US-E, EU, SEA). You can fork this API on Parse and revise it to add an endpoint that lists valid region options.
Page content last updated . Spec covers 6 endpoints from brawlhalla.com.
Related APIs in SportsSee all →
smashbros.com API
Look up detailed information about Super Smash Bros. Ultimate fighters, stages, items, Pokémon, and assist trophies, or search for specific characters by series and DLC status. Browse official Smash blog articles and discover game content all in one place.
lolalytics.com API
Access data from lolalytics.com.
leagueofgraphs.com API
Access League of Legends and Teamfight Tactics player statistics, rankings, and match histories. Look up summoner profiles, champion performance data, live game status, and competitive standings across both game modes and all supported regions.
pred.gg API
Access all gaming assets from the Pred.gg platform including hero icons, ability icons, skin portraits, item icons, perk icons, and rank icons. Use these images to build gaming apps, guides, or community tools with official Pred.gg graphics.
op.gg API
Look up detailed League of Legends and TFT player statistics, match history, and champion performance data to analyze gameplay and track competitive standings. Search summoner profiles, review leaderboards, and monitor how specific champions perform across different skill levels.
rib.gg API
Access comprehensive Valorant competitive data including match results, player statistics, team information, and tournament details with powerful search and filtering capabilities. Track player performance history, view rankings, discover free agents, and analyze in-depth match rounds and analytics all in one place.
bleacherreport.com API
Access sports news articles, live scores, and detailed game statistics from Bleacher Report across all major leagues including the NBA, NFL, MLB, and NHL. Retrieve full article content, expert analysis, and box-score data for any supported sport and date.
bazaardb.gg API
Search and retrieve comprehensive data about The Bazaar game cards, including items, skills, merchants, trainers, monsters, and events with full details like tiers, attributes, enchantments, and tooltips. Quickly find the specific card information you need to optimize your gameplay strategy and deck building.