# Radio Browser API
> Live access to the world's largest community-curated directory of internet radio stations, served from the open Radio Browser API — no key, nothing cached. Nearly 58,000 stations are submitted, tagged and voted on by listeners, and clicks are tracked, so the directory carries real engagement signals. The search endpoint finds stations by name, tag, country or language, each with its stream URL, homepage, favicon, codec and bitrate, tags, country and its vote and click counts. The top endpoint returns the trending stations — the most-voted or the most-clicked right now — the community's current favourites. The tag endpoint returns the stations for a genre or theme tag (jazz, news, lofi), the hashtag feed of radio. The stats endpoint returns the directory's live totals: how many stations, tags, languages and countries it holds and how many clicks happened in the last hour and day. Everything is live from Radio Browser, nothing stored. This is the internet-radio discovery layer for any music, player, streaming or media app. Distinct from on-demand music APIs — this is the live, community-voted directory of radio streams. 4 endpoints, no key on our side.

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

## Pricing
- **Free** (Free) — 5,000 calls/Mo, 3 req/s
- **Starter** ($6/Mo) — 75,000 calls/Mo, 8 req/s
- **Pro** ($14/Mo) — 380,000 calls/Mo, 20 req/s
- **Mega** ($33/Mo) — 1,800,000 calls/Mo, 50 req/s

## Endpoints

### Radio

#### `GET /v1/search` — Find stations

