
Security News
Deno 2.6 + Socket: Supply Chain Defense In Your CLI
Deno 2.6 introduces deno audit with a new --socket flag that plugs directly into Socket to bring supply chain security checks into the Deno CLI.
ip2geotools
Advanced tools
Simple tool for getting geolocation information on given IP address from various geolocation databases.
ip2geotools is a simple tool for getting geolocation information on given IP address from various geolocation databases. This package provides an API for several geolocation databases.
To install the ip2geotools module, type:
.. code-block:: bash
$ pip install ip2geotools
.. code-block:: pycon
>>> from ip2geotools.databases.noncommercial import DbIpCity
>>> response = DbIpCity.get('147.229.2.90', api_key='free')
>>> response.ip_address
'147.229.2.90'
>>> response.city
'Brno (Brno střed)'
>>> response.region
'South Moravian'
>>> response.country
'CZ'
>>> response.latitude
49.1926824
>>> response.longitude
16.6182105
>>> response.to_json()
'{"ip_address": "147.229.2.90", "city": "Brno (Brno střed)", "region": "South Moravian", "country": "CZ", "latitude": 49.1926824, "longitude": 16.6182105}'
>>> response.to_xml()
'<?xml version="1.0" encoding="UTF-8" ?><ip_location><ip_address>147.229.2.90</ip_address><city>Brno (Brno střed)</city><region>South Moravian</region><country>CZ</country><latitude>49.1926824</latitude><longitude>16.6182105</longitude></ip_location>'
>>> response.to_csv(',')
'147.229.2.90,Brno (Brno střed),South Moravian,CZ,49.1926824,16.6182105'
When installed, you can invoke ip2geotools from the command-line:
.. code:: bash
ip2geotools [-h] -d {dbipcity,hostip,freegeoip,ipstack,maxmindgeolite2city,ip2location,dbipweb,maxmindgeoip2city,ip2locationweb,neustarweb,geobytescitydetails,skyhookcontextacceleratorip,ipinfo,eurek,ipdata}
[--api_key API_KEY] [--db_path DB_PATH] [-u USERNAME]
[-p PASSWORD] [-f {json,xml,csv-space,csv-tab,inline}] [-v]
IP_ADDRESS
Where:
ip2geotools: is the script when installed in your environment, in development you could use python -m ip2geotools instead
IP_ADDRESS: IP address to be checked
-h, --help: show help message and exit
-d {dbipcity,hostip,...,ipdata}: geolocation database to be used (case insesitive)
--api_key API_KEY: API key for given geolocation database (if needed)
--db_path DB_PATH: path to geolocation database file (if needed)
-u USERNAME, --username USERNAME: username for accessing given geolocation database (if needed)
-p PASSWORD, --password PASSWORD: password for accessing given geolocation database (if needed)
-f {json,xml,csv-space,csv-tab,inline}, --format {json,xml,csv-space,csv-tab,inline}: output data format
-v, --version: show program's version number and exit
Examples:
.. code:: bash
$ ip2geotools 147.229.2.90 -d dbipcity -f json
{"ip_address": "147.229.2.90", "city": "Brno (Brno střed)", "region": "South Moravian", "country": "CZ", "latitude": 49.1926824, "longitude": 16.6182105}
This module contains models for the data returned by geolocation databases and these models are also used for comparison of given and provided data.
ip2geotools.models.IpLocation
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Model for storing location of given IP address.
Attributes:
ip_address: IP addresscity: city where IP address is locatedregion: region where IP address is locatedcountry: country where IP address is located (two letters country code)latitude: latitude where IP address is locatedlongitude: longitude where IP address is locatedMethods:
to_json: returns model data in JSON formatto_xml: returns model data in XML format (root element: ip_location)to_csv: returns model data in CSV format separated by given delimiter__str__: internal string representation of model, every single information on new lineThis module provides special exceptions used when accessing data from third-party geolocation databases.
ip2geotools.errors.LocationError: a generic location errorip2geotools.errors.IpAddressNotFoundError: the IP address was not foundip2geotools.errors.PermissionRequiredError: problem with authentication or authorization of the request; check your permission for accessing the serviceip2geotools.errors.InvalidRequestError: invalid requestip2geotools.errors.InvalidResponseError: invalid responseip2geotools.errors.ServiceError: response from geolocation database is invalid (not accessible, etc.)ip2geotools.errors.LimitExceededError: limits of geolocation database have been reachedFollowing classes access many different noncommercial and commercial geolocation databases using defined interface.
ip2geotools.databases.interfaces
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
IGeoIpDatabase: interface for unified access to the data provided by various geolocation databasesip2geotools.databases.noncommercial
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
DbIpCity: https://db-ip.com/api/HostIP: http://hostip.info/Freegeoip: http://freegeoip.net/ Database is deprecated!Ipstack: https://ipstack.com/MaxMindGeoLite2City: https://dev.maxmind.com/geoip/geoip2/geolite2/Ip2Location: https://lite.ip2location.com/database/ip-country-region-city-latitude-longitudeip2geotools.databases.commercial
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
DbIpWeb: https://db-ip.com/MaxMindGeoIp2City: https://www.maxmind.com/Ip2LocationWeb: https://www.ip2location.com/NeustarWeb: https://www.neustar.biz/resources/tools/ip-geolocation-lookup-tool/GeobytesCityDetails: http://geobytes.com/get-city-details-api/SkyhookContextAcceleratorIp: http://www.skyhookwireless.com/IpInfo: https://ipinfo.io/Eurek: https://www.eurekapi.com/Ipdata: https://ipdata.co/This code requires Python 3.3+ and several other packages listed in requirements.txt.
Please report all issues with this code using the GitHub issue tracker <https://github.com/tomas-net/ip2geotools/issues>_
ip2geotools is released under the MIT License. See the bundled LICENSE_ file for details.
ip2geotools was written by Tomas Caha / <tomas.caha1 at vut dot cz> at FEEC <http://www.feec.vutbr.cz/>_ BUT <https://www.vutbr.cz/>_.
FAQs
Simple tool for getting geolocation information on given IP address from various geolocation databases.
We found that ip2geotools demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Deno 2.6 introduces deno audit with a new --socket flag that plugs directly into Socket to bring supply chain security checks into the Deno CLI.

Security News
New DoS and source code exposure bugs in React Server Components and Next.js: what’s affected and how to update safely.

Security News
Socket CEO Feross Aboukhadijeh joins Software Engineering Daily to discuss modern software supply chain attacks and rising AI-driven security risks.