VLR API endpoint
Returns the agent pick-rate matrix of one VLR.gg event: for the whole event and for each map, the number of games, the attack-side and defense-side round win rates and the share of games in which each agent was played. Also returns, per map, each team's agents used and the agents picked in each of its matches (compositions). Use it to see an event's meta; vlr-stats gives per-player agent usage.
/vlr/event-agentsHeader: x-api-key required.
Parameters:
id: required numeric event id from vlr-events.Notable response behavior:
overall covers all maps; maps[] has one row per map played. pick_rates[].percent is the share of that map's games in which a team played the agent (0 to 100); agents lists the columns in the site's order.attack_win_percent and defense_win_percent are round win rates by side. An unknown event id returns 404; an event with no played maps has no rows.compositions[] lists, per map, each team's agents_used and its matches with the five agents picked and the result, which has these values: win, loss.| Field | In the sample | Value in the sample |
|---|---|---|
| event_id | Has a value | |
| agents | Has a value | 29 entries |
| overall.games | Has a value | 39 |
| overall.attack_win_percent | Has a value | 49 |
| overall.defense_win_percent | Has a value | 51 |
| overall.pick_rates | Has a value | 29 entries |
| maps | Has a value | 7 entries |
| compositions | Has a value | 7 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required | ||
| id | string | Yes | Numeric VLR event id from vlr-events | 3166 |
curl -X GET "https://api.crawlora.net/api/v1/vlr/event-agents?id=3166" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://www.vlr.gg/event/agents/3166",
"fetched_at": "2026-10-28T10:00:00Z",
"event_id": "3166",
"agents": [
"omen",
"fade"
],
"overall": {
"games": 29,
"attack_win_percent": 47,
"defense_win_percent": 53,
"pick_rates": [
{
"agent": "omen",
"percent": 79
},
{
"agent": "fade",
"percent": 59
}
]
},
"maps": [
{
"map": "Summit",
"games": 8,
"attack_win_percent": 49,
"defense_win_percent": 51,
"pick_rates": [
{
"agent": "omen",
"percent": 56
},
{
"agent": "fade",
"percent": 94
}
]
}
]
}
}Request schema
No body schema
Response schema
Inline response schema
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | vlr.EventAgentsResponse | No | ||||
| data.agents | array | No | omen | |||
| data.compositions | array | No | ||||
| data.compositions[].map | string | No | Split | |||
| data.compositions[].teams | array | No | ||||
| data.compositions[].teams[].agents_used | array | No | ||||
| data.compositions[].teams[].matches | array | No | ||||
| data.compositions[].teams[].matches[].agents | array | No | ||||
| data.compositions[].teams[].matches[].match_id | string | No | 777952 | |||
| data.compositions[].teams[].matches[].opponent | string | No | Nova Esports | |||
| data.compositions[].teams[].matches[].result | string | No | win, loss | win | ||
| data.compositions[].teams[].team | string | No | Dragon Ranger Gaming | |||
| data.compositions[].teams[].team_id | string | No | 11981 | |||
| data.event_id | string | No | 3166 | |||
| data.fetched_at | string | No | 2026-10-27T10:00:00Z | |||
| data.maps | array | No | ||||
| data.maps[].attack_win_percent | number | No | 49 | |||
| data.maps[].defense_win_percent | number | No | 51 | |||
| data.maps[].games | integer | No | 8 | |||
| data.maps[].map | string | No | Summit | |||
| data.maps[].pick_rates | array | No | ||||
| data.maps[].pick_rates[].agent | string | No | omen | |||
| data.maps[].pick_rates[].percent | number | No | 79 | |||
| data.overall | vlr.MapAgentRow | No | ||||
| data.overall.attack_win_percent | number | No | 49 | |||
| data.overall.defense_win_percent | number | No | 51 | |||
| data.overall.games | integer | No | 8 | |||
| data.overall.map | string | No | Summit | |||
| data.overall.pick_rates | array | No | ||||
| data.overall.pick_rates[].agent | string | No | omen | |||
| data.overall.pick_rates[].percent | number | No | 79 | |||
| data.source_url | string | No | https://www.vlr.gg/matches | |||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/vlr/event-agents?id=3166" \
-H "x-api-key: $CRAWLORA_API_KEY"