# Board Games API
> The BoardGameGeek community ranking of 17,000+ board games as an API — a self-contained reference for game, hobby, recommendation and quiz apps. For each game the API returns its BoardGameGeek id, name, year published, community rank, average user rating, the Bayesian ("geek") average, how many users rated it and links to its BGG page and thumbnail. Look a game up by name or id, search by name (best-ranked first), list the top-ranked games, or list the games published in a given year. The ranks and ratings are a BoardGameGeek community snapshot (2019), while the catalogue of games, ids, names and publication years is a stable reference. Served from memory — always fast.

## 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/boardgames-api/..."
```

## Pricing
- **Free** (Free) — 15,000 calls/Mo, 3 req/s
- **Starter** ($5/Mo) — 150,000 calls/Mo, 10 req/s
- **Pro** ($11/Mo) — 750,000 calls/Mo, 25 req/s
- **Mega** ($29/Mo) — 3,800,000 calls/Mo, 60 req/s

## Endpoints

### Lookup

#### `GET /v1/game` — Game by name or BGG id

**Parameters:**
- `name` (query, optional, string) — Game name Example: `Catan`
- `id` (query, optional, string) — BoardGameGeek id

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

**Response:**
```json
{
    "data": {
        "game": {
            "id": "13",
            "url": "https://boardgamegeek.com/boardgame/13/catan",
            "name": "Catan",
            "rank": 328,
            "year": 1995,
            "thumbnail": "https://cf.geekdo-images.com/micro/img/e0y6BognJpgqdsgn2mXP5AARp98=/fit-in/64x64/pic2419375.jpg",
            "users_rated": 86026,
            "bayes_average": 7.032,
            "average_rating": 7.19
        }
    },
    "meta": {
        "timestamp": "2026-06-09T03:03:50.606Z",
        "request_id": "7a422b48-c47a-48ab-babc-1fd0ccc2ba6f"
    },
    "status": "ok",
    "message": "Game retrieved successfully",
    "success": true
}
```

### Search

#### `GET /v1/search` — Search games by name

**Parameters:**
- `q` (query, required, string) — Search query (min 2 chars) Example: `ticket to ride`
- `limit` (query, optional, string) — Max results (1-100) Example: `25`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/boardgames-api/v1/search?q=ticket+to+ride&limit=25"
```

**Response:**
```json
{
    "data": {
        "count": 11,
        "games": [
            {
                "id": "14996",
                "url": "https://boardgamegeek.com/boardgame/14996/ticket-ride-europe",
                "name": "Ticket to Ride: Europe",
                "rank": 102,
                "year": 2005,
                "thumbnail": "https://cf.geekdo-images.com/micro/img/uaXK68_N-ucaFwwoSjzMivdKqAw=/fit-in/64x64/pic66668.jpg",
                "users_rated": 48002,
                "bayes_average": 7.443,
                "average_rating": 7.56
            },
            {
                "id": "31627",
                "url": "https://boardgamegeek.com/boardgame/31627/ticket-ride-nordic-countries",
                "name": "Ticket to Ride: Nordic Countries",
                "rank": 130,
                "year": 2007,
                "thumbnail": "https://cf.geekdo-images.com/micro/img/qskE6KkGcK7oNZhrxKMMYUCrac0=/fit-in/64x64/pic369616.jpg",
                "users_rated": 9968,
                "bayes_average": 7.368,
                "average_rating": 7.64
            },
            {
                "id": "9209",
                "url": "https://boardgamegeek.com/boardgame/9209/ticket-ride",
                "name": "Ticket to Ride",
                "rank": 145,
                "year": 2004,
                "thumbnail": "https://cf.geekdo-images.com/micro/img/2ytp3TGuItH2Zzur8-NAiWtt6Xw=/fit-in/64x64/pic38668.jpg",
                "users_rated": 61022,
                "bayes_average": 7.342
…(truncated, see openapi.json for full schema)
```

### Rank

#### `GET /v1/rank` — Top-ranked games

