Explore our IP Address Database Downloads for instant access to our IP address insights
Learn moreWhen it comes to IP geolocation, privacy/VPN detection, IP to ASN, IP to Company or any kind of IP address information needs, IPinfo stands out from the rest of the IP data providers. In reliability, accuracy, ease of use and dedicated support, IPinfo is the shinning star of the IP information industry.
That is the reason why we receive an incredible amount of inquiries about how to migrate from <insert_data_provider_name> to our IPinfo databases and API services. Our data experts are happy to help new users adapt to our database products without any disruptions. IPinfo’s database in it’s simplicity are incredibly easy to adapt to an existing data pipeline without breaking anything.
ipinfo.io is our one-stop shop for IP intelligence. This facilitates our clients' technical programs from marketing to security. We rely on ipinfo.io's incredibly up-to-date and accurate information daily.
One of the most frequent requests is about migrating from MaxMind, one of the oldest IP geolocation service providers. MaxMind with its free and basic databases is often the starting point for many users, businesses, and developers.
As users grow and scale up, they often come to us for our premium databases products, but they still want to make sure their old data pipelines, IT infrastructure, or cybersecurity measures don’t break. So in this guide, we will go through the database differences between MaxMind and IPinfo and how to migrate from a MaxMind stack to an IPinfo stack.
One of the main reasons why MaxMind is so popular is its free databases. But that comes at a price, of accuracy. From MaxMind’s website:
GeoLite2 databases are free IP geolocation databases comparable to, but less accurate than, MaxMind’s GeoIP2 databases (Premium database).
That is one of the main reasons, why we don’t provide a free full location database, as accuracy is always the number one priority for IPinfo. We enable users to learn and develop, with one of the most accurate IP geolocation API services, which is based on our incredibly accurate premium databases. With 50,000 requests per month, our free IP geolocation API service can be considered a better alternative to MaxMind’s database offering, but without compromising accuracy.
MaxMind Free Databases | MaxMind Premium Databases | IPinfo Database |
---|---|---|
GeoLite2 City | GeoIP2 City Database | IPinfo IP to Geolocation Database |
GeoLite2 ASN | - | IPinfo ASN Database |
GeoLite2 Country | GeoIP2 Country Database | - |
- | - | IPinfo IP to Company Database |
- | GeoIP2 Anonymous IP Database | IPinfo Privacy Detection Database |
- | GeoIP2 Domains Database | IPinfo Hosted Domains Database |
- | - | IPinfo Abuse Contact Database |
- | GeoIP2 ISP Database | IPinfo IP to Mobile Carrier Database |
- | - | IPinfo WHOIS Database |
For database offerings, MaxMind offers CSV and MMDB file formats like IPinfo. But we also offer data in JSON (NDJSON) format to enable data streaming purposes. You can read more about our various file formats and use cases in this article.
Enhance user experience and strengthen your security with rich geolocation data.
MaxMind’s GeoLite2 and GeoIP databases are their IP to geolocation database that provides geolocation insights from IP addresses. The question is how it differs from our IP to location database. An issue with MaxMind’s database offering is that their adherence to the nested data format, while IPinfo’s datasets are flat and tabular. Our flat/tabular structure makes data queries easier and more efficient, making data ingestion straightforward.
Comparing the CSV Database offering
Even though CSV datasets are flat tabular, MaxMind’s nested data structure philosophy still holds true. That is why their Geolite2/GeoIP CSV database comes with two databases:
Now by combining the two databases you get the full picture of IP geolocation information. Which involves first looking up the IP address on IPv4 and IPv6 databases. Taking that geoname_id
column, then looking up that value on the location database.
MaxMind packages its location database in multiple translated versions. But IPinfo offers their database in English out of the box, however, we are open to custom and translated data offerings.
With IPinfo’s IP to Geolocation database, we provide a simple experience with the optimum mix of essential data. Instead of maintaining two different databases, IPinfo provides all the essential location information in one database.
But one of the additional features of IPinfo is that we listen to our customers and we offer customized versions of our database. If your data or security solution relies heavily on the MaxMind location database or geonames.org’s data, let us know. We offer a custom database that includes geoname_id
and network
(we call it range
) columns, but while still keeping the optimized data selection as our out-of-the-box database.
IPinfo IP to Geolocation | IPinfo IP to Geolocation (Standard) | |
---|---|---|
Network |
|
|
Location Data |
|
|
Additional Data |
|
Rather than providing all the information possible in one package and creating a bloated database, we offer the best value possible in one single database and provide guidance in creating data solutions that cater to the individualized needs of individual customers.
Comparing the MMDB Database offering
MMDB database format is designed with the purpose of extremely fast IP address information lookups. MMDB file lookups employ Binary Search Tree (BST) algorithm which enables users to look up IP addresses and relevant information at blazingly fast speed. The limitation is that MMDB files are designed only for IP address lookups.
In the following video, we experiment with looking up the same IP address (8.8.8.8
) 10,000 times in both MaxMind’s Geolite2 database and IPinfo’s IP to Geolocation database. What we find is that Maxmind’s MMDB database lookups are almost 2.5 times slower compared to IPinfo IP to Geolocation database lookups.
Even if we run this experiment with a larger random IP address pool over numerous iterations, MaxMind’s MMDB lookup speed will consistently fall behind IPinfo’s. The reason behind that is, MaxMind tends to pack its individual data rows with various translations, each row of data tends to be larger.
Compared to MaxMind’s data output, IPinfo provides a flat and simple output. We focus on the accuracy and usefulness of the data. From our core response, customers can develop their own solution that caters specifically to their needs.
ASN databases can provide valuable insights into understanding which entities control which blocks of IP addresses. IP addresses to ASN databases are effective for cybersecurity, system administration, and IT purposes.
MaxMind provides a free ASN database under their GeoLite2 umbrella of products. Here is what a single column looks like:
Unlink the GeoLite2 City database this database comes with a single database. So, there is no location or additional context to the database.
On the other hand, IPinfo’s ASN database comes with a whole host of useful information, such as:
Comparing both database columns:
Data Available | IPinfo ASN Database | MaxMind GeoLite2 ASN Database |
---|---|---|
start_ip | ✅ | ❌ |
end_ip | ✅ | ❌ |
join_key | ✅ | ❌ |
network/range | Can be easily created | ✅ |
asn | ✅ | ✅ |
domain | ✅ | ❌ |
name | ✅ | ✅ |
type | ✅ | ❌ |
country | ✅ | ❌ |
Anonymous IP or IP to Privacy databases provide valuable insights into understanding which IP addresses may be using privacy cloaking services such as VPN (Virtual Private Network), Proxies, TOR browser, Hosting, or Apple Relay services.
The privacy detection database is especially useful to ensure cybersecurity measures, digital rights management through geofencing/geo-restrictions, fraud prevention, curbing unfair advantages, etc.
When switching from MaxMind’s GeoIP2 Anonymous IP database, you get the extra Apple Relay detection service with us. One thing to note about the structure is that MaxMind uses 1
or blank to flag the identification of services, whereas we use true
or blank.
Data Provided | MaxMind | IPinfo | Description |
---|---|---|---|
VPN | ✅ | ✅ | Both services can detect Virtual Private Networks (VPN) |
Hosting | ✅ | ✅ | Both services can detect hosting provider services |
Proxy | ✅ | ✅ | Both services can detect proxy services. |
Tor | ✅ | ✅ | Both services can detect TOR exit nodes |
Apple Relay | ❌ | ❌ | IPinfo can identify Apple Relay and other CDN-based relay services. |
Name of the service provider | ❌ | ✅ | IPinfo can provide the name of the anonymous IP service provider. |
MaxMind provides a residential proxy field, but we have seen that residential proxies often lead to false positives. Moreover, MaxMind does not cover the peer-to-peer variant of residential proxy services. With the possibility of false positive flagging of normal IP addresses as residential proxy IP addresses, it creates friction in the user experience. The reliability and accuracy of residential proxy detection are often doubtful. Considering that, we choose not to provide this field with our database.
A domain database contains the name(s) of the domains hosted on a single IP address range or an IP address. Compared to MaxMind, the benefit of IPinfo’s Hosted Domains database is quite significant.
MaxMind’s provides one domain per IP range. This is known as to us as IP to rDNS (Reverse DNS Resolution) Database. We have an online tool freely available for this information: https://ipinfo.io/tools/reverse-dns-lookup
We do have IP to rDNS database available as a custom request database, but our core product, IPinfo Hosted Domains Database provides much more detailed and in-depth information. With MaxMind’s domain data, you get an IP range and a single domain. The two issues with that, are:
For example, 54.241.64.0/20
contains 4096 IP addresses. Now, from MaxMind’s domains database, you get an incomplete picture of the domains hosted on the IP address. But looking into this IP range and going through each IP address we see:
Number of Domains | Number of IP Addresses |
---|---|
1 | 69 |
2 | 13 |
3 | 5 |
4 | 4 |
… | … |
61,401 | 1 |
As you can see, the MaxMind domains database provides quite an incomplete picture of domains hosted on an IP address or domains associated with an IP address range.
GeoIP2 ISP Database provides carrier and ISP information. The alternative to the MaxMind database is our IPinfo IP to Mobile Carrier Database.
The GeoIP2 ISP database provides the organization name, ASN, Mobile Country Code (if available), and Mobile Network Code (if available).
IPinfo IP to Mobile Carrier database provides all the exact information and provides the country field as an additional field, however, the database does not provide the ASN information. But ASN information can be easily gathered by joining the IP to Mobile Carrier database to the IPinfo ASN Database.
Now that we know the core differences between IPinfo and MaxMind let’s dive into some tips to migrate from MaxMind to IPinfo.
As we have seen, MaxMind prefers a nested data structure for its IP geolocation database, which includes translations and location data. When choosing to migrate to IPinfo you should remember to switch the dictionary key and index sequences for looking up values.
For example, let’s look up the IP address 190.15.222.234
using the Python MMDB reader library to get city, region, country.
MaxMind Code:
city = maxmind_data['city']['names']['en']
# Output: Mendoza
country = maxmind_data['country']['iso_code']
# Output: AR
region = maxmind_data['subdivisions'][0]['names']['en']
# Output: Mendoza
latitude = maxmind_data['location']['latitude']
# Output: -32.8817
longitude = maxmind_data['location']['longitude']
# Output: -68.8125
Now, let’s compare it IPinfo:
city = ipinfo_data['city']
# Output: Mendoza
country = ipinfo_data['country']
# Output: AR
region = ipinfo_data['region']
# Output: Mendoza
latitude = ipinfo_data['latitude']
# Output: -32.9778
longitude = ipinfo_data['longitude']
# Output: -68.8667
With IPinfo your important data is present immediately, with no need to go through multiple nested indexing.
Another problem is that with these nested structures, what happens if the data is simply not present? Well, in that case, you get a KeyError
. In IPinfo we provide consistent and structured data but in some instances, MaxMind might exclude entire sections like subdivisions
, is_in_european_union
. So you have to add “key check statements” prior to looking up specific values.
>>> maxmind_data = maxmind_reader.get("84.62.185.236") # German IP address
>>> maxmind_data['country']['is_in_european_union']
⇒ True
>>> maxmind_data = maxmind_reader.get("163.48.137.181") # Japanese IP address
>>> maxmind_data['country']['is_in_european_union']
⇒ KeyError: 'is_in_european_union'
However, the argument can be made that:
A. MaxMind provides additional data such as continent code, European Union check, etc.
At IPinfo we believe in simplicity and efficiency. We provide continent code, European code and more data attributes with our official SDKs and Libraries for our API service: https://github.com/ipinfo
However, for our database product, we think that these additional attributes are not difficult to code up by the customers themselves. For example, if a user to wants to see if an IP address belongs in the European Union domain, they can create a set
of country codes and see if the IP country belongs there.
>>> eu_countries = {'AT','BE','BG','CY','CZ','DE','DK','EE','ES','FI','FR','GR','HR','HU','IE','IT','LT','LU','LV','MT','NL','PL','PT','RO','SE','SI','SK'}
>>> ipinfo_data = ipinfo_reader.get("84.62.185.236") # German IP address
>>> ipinfo_data["country"] in eu_countries
⇒ True
>>> ipinfo_data = ipinfo_reader.get("163.48.137.181") # Japanese IP address
>>> ipinfo_data["country"] in eu_countries
⇒ False
This simplicity allows you to do more. Do you want to include only European Union countries, what about Outermost Regions (OMR), Overseas Countries and Territories (OCT), Switzerland or the United Kingdom, etc? In this case, the user has the flexibility to construct their own data attributes.
By constructing data dictionaries you included more data attributes such as continent, organization membership, economic data, demographic data, currency, capitals, etc.
B. MaxMind packages translation of different country names
Translation to different languages can be helpful in enabling users to understand the data. From our point of view, not all users require a translated database. Because we want to provide a universally beneficial database we have chosen to stick with one language for our standard database. But we do offer translated database option as well. In that case, please request a customized database from our sales team.
Aside from that, we provide the geoname_id
field with our IP information lookup which enables users to use a translated location database of their choice as well.
With MaxMind’s GeoIP/GeoLite2 IP location CSV databases you get mainly two types of databases: IP ranges blocks database and location database. The primary key for the IP ranges blocks database is the network
and the foreign key is the geoname_id
value. The primary key in the location database is the geoname_id
The structure of MaxMind IP geolocation databases isn’t streamlined for its namesake, IP geolocation. To get city, region, country, and geolocation data you have to run two queries. The IP location comes in two different CSV files for IPv4 and IPv6 IP addresses.
With database ingestion, this 2 database structure becomes complicated and cumbersome to maintain in an ETL pipeline or cybersecurity audit processes.
To eliminate this friction IPinfo provides one database with all the useful data.
If you are migrating from MaxMind you can use the IPinfo Standard database which includes the network range
column which is similar to MaxMind’s IP geolocation database structure. The network range
column enables users to use PostgreSQL’s CIDR data type like so:
select '91.189.188.0/23'::cidr >> '91.189.188.0'; -- true
select '91.189.188.0/23'::cidr >> '90.189.188.0'; -- false
But if you want more flexibility with database ingestion you should use the IPinfo IP to Geolocation database with start_ip
and end_ip
which enables you to use BETWEEN
function to run query lookups.
MaxMind’s domains database contains one domain per IP address range. On the other hand, we provide a database of IP addresses and domains hosted on each IP address. The domains
field contains a list of domains each separated by a comma ,
. Some DBMS like Postgres and Snowflake support array variables that you can use to process the domains
field.
All of MaxMind’s MMDB reader libraries can read, IPinfo’s MMDB database as well. The MMDB reader libraries are:
Additionally, if any other library/SDK supports reading MMDB files, those libraries can also read IPinfo’s MMDB database. In the IPinfo migration process, users just need to be aware of the difference in data structures between the two databases.
// comparing the ASN MMDB databases
import maxmind from 'maxmind';
const maxmind_lookup = await maxmind.open('mmdb_databases/maxmind_geolite2_asn.mmdb');
const ipinfo_lookup = await maxmind.open('mmdb_databases/ipinfo_asn.mmdb');
console.log(maxmind_lookup.get('184.109.44.141'))
console.log(ipinfo_lookup.get('184.109.44.141'))
Result:
// MaxMind ASN Database
{
autonomous_system_number: 7922,
autonomous_system_organization: 'COMCAST-7922'
}
// IPinfo ASN MMDB Database
{
asn: 'AS7922',
domain: 'comcast.com',
name: 'Comcast Cable Communications, LLC',
route: '184.108.0.0/14',
type: 'isp'
}
At IPinfo we believe in enabling users to get up and running with our data products with as little friction as possible. That is why we have built open-source tools such as — ipinfo/cli and mmdbctl, which ease many operations of our customers.
🔗 https://github.com/ipinfo/cli
The IPinfo CLI comes with many features and options but the majority of them focus on our API product. But we have included a few features that address some common needs with our database product. Such as:
ipinfo grepip
: Extract/grep IP addresses (IPv4/IPv6) from plaintextipinfo prips
: Print all the IP addresses in CIDR (1.1.1.0/30) or IP address range (8.8.8.0-8.8.8.255)ipinfo cidr2range
: Convert CIDR or Network blocks (1.1.1.0/30) to IP ranges (8.8.8.0-8.8.8.255)ipinfo cidr2ip
: Extract individual IP addresses from CIDRipinfo range2cidr
: Convert IP address ranges to CIDR valueipinfo range2ip
: Extract individual IP addresses from an IP rangeipinfo randip
: Get random IP addresses for testingipinfo splitcidr
: Split a larger CIDR to smaller CIDR blocksSome of the commands can be applied to the database as well.
🔗 https://github.com/ipinfo/mmdbctl
mmdbctl is a versatile CLI tool designed for working with IPinfo’s MMDB files.
With the mmdbctl tool:
The mmdbctl tool is especially useful if you want to create custom MMDB files. MMDB files are binary, which means they can’t be edited easily. The advantage of them is that they are incredibly fast at IP address lookups. With the help of mmdbctl, you can customize an IPinfo CSV database and then convert it to an MMDB file.
For example, let’s say you want to create a United States-only IP address database. So, start with the IP to Geolocation CSV database, then:
Step 1. Filter your CSV database with the command:
(head -1 location.csv;grep ",US," location.csv) > location_us.csv
Step 2. Then you can convert the location_us.csv
file to an MMDB database:
mmdbctl import --in location_us.csv --out location_us.mmdb
And voila, you have a custom MMDB database containing only US IP address locations.
Attempting to do this type of operation using MaxMind’s databases is quite difficult. Operational ease is definitely one of the perks of switching to IPinfo.
Compared to MaxMind’s offering, IPinfo provides a more user-friendly database product that facilitates faster lookups, reliable data, and an expert team at your disposal. If you need any assistance or have any questions about switching data providers and adopting our database products connect with one of our data experts today.