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
PS: I hope more to be added.