**Parameters:**
- `limit` (query, optional, string) — How many (1-250) Example: `10`
- `offset` (query, optional, string) — Offset Example: `0`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/boardgames-api/v1/rank?limit=10&offset=0"
```

**Response:**
```json
{
    "data": {
        "count": 10,
        "games": [
            {
                "id": "174430",
                "url": "https://boardgamegeek.com/boardgame/174430/gloomhaven",
                "name": "Gloomhaven",
                "rank": 1,
                "year": 2017,
                "thumbnail": "https://cf.geekdo-images.com/micro/img/8JYMPXdcBg_UHddwzq64H4NBduY=/fit-in/64x64/pic2437871.jpg",
                "users_rated": 26069,
                "bayes_average": 8.604,
                "average_rating": 8.89
            },
            {
                "id": "161936",
                "url": "https://boardgamegeek.com/boardgame/161936/pandemic-legacy-season-1",
                "name": "Pandemic Legacy: Season 1",
                "rank": 2,
                "year": 2015,
                "thumbnail": "https://cf.geekdo-images.com/micro/img/KbAKyhbG4qab4r-A_pBjUGvgal0=/fit-in/64x64/pic2452831.png",
                "users_rated": 31753,
                "bayes_average": 8.485,
                "average_rating": 8.64
            },
            {
                "id": "182028",
                "url": "https://boardgamegeek.com/boardgame/182028/through-ages-new-story-civilization",
                "name": "Through the Ages: A New Story of Civilization",
                "rank": 3,
                "year": 2015,
                "thumbnail": "https://cf.geekdo-images.com/micro/img/APvZ_BYOt4ElpIXVl7i6wUp2BvM=/fit-in/64x64/pic2663291.jpg",
                "users_rated": 16148,
      
…(truncated, see openapi.json for full schema)
```

### Year

#### `GET /v1/year` — Games published in a year

**Parameters:**
- `year` (query, required, string) — Publication year Example: `2017`
- `limit` (query, optional, string) — Max results (1-500) Example: `50`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/boardgames-api/v1/year?year=2017&limit=50"
```

**Response:**
```json
{
    "data": {
        "year": 2017,
        "count": 50,
        "games": [
            {
                "id": "174430",
                "url": "https://boardgamegeek.com/boardgame/174430/gloomhaven",
                "name": "Gloomhaven",
                "rank": 1,
                "year": 2017,
                "thumbnail": "https://cf.geekdo-images.com/micro/img/8JYMPXdcBg_UHddwzq64H4NBduY=/fit-in/64x64/pic2437871.jpg",
                "users_rated": 26069,
                "bayes_average": 8.604,
                "average_rating": 8.89
            },
            {
                "id": "220308",
                "url": "https://boardgamegeek.com/boardgame/220308/gaia-project",
                "name": "Gaia Project",
                "rank": 7,
                "year": 2017,
                "thumbnail": "https://cf.geekdo-images.com/micro/img/Ifks_R9_4ObVmyHgN2j9lks-_8M=/fit-in/64x64/pic3763556.jpg",
                "users_rated": 9806,
                "bayes_average": 8.13,
                "average_rating": 8.54
            },
            {
                "id": "233078",
                "url": "https://boardgamegeek.com/boardgame/233078/twilight-imperium-fourth-edition",
                "name": "Twilight Imperium (Fourth Edition)",
                "rank": 9,
                "year": 2017,
                "thumbnail": "https://cf.geekdo-images.com/micro/img/D_wkWC_xeBStqd2Y4xXuUrDYpso=/fit-in/64x64/pic3727516.jpg",
                "users_rated": 7254,
                "bayes_ave
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Service metadata

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

**Response:**
```json
{
    "data": {
        "service": "boardgames-api",
        "snapshot": "2019-07-08",
        "endpoints": {
            "GET /v1/game": "Game by name (name=, e.g. Catan) or BGG id (id=).",
            "GET /v1/meta": "This document.",
            "GET /v1/rank": "Top-ranked games (limit, offset).",
            "GET /v1/year": "Games published in a year (year=, e.g. 2017).",
            "GET /v1/search": "Search games by name, best-ranked first (q=)."
        },
        "description": "BoardGameGeek community ranking of 17,000+ board games (2019 snapshot): id, name, year, rank, average rating, Bayesian average, users rated and BGG links. Look up by name or id, search, list the top-ranked games or the games of a year. No key.",
        "total_games": 17313
    },
    "meta": {
        "timestamp": "2026-06-09T03:03:51.048Z",
        "request_id": "8cfd7f6b-9112-4e69-9787-b4a6e5a6507a"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


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