**Parameters:**
- `tag` (query, optional, string) — Genre/theme tag Example: `jazz`
- `name` (query, optional, string) — Station name
- `country` (query, optional, string) — Country name
- `countrycode` (query, optional, string) — ISO country code
- `language` (query, optional, string) — Language
- `order` (query, optional, string) — clickcount (default), votes, name, bitrate
- `limit` (query, optional, string) — Max stations (1-100) Example: `10`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/radiobrowser-api/v1/search?tag=jazz&limit=10"
```

**Response:**
```json
{
    "data": {
        "count": 10,
        "order": "clickcount",
        "source": "Radio Browser",
        "stations": [
            {
                "name": "Classic Vinyl HD",
                "tags": [
                    "1930",
                    "1940",
                    "1950",
                    "1960",
                    "beautiful music",
                    "big band",
                    "classic hits",
                    "crooners",
                    "easy",
                    "easy listening",
                    "hd",
                    "jazz",
                    "light orchestral",
                    "lounge",
                    "oldies",
                    "orchestral",
                    "otr",
                    "relaxation",
                    "strings",
                    "swing",
                    "unwind",
                    "walm"
                ],
                "uuid": "d1a54d2e-623e-4970-ab11-35f7b56c5ec3",
                "codec": "MP3",
                "votes": 279847,
                "clicks": 483,
                "online": true,
                "bitrate": 320,
                "country": "The United States Of America",
                "favicon": "https://icecast.walmradio.com:8443/classic.jpg",
                "homepage": "https://walmradio.com/classic",
                "language": "english",
                "stream_url": "https://icecast.walmradio.com:8443/classic",
                "click_trend": 483,
                "
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/stats` — Directory totals

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

**Response:**
```json
{
    "data": {
        "tags": 11365,
        "source": "Radio Browser",
        "stations": 57971,
        "countries": 238,
        "languages": 635,
        "clicks_last_day": 153630,
        "stations_broken": 12,
        "clicks_last_hour": 5434,
        "software_version": "0.7.44"
    },
    "meta": {
        "timestamp": "2026-06-09T20:24:53.762Z",
        "request_id": "8acd4942-0653-4578-86bc-9387553afb6e"
    },
    "status": "ok",
    "message": "Stats retrieved successfully",
    "success": true
}
```

#### `GET /v1/tag` — Stations for a tag

**Parameters:**
- `tag` (query, required, string) — Genre/theme tag Example: `jazz`
- `order` (query, optional, string) — votes (default), clickcount, name
- `limit` (query, optional, string) — Max stations (1-100) Example: `10`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/radiobrowser-api/v1/tag?tag=jazz&limit=10"
```

**Response:**
```json
{
    "data": {
        "tag": "jazz",
        "count": 10,
        "order": "votes",
        "source": "Radio Browser",
        "stations": [
            {
                "name": "Classic Vinyl HD",
                "tags": [
                    "1930",
                    "1940",
                    "1950",
                    "1960",
                    "beautiful music",
                    "big band",
                    "classic hits",
                    "crooners",
                    "easy",
                    "easy listening",
                    "hd",
                    "jazz",
                    "light orchestral",
                    "lounge",
                    "oldies",
                    "orchestral",
                    "otr",
                    "relaxation",
                    "strings",
                    "swing",
                    "unwind",
                    "walm"
                ],
                "uuid": "d1a54d2e-623e-4970-ab11-35f7b56c5ec3",
                "codec": "MP3",
                "votes": 279847,
                "clicks": 483,
                "online": true,
                "bitrate": 320,
                "country": "The United States Of America",
                "favicon": "https://icecast.walmradio.com:8443/classic.jpg",
                "homepage": "https://walmradio.com/classic",
                "language": "english",
                "stream_url": "https://icecast.walmradio.com:8443/classic",
                "click_trend": 483,
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/top` — Trending stations

**Parameters:**
- `by` (query, optional, string) — vote (default) or click Example: `vote`
- `limit` (query, optional, string) — Max stations (1-100) Example: `10`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/radiobrowser-api/v1/top?by=vote&limit=10"
```

**Response:**
```json
{
    "data": {
        "count": 10,
        "source": "Radio Browser",
        "stations": [
            {
                "name": "MANGORADIO",
                "tags": [
                    "music",
                    "variety"
                ],
                "uuid": "78012206-1aa1-11e9-a80b-52543be04c81",
                "codec": "MP3",
                "votes": 809738,
                "clicks": 342,
                "online": true,
                "bitrate": 128,
                "country": "Germany",
                "favicon": "https://mangoradio.de/wp-content/uploads/cropped-Logo-192x192.webp",
                "homepage": "https://mangoradio.de/",
                "language": "german",
                "stream_url": "https://mangoradio.stream.laut.fm/mangoradio",
                "click_trend": 342,
                "country_code": "DE"
            },
            {
                "name": "Dance Wave!",
                "tags": [
                    "club dance electronic house trance"
                ],
                "uuid": "962cc6df-0601-11e8-ae97-52543be04c81",
                "codec": "MP3",
                "votes": 554458,
                "clicks": 209,
                "online": true,
                "bitrate": 128,
                "country": "Hungary",
                "favicon": "https://dancewave.online/dw_logo.png",
                "homepage": "https://dancewave.online/",
                "language": "english",
                "stream_url": "https://dancewave.onli
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Spec

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

**Response:**
```json
{
    "data": {
        "source": "Radio Browser public API (live)",
        "service": "radiobrowser-api",
        "endpoints": {
            "GET /v1/tag": "Stations for a genre/theme tag (tag=jazz, order, limit).",
            "GET /v1/top": "Trending stations (by=vote|click, limit).",
            "GET /v1/meta": "This document.",
            "GET /v1/stats": "Directory totals: stations, tags, languages, countries, clicks last hour/day.",
            "GET /v1/search": "Find stations (name=, tag=, country=, countrycode=, language=, order=, limit)."
        },
        "description": "Live access to the world's largest community-curated directory of internet radio stations (~58,000) from the open Radio Browser API: search stations by name, tag, country or language with stream URL, homepage, codec, bitrate, tags and vote/click counts; the trending stations (most-voted or most-clicked right now); the stations for a genre/theme tag; and the directory's live totals (stations, tags, languages, countries, clicks last hour/day). Live, no key, nothing stored. Distinct from on-demand music APIs — this is the live, community-voted directory of radio streams.",
        "upstream_status": "ok",
        "stations_indexed": 57971
    },
    "meta": {
        "timestamp": "2026-06-09T20:24:54.290Z",
        "request_id": "961bbd97-c3af-4a55-8b63-a85f57d5b7d8"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


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