---
name: rugbyapi
description: Rugby union data from rugbyAPI (rugbyapi.com): fixtures, results since 1871, lineups, scoring timelines, league tables, teams, players, national-side ratings, live scores and analytics. Use when an agent needs real rugby match or player facts, or figures worked out from them.
---

# rugbyAPI

rugbyAPI serves rugby union data as JSON over HTTPS: matches back to 1871, 23-man lineups, scoring timelines to the minute, league tables, teams, players, officials, crowds and weather, plus live scores, webhooks and analytics. It is operated by DeveloperData.net.

## When to use it

- Use it for facts about rugby union matches, competitions, teams and players: who played, who scored, when, the table, the head to head, a player's career.
- Use the analytics endpoints for figures across a team, competition or season (scoring by time, totals and margins, referees, weather, first try, crowds).
- Do not use it for predictions, tips or betting advice: it holds facts only. It holds no tackles, carries, metres, possession, scrum or lineout counts, and no betting odds.

## Getting access

- Sign in with Google at https://rugbyapi.com/login. A free key is made on the spot and shown on https://rugbyapi.com/account.
- Send the key on every call as `Authorization: Bearer <key>` or `X-API-Key: <key>`. A key in the address is refused with `400 key_in_address`.
- Plans: a free key reads yesterday, today and the fixtures ahead; Archive reads every season; Live adds today as it happens, webhooks and analytics. Prices: https://rugbyapi.com/pricing

## Common questions, and the call for each

Base URL: `https://api.rugbyapi.com/v1`. IDs are two letters, an underscore and seven characters (`mt_4K9Q2ZP`). Find IDs with search first.

Find a team, competition or player:

```
curl "https://api.rugbyapi.com/v1/search?q=Toulouse" -H "Authorization: Bearer $KEY"
{"count": 3, "data": [ ...competitions, teams and players matching the name, each with its id... ]}
```

Recent results and coming fixtures:

```
curl "https://api.rugbyapi.com/v1/results?since=2026-10-10" -H "Authorization: Bearer $KEY"
curl "https://api.rugbyapi.com/v1/fixtures?days=14" -H "Authorization: Bearer $KEY"
{"count": 24, "data": [ ...one object per match, each with its id, date, both sides and the score... ]}
```

One match with its lineups and timeline (Archive):

```
curl "https://api.rugbyapi.com/v1/matches/mt_4K9Q2ZP?include=lineups,timeline" -H "Authorization: Bearer $KEY"
```

A league table:

```
curl "https://api.rugbyapi.com/v1/seasons/ss_0VKTFYP/standings" -H "Authorization: Bearer $KEY"
```

Analytics for a season (Live), here total points and margins:

```
curl "https://api.rugbyapi.com/v1/analytics/totals?season=ss_0VKTFYP" -H "Authorization: Bearer $KEY"
{"analysis": "totals", "scope": {...}, "basis": {"matches_in_scope": ..., "matches_counted": ..., "counted": "..."}, "data": {...}}
```

Matches in play (Live), with the clock as a point to count on from:

```
curl "https://api.rugbyapi.com/v1/matches/live" -H "Authorization: Bearer $KEY"
```

## MCP server

`https://api.rugbyapi.com/mcp` (streamable HTTP, JSON-RPC 2.0), with the same key as `Authorization: Bearer`. Every GET endpoint is a tool, named after its endpoint: `search`, `results`, `fixtures`, `get_match`, `lineups`, `timeline`, `standings`, `team`, `form`, `h2h`, `player`, `player_career`, `top_scorers`, `rankings`, `live`, and the analytics as `an_totals`, `an_referees`, `an_weather`, `an_rest_travel`, `an_first_try`, `an_crowds`, `an_scoring_bands`, `an_game_state`, `an_bonus_points`, `an_discipline`, `an_goal_kicking`, `an_bench`, `an_rotation`, `an_home_advantage`. The full list: https://rugbyapi.com/documentation/mcp

## Limits

- Daily lookups per plan, reset at 00:00 UTC: free 50, Archive 20,000, Live 100,000. Only calls that return data count.
- Headers on every counted call: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`.
- Paged lists: 50 a page with `page`; other lists come whole (results and fixtures up to 500).
- Every time is UTC. A missing value is `null`. Unknown parameters are refused with 422, never ignored.

## Errors

One shape: `{"error": {"code": "plan_required", "message": "...", "plan": "archive", "upgrade": "https://rugbyapi.com/pricing"}}`.

- 400 `key_in_address`
- 401 `missing_key`, `invalid_key`, `revoked_key`
- 403 `plan_required`
- 404 `not_found`, `bad_id`, `no_such_endpoint`
- 422 `unknown_parameter`, `bad_parameter`, `missing_parameter`
- 429 `daily_limit`, with `resets_utc` and `Retry-After`

## A typical workflow

1. Search for the team, competition or player by name to get its ID.
2. For a competition, list its seasons and pick the season ID.
3. Read results, fixtures or the standings for that season.
4. Open single matches for lineups and the timeline when the question needs who scored and when.
5. For figures across many matches, call the matching analytics endpoint with the team, competition or season, and read `basis` to see how many matches were counted.
6. Quote IDs back in later calls rather than names.

Full reference in one file: https://rugbyapi.com/documentation/manual.md. OpenAPI: https://api.rugbyapi.com/openapi.json
