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
Plain text list (/ips.txt) Updated Aug 12, 2026

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.