Free & Paid GeoIP Services Comparison With Accuracy Tests

Once a novelty or even a fad, GeoIP services are now a must-have for any decent web-service. Although still far from something you can rely on 100% they are a great way to personalise content for users

There used to be only a few IP Address Geolocation – GeoIP services available, but as with everything these days we have choices. A lot of them. That’s great but does leave you with the question “Which GeoIP service should I choose? Which one is best for me”. You’ll have to answer that for your self, but our handy comparison table should help ease the pain. Don’t be blinded with “free”. Think a few steps ahead when choosing. The service should support you for at least a few months. Implementing a new one is far more costly than paying $19 per month.

Why (if at all) do I need a GeoIP service?

Since you’re reading this article, you obviously have some ideas on how to utilise the GeoIP data in your site or app. If you don’t and are just learning, we recommend looking into segmenting and personalisation.

When someone visits your site, you don’t know anything about them. Besides the quite non-interesting technical data describing their browser and its details, you don’t know anything about the user’s preferences, gender, age or anything similar that would give you a chance to offer a more personalised experience. You don’t have much except GeoIP data! With it, you can adjust a lot of things on the site to make the user feel more “at home”. This trend is growing and will become a norm in a year or two for all sites.

How do I implement these services into my app?

Sorry, not that kind of article – no code snippets here. But, we did include a link to the documentation of every service. Some are better than others, but all have various SDKs and response formats which ease implementation.

We recommend JSON as the response format. It’s lightweight, universally supported, used by many and (more-less) human-readable which eases debugging.

Your programming language of choice is defined by other things so don’t change it just for the sake of an SDK being available or not. As for the response format, we recommend JSON. It’s lightweight, universally supported, used by many and (more-less) human-readable which eases debugging. Examples are available for almost all services so have a look before you make a final decision. If you’re using PHP MaxMind may be the easiest solution as they have a native PHP module for older database format and the new GeoIP v2 too.

ServiceFree LimitRequires RegistrationResponse FormatsSDK / LibrariesDocumentationIP verPRODB Download
IP Find300 per dayJSONCurl, Ruby, PHP, C#(.Net), PythonopenIPv4from $10 per month for 5,000 requests/day
GeoIP Nekudono limitJSON, JSONPn/aopenIPv4 & IPv6
IP-API150 per minuteXML, JSON, CSV, Newline Separated, Serialized PHPn/aopenIPv4 & IPv6from $45 for 3 months for unlimited queries
DB IP2,500 per dayJSONPHP, JavaopenIPv4 & IPv6from $12.5 per month for 50,000 queries
Free GeoIP15,000 per hourCSV, XML, JSON and JSONPGET requestsopenIPv4 & IPv6no (donate option)
Snoopi2,500 per dayJSONPHPopenn/afrom $20 for 100,000 requests
The Easy API50 per dayn/aCURL, PHP, JAVAopenn/a$5 per month for 500 per day
PetaByetn/aJSONn/aopenIPv4 & IPv6
IP Info1,000 per dayJSON, JSONPNode.js, Shell, PHP, Golang, PythonopenIPv4 & IPv6from $50 per month for 10,000 requests
GeoIP DBn/aJSON, JSONPjQuery, PHP, C# .NETopenn/a
IP Info DB2 per secondRaw, JSON, XMLPHP, Javascript, Ruby, Python and ASP.openIPv4 & IPv6
GEO Plugin120 per minuteJSON, XMLJS, PHP, ASPopenn/a
GeoIPFair use policyJSON and JSONPn/aopenIPv4 & IPv6
Smart IP5,000 per dayXML, JSONn/aopenIPv4 & IPv6contact for more options
MaxMindfree trialJSONPHP, Python, Perl, Java, JS, C# .NETopenIPv4 & IPv6from $0.0001 per request
IP2Location200 per dayJSON, XML, textC, PHP, Perl, Ruby, Phython. Apache, Nginx, Node.js, CocoaopenIPv4 & IPv6from $49 for 100,000 requests
VPN Mentorn/an/an/an/aIPv4, IPv6, domain namen/a

