TunepingBot
You found this page because TunepingBot showed up in your logs. Short version: it reads the public "now playing" title of your station every 20 to 60 seconds, a few KB at a time, and never touches the audio. If you want it gone, any of the three opt-outs below works, permanently, within 24 hours, no questions asked.
Quick facts
| User-Agent | TunepingBot/0.1 (+https://tuneping.com/bot) |
|---|---|
| IPv4 | 167.233.123.27 |
| IPv6 | 2a01:4f8:c016:4026::1 |
| Reverse DNS | poller.tuneping.com (resolves back to the addresses above; machine-readable list at /bot/ips.json) |
| Frequency | one request per station every 20 to 60 s (5 min for stations whose title has not changed in 30 min); at most 2 concurrent connections per server IP |
| Bytes per check | a few hundred bytes for a status endpoint, up to about 16 KB for one in-stream metadata block |
| Block it | User-agent: TunepingBot / Disallow: / in robots.txt, or X-Robots-Tag: noindex, or e-mail bot@tuneping.com |
| Operator | Tuneping, see imprint. Abuse: abuse@tuneping.com |
Who we are
Tuneping is a small service that keeps a live index of what internet radio stations are playing, so that listeners and developers can search for a song across stations, look at a station's play history, or be told when a wishlist song starts. The index is built entirely from the title metadata that stations already publish to every listener. The server handles metadata only; it never stores, relays or redistributes audio.
What the bot does
TunepingBot visits streams that are listed in the public, community-maintained Radio Browser directory. For each station it requests:
/robots.txton the stream host, cached for up to 24 hours;- the streaming server's public status endpoint, when there is one (the JSON, XML or plain-text variants, for example
/status-json.xsl,/stats,/currentsong,/7.html, and once per hour the recently-played list where the server offers it); - or, when no status endpoint exists, the public stream URL itself with
Icy-MetaData: 1, reading only until the first in-stream metadata block arrives, then closing the connection.
What it never does:
- read audio beyond the single metadata interval needed to find the title (about 16 KB, discarded as it arrives; nothing from the audio is written anywhere);
- record, store, relay or redistribute audio in any form;
- request admin paths, HTML pages, or anything that requires credentials;
- poll HLS playlists or segments;
- fetch logos or artwork.
We prefer the status endpoint whenever a station has one, because it costs you a few hundred bytes instead of a short burst of audio.
How often, and how it behaves
- Interval: every 20 s for cheap status endpoints, every 60 s for in-stream metadata (30 s for a small number of stations a user has explicitly asked to follow). Status pages that are large relative to the stations they serve are polled proportionally less often, so a station never costs more bytes per minute than one in-stream check does. Stations whose title has not changed for 30 minutes drop to every 5 minutes. Intervals carry plus or minus 10 % jitter so stations on one server are not hit in lock-step.
- Concurrency: at most 2 open connections to any one server IP address at a time. Many stations behind one address are polled less often, not in parallel.
- robots.txt: honoured for the
TunepingBottoken and for*, per scheme, host and port. One exception: several streaming servers ship a built-in robots.txt that is exactlyUser-agent: */Disallow: /and nothing else. We treat that bare server default as "no robots.txt", because it is not something the station operator wrote; aTunepingBotgroup, or any*group with more than that one line, is honoured in full. A 5xx on robots.txt is treated as "disallow" until it can be fetched again. - Back-off:
429and503withRetry-Afterare honoured; connection errors back off exponentially (1, 2, 4, 8 minutes, up to 24 hours). After 7 consecutive days of failure polling stops for good. - Blocks: if all connections to an address start timing out, we pause that address for an hour and alert ourselves. A
401or403on the stream URL, or any firewall or anti-bot challenge, is treated as a permanent opt-out of that host. - Connections:
Connection: close, plain HTTP/1.1, shut down cleanly with a FIN after the metadata block has been read; 5 s connect and 10 s total timeout; redirects followed at most 5 hops.
How to verify it is really us
Requests come from the two addresses in the table above and from nowhere else. Reverse DNS of both addresses is poller.tuneping.com, and that name resolves forward to the same addresses, so a forward-confirmed reverse DNS check works. Anything claiming to be TunepingBot from another address is not us; please tell abuse@tuneping.com. The current list is also published at tuneping.com/bot/ips.json; we will announce changes on this page at least a week before they take effect.
How to opt out
Any one of the following is enough. All three are honoured, opt-outs are permanent, and they take effect within 24 hours (in practice the scheduler picks them up within minutes). No questions asked, no justification needed.
- E-mail bot@tuneping.com with the stream host or URL. You will get a confirmation that the station has been removed.
- robots.txt on the stream host:
A generalUser-agent: TunepingBot Disallow: /User-agent: *group also works, as long as it is not just the one-line default your server software ships (see above). The rule applies per scheme, host and port. - An HTTP header
X-Robots-Tag: noindexon the status endpoint (or on the stream URL).
Returning 401 or 403 on the stream URL, or putting a firewall challenge in front of it, has the same effect automatically. An opt-out removes the station from polling, from the API and from any public page, and places it on a suppression list the scheduler consults before every single request. If you later want back in, e-mail the same address.
What we store
For each station: the current and past title strings exactly as published, the timestamp we saw them, and the station's directory listing (name, stream URL, country, codec). For politeness and abuse handling we also keep a log of our own connections (timestamp, your server's IP and port, status code, byte counts) for 7 days, aggregated per hour for 30 days, so we can answer precisely which requests we made if you ask. We do not store audio, listener data or anything personal. The bot collects no personal data; the only personal data we process is the contact details of people who write to us (see privacy).
Opt in, or correct what we show
If you would rather we read a particular endpoint, or you publish titles somewhere we have missed, tell bot@tuneping.com and we will switch. If your station's name or details are wrong, the same address fixes it.
Where the station list comes from
Station directory data from radio-browser.info, CC0 (public-domain community data). We never call the directory's click counter from the bot. Music metadata is matched against MusicBrainz (CC0 core data).
Contact and abuse
- Station operators, opt-outs, corrections: bot@tuneping.com
- Abuse reports: abuse@tuneping.com
- Everything else: hello@tuneping.com
We read these mailboxes daily and aim to acknowledge within 24 hours. Operator details are on the imprint page.
Changelog
| 2026-10 | TunepingBot/0.1, first version. Egress 167.233.123.27 and 2a01:4f8:c016:4026::1, reverse DNS poller.tuneping.com. |