# AFL Live API
> Live Australian Football League (AFL) data, sourced from the same official scoring feed the broadcasters use. Pull the live scoreboard with quarter-by-quarter scoring for every match, the up-to-date ladder (played, wins, losses, points, percentage, current streak and recent form), all 18 clubs and club detail, and a full match box score: team totals for disposals, kicks, handballs, marks, tackles, inside-50s and contested possessions, plus the leaders in each category (goals, disposals and more). Read the latest AFL news too. Real-time during play, no key needed upstream. Ideal for footy tipping and fantasy apps, live scoreboards, sports media and match dashboards.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/afl-api/..."
```

## Pricing
- **Free** (Free) — 5,000 calls/Mo, 2 req/s
- **Starter** ($10/Mo) — 70,000 calls/Mo, 8 req/s
- **Pro** ($30/Mo) — 350,000 calls/Mo, 25 req/s
- **Elite** ($95/Mo) — 1,500,000 calls/Mo, 60 req/s

## Endpoints

### AFL

#### `GET /v1/game` — Match box score: team stats + leaders

**Parameters:**
- `event` (query, required, string) — Match (event) id from /v1/scoreboard Example: `1133595`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/afl-api/v1/game?event=1133595"
```

**Response:**
```json
{
    "data": {
        "game": {
            "id": "1133595",
            "date": "2026-06-07T09:20Z",
            "teams": [
                {
                    "id": "16",
                    "logo": "https://a.espncdn.com/i/teamlogos/afl/500/ess.png",
                    "name": "Essendon",
                    "score": 67,
                    "winner": false,
                    "quarters": [
                        15,
                        24,
                        7,
                        21
                    ],
                    "home_away": "home",
                    "abbreviation": "ESS"
                },
                {
                    "id": "9",
                    "logo": "https://a.espncdn.com/i/teamlogos/afl/500/carl.png",
                    "name": "Carlton",
                    "score": 72,
                    "winner": true,
                    "quarters": [
                        8,
                        17,
                        21,
                        26
                    ],
                    "home_away": "away",
                    "abbreviation": "CARL"
                }
            ],
            "venue": "MCG",
            "detail": "Final",
            "status": "Final"
        },
        "news": [
            {
                "link": "https://www.espn.com/afl/story/_/page/POINTSBET20241/afl-footy-review-news-analysis-round-13-stocks-nick-watson-north-melbourne-alastair-clarkson-jai-serong",
                "headlin
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/news` — Latest AFL news

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/afl-api/v1/news"
```

**Response:**
```json
{
    "data": {
        "count": 6,
        "articles": [
            {
                "link": "https://www.espn.com/afl/story/_/page/POINTSBET20241/afl-footy-review-news-analysis-round-13-stocks-nick-watson-north-melbourne-alastair-clarkson-jai-serong",
                "image": "https://a.espncdn.com/photo/2026/0607/r1669545_1296x729_16-9.png",
                "headline": "Stocks up, stocks down: Wizard's great disappearing act; another huge captain's performance",
                "published": "2026-06-07T23:01:33Z",
                "description": "Jordan Dawson producd an amazing captain's performance, but serious questions must be asked of North Melbourne, and we saw the Wizard's great disappearing act! Here's whose stocks are up and down after Round 13."
            },
            {
                "link": "https://www.espn.com/video/clip/_/id/48994539/carlton-holds-essendon-make-four-straight",
                "image": "https://a.espncdn.com/media/motion/2026/0607/dm_260607_AFL_Highlight_Carlton_holds_off_Essendon_to_make_it_four_straight_20260608_AUS_ONLY/dm_260607_AFL_Highlight_Carlton_holds_off_Essendon_to_make_it_four_straight_20260608_AUS_ONLY.jpg",
                "headline": "Carlton holds off Essendon to make it four straight",
                "published": "2026-06-07T21:34:00Z",
                "description": "The Blues withstand a late Bombers charge to claim a thrilling five-point win at the MCG."
            },
            {
                "link": "https://
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/scoreboard` — Games with quarter-by-quarter scoring

**Parameters:**
- `dates` (query, optional, string) — Optional YYYYMMDD or range

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/afl-api/v1/scoreboard"
```

**Response:**
```json
{
    "data": {
        "count": 8,
        "games": [
            {
                "id": "1133595",
                "date": "2026-06-07T09:20Z",
                "name": "Carlton at Essendon",
                "state": "post",
                "teams": [
                    {
                        "id": "16",
                        "name": "Essendon",
                        "score": 67,
                        "record": "1-12",
                        "winner": false,
                        "quarters": [
                            15,
                            24,
                            7,
                            21
                        ],
                        "home_away": "home",
                        "abbreviation": "ESS"
                    },
                    {
                        "id": "9",
                        "name": "Carlton",
                        "score": 72,
                        "record": "5-8",
                        "winner": true,
                        "quarters": [
                            8,
                            17,
                            21,
                            26
                        ],
                        "home_away": "away",
                        "abbreviation": "CARL"
                    }
                ],
                "venue": "MCG",
                "detail": "Final",
                "status": "Final",
                "short_name": "CARL @ ESS"
            },
            {
   
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/standings` — The AFL ladder

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/afl-api/v1/standings"
```

**Response:**
```json
{
    "data": {
        "count": 18,
        "ladder": [
            {
                "form": "LWWWWWWWWWWWW",
                "rank": 1,
                "team": "Fremantle",
                "wins": 12,
                "draws": 0,
                "losses": 1,
                "played": 13,
                "points": 48,
                "streak": "W12",
                "team_id": "1",
                "percentage": "147.900",
                "points_for": 1312,
                "points_against": 887
            },
            {
                "form": "WWLWWWWWWWLWW",
                "rank": 2,
                "team": "Sydney Swans",
                "wins": 11,
                "draws": 0,
                "losses": 2,
                "played": 13,
                "points": 44,
                "streak": "W2",
                "team_id": "4",
                "percentage": "147.300",
                "points_for": 1485,
                "points_against": 1008
            },
            {
                "form": "LWWWWWWDLLWWL",
                "rank": 3,
                "team": "Hawthorn",
                "wins": 8,
                "draws": 1,
                "losses": 4,
                "played": 13,
                "points": 34,
                "streak": "L1",
                "team_id": "13",
                "percentage": "113.200",
                "points_for": 1248,
                "points_against": 1102
            },
            {
                "form": "LWWLWWLWWWWLL",
         
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/team` — Club detail by id

**Parameters:**
- `team` (query, required, string) — Numeric club id, e.g. 16 (Essendon) Example: `16`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/afl-api/v1/team?team=16"
```

**Response:**
```json
{
    "data": {
        "team": {
            "id": "16",
            "logo": "https://a.espncdn.com/i/teamlogos/afl/500/ess.png",
            "name": "Essendon",
            "color": "b93535",
            "nickname": "Bombers",
            "standing": "1st in AFL",
            "next_event": "Carlton at Essendon",
            "abbreviation": "ESS",
            "alternate_color": "353535"
        }
    },
    "meta": {
        "timestamp": "2026-06-08T01:20:01.451Z",
        "request_id": "9b7e3f30-5c97-4383-a4a7-1fd0aa126776"
    },
    "status": "ok",
    "message": "Team retrieved successfully",
    "success": true
}
```

#### `GET /v1/teams` — All AFL clubs

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/afl-api/v1/teams"
```

**Response:**
```json
{
    "data": {
        "count": 19,
        "teams": [
            {
                "id": "15",
                "logo": "https://a.espncdn.com/i/teamlogos/afl/500/adel.png",
                "name": "Adelaide Crows",
                "color": "002a6f",
                "nickname": "Crows",
                "abbreviation": "ADEL"
            },
            {
                "id": "11",
                "logo": "https://a.espncdn.com/i/teamlogos/afl/500/bl.png",
                "name": "Brisbane Lions",
                "color": "6d144a",
                "nickname": "Lions",
                "abbreviation": "BL"
            },
            {
                "id": "9",
                "logo": "https://a.espncdn.com/i/teamlogos/afl/500/carl.png",
                "name": "Carlton",
                "color": "0d0e5f",
                "nickname": "Blues",
                "abbreviation": "CARL"
            },
            {
                "id": "17",
                "logo": "https://a.espncdn.com/i/teamlogos/afl/500/coll.png",
                "name": "Collingwood",
                "color": "222222",
                "nickname": "Magpies",
                "abbreviation": "COLL"
            },
            {
                "id": "16",
                "logo": "https://a.espncdn.com/i/teamlogos/afl/500/ess.png",
                "name": "Essendon",
                "color": "b93535",
                "nickname": "Bombers",
                "abbreviation": "ESS"
            },
            {
         
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Service description & endpoints

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/afl-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "service": "afl-api",
        "endpoints": {
            "GET /v1/game": "Match box score: team stats + leaders (event=id from scoreboard).",
            "GET /v1/meta": "This document.",
            "GET /v1/news": "AFL news.",
            "GET /v1/team": "Club detail by id (team=, e.g. 16).",
            "GET /v1/teams": "All AFL clubs.",
            "GET /v1/standings": "The AFL ladder.",
            "GET /v1/scoreboard": "Games with quarter scores (dates=YYYYMMDD optional)."
        },
        "description": "Australian Football League (AFL) live data: the scoreboard with quarter-by-quarter scoring, the ladder (wins, losses, points, percentage, streak, form), the 18 clubs and club detail, a full match box score with team stats and leaders, and news. Real live data, no key."
    },
    "meta": {
        "timestamp": "2026-06-08T01:20:02.050Z",
        "request_id": "fee7dc2c-585b-481c-8d02-5ef316ec2a46"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


---
Marketplace page: https://www.oanor.com/api/afl-api
OpenAPI spec: https://www.oanor.com/api/afl-api/openapi.json
