What is playing on internet radio, right now.

Tuneping keeps a live index of tens of thousands of internet radio stations and serves it as a JSON API, with play history and wishlist alerts. We read the title line every player shows, and never the audio.

01 · What you get

Six things, one API

Live search

no key

Ask “who is playing Blue Monday right now?” and get the stations, fuzzy and accent-insensitive, with a confidence level per match.

GET /v1/now-playing/search

Now playing for favourites

no key

One request for a batch of station ids returns the current title, when it was first seen and when it was last confirmed.

GET /v1/now-playing?station_ids=…

Play history

developer +

What a station played, with estimated start and end times: 10 days on Developer, 30 days on Pro and above. The index is young; once more data is collected, more than 30 days will be offered.

GET /v1/stations/{id}/history

Wishlist alerts

developer +

Name a song or artist and find out the moment a station starts playing it. Poll it or stream it over SSE; on Pro and above, receive a webhook.

SSE · webhook

Tracks and artists

no key

Titles are normalised and, where possible, linked to MusicBrainz identifiers. Look a track or artist up by id, search the catalogue by name, list a track's plays across stations, and on Pro count an artist's airplay by station, country or day.

GET /v1/tracks/{id} · GET /v1/search/tracks

Station directory

no key

Tens of thousands of stations with country, codec and the method we use to read their titles, searchable and filterable.

GET /v1/stations

02 · How it works

We read one line

Every stream carries a small side channel with the current title, the text your player shows. Tuneping reads that and nothing else.

Directory

We start from the public, community-maintained Radio Browser directory and probe each station once to find the cheapest place its title is published: the streaming server’s public status endpoint or the in-stream metadata block.

Poll, politely

Every 20 to 60 seconds we read a few hundred bytes to about 16 KB per station, then close the connection. At most two connections per server at a time, robots.txt and Retry-After honoured. Details for operators.

Normalise

Titles are split into artist and track, classified as song, ident, programme or advert, matched against MusicBrainz where the text allows it, and given a start time with an explicit uncertainty.

Serve

A plain JSON API with ETags, rate-limit headers and edge caching, described in an OpenAPI file and the API reference.

Metadata only · everything we keep from one poll

StreamTitle='Madonna - Holiday';

The audio around it is discarded as it arrives. No recording, no preview, no fingerprinting, nothing relayed. What the poller does.

03 · Honest limits

What it cannot do

Coverage depends on stations.

Many stations send no titles, only their own name, or slogans. We mark those and do not invent data; the status page shows how many deliver live metadata.

Song starts are estimates.

A change seen at a poll happened somewhere in the previous interval. Every play carries start_uncertainty_seconds; expect ±10 to 30 s depending on the method.

Metadata is not fingerprinting.

Detection from station metadata is less complete than audio recognition and never a certified play count. As evidence, say “detected from station metadata”.

Stations come and go.

Streams move, die and change hands daily. A station can opt out at any time and leaves the API within 24 hours.

Text only.

Station names are returned as text; logos and artwork are not part of the service.

04 · Plans

Plans

Self-serve, cancel any time. Annual billing is ten times monthly. Prices include VAT where it applies; Stripe bills in CHF, EUR, USD, GBP or JPY. Business and annual billing: [email protected].

Free

€0

forever

  • 1,000 requests per day
  • 2 req/s, burst 5
  • Live search, batch now-playing (20 stations), station directory
  • Track and artist lookups, catalogue search
  • 1 API key after e-mail verification
  • Shows “Data by Tuneping”
Get a free key

Developer

€29 / month

or €290 / year

  • 100,000 requests per month
  • 10 req/s, burst 20
  • Batch now-playing up to 100 stations
  • 10 days of play history, per station and per track
  • 10 wishlists, polled or via SSE
  • E-mail support within 2 business days
  • No attribution required
Start Developer

Business

from €349 / month

annual invoice, custom volume

  • Custom request volume and rate
  • 30 days of play history
  • 20 webhook endpoints, unfiltered firehose allowed
  • 1,000 wishlists, 20 SSE connections
  • CSV / JSONL exports
  • 99.5 % monthly SLA on reads, named contact
Write to us

05 · Operators

Run a station?

You may see TunepingBot/0.1 (+https://tuneping.com/bot) in your logs. It reads your public status endpoint or the first metadata block of your stream every 20 to 60 seconds, and nothing more. Its addresses, and three ways to opt out that take effect within 24 hours, are on one page. Questions: [email protected].

For station operators