Retrieving external IP address and geolocation of an IP address using JavaScript

Yesterday I was working on a client application which required to read the public address of the client and their geo-location. So after some search I wrote the following html page which gets the current IP as well as retrieves the public location of an IP purely using JavaScript and some external APIs.

    <title>Locate an IP</title>
    <script type="text/javascript" src="yqlgeo.js"></script>
    <script type="text/javascript">

        var ipaddress;

        //get location of an IP
        function getIPLocation() {
            document.getElementById('divDetails').innerHTML = '<br />Loading..';
            try {
                var start = new Date();
                var ctrl = document.getElementById('txtIP');
                var ipadd = ctrl.value;
                yqlgeo.get(ipadd, function (o) {
                    var details = '<br /><h3><b>Location Details</b></h3>';
                    details += 'Country Code : <b>' + + '</b><br />';
                    details += 'Country Name : <b>' + + '</b><br />';
                    details += 'Country Language : <b>' + + '</b><br />';
                    details += 'Latitude : <b>' + + '</b><br />';
                    details += 'Longitude : <b>' + + '</b><br />';
                    details += 'Place Name : <b>' + + '</b><br />';
                    document.getElementById('divDetails').innerHTML = details;
                var end = new Date();
                var diff = dateDifference(start, end);
                //document.getElementById('divtime').innerHTML = 'Time Elapsed : ' + diff.seconds;
            catch (e) {
                document.getElementById('divDetails').innerHTML = e.Message;

        //get current IP
        function getCurrentIP() {
            var ctrl = document.getElementById('txtCurrentIP');
            if (ctrl) {
                ctrl.value = ipaddress;
                alert('Unable to retrieve IP');

        function getip(json) {
            if (json.ip)
                ipaddress = json.ip;
                alert('Unable to retrieve the IP address');

    <script type="text/javascript" src=""></script>
    <form id="frm" action="javascript:getIPLocation()">
        Get your IP Address
    <input type="text" id="txtCurrentIP" />
    <input type="button" onclick="getCurrentIP()" value="Get IP" />
        Type the IP Address
    <input type="text" id="txtIP" />
    <input type="button" onclick="getIPLocation()" value="Locate" />
    <br />
    <div id="divDetails">
    <br />
    <div id="divtime">

The sample makes use of the YQL Geo Library written by Chris Heilmann which is available here to retrieve the geo-location of an IP. To retrieve the client’s external IP I’ve made use of the API provided by Thanks to the SO post here.