The Geonet API lets you perform DNS lookups and pings from different places around the world. It can be helpful to see if a website is doing location-based loadbalancing (ex. clients in EU get routed to a different IP than clients in the US). Or get the latency to an IP to debug potential connection issues. Shodan also offers 2 command-line tools that use the Geonet API: geodns and geoping.
Example: geoping
$ curl https://geonet.shodan.io/api/geoping/74.6.231.20 | jq[ { "ip": "74.6.231.20", "is_alive": true, "min_rtt": 33.433, "avg_rtt": 33.664, "max_rtt": 34.06, "rtts": [ 34.059762954711914, 33.43319892883301, 33.50019454956055 ], "packets_sent": 3, "packets_received": 3, "packet_loss": 0, "from_loc": { "city": "Clifton", "country": "US", "latlon": "40.8344,-74.1377" } }, { "ip": "74.6.231.20", "is_alive": true, "min_rtt": 119.83, "avg_rtt": 120.107, "max_rtt": 120.523, "rtts": [ 120.52345275878906, 119.83036994934082, 119.96579170227051 ], "packets_sent": 3, "packets_received": 3, "packet_loss": 0, "from_loc": { "city": "London", "country": "GB", "latlon": "51.5085,-0.1257" } }, { "ip": "74.6.231.20", "is_alive": true, "min_rtt": 122.562, "avg_rtt": 122.917, "max_rtt": 123.584, "rtts": [ 123.58355522155762, 122.6050853729248, 122.56169319152832 ], "packets_sent": 3, "packets_received": 3, "packet_loss": 0, "from_loc": { "city": "Amsterdam", "country": "NL", "latlon": "52.3740,4.8897" } }, { "ip": "74.6.231.20", "is_alive": true, "min_rtt": 123.223, "avg_rtt": 123.783, "max_rtt": 124.584, "rtts": [ 124.58372116088867, 123.22330474853516, 123.54326248168945 ], "packets_sent": 3, "packets_received": 3, "packet_loss": 0, "from_loc": { "city": "Frankfurt am Main", "country": "DE", "latlon": "50.1155,8.6842" } }, { "ip": "74.6.231.20", "is_alive": true, "min_rtt": 207.881, "avg_rtt": 208.149, "max_rtt": 208.586, "rtts": [ 208.5857391357422, 207.98015594482422, 207.88145065307617 ], "packets_sent": 3, "packets_received": 3, "packet_loss": 0, "from_loc": { "city": "Singapore", "country": "SG", "latlon": "1.3215,103.6957" } }]
Example: geodns
$ curl https://geonet.shodan.io/api/geodns/yahoo.com | jq[ { "answers": [ { "type": "A", "value": "74.6.231.20" }, { "type": "A", "value": "74.6.143.25" }, { "type": "A", "value": "98.137.11.164" }, { "type": "A", "value": "74.6.143.26" }, { "type": "A", "value": "98.137.11.163" }, { "type": "A", "value": "74.6.231.21" } ], "from_loc": { "city": "Clifton", "country": "US", "latlon": "40.8344,-74.1377" } }, { "answers": [ { "type": "A", "value": "98.137.11.163" }, { "type": "A", "value": "74.6.143.26" }, { "type": "A", "value": "74.6.231.20" }, { "type": "A", "value": "74.6.231.21" }, { "type": "A", "value": "98.137.11.164" }, { "type": "A", "value": "74.6.143.25" } ], "from_loc": { "city": "London", "country": "GB", "latlon": "51.5085,-0.1257" } }, { "answers": [ { "type": "A", "value": "98.137.11.164" }, { "type": "A", "value": "98.137.11.163" }, { "type": "A", "value": "74.6.231.20" }, { "type": "A", "value": "74.6.143.26" }, { "type": "A", "value": "74.6.231.21" }, { "type": "A", "value": "74.6.143.25" } ], "from_loc": { "city": "Amsterdam", "country": "NL", "latlon": "52.3740,4.8897" } }, { "answers": [ { "type": "A", "value": "98.137.11.164" }, { "type": "A", "value": "98.137.11.163" }, { "type": "A", "value": "74.6.143.26" }, { "type": "A", "value": "74.6.143.25" }, { "type": "A", "value": "74.6.231.20" }, { "type": "A", "value": "74.6.231.21" } ], "from_loc": { "city": "Frankfurt am Main", "country": "DE", "latlon": "50.1155,8.6842" } }, { "answers": [ { "type": "A", "value": "74.6.143.25" }, { "type": "A", "value": "74.6.231.21" }, { "type": "A", "value": "74.6.143.26" }, { "type": "A", "value": "98.137.11.164" }, { "type": "A", "value": "98.137.11.163" }, { "type": "A", "value": "74.6.231.20" } ], "from_loc": { "city": "Singapore", "country": "SG", "latlon": "1.3215,103.6957" } }]