Best Geocoding API | Smarty, Esri, and Google's APIs Compared
A Geocoding API is an Application Programming Interface (API) that performs forward geocoding and/or reverse geocoding. A few common uses for geocoding are routing, mapping, insurance risk analytics, geospatial meta-analysis, and location-based advertising.
Depending on capabilities, forward geocoding API may accept the entry of street addresses, landmarks, or location names and convert them to corresponding geographic coordinates. A reverse geocoding API accepts entries of geographic coordinates and converts them to the closest matching address or a list of the closest address candidates.
Comparing and finding the best geocoding API providers can be tricky since they frequently use inconsistent definitions for accuracy, speed, and pricing, which creates confusion. This article dispels some of the confusion and compares 3 prominent geocoding APIs: Esri ArcGIS, Smarty (formerly SmartyStreets), and Google Maps.
|US Geocoding API||US Reverse Geocoding API||International Geocoding API||Batch Geocoding Web Interface|
Here’s a quick breakdown of the key factors to compare:
- Best Geocoding API by Speed - 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 submit a spreadsheet of locations in addition to their API?
1. Best Geocoding API by Speed
As a famous race car once said. “I am speed.” Speed may be your most critical factor whether you’re a talking race car or a geocoder.
Some geocoders measure speed in seconds-per-geocode, but those aren't fast enough for any scaled operation. For many applications, Producing dozens, hundreds, and even thousands of lat-long coordinates per second isn't fast enough for many applications.
The Achilles heel of most geocoding APIs is that their server resources are so limited that they fail to respond to your query appropriately. When a geocode influx overloads the system, the query response from many geocoding APIs is one of the following:
- The geocoding system bogs down and slows to a crawl.
The geocoder responds to the query as a hall monitor and forces all users into a line. Then, they hold up the quiet coyote sign, indicating that no talking is allowed while looking directly at Jeremy because everyone knows he can't ever stop talking. But you just want to eat lunch. Your stomach is growling because you were late for school, Krista ate the last granola bar (as usual), and Mom was honking like crazy, so you didn't have time to grab anything else.
Mr. Archer couldn't stop pontificating about who-knows-what, and your class will be the last to the lunchroom for the 2nd time this week! Then you'll to wait in line AGAIN once you get there. Recess will be OVER by the time you even GET your food. Worse day ever.
Anyway, both scenarios have the same outcome. Waiting a long time for
lunch geocode results.
Historically, this obstacle has been so large that companies were forced to use on-premise geocoding solutions. On-premise geocoding has the upside of high speeds but also comes bundled 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 visualize the speed comparison accurately, we'll use an example of a company that needs to geocode 10 million addresses monthly. We'll rely on each service's published capabilities for speed and accuracy.
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 doesn't have an artificially limited “query per second” limit like other geocoding services. 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 top geocoding 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 its limits. To manage bandwidth, Google simply throttles its speed to 50 API requests per second (QPS). By keeping a speed limit on geocoding query processing, Google can better 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, 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.
Smarty created a system that scales based on the volume of API calls. Rather than overwhelming the system and forcing clients to queue or allowing our system to slow to a crawl under high loads, Smarty spins up new servers almost instantly to accommodate higher usage. The result is a reliable, predictable system with wicked-fast speeds.
Smarty offers rates of 70,000+ records per second.
Based on 70,000 geocodes per second, processing 10 million takes less than 2.5 minutes with Smarty. That's 1200+ times faster than Google and 2,200+ times faster than Esri!
Compared to Google and Esri, Smarty would 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).
Actually, 30,000 MPH isn't fast enough. The true number would be closer to 70,000 MPH (112,654 KPH), but no human-made objects travel that speed. So, just imagine a turbocharged version of the satellite made by Ferrari. It'd probably handle like a dream.
Oh, and don't forget to imagine the cheetah strapped to the side.
The speed comparison between Esri and Smarty would look like this:
Smarty's geocode 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.
70,000 records per second are just our highest published speeds. In reality, Smarty 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||70,000+ QPS|
|Geocode 10 Million Addresses||~4.29 Days||~2.3 Days||~2.5 Minutes|
2. Geocode Pricing
Comparing geocoding API pricing is a difficult task. Cost per request may change based on the size of your company, lookups per year, geocode storage policy, accuracy, speeds, and other factors. The example will be 10 million queries per month for 1 year. So, 120 million lookups a year.
Again, we’ll use officially published information from each of the 4 providers.
Esri's geocoding API first requires a $1,5000 yearly subscription to use their service. From there, you pay for credits to use with their geocoding API usage.
Based on this credit system, you can perform address geocoding at $4 per 1,000 geocodes. Getting lat-long coordinates for the 120 million addresses would run you $480,000 + $1,500 for your annual subscription.
Esri seemingly wants high-volume clients to use their ArcGIS Enterprise on-premise solution. By using a locally hosted solution, users are no longer beholden to the bandwidth limitations of the ESRI Geocoding API and can 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+ API requests per month. Contact sales.
The price for 120 million lookups per year with Google at the more generous $4 per 1,000 price point would be $480,000. You’d likely be able to secure a lower cost per request 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.
Clients that migrate from Google to Smarty frequently report high six-figure payments to Google for enterprise geocoding plans.
Pricing with Smarty is determined by two factors.
- The number of lookups planned to use.
- How fast do you want to use those lookups?
Using Smarty's 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.
In this 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.
Want to get the best bang for your buck? You can 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 query batch of 100,0000 addresses. You know the price upfront, and it doesn’t change.
The costs for our fastest unlimited plans aren't published, but you can talk to sales to get a custom quote. The fastest unlimited plans are 70,000+ records per second and would allow you to geocode 4.2 million addresses/minute, 252 million/hour, 6 billion/day, and 2.2 trillion/year!
If you aren’t planning to run 6 billion 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||250 - 30,000+ QPS|
|Price for 120 Million Lookups||$481,500||$480,000||$32,400 - Contact Sales|
|Max Lookups Per Year||851 million||1.58 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 address validation. Address validation is the process of verifying a mailing address against an authoritative address database to confirm if the address is a real place. A good hint that a geocode lookup service is validating addresses first is that they'll be able to provide a ZIP+4 Code with the geocode for US addresses.
If the address is not real, the API response should indicate that the address is “invalid”. The “invalid” status codes give the user a chance to fix the bad request 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.
You want a geocoder with an API response that shows the submitted address is “invalid” or provides 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 isn’t perfect, it’s still pretty good.
Google is new to the address validation game. You may be thinking that this is exciting news, but don’t get too excited. There are some serious limitations with their address validation tool:
- Inconsistent address parsing
- Hit or miss RDI data
- Address storage terms are extremely restrictive
- Cumbersome with bulk validation
- API is slow, limited
- Autocomplete outputs invalid address suggestions
- Strict attribution requirements
- Lacking customer support
- High-risk of false positives
- Limited country coverage
When a user enters an address with incorrect data, Google will still guess 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. And if you’re looking for a clearer, more in-depth outline and breakdown of Google's address validation, then check out our page all about Google Address Validation | What Google isn’t telling you.
Frequently, Google Maps' geocode API users will get excited after submitting a few thousand queries because invalid status codes are rarely returned. Developers may take this to mean that the API just CRUSHED IT with their address matching and validation abilities.
In reality, Google's validation is hit-or-miss and can leave you confused or, more importantly, can leave customers confused or angry. If you're making use of Google autocomplete, Google itself suggests that you can't count on any address validation happening within their autocomplete API. You would need to re-run those same addresses again through a different API.
Yes, Smarty 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 with 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 query 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 usage examples are rooftop accurate and just create confusion.
We define “rooftop geocode” in the most literal sense of the phrase. The geocode must hit the rooftop of the primary structure of the building to be labeled a rooftop geocode. Rooftop geocodes that hit the backyard, sidewalk, 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 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 return a code in the response indicating 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 responds to your query with subaddress geocoding accuracy 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- Smarty is rooftop accurate for most of the addresses in the US and offers worldwide geocoding with rooftop accuracy in many countries. When we say rooftop, we mean the ACTUAL rooftop of the primary structure on the parcel.
- SubAddress- Smarty 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 Smarty with a single request, and then send us API requests for your hardest 1,000 addresses. You’ll see how well Smarty's geocoding APIs perform.
- Non-Matches- If Smarty can’t find a geocode that matches your address, we return an API response in JSON, providing an error message indicating that the address is invalid rather than returning a guess. 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, Smarty tells you the level of accuracy
achieved. The levels of accuracy we return in our API response:
- 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 geocode APIs are incredibly powerful, only to be limited by overly restrictive terms of service.
Does the provider allow you to display their geocodes on other mapping or GIS platforms, 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 its geocodes zealously. Google doesn't allow you to store geocodes past 30 consecutive calendar days under the majority of circumstances. If you’re going to display a geocode on a map, Google requires you to display them on a Google Map. No exceptions.
Like Esri, Smarty allows users to store geocodes and display them on 3rd party maps. Smarty even has a QGIS geocoding plugin for US addresses. You can geocode addresses one at a time for free. With a Smarty paid subscription, you can geocode and plot 600-700 geocodes per second from spreadsheets and CSV files directly through the plugin.
Terms of Service Comparison Summary:
|Storing Geocodes Permitted?||✅||✅||✅|
|3rd Party Maps Permitted?||✅||❌||✅|
6. Batch Geocoding Requests
Besides Google, all the geocode providers offer batch geocode entry. Batch Geocoding is the process of uploading a spreadsheet or list of addresses and receiving back the corresponding latitude and longitude coordinates for the entire list of addresses at once. If you include the desired country code as a part of your request through our international geocoding API, Smarty can batch geocode your addresses worldwide.
|Batch Upload Geocoding||✅||❌||✅|
Each Geocoding API and batch geocoding service has its 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 usage 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. Even with their new address validation tool, your results can be misleading or wrong.
Google doesn't permit:
- 3rd party maps
- Longterm 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.
Historically, developers believed that to get lightning-fast, accurate geocodes, they needed to set up and maintain complicated on-premise geocoding solutions. However, Smarty erases the pain of snail-paced cloud geocoding and the expensive maintenance of on-premise solutions.
Smarty features flexible terms of service, the ability to store latitude and longitude coordinates, rooftop accuracy, cascading results, aggressive matching, and speeds of 70k+ geocodes per second. Our detailed documentation allows you to get up and running in minutes.
Because Smarty 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.
Building sample requests and testing your code is easy. Check out the documentation to see how you can customize your query string request parameters for addresses in the US and over 240 countries and territories around the world.
With a suite of SDKs, calling the Smarty Geocoding APIs with your chosen language is even easier. Each SDK is open-source (Apache 2.0 License), well-tested, actively developed, and oozing with sample code and sample requests. Languages include:
- .NET SDK - C#, F#, Visual Basic .NET, or any other .NET ⁄ CLI language
- Java SDK - Clojure, Groovy, Scala, Kotlin, or any other JVM language
- Android SDK
- Go SDK
- iOS SDK - Objective-C, Swift
- PHP SDK
- Python SDK
Yeah. Smarty speaks your language. Let's get onto the final summary table for all the geocoding APIs in our comparison.
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||250 - 70,000+ QPS|
|Geocode 120 Million Addresses*||51.4 Days||27.7 Days||29 Minutes - 5.5 Days|
|Price for 120 Million Lookups||$481,500||$480,000||$32,400 - Contact Sales|
|Max Lookups Per Year (speed limited)*||.85 billion||1.58 billion||7.88 - 2.2 trillion|
|Rooftop Accurate Geocodes||✅||❌||✅|
|Storing Geocodes Permitted?||✅||❌||✅|
|3rd Party Maps Permitted?||✅||❌||✅|
*Calculated based on publicly available information.
Depending on your needs, Smarty might just provide the best Google geocoding alternative in the market. Smarty provides on-premise speed with cloud convenience. Test our accuracy with our demo, easily build and test sample requests, or contact sales to test our ludicrous speed and pin-point accuracy of our Geocoding API yourself.