Flask-Simple-GeoIP

The simplest GeoIP lookup library for Flask.


Keywords
flask, geolocation, geolocation-api, ip-geolocation, python, whoisxmlapi
License
BSD-3-Clause
Install
pip install Flask-Simple-GeoIP==0.2.4

Documentation

flask-simple-geoip

The simplest GeoIP lookup library for Flask.

https://raw.githubusercontent.com/whois-api-llc/flask-simple-geoip/master/images/geoip.png

flask-simple-geoip Release flask-simple-geoip Build

Meta

Prerequisites

To use this library, you'll need to create a free GeoIPify account: https://geoipify.whoisxmlapi.com/

If you haven't done this yet, please do so now; you will obtain an API key that will be needed to use the library.

Installation

To install flask-simple-geoip using pypi, simply run:

$ pip install flask-simple-geoip

In the root of your project directory.

Usage

Once you have flask-simple-geoip installed, you can use it to easily find the physical location of a given IP address.

This library gives you access to all sorts of geographical location data that you can use in your application in any number of ways.

Here's a simple Flask app that makes use of the geolocation lookups:

from flask import Flask, jsonify
from flask_simple_geoip import SimpleGeoIP


app = Flask(__name__)

# The API key is obtained from the GEOIPIFY_API_KEY environment variable.
# Alternatively it can be set as follows:
# app.config.update(GEOIPIFY_API_KEY='YOUR_API_KEY')

# Initialize the extension
simple_geoip = SimpleGeoIP(app)


@app.route('/')
def test():
    # Retrieve geoip data for the given requester
    geoip_data = simple_geoip.get_geoip_data()

    return jsonify(data=geoip_data)

Here's the sort of data you might get back when performing a geoip lookup request:

{
  "ip": "8.8.8.8",
  "location": {
    "country": "US",
    "region": "California",
    "city": "Mountain View",
    "lat": 37.40599,
    "lng": -122.078514,
    "postalCode": "94043",
    "timezone": "-08:00"
  }
}

By default, this library handles retrying failed HTTP requests for you. For instance: if the GeoIPify API service is currently down or having issues, your request will be retried up to three consecutive times before failing.

In the event a geoip lookup still can't return successfully, the data returned will be None. This library will never throw an exception. This decision was made strategically: not having geoip data should never be the cause of a failed request. =)

Changelog

All library changes in descending order.

Version 0.2.4

Released October 27, 2020.

  • Described in the readme how to supply the API key.

Version 0.2.3

Released August 26, 2020.

  • Fixed pypy support.

Version 0.2.2

Released August 24, 2020.

  • Added X_FORWARDED_FOR headers support.

Version 0.1.1

Released June 18, 2018.

  • Fixing readme so it shows properly on PyPI :(

Version 0.1.0

Released June 18, 2018.

  • First release!