radios
Asynchronous Python client for the Radio Browser API
What it is and what it does
Radios is an async Python client for the Radio Browser API, a crowdsourced directory of internet radio and TV stations. It wraps the Radio Browser's REST endpoints to let you search, filter, and retrieve station metadata programmatically. The library depends on aiohttp for async HTTP, mashumaro for serialization, and several utility libraries (backoff, cachetools, yarl, orjson, pycountry, awesomeversion, aiodns) to handle retries, caching, URL parsing, and country/language code resolution.
You use it by creating a RadioBrowser context manager with a user agent, then awaiting methods like stations(), tags(), countries(), and languages() to query the database. It supports ordering and filtering by country code, language, tags, and other criteria, and can register station clicks. Originally developed for Home Assistant, it's maintained as an active open-source project with semantic versioning and a clear contribution process.
Use it for:
- Build a radio player app that searches and displays stations by country, language, or popularity.
- Aggregate station metadata (tags, click counts, bitrate) for analytics or recommendation systems.
- Create a station discovery tool that filters by genre or language and tracks user interactions.
- Integrate radio station data into a smart home or media center application.
- Fetch and cache station lists for offline or low-latency access in a web or mobile backend.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
An async Python client for querying the Radio Browser API, a community-driven database of internet radio and TV stations, with support for filtering, sorting, and station metadata retrieval.
Yes. Low install friction, active maintenance, permissive MIT license, and no known vulnerabilities. Suitable for any Python 3.11+ project needing Radio Browser API access. The main decision point is whether the Radio Browser's data coverage and API stability meet your use case—verify that separately if production-critical.
Install
radios on PyPI
pip
pip install radiosuv
uv add radiospoetry
poetry add radiosInstalling radios
Before you install
Low friction: pure Python wheel with no compiled dependencies. Actively maintained as of 2026-04-16 with recent release history; requires Python 3.11 or later.
License in practice
MIT license permits free use, modification, and distribution with minimal restrictions—suitable for both open-source and commercial projects.
Quickstart
pip install radios
import asyncio
from radios import RadioBrowser, Order
async def main():
async with RadioBrowser(user_agent="MyApp/1.0") as radios:
stations = await radios.stations(limit=10, order=Order.CLICK_COUNT, reverse=True)
for station in stations:
print(f"{station.name} ({station.click_count})")
asyncio.run(main())
Requires Python 3.11 or later; async/await syntax and event loop required.
Verify before relying
- Whether the Radio Browser API has rate limits or availability guarantees that affect production use.
- Whether station metadata fields (beyond name and click_count) are documented or discoverable.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (<4.0,>=3.11) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 9 — aiodns, aiohttp, awesomeversion, backoff, cachetools, mashumaro, orjson, pycountry, yarl |
| Maintenance | actively maintained — 658 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 93,278/month — #13,395 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: radios-0.3.2-py3-none-any.whl
Keywords: radio browser, radio, web radio, radios, api, async, client
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
open-meteoProvides an asynchronous Python client for…
permissive · top 15,000 on PyPI
pytrafikverketAsync Python client for querying Sweden's…
permissive · top 15,000 on PyPI
spotifyaioAsynchronous Python client for fetching data…
permissive · top 15,000 on PyPI
go2rtc-clientAsynchronous Python client library for…
permissive · top 15,000 on PyPI
aioambientAn async Python library for querying Ambient…
permissive · top 15,000 on PyPI
scikit-rfscikit-rf is an object-oriented Python library…
permissive · top 15,000 on PyPI
pysmartthingsAsynchronous Python client for fetching data…
permissive · top 15,000 on PyPI
shazamioAsynchronous Python library that recognizes…
permissive · top 15,000 on PyPI
elgatoAsynchronous Python client for controlling and…
permissive · top 15,000 on PyPI
tailscaleAsynchronous Python client for querying and…
permissive · top 15,000 on PyPI