rib APIrib.gg ↗
Access Valorant competitive data from rib.gg: match results, player stats, team rosters, event analytics, rankings, and free agents via 13 endpoints.
What is the rib API?
The rib.gg API exposes 13 endpoints covering Valorant esports data: completed and upcoming match series, map-level player statistics, team rosters, tournament details, global Elo rankings, and a free agent tracker. The get_match_details endpoint returns per-round economy, player locations, and kill events for a single match, while get_player_analytics surfaces weapon breakdowns, aim timelines, and situational win/loss records by round state.
curl -X GET 'https://api.parse.bot/scraper/30a33df3-8397-4b6f-9c0d-64643fe2d1d3/search?query=Sentinels' \ -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 rib-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.
"""
rib.gg Valorant Esports API – typed SDK usage.
Demonstrates: search, rankings, team profiles, player analytics, events, free agents.
"""
from parse_apis.rib_gg_valorant_esports_api import Rib, SearchResult, Series, Player, Ranking, EventSummary, FreeAgent, Match, TeamProfile, PlayerAnalytics, MatchRounds
rib = Rib()
# 1. Search for a team or player
results = rib.searchresults.search(query="Sentinels")
for result in results:
print(result.result_type, result.hit_rating)
# 2. Get global rankings
for team in rib.rankings.list():
print(team.name, team.ending_elo, team.t3_series_count)
# 3. Browse completed series (matches)
for series in rib.serieses.list_completed(take=5):
print(series.id, series.start_date, series.team1_score, series.team2_score)
# 4. Team profile via constructible Team
team = rib.team(id="363")
profile = team.profile()
print(profile.team, profile.ranking_history)
# 5. Player analytics via constructible Player
player = rib.player(id="978")
analytics = player.analytics(days=90)
print(analytics.aim, analytics.basic_stats, analytics.top_weapons)
# 6. Player match history (sub-resource)
for series in player.match_history.list(take=3):
print(series.id, series.event_name, series.completed)
# 7. Match rounds via constructible Match
match = rib.match(id="240627")
rounds = match.rounds()
print(rounds.match_id, rounds.rounds)
# 8. Events list + detail drill-down
for event in rib.eventsummaries.list(take=3):
print(event.name, event.prize_pool, event.series_count)
# 9. Free agents
for agent in rib.freeagents.list():
print(agent.ign, agent.last_team_name, agent.left_team_date)
Full-text search across players, teams, and events by name. Returns a flat array of results with a resultType field indicating whether each result is a team, player, or event. Hit ratings indicate match quality.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword (e.g. 'TenZ', 'Sentinels') |
{
"type": "object",
"fields": {
"items": "array of search result objects with resultType, result, and hitRating"
},
"sample": {
"data": {
"items": [
{
"result": {
"id": 3576,
"name": "TENSTAR"
},
"hitRating": "50",
"resultType": "team"
}
]
},
"status": "success"
}
}About the rib API
Match and Schedule Data
The get_matches_results and get_matches_schedule endpoints return paginated series objects — completed and upcoming respectively — with meta objects carrying start, results, and total counts for cursor-based pagination. Both accept take and start parameters. get_matches_results additionally accepts a team_id filter (sourced from search or team overview) and an event_id filter, though the event filter may not always narrow results as expected. Match IDs from these series objects are the entry point for map-level detail.
Match Detail and Round Data
get_match_details accepts a single match_id and returns four data arrays: events (kills, plants, defuses per round), economies (per-player per-round loadout costs), locations (player positions), and playerStats (kills, deaths, assists, ACS, ADR, and rating). get_match_rounds organizes the same event stream into a rounds object keyed by round number strings, making it straightforward to iterate a match round by round without filtering a flat array.
Player and Team Profiles
get_player_overview returns per-agent aggregates — matchesPlayed, kills, deaths, acs, adr — over a configurable days window. Note that windows below 60 days may return an empty statsByAgent array for players with sparse recent activity. get_player_analytics adds aim breakdowns (headshots, bodyshots, legshots), top_weapons with per-weapon aim stats, a weekly aim_timeline, map_performance win/loss records, and xvy_performance situational data. get_team_overview returns the current roster, transaction history (teamHistoryTxns), and rankingHistory keyed by division (VCT, VCL, GC, T3, UNI).
Events, Rankings, and Free Agents
get_events_list returns paginated tournament records with name, dates, prize pool, and region. get_event_details requires an event_id and returns participants (teams with rosters) plus analytics covering top_players, top_teams, map_picks, and agent_stats — but only for events where seriesCount > 0; future events return empty analytics. get_rankings returns a global team list ordered by ending_elo with logo URLs and T3 series counts. get_free_agents returns recently released players with career stats and the ISO date they left their last team.
The rib API is a managed, monitored endpoint for rib.gg — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when rib.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 rib.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 Valorant match tracker that displays round-by-round kill and economy events using
get_match_roundsandget_match_details. - Rank-track VCT and VCL teams over time by pulling
ratingHistoryandrankingHistoryfields fromget_team_overview. - Identify available talent by querying
get_free_agentsfor players sorted by release date and filtering on career ACS or ADR. - Produce per-agent performance breakdowns for a player across a 90-day window using
get_player_overviewstatsByAgentdata. - Analyze tournament meta by pulling
map_picksandagent_statsfromget_event_detailsfor completed events. - Monitor roster changes by comparing
teamHistoryTxnstransaction records fromget_team_overviewacross multiple teams. - Surface weapon-level aim stats (headshots per weapon, kill share) for player profiles using
get_player_analyticstop_weapons.
| 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 rib.gg have an official developer API?+
What does `get_player_overview` return and when might `statsByAgent` be empty?+
get_player_overview returns per-agent aggregates (matchesPlayed, kills, deaths, ACS, ADR) for the days window you specify. If the player has no matches recorded in that window — common with days values below 60 for less active players — statsByAgent will be an empty array. Use a larger days value (90 or 180) to ensure coverage for infrequent competitors.Does the API expose live or in-progress match data?+
get_matches_results and upcoming scheduled series via get_matches_schedule, but does not expose live match state or real-time round progression for matches currently in play. You can fork this API on Parse and revise it to add a live-match polling endpoint if that data becomes available on rib.gg.Can I filter the match schedule by team or event?+
get_matches_schedule accepts only take and start pagination parameters — it does not support filtering by team or event. get_matches_results accepts team_id and event_id filters, though the event_id filter may not always reduce results as expected. You can fork this API on Parse and revise it to add server-side filtering to the schedule endpoint.