Geocoding API Comparison: Esri ArcGIS, SmartyStreets, Google and Geocod.io
A Geocoding API is an Application Programming Interface (API) that programmatically converts street addresses into the corresponding latitude and longitude coordinates. These coordinates can then be used for routing, mapping, geospatial meta analysis, location based advertising and in many other ways.
Unfortunately, Geocoding API providers frequently use inconsistent definitions for accuracy that create confusion when comparing services head-to-head. In this article, we’re going to dispel some confusion and compare 4 key geocoding APIs: Esri ArcGIS, SmartyStreets, Google Maps and Geocod.io.
|US Geocoding API||US Batch Geocoding API||US Reverse Geocoding API|
Here’s a quick breakdown of the key factors to compare:
- Geocoding API Speeds - How long does it take to process 10 million geocodes with each provider?
- Geocode Pricing - While pricing is subject to change, what can you generally expect?
- Address Validation - Is the address validated or standardized before geocoding to improve matches?
- Geocode API Accuracy - How close can the geocode provider get to the actual rooftop of the building, or even apartments and suites?
- Terms of Service Restrictions - Does the geocode provider allow you to display their results on a 3rd party map and store geocodes?
- Batch Geocoding - Does the geocoder allow users to update a spreadsheet of geocodes in addition to their API?
1. Geocoding API Speed
As a famous race car once said. “I am speed”. Whether you’re a talking race car or a geocoder, speed may be your most critical factor.
Some geocoders measure speed in seconds-per-geocode, but that isn’t fast enough for any type of scaled operation. For many applications, producing dozens, hundreds and even thousands of geocodes per second isn’t fast enough either.
The Achilles heel of most geocoding APIs is that their server resources are so limited, they fail to respond appropriately. When a geocode influx overloads the system, these geocoding APIs commonly respond in one of two ways.
- The geocoding system bogs down and slows to a crawl.
- The geocoder behaves as a hall monitor and forces all users into a line.
Both scenarios have the same outcome. Waiting a long time for your geocode results.
Historically, this obstacle has been so large, companies were forced to use on-premise geocoding solutions. On-premise geocoding has the upside of high speeds, but also comes with significant expenses.
On-premise geocoding requires constant training, security, updates, hardware maintenance and key management. Companies that opt for on-premise geocoding should budget three times the licensing costs for upkeep. So, a $100,000 local geocoding implementation license may cost around $300,000 to maintain.
To illustrate the numbers discussed as we compare geocoding APIs, we’ll use the example of a telecom provider who needs 10 million addresses geocoded monthly. As we share numbers and calculate speed and accuracy, we’ll rely on each provider’s published capabilities.
Esri is arguably the biggest player in the GIS space. As such, the Esri geocoding API offered through ArcGIS Online is a good starting point.
Esri does not have an artificially limited, “query per second” limit like some other providers. Instead, Esri uses the “It takes as long as it takes” approach for their geocoding API.
In a presentation on High-Performance Batch Geocoding with ArcGIS, an Esri employee successfully achieves a geocoding top speed of 27 records per second on a list of 4,000 addresses.
10 million addresses, at this rate, would take Esri 4.29 days.
In our speed comparison, Esri ArcGIS, would be blazing down the track as Usain Bolt with a top speed of around 28 MPH (45 KPH).
Google is straightforward with their limits. To manage bandwidth, Google simply throttles their speed to 50 geocode queries per second (QPS). By keeping a speed limit on geocode processing, Google is better able to predict and control loads and provide a predictable (albeit, not very fast) user experience.
10 million addresses will take Google 2.3 days to process, which is nearly twice as fast as ESRI.
In our speed comparison, Google’s geocoder would be a lion with a top speed of around 50 MPH (80 KPH). Usain Bolt is speedy, but not fast enough to escape Mufasa.
Geocod.io is an entry level geocoder which is great for small companies with simple requirements. Geocod.io advertises that they won’t throttle your speed. As a result, many users think, “No speed limit? It will be like driving on the Autobahn!”
This is true.
Geocod.io doesn’t artificially limit your speed like Google does. However, Geocod.io’s service is hardware-limited to 200,000 geocodes an hour. That puts Geocod.io at 56 records per second.
Whether you’re artificially throttled or hardware throttled, it’s still the same. You’re limited by the service you’re using.
At 56 records per second, it would take 2.08 days of continuous processing to geocode 10 million addresses.
If Esri’s geocoder is the fastest man on the planet at 28 MPH and Google’s is a 50 MPH lion on the hunt, then Geocod.io would be a zippy Gazelle. With a top speed of around 60 MPH (97 KPH), the gazelle escapes the lion–most of the time.
SmartyStreets created a system that scales based on load. Rather than overwhelming the system and forcing customers to queue or allowing our system to slow to a crawl under high loads, SmartyStreets spins up new servers almost instantly to accommodate higher usage. The end result is a reliable and predictable system with wicked fast speeds.
SmartyStreets’ offers as-advertised speeds of over 30,000+ records per second.
Based on 30,000 records per second, 10 million geocodes will take about 5.6 minutes with SmartyStreets. That’s at least 535 times faster than Geocod.io, 600 times faster than Google and 1,111 times faster than Esri!
In this comparison, SmartyStreets would have to be a cheetah. Not just any cheetah, but a cheetah strapped to the side of the Voyager 2 satellite currently tearing out of the solar system at over 30,000 mph (48,280 KPH).
A speed comparison between Esri and SmartyStreets would look like this:
SmartyStreets’ geocoding API leaves the entire circle-of-life behind on planet Earth. And as Benjamin Franklin once said, “In space, you don’t have to worry about lions.” And we agree.
30,000 records per second is just our highest published speed. In reality, SmartyStreets can go even faster. If you want to get information on our tippy-top speeds, contact our enterprise sales team.
Speed Comparison Summary:
|Published Speed||27 QPS||50 QPS||56 QPS||30,000+ QPS|
|Geocode 10 Million Addresses||~4.29 Days||~2.3 Days||~2.08 Days||~5.6 Minutes|
2. Geocode Pricing
Comparing geocoding API pricing is a difficult task. Prices may change based on the size of your company, lookups per year, geocode storage policy, accuracy, speeds and other factors. In order to get the most accurate picture, we’ll use the example of processing 10 million geocodes per month for 1 year to evaluate price. So, 120 million lookups a year.
Again, we’ll use officially published information from each of the 4 providers.
Esri first requires an online subscription to use their service of $1,500 a year. From there, you pay for credits that are consumed as you use their geocoding API.
Based on this credit system, you can geocode addresses at a rate of $4 per 1,000 geocodes. Geocoding the 120 million addresses would run you $480,000 + $1,500 for your annual subscription.
It’s pretty clear that Esri wants high volume users to use their ArcGIS Enterprise on-premise solution. By using a locally hosted solution, users are no longer beholden to bandwidth limitations of the ESRI Geocoding API and can then achieve higher speeds.
The obvious drawback is the cost of ongoing maintenance, configuration, software update, patches, etc. Simply put, the on-premise enterprise options are neither inexpensive nor easy to deploy and maintain.
Google’s pricing is:
- $5 per 1,000 geocodes up to 100,000
- $4 per 1,000 between 100,001 and 500,000,
- For 500,000+ requests per month. Contact sales.
The price for 120 million lookups per year with Google at the more generous $4 per 1,000 price would be $480,000. You’d likely be able to secure a lower price with an enterprise plan, but even if they grant an incredibly generous 50% discount from their lowest published prices, that's still $240,000 / yr.
Customers that migrate from Google to SmartyStreets frequently report high six figure payments to Google for enterprise geocoding plans.
As an entry level geocoder, Geocod.io leads with low costs. An unlimited Geocod.io plan is $1,000 a month. So, geocoding those 10 million geocodes a month for a year will run you $12,000. With such a low price compared to ESRI & Google, you might be wondering if there’s a catch. Stay tuned for the accuracy section.
Pricing with SmartyStreets is determined by two factors.
- The amount of lookups planned to use.
- How fast you want to use those lookups.
To use the SmartyStreets geocoding API to geocode 120 million addresses per year, you’d probably go with one of the unlimited plans. An unlimited plan is just that. Unlimited lookups for a fixed annual price. You can geocode all day, every day without a care in the world.
For example, one of our unlimited plans allows you to look up 250 geocodes per second. The total price for this unlimited geocoding plan is $32,400 a year.
If you want to really get the best bang for your buck, you could geocode 250 addresses per second, 24/7/365. That would amount to 7.88 billion geocodes, and you would only pay that same flat $32,400 price. 7.88 billion geocodes at $32,400 a year translates to 2,433 geocodes per penny.
The big benefit of an unlimited fixed price plan is that you have predictable fixed pricing. No need to worry about how many credits you’ve used or if you’ve accidentally double-submitted a batch of addresses. You know the price upfront, and it doesn’t change.
The prices for our faster unlimited lookup plans aren't published. The fastest unlimited plan, on our pricing page, is 30,000+ records per second. With that plan running every second of the year, you could geocode 946 billion addresses per year!
If you aren’t planning to run millions of geocodes per day, we also have a variety of different sized business plans to accommodate geocoding any needs.
Oh, and we also achieve those same speeds with our US Reverse Geocoding API too.
Pricing Comparison Summary:
|Max Speed||26 QPS||50 QPS||56 QPS||250 - 30,000+ QPS|
|Price for 120 Million Lookups||$481,500||$480,000||$12,000||$32,400 - Contact Sales|
|Max Lookups Per Year||851 million||1.58 billion||1.78 billion||7.88 billion - 946 billion+|
3. Address Validation
We started by talking about speed and price, but the true first step in world-class geocoding is actually address validation. Address validation is the process of verifying a mailing address against an authoritative database to confirm if the address is a real place.
If the address is not real, an “invalid” response should be served. The “invalid” response gives the user a chance to fix the bad data before moving forward. After all, what good is a pin in a map that points to the wrong place?
Geocode providers that skip the address validation step, inevitably geocode addresses that don’t actually exist. These fictional geocodes turn into expensive data quality problems once you start sending out deliveries, installers and packages. It gets even more expensive when you start to make business decisions based on erroneous data.
Really, you want a geocoder that will return “invalid” responses when appropriate or provide confidence scoring to allow you to filter out the addresses that require a closer look. Here’s how these four providers perform with address validation.
Yes, Esri does validate addresses as part of the geocoding process. Even though their address validation is not perfect, it’s still pretty good.
No, Google doesn’t validate addresses. Have you ever tried to navigate somewhere with Google Maps, only to have Google suggest a location hundreds or thousands of miles from where you’re going? This happens because Google is a mapping provider and doesn’t offer address validation.
When a user enters an address with incorrect data, Google will still make a guess of where the address would be IF it were real. Depending on where the error was made in the address, Google may drop a pin anywhere from hundreds of feet to thousands of miles away. Google doesn’t like telling you when an address just isn’t valid.
Frequently, Google Maps API users will get excited after geocoding a few thousand addresses because of the lack of invalid responses returned. Developers may take this to mean that the API just CRUSHED IT with their address matching and validation abilities.
In reality, Google didn’t do anything to validate the address. If you plan on using Google for geocoding, plan on validating the addresses first with an address validation provider before you enter them into Google.
No, Geocod.io doesn’t validate addresses either. While Geocod.io will break up an address into the component pieces, they do not validate that the address is real in any way shape or form. They even tell users that they should validate their addresses with SmartyStreets, and we tend to agree.
Yes, SmartyStreets has been doing lightning fast address, world-class address validation since 2006. Since address validation is our first love, we do it ridiculously well and can handle gnarly addresses. And we can do it with our eyes closed, and one arm tied behind our back.
Because we don’t do geocode approximations based on fat-finger address entry, our geocodes consistently hit the accurate mark. If the address isn’t valid, we’ll tell you directly, so you don’t make decisions based on bad data.
Address Validation Comparison Summary:
4. Geocoding API Accuracy, Non-Matches & Cascading Results
The term “rooftop geocode” is misused by many providers to describe a wide range of accuracy levels. Here’s how some providers currently define rooftop accuracy.
- Rooftop Geocode - A geocode somewhere within the block of the desired rooftop.
- Rooftop Geocode - A geocode anywhere inside the parcel where the building is located.
- Rooftop Geocode - A geocode on the street in front of the parcel.
The conflicting definitions of “rooftop accurate” make it difficult to compare levels of geocoding API accuracy by simple descriptors alone. None of the above examples are really rooftop accurate and just create confusion.
We define “rooftop geocode” by the most literal sense of the phrase. The geocode must actually hit the rooftop of the primary structure of the building in order to be labeled a rooftop geocode.Rooftop geocodes that hit the backyard or the shed or driveway don’t count.
In this section, we’ll measure accuracy by four criteria: Accuracy, subaddress geocodes, cascading and false positives.
- Rooftop Geocoding Accuracy -Is the geocode actually rooftop accurate? If not, what level of accuracy is achieved by the geocoding API?
- SubAddress -Can the geocoding API correctly identify individual units in a strip mall, apartment complex, office complex or mobile home park?
- Cascading Results -In case of a non-match, does the geocoding API automatically cascade to the next level of accuracy? Does the provider tell you the level of accuracy achieved?
- False Positives -Will the geocoder tell you if they failed to find a geocode? Will they provide you with a confidence score? Or will the provider simply throw out their best guess?
- Accuracy- Yes, actual “rooftop” accuracy for most addresses. Many geocoders use ESRI as the gold standard of accuracy.
- SubAddress- Yes, Esri provides subaddress accuracy with their geocoding too. Apartment numbers and suites can be geocoded in many instances.
- Non-Matches- Esri will tell you when they fail to make a match, so you aren’t wasting money on bad data.
- Cascading Results -Esri Offers the following levels of cascading results - they are:
- Address point (rooftop)
- Interpolated point
- Street centroid
- Postal centroid
- City centroid
- Rooftop Geocoding -No, Google counts any geocode that hits the correct parcel as a “rooftop” geocode. Finding geocodes that are called “rooftop” that are hundreds of feet from the actual roof with Google is as easy as shooting fish in a barrel.
- SubAddress -Yes, sometimes .With varying degrees of success, Google does attempt to provide subaddress geocodes.
- Non-Matches -No, in Google’s eyes, non-matches largely don’t exist. Instead, the Google geocoding API gives their best guess regardless of the entered address. Google’s estimate may be miles off the mark, which can result in misrouting drivers, assessing risks incorrectly and poor data quality.
- Cascading -Yes, Google does offer cascading results - they are:
- Rooftop (parcel)
- Range Interpolated
- Geometric Center
- Accuracy- No. Geocod.io calls themselves rooftop accurate, but like Google, they define the “rooftop” as being any part of the parcel. So, a 600 acre farm is rooftop accurate if it hits anywhere in the correct corn field. Geocod.io successfully hits the parcel about 70% of the time, per their documentation.
- SubAddress- Since Geocod.io still misses the parcel 30% of the time, they certainly don’t bother trying to hit the actual rooftop of the structure. So, getting smaller portions of that rooftop like apartments and suites is beyond Geocod.io’s abilities.
- Non-Matches- Geocod.io will give you an accuracy achieved level and confidence score. So, a .5 on rooftop means there is a 50/50 chance your geocode hit the correct parcel. When Geocod.io can’t match the house number or street, they return the geocode of the center of the ZIP code, city or state.
- Cascading Results- Yes, Geocod.io attempts to find the parcel geocode and continues to cascade to the next levels of accuracy until a Geocode is found.
- Accuracy- SmartyStreets is rooftop accurate for most of the addresses in the US. When we say rooftop, we mean the ACTUAL rooftop of the primary structure on the parcel.
- SubAddress- SmartyStreets can consistently hit the roof of the unit, apartment or suite in the majority of cases. We aren’t perfect, but we do a good job. Test us out on your hardest 1,000 addresses, and you’ll see how good.
- Non-Matches- If SmartyStreets can’t find a geocode that matches your address, we return a response indicating that the address is invalid rather than returning a guesstimate. The guiding principle is that a “no match” response is better than making a low confidence guess. Guesses lead to costly errors.
- Cascading results- Yes, SmartyStreets tells you the level of accuracy achieved. The levels of accuracy we return are:
- Parcel centroid
- Address range
- ZIP 4
- 5-digit ZIP
Accuracy, Non-Matches & Cascading Comparison Summary:
|Rooftop Accurate Geocodes||✅||❌||❌||✅|
5. Terms of Service Restrictions
If you were a genie with infinite cosmic powers in an itty-bitty living space, you would feel a lot like users of many geocoding APIs. These APIs are incredibly powerful, only to be limited by overly restrictive terms of service.
Does the provider allow you to display their geocodes on another mapping or GIS platform such as ArcGIS, QGIS, BatchGeo or OpenStreetMaps? Are there any other limitations that might cramp your style?
Esri allows the storage of geocodes only on their paid plans. Esri has no problem with users displaying their results on third party maps. You live relatively limit free.
Google guards their geocodes zealously. Google does not allow you to store geocodes under most circumstances. If you’re going to display a geocode on a map, Google requires you to display them on a Google Map. No exceptions.
Yep. Storing geocodes and displaying them on 3rd party maps is not against the Geocod.io terms of service.
Like Esri and Geocod.io, SmartyStreets also allows users to store geocodes and to display on 3rd party maps.
Terms of Service Comparison Summary:
|Storing Geocodes Permitted?||✅||❌||✅||✅|
|3rd Party Maps Permitted?||✅||❌||✅||✅|
6. Batch Geocoding
Besides Google, all the geocode providers offer batch geocoding. Batch Geocoding is the process of uploading a spreadsheet or list of addresses to a software provider and receiving back the corresponding latitude and longitude coordinates for the entire list of addresses at once.
|Batch Upload Geocoding||✅||❌||✅||✅|
Each Geocoding API and batch geocoding service has their own benefits and drawbacks. Using the key factors we’ve covered, let’s step back and look at the big picture for each.
Esri doesn’t provide:
- Geocoding faster than 27 QPS in the cloud.
- An inexpensive solution for large quantities of geocodes.
If you have a lot of geocodes to process, expect to shell out a ‘Van Gogh Original’ level of cash. In our example, the 10,000,000 lookups per month would run $480,000 a year.
Google provides a reliable geocoding API that was built for navigation and mapping. It wasn’t built for location data intelligence and high resolution use cases. Much of what Google offers is based on the concept of getting the user close enough to the destination to figure out the rest on their own. This is why Google doesn’t do address validation.
Google doesn’t permit:
- 3rd party maps
- Geocode storage
- On-premise solutions
Because of the excessive restrictions and high prices, users rarely find that Google is worth the extra cost. Because Google’s pricing tends to be far more confusing than expected, users frequently underestimate the price they’re paying until they get their first bill.
Geocod.io offers a great solution for budget geocoding where accuracy and precision aren’t important factors.
Geocod.io doesn’t provide:
- Rooftop level accuracy
- Distinction between rooftop and parcel centroid geocodes
- SubAddress geocodes
- Validated, standardized addresses
Historically, developers believed that to get lightning fast, accurate geocodes, they needed to set up and maintain complicated on-premise geocoding solutions. However, SmartyStreets erases the pain of snail paced cloud geocoding and the expensive maintenance of on-premise solutions.
SmartyStreets features flexible terms of service, ability to store geocodes, rooftop accuracy, cascading results, aggressive matching and speeds of 30k+ geocodes per seconds. Our detailed documentation allows you to get up and running in minutes.
Because SmartyStreets is capable of such ludicrous speeds, our geocoding can be used for both static geocoding (bulk submission of known addresses) and real time user input geocoding.
Here’s a summary of how these geocode providers perform on every point in this article.
|Offers Bulk Upload||✅||❌||✅||✅|
|Offers Geocoding API||✅||✅||✅||✅|
|Published Speed*||27 QPS||50 QPS||56 QPS||250 - 30,000+ QPS|
|Geocode 120 Million Addresses*||51.4 Days||27.7 Days||~25 Days||66 Minutes - 5.5 Days|
|Price for 120 Million Lookups||$481,500||$480,000||$12,000||$32,400 - Contact Sales|
|Max Lookups Per Year (speed limited)*||.85 billion||1.58 billion||1.78 billion||7.88 - 946 billion|
|Rooftop Accurate Geocodes||✅||❌||❌||✅|
|Storing Geocodes Permitted?||✅||❌||✅||✅|
|3rd Party Maps Permitted?||✅||❌||✅||✅|
*Calculated based on publicly available information.
SmartyStreets provides a geocoding API that provides on-premise speed with cloud convenience. Test our accuracy with our demo, or contact sales to test out our ludicrous speed and pin-point accuracy for yourself.