You have an IP address and you want to get more info about it.
infoSNIPER does the job. However, I didn’t find an API to it.
MaxMind offers several services. They also have a free service called GeoLite, which is a bit less accurate and the databases are updated once a month. If you want to use it from Python, here is an API (pygeoip) to the databases (that you need to download and extract and they take about 44 MB disk space).
If you don’t want to download any databases then IPInfoDB can be a nice solution. They have an API, thus you can use this service in your applications. You’ll have to register for a free API key. There is a Python library to it called pyipinfodb.
Having an IP address, how to figure out where (in which country) it is located?
There are several sites that provide all kinds of information about a host (e.g. Geotool, GeoBytes, etc). We could write a scraper but there are some problems with this approach: some sites limit the number of free accesses (e.g. Geotool presents a captcha after a while); if the layout changes, you need to rewrite the scraper.
I made a simple Python script for it, available here.
Thanks to Ashwini Chaudhary who pointed me towards geoPlugin.