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.
Are you in a hurry? Jump to:
• List of 15+ free & paid GeoIP services you can use right now
• Small-scale test of services’ accuracy
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.
|Service||Free Limit||Requires Registration||Response Formats||SDK / Libraries||Documentation||IP ver||PRO||DB Download|
|IP Find||300 per day||JSON||Curl, Ruby, PHP, C#(.Net), Python||open||IPv4||from $10 per month for 5,000 requests/day|
|GeoIP Nekudo||no limit||JSON, JSONP||n/a||open||IPv4 & IPv6|
|IP-API||150 per minute||XML, JSON, CSV, Newline Separated, Serialized PHP||n/a||open||IPv4 & IPv6||from $45 for 3 months for unlimited queries|
|DB IP||2,500 per day||JSON||PHP, Java||open||IPv4 & IPv6||from $12.5 per month for 50,000 queries|
|Free GeoIP||15,000 per hour||CSV, XML, JSON and JSONP||GET requests||open||IPv4 & IPv6||no (donate option)|
|Snoopi||2,500 per day||JSON||PHP||open||n/a||from $20 for 100,000 requests|
|The Easy API||50 per day||n/a||CURL, PHP, JAVA||open||n/a||$5 per month for 500 per day|
|PetaByet||n/a||JSON||n/a||open||IPv4 & IPv6|
|IP Info||1,000 per day||JSON, JSONP||Node.js, Shell, PHP, Golang, Python||open||IPv4 & IPv6||from $50 per month for 10,000 requests|
|GeoIP DB||n/a||JSON, JSONP||jQuery, PHP, C# .NET||open||n/a|
|GEO Plugin||120 per minute||JSON, XML||JS, PHP, ASP||open||n/a|
|GeoIP||Fair use policy||JSON and JSONP||n/a||open||IPv4 & IPv6|
|Smart IP||5,000 per day||XML, JSON||n/a||open||IPv4 & IPv6||contact for more options|
|MaxMind||free trial||JSON||PHP, Python, Perl, Java, JS, C# .NET||open||IPv4 & IPv6||from $0.0001 per request|
|IP2Location||200 per day||JSON, XML, text||C, PHP, Perl, Ruby, Phython. Apache, Nginx, Node.js, Cocoa||open||IPv4 & IPv6||from $49 for 100,000 requests|
|VPN Mentor||n/a||n/a||n/a||n/a||IPv4, IPv6, domain name||n/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.
|Service||Test IP #1 – 188.8.131.52||Test IP #2- 184.108.40.206||Test IP #3- 220.127.116.11|
|Physical Location||Brentwood, California, USA – cable||Croatia – 4G||Suceava, Romania – cable|
|IP Find||Discovery Bay, California, United States, North America||Zagreb, City of Zagreb, Croatia, Europe||Suceava, Suceava, Romania, Europe|
|GeoIP Nekudo||Discovery Bay, United States||Zagreb, Croatia||Suceava, Romania,|
|IP-API||Brentwood, California, United States||Zagreb, City of Zagreb, Croatia||Suceava, Suceava, Romania|
|DB IP||San Jose, California, Santa Clara County, United States||London, Greater London, England, UK, Europe||Suceava, Municipiul Suceava, Romania, Europe|
|Free GeoIP||Discovery Bay, California, United States||Zagreb, City of Zagreb, Croatia||Suceava, Suceava, Romania|
|Snoopi||Discovery Bay, California, United States||Zagreb, City of Zagreb, Croatia||Suceava, Suceava, Romania|
|The Easy API||n/a||n/a||n/a|
|PetaByet||Discovery Bay, California, United States, North America||Austria, Europe||Suceava, Suceava, Romania, Europe|
|IP Info||Discovery Bay, California, United States||Zitnjak, Grad Zagreb, Croatia||Suceava, Suceava, Romania|
|GeoIP DB||Pinole, California, Unied States||Sweden||Suceava, Suceava, Romania|
|IP Info DB||Stockton, California, US||Varazdin, Varazdinska zupanija, Croatia||Suceava, Suceava, Romania|
|GEO Plugin||Discovery Bay, California, United States||Sweden||Suceava, Suceava, Romania|
|GeoIP||Pinole, USA||Schweden||Suceava, Romania|
|MaxMind||Discovery Bay, California, United States, North America||Zagreb, City of Zagreb, Croatia, Europe||Suceava, Suceava, Romania, Europe|
|IP2Location||Stockton, California, United States||Varazdin, Varazdinska zupanija, Croatia||Suceava, Suceava, Romania|
|VPN Mentor||Antioch, California, United States||Zagreb, Grad Zagreb, Croatia||Suceava, 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.