Try the RankNibbler SEO API

Reports Beta

Uptime and performance reports for one monitor: how much of a period it was up, when it went down, how fast it responded, and where it was checked from.

Every report needs an X-API-Key header whose owner has access to uptime monitoring in the app, and each call counts once against your daily quota. See Monitoring API: getting started for authentication, rate limits and errors. For individual checks, use Results.

Reports

ReportAnswersDefault windowLongest window
SummaryUptime %, downtime, outages and response times for a period7 days1830 days
OutagesEach outage, and an up, down, maintenance and unknown timeline7 days1830 days
PerformanceChecks and response times per hour, day or week1 day (hour), 30 days (day, week)31 days (hour), 400 (day), 800 (week)
Hours of dayAverage response time at each hour of the day7 days92 days
ProbesChecks and response times per location7 days1830 days

All five are GET requests under /api/v1/monitors/{id}/.

How the reports count time

Example: last month's uptime for every monitor

List your monitors, then ask for each one's summary. This uses one request for the list plus one per monitor.

monthly-uptime.sh
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. API="https://www.ranknibbler.com/api/v1"
  4. FROM="2026-08-01T00:00:00Z"; TO="2026-09-01T00:00:00Z"
  5. curl -fsS -H "X-API-Key: $RANKNIBBLER_API_KEY" "$API/monitors?per=1000" \
  6. | jq -r '.monitors[] | .id' \
  7. | while read -r id; do
  8. curl -fsS -H "X-API-Key: $RANKNIBBLER_API_KEY" "$API/monitors/$id/summary?from=$FROM&to=$TO" \
  9. | jq -r '[.id, (.uptimePct // "n/a"), .outages, .downSeconds] | @tsv'
  10. sleep 1
  11. done