Fastest Geocoders: Benchmarking Google, Bing, and MapQuest
When you have hundreds of locations to plot on a map, speed counts. You likely want to be able to convert addresses to map markers faster than one per second. Even if you only have a single record at a time, your user experience is negatively impacted by delays of even milliseconds.
Since customers of our batch geocoding service rely on fast results, we set out to compare some of the top geocoders to see how quickly they could turn around several hundred addresses. The results below show what we learned testing the geocoders from Google, Bing, and MapQuest, as well as some other geocoders we considered.
What is Geocoding?
Geocoding is the process of converting an address, city, state, zip code or postal code into mappable coordinates. In order to use most customized online mapping tools, such as Google Maps, you’ll need a pair of latitude and longitude coordinates for each of your locations, so each will need to be geocoded.
That’s how our page on geocoding addresses describes it.
For out geocoder tests, we used full addresses, including city, state, and zip code. There are many methods that cartographers can use to turn an address into a plot-able point. You can approximate with existing segments of a street, or use parcel-level centroids, to mention two. Regardless of the method, the result is what matters. Ideally, you’d find an accurate point in the shortest amount of time.
Methodology
Before getting to the results, it’s important to understand how we approached our geocoding test. Our goal was to provide a setting to get the most accurate comparison possible, so we used the same approach with all geocoders.
Our dataset comprises 670 complete addresses. We opted to only include US addresses, namely a subset of those included in this dataset. Each address was URL-encoded and pre-compiled into the URL format used by each geocoder:
- Google Free
https://maps.googleapis.com/maps/api/geocode/json?address=ENCODED_ADDRESS
- Google Premium:
https://maps.googleapis.com/maps/api/geocode/json?address=ENCODED_ADDRESS&new_forward_geocoder=true&sensor=false&client=CLIENT_NAME&channel=CHANNEL_NAME&signature=PRE_CALCULATED_SIGNATURE
- Bing:
http://dev.virtualearth.net/REST/v1/Locations?key=API_KEY&query=ENCODED_ADDRESS
- MapQuest:
http://www.mapquestapi.com/geocoding/v1/address?key=API_KEY&location=ENCODED_ADDRESS
We stored the test URLs in four separate files, one address per line in each file. Using Python’s grequests library, we split the tests into equal-sized groups, running each group’s geocoder requests concurrently until all completed. We tested each geocoding provider with groups of 10, 30, 67, and 100. We tested each group multiple times, using the median result.
If you’re interested, you can see the benchmarking code on GitHub.
Geocoding Results
Group size | Bing | Google Free | Google Pro | MapQuest |
---|---|---|---|---|
100 | 4.987568 | 17.976482 | 14.626393 | 13.215507 |
67 | 6.509502 | 18.503981 | 12.980358 | 14.202346 |
30 | 13.812446 | 24.373537 | 13.332298 | 17.450716 |
10 | 28.278917 | 31.867758 | 26.12703 | 37.086448 |
Response Time
The first thing we can notice in the response times is how big of a difference concurrent requests make. With the smallest group size (10 requests at a time), all geocoders took about 30 seconds to process all 670 addresses. The biggest difference came in the largest group sizes (67 and 100 requests at a time), where Bing shined. Microsoft’s geocoder returned results for 670 addresses in under five seconds at its fastest.
As expected, Google Pro outpaced its free counterpart. At the largest group sizes, Google Pro was 23-43% faster than the free version. We should note that Google Free is built to cap out at a rate limit of 50 requests per second. Google Pro is decidedly the better option if speed and capacity are requirements (the free version also rate limits at 2,500 requests per day). In our informal tests calling Google’s free geocoder from JavaScript (the same method used on BatchGeo), we hit rate limiting that we did not see in our tests from a server.
Except in the smallest group size, MapQuest kept close to the others. The original web map company remains competitive.
Error Rates
Despite sometimes sending as many as 100 requests in a single second, every geocoder stood up well to the load. During our tests, only the free version of the Google geocoder ever returned an error, and that was only four times out of over 2,500 tests, or 0.1% of the time.
The low error rate is surprising, given that many APIs have rate limits, published or unpublished. But as mentioned above, these tests from the server did not appear to trigger rate limiting. Even the tests with 100 concurrent connections did not activate rate limits. While 670 addresses is enough to be a significant sample, it’s likely not seen as an abusive level of requests.
Accuracy of Results
As mentioned earlier, fast geocoder results are only useful if the data returned is accurate. However, since our focus here was on producing a speed benchmark, the accuracy of what is returned was not included. Further, determining whether a geocoded result is “correct” is up to many different interpretation methods. What determines the right answer? How close to the true result is “close enough?” Does the accepted range change based on the size of the property at the address?
Each of these questions is worthy of its own individual investigation, well beyond the scope of our speed benchmark.
Other Geocoders
Lastly, we did consider other geocoders that were not included in this research. Among them were Mapbox and LocationIQ. In both cases, our tests were rate limited, often even in the smallest groups of requests. Each likely has paid versions, which we’d be open to comparing in a future tests.
Fast Batch Geocoding with Built-In Maps
If you’re looking for the fastest way to convert a list of addresses into a map, batch geocoding is your answer. Specifically, our quick and easy mapping tool that makes geocoding as simple as copy-paste from Excel or any other spreadsheet.