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 requests. Geocoding data can then be used for 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 entry 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 difficult since they frequently use inconsistent definitions for accuracy, speed, and pricing which creates confusion. In this article, we'll dispel confusion and compare 4 prominent geocoding APIs: Esri ArcGIS, Smarty (formerly SmartyStreets), Google Maps, and Geocodio.
|US Geocoding API||US Reverse Geocoding API||International Geocoding API||Spreadsheet Batch Geocoding Requests|
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”. 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 those aren’t fast enough for any type of scaled operation. For many applications, producing dozens, hundreds, and even thousands of lat-long coordinates per second isn’t fast enough either.
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 by behaving like 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 that he can't ever stop talking. But you just want to eat lunch. Your stomach is growling because you were late for school and 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 is going to be the last to the lunchroom for the 2nd time this week! Then you are going to have to wait in line AGAIN once you get there. Recess is going to 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 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, the usage example will be a telecom provider needing 10 million addresses geocoded monthly. As we share numbers and calculate speed and accuracy, we’ll rely on each service’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 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 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 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 is better able to predict and control loads and provide a predictable (albeit, not very fast) usage 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.
Geocodio is an entry-level geocoder that is great for small companies with simple requirements. Geocodio 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.
Geocodio doesn’t artificially limit your speed as Google does. However, Geocodio’s service is hardware-limited to 200,000 geocodes an hour. That puts Geocodio 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 query processing to get lat-long coordinates for 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 Geocodio would be a zippy Gazelle. With a top speed of around 60 MPH (97 KPH), the gazelle escapes the lion–most of the time.
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 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 Smarty. That’s at least 535 times faster than Geocodio, 600 times faster than Google and 1,111 times faster than Esri!
In this comparison, Smarty 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).
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.
30,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||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. Cost per request may change based on the size of your company, lookups per year, geocode storage policy, accuracy, speeds, and other factors. To get the most accurate picture, the example usage 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 an online subscription to use their service of $1,500 a year. From there, you pay for credits that are consumed with their geocoding API usage.
Based on this credit system, you can perform address geocoding at a rate of $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 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+ 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.
As an entry-level geocoder, Geocodio leads with low costs. An unlimited Geocodio 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's geocoding API & Google, you might be wondering if there’s a catch. Stay tuned for the accuracy section.
Pricing with Smarty is determined by two factors.
- The number of lookups planned to use.
- How fast do you want to use those lookups?
Usage of 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 usage 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 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 query batch of 100,0000 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 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 will 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 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.
Google is new to the address validation game. You may be thinking that this is exciting new, 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 Googles 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. In fact, 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 in a different API.
No, Geocodio doesn’t validate addresses either. While Geocodio will break up an address into 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 Smarty, and we tend to agree.
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, 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 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 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 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- No. Geocodio 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. Geocodio successfully hits the parcel about 70% of the time, per their documentation.
- SubAddress- Since Geocodio 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 Geocodio’s abilities.
- Non-Matches- Geocodio 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 Geocodio can’t match the house number or street, the API response includes the geocode of the center of the ZIP Code, city, or state.
- Cascading Results- Yes, Geocodio attempts to find the parcel geocode and continues to cascade to the next levels of accuracy until a Geocode is found.
- 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 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 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.
Yep. Storing geocodes and displaying them on 3rd party maps is not against the Geocodio terms of service.
Like Esri and Geocodio, Smarty also 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.
Geocodio offers a great solution for budget latitude and longitude coordinates, where accuracy and precision aren’t important factors.
Geocodio doesn’t provide:
- Rooftop level accuracy
- The 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, 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 30k+ 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 as well as 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, 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. Now, 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||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.
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 out our ludicrous speed and pin-point accuracy of our Geocoding API yourself.