Run Network Tools from Multiple Geographic Locations

The GeoNet API lets you run common network tools from servers that are located around the world. The purpose is to provide an API to help developers identify different network behavior depending on the region that the end-user is located in.

View API Docs Download .deb All releases

Commands

GeoPing Command

Measure the latency to an IP from multiple locations around the world. Useful for performance testing, detecting anycast and identifying whether a service is down globally or just a specific region.

Install Command

GeoDNS Command

Lookup various DNS records from multiple locations around the world. Helpful to identify whether websites are served from different locations depending on where the end-user is located.

Install Command

cURL + GeoPing
 
~ $
curl https://geonet.shodan.io/api/geoping/yahoo.com

Python + GeoPing
                        
import requests
results = requests.get("https://geonet.shodan.io/api/geoping/1.1.1.1").json()
                        
                    
Sample GeoPing Response
                        
[
    {
        "ip": "98.137.11.163",
        "is_alive": true,
        "min_rtt": 25.274,
        "avg_rtt": 25.701,
        "max_rtt": 25.959,
        "rtts": [
            25.959014892578125,
            25.273561477661133,
            25.870084762573242
        ],
        "packets_sent": 3,
        "packets_received": 3,
        "packet_loss": 0,
        "from_loc": {
            "city": "Santa Clara",
            "country": "US",
            "latlon": "37.3924,-121.9623"
        }
    },
    {
        "ip": "98.137.11.163",
        "is_alive": true,
        "min_rtt": 82.203,
        "avg_rtt": 82.875,
        "max_rtt": 84.003,
        "rtts": [
            84.00273323059082,
            82.41891860961914,
            82.20314979553223
        ],
        "packets_sent": 3,
        "packets_received": 3,
        "packet_loss": 0,
        "from_loc": {
            "city": "Clifton",
            "country": "US",
            "latlon": "40.8344,-74.1377"
        }
    },
    {
        "ip": "74.6.143.26",
        "is_alive": true,
        "min_rtt": 78.038,
        "avg_rtt": 78.409,
        "max_rtt": 79.042,
        "rtts": [
            79.04219627380371,
            78.14788818359375,
            78.03821563720703
        ],
        "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": 112.018,
        "avg_rtt": 113.438,
        "max_rtt": 114.572,
        "rtts": [
            114.57180976867676,
            113.7232780456543,
            112.01834678649902
        ],
        "packets_sent": 3,
        "packets_received": 3,
        "packet_loss": 0,
        "from_loc": {
            "city": "Frankfurt am Main",
            "country": "DE",
            "latlon": "50.1025,8.6299"
        }
    },
    {
        "ip": "98.137.11.164",
        "is_alive": true,
        "min_rtt": 144.033,
        "avg_rtt": 144.311,
        "max_rtt": 144.849,
        "rtts": [
            144.84930038452148,
            144.04940605163574,
            144.03319358825684
        ],
        "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": 238.449,
        "avg_rtt": 238.819,
        "max_rtt": 239.44,
        "rtts": [
            239.4404411315918,
            238.56806755065918,
            238.4490966796875
        ],
        "packets_sent": 3,
        "packets_received": 3,
        "packet_loss": 0,
        "from_loc": {
            "city": "Singapore",
            "country": "SG",
            "latlon": "1.3215,103.6957"
        }
    },
    {
        "ip": "74.6.143.26",
        "is_alive": true,
        "min_rtt": 221.059,
        "avg_rtt": 221.206,
        "max_rtt": 221.43,
        "rtts": [
            221.42958641052246,
            221.12774848937988,
            221.05932235717773
        ],
        "packets_sent": 3,
        "packets_received": 3,
        "packet_loss": 0,
        "from_loc": {
            "city": "Doddaballapura",
            "country": "IN",
            "latlon": "13.2257,77.5750"
        }
    }
]