Richienb / iplocation

Get ip location information.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

More providers

GHNewbiee opened this issue · comments

commented

Hi,

I've created the following list with more providers.

trade_name, uri, key, result_pattern, is_free
---------------------------------------------
'Antideo', 'https://api.antideo.com/ip/location/*', '', 'location.country_code', false
'Antideo(Limited)', 'https://api.antideo.com/ip/location/*', '', 'location.country_code', true
'dbip', 'https://api.db-ip.com/v2/#/*/{propertyName}', '#', 'countryCode', false
'dbip(Limited)', 'https://api.db-ip.com/v2/free/*/{propertyName}', '', 'countryCode', true
'Geo IP Lookup', 'http://api.geoiplookup.net/?query=*', '', 'countrycode', true
'ip2c.org', 'https://ip2c.org/*', '', '1;CD;COD;COUNTRY', true
'ip2location', 'https://api.ip2location.com/?ip=*&key=#&package=<WS1|WS2|WS3|...|WS24>&format=json', '#', 'country_code', false
'ip2location(Limited)', 'https://api.ip2location.com/?ip=*&key=#&package=<WS1|WS2|WS3|...|WS24>&format=json', 'demo', 'country_code', true
'ipapi', 'https://ipapi.co/*/json/', '', 'country', false
'ipapi(Limited)', 'https://ipapi.co/*/json/', '', 'country', true
'ipinfo.io', 'https://*?token=#', '#', 'country', false
'ipinfo.io(Limited)', 'https://*?token=#', '#', 'country', true
'IPIP', 'http://enapi.ipip.net/*?token=#', '#', 'country_code', false
'IPIP(Limited)', 'http://enapi.ipip.net/*?token=#', '#', 'country_code', true
'IPLocate', 'https://www.iplocate.io/api/lookup/*?apikey=#', '#', 'country_code', false
'IPLocate(Limited)', 'https://www.iplocate.io/api/lookup/*', '', 'country_code', true
'ipstack', 'https://api.ipstack.com/* ? access_key = #', '#', 'country_code', false
'ipstack(Limited)', 'https://api.ipstack.com/* ? access_key = #', '#', 'country_code', true
'MAXMIND', 'https://geoip.maxmind.com/geoip/v2.1/country/*', '', 'country.iso_code', false

Notes:

  • result pattern is how you can directly get the alpha2 country code from the result
  • * stands for IP address
  • # stands for key, if required
  • {propertyName} is optional
  • (Limited) means that there is a maximum number of api calls that a user can make in a certain temporal period
  • for 'ip2location' a package has to be chosen (default is WS1)
  • 'MAXMIND' requires authentication header
  • Geo IP Lookup and ip2c.org claim that provide free services

Tia

PS: I hope more to be added.

@GHNewbiee thanks for this, this is awesome. I'm a little short on time until the weekend, if you or anyone else can come up with a pull request it would be greatly appreciated. I realise that some of the providers on this list either are not free, require an access key or return data in a format not currently supported by the module, but if we can add some of the more straightforward ones that would be a good start, at least until a more generic way of handling the different responses is implemented.

commented

Hi, my programming skills are limited. I currently work on microservices moleculer. I shall try to do something in way of it but without following a more generic way. I prefer to keep it simple than sophisticated.

I made this into a json, maybe it's easier to import:

[
  {
    "trade_name": "Antideo",
    "uri": "https://api.antideo.com/ip/location/*",
    "key": "",
    "result_pattern": "location.country_code",
    "is_free": false
  },
  {
    "trade_name": "Antideo(Limited)",
    "uri": "https://api.antideo.com/ip/location/*",
    "key": "",
    "result_pattern": "location.country_code",
    "is_free": true
  },
  {
    "trade_name": "dbip",
    "uri": "https://api.db-ip.com/v2/#/*/{propertyName}",
    "key": "#",
    "result_pattern": "countryCode",
    "is_free": false
  },
  {
    "trade_name": "dbip(Limited)",
    "uri": "https://api.db-ip.com/v2/free/*/{propertyName}",
    "key": "",
    "result_pattern": "countryCode",
    "is_free": true
  },
  {
    "trade_name": "Geo IP Lookup",
    "uri": "http://api.geoiplookup.net/?query=*",
    "key": "",
    "result_pattern": "countrycode",
    "is_free": true
  },
  {
    "trade_name": "ip2c.org",
    "uri": "https://ip2c.org/*",
    "key": "",
    "result_pattern": "1;CD;COD;COUNTRY",
    "is_free": true
  },
  {
    "trade_name": "ip2location",
    "uri": "https://api.ip2location.com/?ip=*&key=#&package=<WS1|WS2|WS3|...|WS24>&format=json",
    "key": "#",
    "result_pattern": "country_code",
    "is_free": false
  },
  {
    "trade_name": "ip2location(Limited)",
    "uri": "https://api.ip2location.com/?ip=*&key=#&package=<WS1|WS2|WS3|...|WS24>&format=json",
    "key": "demo",
    "result_pattern": "country_code",
    "is_free": true
  },
  {
    "trade_name": "ipapi",
    "uri": "https://ipapi.co/*/json/",
    "key": "",
    "result_pattern": "country",
    "is_free": false
  },
  {
    "trade_name": "ipapi(Limited)",
    "uri": "https://ipapi.co/*/json/",
    "key": "",
    "result_pattern": "country",
    "is_free": true
  },
  {
    "trade_name": "ipinfo.io",
    "uri": "https://*?token=#",
    "key": "#",
    "result_pattern": "country",
    "is_free": false
  },
  {
    "trade_name": "ipinfo.io(Limited)",
    "uri": "https://*?token=#",
    "key": "#",
    "result_pattern": "country",
    "is_free": true
  },
  {
    "trade_name": "IPIP",
    "uri": "http://enapi.ipip.net/*?token=#",
    "key": "#",
    "result_pattern": "country_code",
    "is_free": false
  },
  {
    "trade_name": "IPIP(Limited)",
    "uri": "http://enapi.ipip.net/*?token=#",
    "key": "#",
    "result_pattern": "country_code",
    "is_free": true
  },
  {
    "trade_name": "IPLocate",
    "uri": "https://www.iplocate.io/api/lookup/*?apikey=#",
    "key": "#",
    "result_pattern": "country_code",
    "is_free": false
  },
  {
    "trade_name": "IPLocate(Limited)",
    "uri": "https://www.iplocate.io/api/lookup/*",
    "key": "",
    "result_pattern": "country_code",
    "is_free": true
  },
  {
    "trade_name": "ipstack",
    "uri": "https://api.ipstack.com/* ? access_key = #",
    "key": "#",
    "result_pattern": "country_code",
    "is_free": false
  },
  {
    "trade_name": "ipstack(Limited)",
    "uri": "https://api.ipstack.com/* ? access_key = #",
    "key": "#",
    "result_pattern": "country_code",
    "is_free": true
  },
  {
    "trade_name": "MAXMIND",
    "uri": "https://geoip.maxmind.com/geoip/v2.1/country/*",
    "key": "",
    "result_pattern": "country.iso_code",
    "is_free": false
  }
]