🌎 IP Address to Location
IP Geolocation is a technique for
determining geographical location of an IP address (which is a special number assigned to every device that is
connected to the Internet).
Geolocation is very commonly used by services like Netflix and YouTube when determining the country of origin of
their users, which is then used to
restrict content according
to location.
Another good example is BBC, which blocks most of their media content from showing if they detect a non-UK IP
address.
Other use cases for this include simply revealing where some anonymous person is from when you have their IP
address.
And finally, this can be used just for curiosity's sake, for example, to test your own IP address to see
how close someone could trace down your geographical location if they had your IP address.
Start by entering one or more IP addresses using dotted notation (i.e. 142.250.191.174). You can also lookup your own IP address.
Loading...
How accurate is this?
A point should be made that it is near impossible to get your precise home address just from your IP address, so no online IP geolocation tool will give you that. However, you are still very likely to locate the exact country and probably even the exact city, so such tools are still useful for most cases.
The accuracy will ultimately depend on the database that is being used as some are more accurate than others. We source our geolocation data from GeoLite2 by MaxMind and then refresh that data periodically once a month if possible. Regarding exact accuracy, MaxMind claims the following:
We estimate that our GeoIP2 products can identify users at the country level with 99.8% accuracy. For IPs located within the U.S., we estimate around an 80% accuracy at the state/region level, and a 66% accuracy for cities (within a 50km radius of that city). How accurate is GeoIP2?
If any data provided by this tool is wildly inaccurate, then you may direct those issues directly to MaxMind.
Always keep in mind that whoever is trying to track you down, may have access to a more accurate database, and thus be able to get a more precise location from your IP address.
To find the exact physical location from your IP address, someone would have to contact your Internet Service Provider (ISP), and ask them to provide such information since they are the ones who would have it. However, your ISP is very unlikely to give up that information to anyone other than the police or some other authority.
Finally, if you tried looking up your own IP address, and were surprised at how accurately someone could narrow your location, and if privacy is a real concern to you, then you may want to start using additional software to hide your real IP address to remain truly anonymous.
API Access?
Sure! This application is nothing but a fancy wrapper around a public API anyways. Here is an example:
curl -s https://api.proxynova.com/v1/geolocation/bulk?ip=74.6.143.26 | jq { "data": [ { "ip": "74.6.143.26", "continent_code": "NA", "continent_name": "North America", "country_code": "US", "country_name": "United States", "region": "NY", "city": "Lockport", "latitude": 43.1721, "longitude": -78.6913, "asn": "26101", "organization": "YAHOO-BF1" } ] }
You may also just feed the list of IPs to that endpoint directly from your log files. For example:
tail -n 10000 access.log | jq -r '.request.remote_ip' | sort | uniq | curl -s -X POST --data-binary @- https://api.proxynova.com/v1/geolocation/bulk | jq -r '.data[] | select(.country_code == "FR") | .ip'
The command above will do the following:
- Read last 10,000 lines from a log file
- Extract only visitor IP addresses from each of those log entries
- Filter out duplicate IP addresses
- Send that list of IP addresses through our Geolocation API endpoint
- Filter out the final response to be just IP addresses from the country of France
Ideas are endless. Make sure jq
and curl
packages are installed on your system, because typically they are not by default:
sudo apt-get install jq curl
You are limited to sending 1,000 IP addresses at a time, or about 5 megabytes of data - whichever limit you hit first.