# Radio API
> Search and explore over 50,000 internet and FM radio stations worldwide — a fast, clean wrapper over Radio Browser with automatic mirror failover. Find stations by name, country, language, genre tag or codec, sort by votes or popularity, fetch a single station by UUID with its stream URL, favicon and metadata, list the most-voted stations, browse all countries with station counts and discover the most popular genre/format tags. Every endpoint accepts input via the query string or the request body and returns lean, predictable JSON with the playable stream URL, bitrate, codec, tags and geo where available. Ideal for radio players, music and media apps, smart-speaker skills and directory features.

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

## Pricing
- **Free** (Free) — 20,000 calls/Mo, 5 req/s
- **Basic** ($8/Mo) — 250,000 calls/Mo, 15 req/s
- **Pro** ($24/Mo) — 2,000,000 calls/Mo, 40 req/s
- **Mega** ($59/Mo) — 10,000,000 calls/Mo, 120 req/s

## Endpoints

### Radio

#### `GET /v1/countries` — Countries with station counts

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

#### `GET /v1/search` — Search radio stations

**Parameters:**
- `name` (query, optional, string) — Station name Example: `jazz`
- `country` (query, optional, string) — Country name Example: `Germany`
- `countrycode` (query, optional, string) — ISO-2 country code Example: `DE`
- `language` (query, optional, string) — Language Example: `english`
- `tag` (query, optional, string) — Genre/format tag Example: `rock`
- `codec` (query, optional, string) — Codec Example: `MP3`
- `order` (query, optional, string) — votes|clickcount|name|bitrate|random|... Example: `votes`
- `reverse` (query, optional, string) — Reverse order Example: `true`
- `limit` (query, optional, string) — 1..100 (default 20) Example: `20`
- `offset` (query, optional, string) — Offset Example: `0`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/radio-api/v1/search?name=jazz&country=Germany&countrycode=DE&language=english&tag=rock&codec=MP3&order=votes&reverse=true&limit=20&offset=0"
```

#### `GET /v1/station` — Single station by uuid

**Parameters:**
- `uuid` (query, required, string) — Station UUID Example: `510506e7-6bc0-4b91-b6a1-fc024ccad1a8`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/radio-api/v1/station?uuid=510506e7-6bc0-4b91-b6a1-fc024ccad1a8"
```

#### `GET /v1/tags` — Popular genre/format tags

**Parameters:**
- `limit` (query, optional, string) — 1..500 (default 50) Example: `50`

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

#### `GET /v1/topvote` — Most-voted stations

**Parameters:**
- `limit` (query, optional, string) — 1..100 (default 20) Example: `20`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/radio-api/v1/topvote?limit=20"
```


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