Loading data from the backend…
Loading data from the backend…
A self-describing summary of what this service is, what data it exposes, how to access it, and how to use it responsibly. Intended for large language models, AI agents, web crawlers, and automated researchers.
This is a live observatory of the publicly discoverable Ethereum consensus-layer (beacon-chain) peer-to-peer network. It crawls the discv5 discovery DHT, opens libp2p connections to nodes that broadcast Ethereum-mainnet ENRs, asks them for identity, status, and metadata, geolocates their public IP, and renders the resulting dataset as charts, maps, a 3D globe, a node directory, and a historical time series. All data shown is derived from public protocol broadcasts.
A plain-text version of this page suitable for ingestion is available at /llms.txt.
eth2fork digest matches mainnet are persisted with the node's public key, IP, UDP/TCP ports, and advertised attestation subnets./eth2/beacon_chain/req/identify/1/ssz_snappy exchange and a status RPC. This adds the client name, version, OS, agent string, fork digest, finalized checkpoint, and head slot.node_a → node_b) and exposed as the animated arcs on the 3D globe.All endpoints return JSON. CORS is enabled. Responses are cached in-process with the TTLs shown; clients should respect the Cache-Control header.
/healthLiveness probe. Returns { status: 'ok' }.
/api/statsHeadline counts, status breakdown, latest history sample, in-memory discovery counters.
/api/aggregates/overviewcache 30 sJust the overview block (total, active, CL synced, geo, countries).
/api/aggregates/filterscache 5 minAvailable filter dropdown values for the nodes page.
/api/aggregates/clients?layer=cl|elcache 5 minDistribution by client name for the consensus- or execution-layer.
/api/aggregates/clients/versions?layer=cl|elcache 5 minPer-version distribution within each client name.
/api/aggregates/os?layer=cl|elcache 5 minDistribution by operating system.
/api/aggregates/countriescache 5 minDistribution by country code.
/api/aggregates/cities?country=XXcache 5 minPer-country city breakdown.
/api/aggregates/globe-clusters?maxPerCountry=50cache 1 minCity-level clusters with lat/lon and counts; clamped 1..100.
/api/aggregates/peer-edges?limit=200&minHits=1cache 30 sRecent peer-to-peer connection samples used to render arcs; clamped 1..1000.
/api/aggregates/heatmap?limit=5000cache 1 minLightweight node-location list for the world map; clamped 1..20000.
/api/nodes?page=1&limit=25&sort=last_updated_at&order=desccache 15 sPaginated, sortable, filterable list of nodes. Active+etherscan-checked are prioritized by default.
/api/nodes/:nodeIdSingle node detail (no cache).
/api/analytics/infrastructurecache 2 minCloud, hosting, connection-type rollups.
/api/analytics/forkscache 2 minFork digests from ENR and from /eth2 status RPCs, with human-readable labels.
/api/analytics/protocol-versionscache 2 minlibp2p agent / protocol version distribution.
/api/analytics/client-versions?layer=cl|elcache 2 minAggregated client-version breakdown including stable/RC tags.
/api/history/metrics?from=ISO&to=ISOcache 1 minTotal / CL-synced / CL-unsynced points over time. Default window: 30 days.
/api/history/metrics/latestMost recent history sample.
/api/history/breakdown?dimension=cl_clientBreakdown of the latest snapshot by one dimension.
/api/history/breakdown/current?dimension=cl_clientcache 2 minLive breakdown computed from current nodes (not historical).
/api/history/breakdown/series?dimension=cl_client&from=ISO&to=ISOcache 1 minTime series of breakdowns; valid dimensions: status, cl_client, el_client, cl_os, el_os, country, cl_network, el_network, cloud_provider, hosting_type, fork_digest, protocol_version.
/graphqlGraphQL endpoint exposing the same data as the REST routes. Introspection enabled.
node_id — discv5 node ID, 32-byte hex.enr — base64-url-encoded Ethereum Node Record.ip, tcp_port, udp_port — public addressing from the ENR.status — active | inactive | unknown.cl_client_name, cl_client_version, cl_agent — consensus client identification.el_client_name, el_client_version — execution client when disclosed.cl_fork_digest, cl_head_slot, cl_finalized_root, cl_synced — beacon-chain status.geo_country, geo_region, geo_city, geo_latitude, geo_longitude, geo_asn, geo_isp, cloud_provider, hosting_type.last_active_at, last_updated_at, discovered_at — timestamps in UTC.cl_synced reflects the most recent successful status RPC, not a current ground-truth.If-Modified-Since where possible, and back off on 429 / 5xx.User-Agent header with a contact URL or e-mail.Suggested citation when referring to numbers shown here:
Ethereum node observatory, https://etherrays.com, accessed YYYY-MM-DD. Data derived from public discv5 / libp2p broadcasts; figures are best-effort and represent a lower bound on the discoverable mainnet network.
eth2 fork digest.