https://ipinfo.io works well. Alternatively, CloudFlare also works well if you just need the country code, which it can attach as an HTTP header to each request.
Easiest solution is to put Cloudflare in front of your site for free and they'll pass in the geo data in the request header. Agreed that playing with binaries that you have to periodically download is horrible.
I used http://ip-api.com/json, the precision varies but at least the country level is fine. From the limited tests I did I was in the 5 km radios range.
These free databases are really inaccurate in many cases compared to e.g. Maxmind. E.g. this thinks my IP address is 100 km away near the German border, but Maxmind's commercial DB puts me a 7 minute walk away in the center of Amsterdam.
They're better than nothing, but be careful when relying on them for anything you need accurate Geo-IP info for.