Uptimeify Bots: What They Fetch and How to Block Them
The automated clients Uptimeify operates: what each one requests, how often, from which addresses, and how to stop it without contacting us first.
You are most likely here because you found one of our names in an access log and want two answers: what is this, and how do I stop it. Both are on this page, and neither needs an email to us first.
We run three automated clients against the public internet. Each identifies itself, each comes from a published set of addresses, and each can be blocked at your edge. One of them runs on a check interval somebody on your own side chose, and blocking that one has a consequence worth reading before you do it.
SiteMonitorBot
Ordered by whoever runs the site. Arrives on a fixed interval, from published addresses.
UptimeifyStatusBot
Reads one public status-page summary per minute. Nothing else on the host is touched.
UptimeifyToolsBot
One request, because a person or an AI agent asked for it. No schedule behind it.
Our bots
SiteMonitorBot
Ordered by the site owner- User agent
SiteMonitorBot/1.0 (+https://uptimeify.io)Sent on the primary check every monitor runs. Match on the substring SiteMonitorBot, never on the full string.
- What it does
- Checks a website, endpoint or service because its owner asked us to. If it is in your logs, someone with access to your infrastructure configured a monitor for it.
- Extra header
- X-Uptimeify-Monitor: 1
- Frequency
- Whatever check interval the monitor's owner configured, from each location they enabled.
- Follows robots.txt
- No. A monitor is ordered, not discovered, and a Disallow written by a third party would switch off a check somebody on your own team is relying on.
- Source addresses
- Published and machine-readable, updated when the fleet changes.uptimeify.io/ips.txt
Two exceptions are worth knowing before you write a rule.
Browser-driven checks (screenshots and Playwright monitors) send a real Chrome user agent with our token appended, not substituted:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36 SiteMonitorBot/1.0 (+https://uptimeify.io)
A Playwright monitor walks a real user journey such as a login or a checkout, and many WAFs block a bare, unfamiliar user agent outright. Blocking it would make us report an outage nobody is experiencing, which is why the browser shape stays intact and our name is added to it rather than replacing it. A substring match still catches it; a full-string match does not, because the Chrome portion changes with every browser update.
Keyword and expected-response checks fire as separate requests alongside the primary check and currently carry neither the token nor the header, a plain desktop Chrome user agent goes out instead. Matching on our name will not stop them. Matching on the addresses will.
UptimeifyStatusBot
Reads public status pages- User agent
UptimeifyStatusBot/1.0 (+https://uptimeify.io/robot)Sent on every request, without exception.
- What it does
- Reads the public status pages other companies publish about themselves, so we can tell our customers when a service they depend on is reporting problems.
- What it requests
- One JSON status summary per status page, at most once a minute. It does not crawl, does not follow links out of that document, and submits nothing.
- Conditional requests
- Once we hold a validator, later requests carry If-None-Match and If-Modified-Since, so an unchanged page answers 304 with no body.
- Retries
- None within a cycle. A failed request is recorded as failed and we wait for the next minute rather than pressing a struggling page.
- Redirects
- Not followed. A 3xx is treated as a failure, so we can never be steered at a host nobody validated.
- Response size
- Capped at 2 MB, enforced as bytes arrive rather than after buffering the whole body.
- Follows robots.txt
- No. Block it at your edge and it stops immediately, no request to us needed.
- Source addresses
- The same published fleet the monitoring checks run from.uptimeify.io/ips.txt
UptimeifyToolsBot
One request, on demand- User agent
UptimeifyToolsBot/1.0 (+https://uptimeify.io/robot)Sent by the free tools and by the anonymous checks our MCP server exposes to AI agents.
- What it does
- Fetches an address someone typed into one of our free tools, or that an AI agent passed to our MCP server, and reports what came back.
- Frequency
- No schedule at all. One request per request, and per-IP rate limits on our side cap how fast anyone can repeat it.
- Follows robots.txt
- No. It acts for a person waiting on an answer, the same way a browser does when they open the address themselves.
- Source addresses
- Our application servers, not the monitoring fleet, so these do not appear in the allowlist.
Until 2026-08-12 this client advertised a URL on a domain that is not ours. If you followed it out of an old log entry and found nothing, that was the reason, and this page is where it points now.
Addresses and verification
Every scheduled check comes from a fixed, published fleet. The list below is generated from the nodes that are actually active right now, not from a copy someone maintains by hand, so an allowlist built from it stays correct when the fleet changes.
IPv4 addresses 18
- 31.70.128.249
- 37.27.11.231
- 46.224.9.105
- 46.224.48.13
- 46.224.134.214
- 51.68.147.37
- 51.83.224.155
- 57.130.70.240
- 57.130.71.227
- 57.131.17.27
- 57.131.18.139
- 57.131.135.75
- 57.131.135.216
- 85.215.171.190
- 85.215.239.242
- 91.98.235.124
- 93.93.119.216
- 95.217.180.92
IPv6 addresses 14
- 2001:41d0:601:2000::13f0
- 2001:41d0:601:2000::402
- 2001:41d0:701:1000::144d
- 2001:41d0:701:1000::9d8
- 2001:ba0:209:1e00::1
- 2001:ba0:209:1e00:1::1
- 2a01:239:482:2900::1
- 2a01:239:482:2900:1::1
- 2a01:4f8:1c1a:5fe9::1
- 2a01:4f8:1c1a:ede::1
- 2a01:4f8:c012:cd67::1
- 2a01:4f8:c013:9515::1
- 2a01:4f9:c013:d0db::1
- 2a01:4f9:c013:d85d::1
For firewall configuration snippets per vendor, see the firewall documentation. If you would rather automate it, /ips.txt is plain text, one address per line, and cached for five minutes.
Check whether we get through
If you already run a rule and want to know what it does to us, ask us to fetch you. We request the address with the SiteMonitorBot user agent and show you the answer your own server gives.
Ask us to fetch you
We request the address you enter with the SiteMonitorBot user agent and show you the answer your server gives us. Nothing else is looked up.
This asks your server and reads its response, nothing more. It does not tell you whether the address is monitored with us, by whom, or how often, because that would answer a question about someone else's account to anyone who can guess a hostname.
Why this is in your log
What you see
SiteMonitorBot/1.0 at a steady interval
What it is
A monitor somebody on your side configured.
What to do
Ask internally before blocking. Blocking it makes it alert.
What you see
A Chrome user agent ending in SiteMonitorBot/1.0 and several requests including assets
What it is
A screenshot or Playwright monitor.
What to do
Same origin, same owner. Treat it as the monitor above.
What you see
Plain desktop Chrome, from an address in /ips.txt
What it is
A keyword or expected-response check.
What to do
A name match will not catch it. Match on the address.
What you see
UptimeifyStatusBot fetching /api/v2/summary.json up to once a minute
What it is
We are reading your public status page.
What to do
Block it at your edge if unwanted. Nothing else of yours is read.
What you see
A single UptimeifyToolsBot request with no pattern to it
What it is
Someone ran a free tool, or an AI agent called our MCP server.
What to do
Nothing follows it. There is no schedule behind it.
What we hold ourselves to
Our checks run against infrastructure we do not own, so the limits matter more than the intentions. These are the ones that are enforced in code, not aspirations:
- We identify ourselves. Every scheduled request carries a name and a URL that resolves to this page. The one exception, the keyword and expected-response checks, is named above rather than left for you to discover.
- We back off instead of retrying. A failed status-page read waits for the next cycle. It does not hammer a host that is already struggling.
- We ask for as little as possible. Conditional requests mean an unchanged status page answers with HTTP status code 304 and sends no body at all. Reachability checks read no body to begin with.
- We stay where we were pointed. Redirects on a status-page read are a failure, not an invitation. Nothing decides at runtime to fetch a host that was never validated.
- We publish where we come from. The address list above is generated from the live fleet, so blocking or allowlisting us never depends on us remembering to update a page.
What we do not do: read robots.txt. A Disallow costs you ten minutes and changes nothing on any of the three clients. A rule at your CDN, WAF or web server works immediately.
Blocking us
Match on the substring, never the full user agent string, and reject the request. Cloudflare, as a custom WAF rule expression:
(http.user_agent contains "SiteMonitorBot") or
(http.user_agent contains "UptimeifyStatusBot") or
(http.user_agent contains "UptimeifyToolsBot")
nginx:
if ($http_user_agent ~* "(SiteMonitorBot|UptimeifyStatusBot|UptimeifyToolsBot)") {
return 403;
}
Apache 2.4:
<If "%{HTTP_USER_AGENT} =~ /SiteMonitorBot|UptimeifyStatusBot|UptimeifyToolsBot/">
Require all denied
</If>
To stop the keyword and expected-response checks as well, block the addresses in /ips.txt rather than the names, those requests carry a plain Chrome user agent.
One consequence to weigh first: blocking SiteMonitorBot stops a check somebody on your own team is relying on, and it will start reporting a false positive, an outage that is not happening. That is also why these are three separate clients rather than one, blocking any of them should never silently take out the others.
Contact
Something wrong, too frequent, or simply unwanted: hello@uptimeify.io. We read this address and answer.