Data and API
Everything on the pages, as files: JSON and CSV at fixed addresses, rewritten every hour. No key, no sign-up. Start at /data/index.json, which lists them all.
The files
- Kansas City, the last 24 hours
- /data/latest/mci.json and /data/latest/mci.csv: each pair of networks, one direction and address family, as on the Kansas City page (679 pairs now).
- Kansas City, history
- /data/history/mci.json: each day's pairs by how they went, the pairs whose way changed and those that left the metro every time, as on the history page.
- One network
- /data/net/<AS number>.json, for example /data/net/917.json: its pairs in the last 24 hours, both ways, and its changes and detours since the first day (34 networks).
- Between metros
- /data/links.json and /data/links.csv: each day, the least round trip between anchors in two metros, either way, per address family.
- Every daily summary
- A CSV a month, listed in /data/days/index.json (/data/days/2026-10.csv, /data/days/2026-11.csv): one row per UTC day, address family and pair (inside Kansas City, and between metros' anchors), kept for good, with that day's judgement for the pairs inside a metro.
Fields
- af
- 4 or 6.
- src_asn, src_name, dst_asn, dst_name
- The source's and the destination's network: AS number and name (PeeringDB's, or the anchor's company when PeeringDB has none).
- class
- left (left the metro), local_ix (local, via an exchange), local (local, no exchange hop) or unclear: the judgement of most of the pair's traceroutes in the period, as the methodology explains. A tie between the two local kinds counts as via an exchange.
- left, local_ix, local, unclear
- How many of the pair's traceroutes were judged each way.
- median_rtt_ms, min_rtt_ms
- The destination's round trip, median and least, in milliseconds.
- median_beyond_line_ms
- The round trip less the source's own line (the first public hop before the destination); 7 ms or more is left the metro.
- exchanges_in_metro
- Exchange LANs crossed where the hop answered under 7 ms beyond the source's own line: in the metro (PeeringDB's exchange names).
- exchanges_7ms_plus
- Exchange LANs crossed where the hop answered 7 ms or more beyond the source's own line, with the exchange's home city: reached after the traffic left the metro, or a router slow to answer. Not where the exchange is: a KCIX hop can be here. In the CSVs, both lists are separated by semicolons.
- back_class, back_median_rtt_ms
- The same pair the other way (destination to source), when measured.
- runs
- In the history files: each stretch of periods judged the same way, from and to (unclear periods skipped).
- Days and times
- UTC. A period marked "partial": true isn't over yet.
Using it
The measurements are RIPE Atlas's (RIPE NCC): its anchoring measurements, which are public, and our own traceroutes from the anchors back to the probes. Network and exchange names are PeeringDB's. When you use these files, please name Latency Report and RIPE Atlas. The addresses and fields above stay as they are within version 1; a change that breaks them gets a new version number in index.json.