TunepingBot/0.1 (+https://tuneping.com/bot)
You found TunepingBot in your logs. Here is everything it does.
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 would rather it did not, any one of the three opt-outs below works, permanently, within 24 hours. No questions asked.
To: [email protected] Subject: Opt-out Body: stream.example.net
Send the stream host or URL to [email protected]. You get a confirmation once it is removed.
User-agent: TunepingBot Disallow: /
Per scheme, host and port. A real User-agent: * group works too (see below).
X-Robots-Tag: noindex
On the status endpoint or the stream URL. A 401 or 403 has the same effect.
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, forward-confirmed. Machine-readable list at /bot/ips.json. |
| Frequency | One request per station every 20 to 60 s; every 5 min once the 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. |
| Takes effect | Within 24 hours, usually minutes. Permanent until you ask to come back. |
| Operator | Tuneping, see the imprint. Abuse: [email protected]. |
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 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; once per hour the recently-played list where the server offers it) - Otherwise the public stream URL itself with
Icy-MetaData: 1, read only until the first in-stream metadata block arrives, then closed Connection: close, plain HTTP/1.1, 5 s connect and 10 s total timeout, at most 5 redirects
What it never does
- Read audio beyond the one metadata interval needed to find the title (about 16 KB, discarded as it arrives)
- 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
- Call the directory's click counter
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 [email protected]. 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 three ways at the top of this page 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. A general User-agent: * group in robots.txt also works, as long as it is not just the one-line default your server software ships (see above). 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 [email protected] 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: [email protected]
- Abuse reports: [email protected]
- Everything else: [email protected]
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. |