How accurate is the data? Can I trust it?

Accuracy of GeoIP services varies a lot! Have that in mind before you completely depend on data they provide.

GeoIP services’ accuracy ranges from “wow, how do they know” to “are you stupid, I’m nowhere close close to that” – as confirmed by our tiny test. Although some services gloat with various (high) accuracy numbers, the most honest answer is “your mileage may vary”. On a country level, the data is very accurate. It’s easily in the 99 percentile. That data is used by many companies to block access to content on a per-country level. Country region or state data is also very accurate, especially for larger countries and for the USA. Again, this is something you can safely rely on and is widely used.

Going below the state level into regions, cities and even deeper – city blocks, is where things get tricky and often extremely unreliable. A lot of factors are at play, but one of the most problematic ones is the mobile users. Telecom companies register batches of IPs in their headquarters in town A. You use that IP from your mobile device while living in town B. What does GeoIP report? Town A of course because it bases its answer solely on your IP. As the number of mobile users grows, the accuracy of data decreases. The issue is more a concept/technology problem than something that GeoIP services can fix.

ServiceTest IP #1 – IP #2- IP #3-
Physical LocationBrentwood, California, USA – cableCroatia – 4GSuceava, Romania – cable
IP FindDiscovery Bay, California, United States, North AmericaZagreb, City of Zagreb, Croatia, EuropeSuceava, Suceava, Romania, Europe
GeoIP NekudoDiscovery Bay, United StatesZagreb, CroatiaSuceava, Romania,
IP-APIBrentwood, California, United StatesZagreb, City of Zagreb, CroatiaSuceava, Suceava, Romania
DB IPSan Jose, California, Santa Clara County, United StatesLondon, Greater London, England, UK, EuropeSuceava, Municipiul Suceava, Romania, Europe
Free GeoIPDiscovery Bay, California, United StatesZagreb, City of Zagreb, CroatiaSuceava, Suceava, Romania
SnoopiDiscovery Bay, California, United StatesZagreb, City of Zagreb, CroatiaSuceava, Suceava, Romania
The Easy APIn/an/an/a
PetaByetDiscovery Bay, California, United States, North AmericaAustria, EuropeSuceava, Suceava, Romania, Europe
IP InfoDiscovery Bay, California, United StatesZitnjak, Grad Zagreb, CroatiaSuceava, Suceava, Romania
GeoIP DBPinole, California, Unied StatesSwedenSuceava, Suceava, Romania
IP Info DBStockton, California, USVarazdin, Varazdinska zupanija, CroatiaSuceava, Suceava, Romania
GEO PluginDiscovery Bay, California, United StatesSwedenSuceava, Suceava, Romania
GeoIPPinole, USASchwedenSuceava, Romania
Smart IPn/an/an/a
MaxMindDiscovery Bay, California, United States, North AmericaZagreb, City of Zagreb, Croatia, EuropeSuceava, Suceava, Romania, Europe
IP2LocationStockton, California, United StatesVarazdin, Varazdinska zupanija, CroatiaSuceava, Suceava, Romania
VPN MentorAntioch, California, United StatesZagreb, Grad Zagreb, CroatiaSuceava, Suceava, Romania

Just tell me which service to use!

If you need geoIP data for anything more than playing around, testing and just seeing how things work do not use free-only services. You need to be able to upgrade to a higher number of API calls as your service grows and be able to contact support and hold somebody reliable for the service they provide. Those things only come with a premium, paid service.

Our preferred provider is MaxMind. This is not a sponsored article nor are we in love with them. We just use their services on a lot of apps, and despite the price and some shortcomings, they offer the best service. For smaller projects, with zero to none budget – try out other services or MaxMind’s free (and a bit less accurate) version.

Have a Look at These Articles Too

Published on August 15, 2017 by Gordan; modified on November 16, 2017. Filed under: , .

Gordan runs Web Factory Ltd and has nearly 10 years of WordPress development experience. When not wrangling code, he loves writing about WordPress and he's always thinking about the next WP project to get involved with.

Leave a Reply

Your email address will not be published. Required fields are marked *