Relay monitor · Data
Nostr relay dataset
Every public Nostr relay we list (1,429 as of 2026-11-04), with its status, uptime, connect time, software, NIPs and location. Updated every hour. Free to reuse under CC BY 4.0: credit "anchorman.lol relay monitor" with a link to anchorman.lol/monitor.
Fields
- url, host
- The relay's address (wss://…) and the same without the scheme, as in /monitor/<host>
- name
- Its NIP-11 name, else the host
- status
- up, slow (connects in over a second), down (3 failed checks in a row), blocked or paid (refuses our checker)
- uptime_24h, uptime_30d
- Share of checks that succeeded, 0–1; empty for a relay that refuses us
- connect_ms, read_ms
- Last time to open the WebSocket, and from REQ to EOSE, in milliseconds
- software, version
- From its NIP-11 document
- nips
- NIPs it lists in NIP-11
- payment_required, auth_required
- NIP-11 limitation flags; empty when not stated
- country, place, lat, lon
- IP geolocation (approximate; lat/lon rounded to 0.1°)
- ours
- True for relays we run ourselves (never ranked)
- checked_at, page
- When we last checked it, and its page here
Public API
GET https://anchorman.lol/api/monitor/relays.json returns the same data. It is free and needs no key; please stay under 60 requests a minute (the answer changes every few minutes at most, and it is cached for 5). Over the limit you get HTTP 429 with Retry-After. CORS is open, so it works from a browser.
How we measure
Every relay is checked once an hour from Cloudflare's edge: we open a WebSocket, send a REQ and time the EOSE, and fetch the relay's NIP-11 document. A relay is down after 3 failed checks in a row, slow when connecting takes over a second. Relays that refuse our checker (HTTP 401, 402, 403 or 429) are listed but not measured. Locations are IP geolocation by DB-IP and place names from GeoNames, both CC BY 4.0.