More providers
GHNewbiee opened this issue · comments
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.
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
}
]
See: #23 (comment)