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.
Try live, against the real index · 2 req/s without a key
Most played on radio · last 24 h pick one to see which stations play it right now
Read the API docsLive statusGET https://api.tuneping.com/v1/now-playing/search
01 · What you get
Six things, one API
Live search
no keyAsk “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 keyOne 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 keyTitles 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 keyTens 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
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.
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.
Detection from station metadata is less complete than audio recognition and never a certified play count. As evidence, say “detected from station metadata”.
Streams move, die and change hands daily. A station can opt out at any time and leaves the API within 24 hours.
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”
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
Pro
€99 / month
or €990 / year
- 1,000,000 requests per month
- 50 req/s, burst 100
- 30 days of play history
- 5 webhook endpoints with station, track and artist filters
- 100 wishlists, also delivered by webhook
- Airplay reports per artist, by station, country or day
- 5 API keys, e-mail support within 1 business day
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
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].