Tuning into the world,
one station at a time.

On air · Made in Brazil

Database

60,969

radio stations available to stream from around the world.

Hi, I'm Johni — a software engineer from Brazil. Since 2008, I've been using technology to make my daily life better, and occasionally just to have fun.

As an enthusiast of radio, I built this project to help me discover stations from around the world. Radio takes me back to my childhood — I was born and raised in the countryside, where listening to the radio was a big part of growing up.

This is an open source project. You can find the source code on GitHub.

Have a suggestion to improve the project? Send me an email at johni.douglas.marangon@gmail.com.

Enjoying the project?

Buy me a coffee ☕

Support →

Connect & Explore

/links

Worth Checking Out

/inspiration

REST API

/api

Antenna exposes a public HTTP API so you can query the radio station database programmatically.

GET/api/radio/stations

Query Parameters

ParameterTypeDefaultDescription
pageSizenumber20Items per page (max 100)
cursorstringOpaque cursor from a previous response's pagination.nextCursor
sortByname | countrynameField to sort by
orderasc | descascSort direction
countrystringFilter by exact country name
languagestringFilter by exact language
tagstringFilter stations that contain this tag

Response

{
  "data": [
    {
      "id": "018edc4f-...",
      "name": "Arrow Classic Rock",
      "country": "The Netherlands",
      "language": "dutch",
      "streamUrl": "http://...",
      "homepageUrl": "https://...",
      "logoUrl": "https://...",
      "tags": ["classic rock", "rock"]
    }
  ],
  "pagination": {
    "nextCursor": "MDE4ZWRj...",
    "nextPage": "https://antenna.show/api/radio/stations?pageSize=20&cursor=MDE4ZWRj...",
    "previousPage": "https://antenna.show/api/radio/stations?pageSize=20&cursor=MDAwMDAw...",
    "hasMore": true,
    "pageSize": 20
  }
}
  • nextCursorPass as cursor in the next request; null when no more results.
  • nextPageFull URL to the next page; null when no more results.
  • previousPageFull URL to the previous page; null when at the first page.
  • hasMoretrue if another page exists.

Examples

# First page, 10 results sorted by name
curl "https://antenna.show/api/radio/stations?pageSize=10"

# Next page using cursor from previous response
curl "https://antenna.show/api/radio/stations?pageSize=10&cursor=<nextCursor>"

# Filter by country, sorted descending
curl "https://antenna.show/api/radio/stations?country=Germany&sortBy=name&order=desc"

# Filter by tag
curl "https://antenna.show/api/radio/stations?tag=jazz"
Antenna · Open Source© 2026