Migrating from UptimeRobot to Cluster Uptime: The Complete Guide

Stop paying for basic monitoring. A step-by-step guide to exporting your monitors from UptimeRobot and importing them into self-hosted Cluster Uptime.

J
Jesus Paz
2 min read

UptimeRobot has been the default “Free” monitoring tool for a decade. But recent changes to their pricing model (limiting free monitors to 5-minute intervals) have left many developers looking for alternatives.

If you are ready to own your data and get 1-minute checks for free, welcome to Cluster Uptime. Here is how to move your monitors over.

Phase 1: Exporting from UptimeRobot

UptimeRobot does not provide a simple “Download CSV” button in the UI. We have to use their API.

  1. Get API Key: Log in to UptimeRobot -> My Settings -> API Settings -> Create “Main API Key”.
  2. Fetch Monitors: Run this curl command:
Terminal window
curl -X POST "https://api.uptimerobot.com/v2/getMonitors" \
-d "api_key=YOUR_API_KEY" \
-d "format=json" \
> monitors.json

Now you have a JSON file with all your monitors.

Phase 2: Setting Up Cluster Uptime

(If you haven’t already).

  1. Get a $5 VPS or use your Raspberry Pi.
  2. git clone https://github.com/ClusterUptime/clusteruptime.git
  3. docker compose up -d

Phase 3: The Import Script

We wrote a simple migration script (Python) to parse the UptimeRobot JSON and push it to Cluster Uptime’s API.

import json
import requests
CLUSTER_UPTIME_URL = "http://localhost:3000/api/monitors"
# No auth needed for initial setup, or generate an API Token in Settings
with open('monitors.json') as f:
data = json.load(f)
for m in data['monitors']:
payload = {
"name": m['friendly_name'],
"url": m['url'],
"type": "http",
"interval": 60 # Upgrade to 1 minute! (UptimeRobot Free was 300)
}
print(f"Migrating {m['friendly_name']}...")
try:
r = requests.post(CLUSTER_UPTIME_URL, json=payload)
if r.status_code == 201:
print("Done.")
else:
print(f"Failed: {r.text}")
except Exception as e:
print(f"Error: {e}")

Phase 4: Switching DNS

If you were using a UptimeRobot status page (e.g., status.example.com CNAME stats.uptimerobot.com), updates your DNS records.

  • Type: CNAME
  • Name: status
  • Content: your-vps-ip.nip.io (or your actual domain).

Phase 5: Verification

  1. Check that all monitors are “Green” in Cluster Uptime.
  2. Wait 24 hours to ensure stability.
  3. Delete your UptimeRobot account (or downgrade to Free).

Conclusion

You just saved money and gained privacy. Plus, you now have 1-minute check intervals instead of 5-minute. That means you’ll know about an outage 4 minutes faster than before.

👨‍💻

Jesus Paz

Founder

Read Next

Join 1,000+ FinOps and platform leaders

Get uptime monitoring and incident response tactics delivered weekly.