Best Geocoding API | Smarty, Esri, and Google's APIs Compared

Geocoding API output

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:

  1. Best Geocoding API by Speed - How long does it take to process 10 million geocodes with each provider?
  2. Geocode Pricing - While pricing is subject to change, what can you generally expect?
  3. Address Validation - Is the address validated or standardized before geocoding to improve matches?
  4. Geocode API Accuracy - How close can the geocode provider get to the actual rooftop of the building, or even apartments and suites?
  5. Terms of Service Restrictions - Does the geocode provider allow you to display their results on a 3rd party map and store geocodes?
  6. 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:

  1. The geocoding system bogs down and slows to a crawl.

    or

  2. 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.

Download '8 Questions to Ask When Selecting A Geocoding API' Now.

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 ArcGIS geocoding speed - Usain Bolt

Esri

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 Maps Geocoding API speed - lion

Google

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 geocoding API speed - gazelle

Geocodio

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.

Sorta.

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

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:

Esri ArcGIS Geocoding API vs Smarty API requests per second

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:

Feature Esri Google Geocodio Smarty
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

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

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.

Download '8 Questions to Ask When Selecting A Geocoding API' Now.

Geocodio

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.

Smarty

Pricing with Smarty is determined by two factors.

  1. The number of lookups planned to use.
  2. 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:

Feature Esri Google Geocodio Smarty
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+
Address validation advanced matching

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.

Esri

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

No, Google doesn’t validate addresses. Have you ever tried to navigate somewhere with the Google Maps Services, 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 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. Google doesn’t like telling you when an address just aren’t valid.

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 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.

Geocodio

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.

Smarty

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:

Feature Esri Google Geocodio Smarty
Address Validation?

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.

  1. Rooftop Geocoding Accuracy -Is the geocode rooftop accurate? If not, what level of accuracy is achieved by the geocoding API?
  2. SubAddress -Can the geocoding API correctly identify individual units in a strip mall, apartment complex, office complex, or mobile home park?
  3. 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?
  4. 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?

Esri

  1. Accuracy- Yes, actual “rooftop” accuracy for most addresses. Many geocoders use ESRI as the gold standard of accuracy.
  2. SubAddress- Yes, Esri responds to your query with subaddress geocoding accuracy too. Apartment numbers and suites can be geocoded in many instances.
  3. Non-Matches- Esri will tell you when they fail to make a match, so you aren’t wasting money on bad data.
  4. Cascading Results -Esri Offers the following levels of cascading results - they are:
    1. Address point (rooftop)
    2. Interpolated point
    3. Street centroid
    4. Postal centroid
    5. City centroid

Google

  1. 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.
  2. SubAddress -Yes, sometimes. With varying degrees of success, Google does attempt to provide subaddress geocodes.
  3. 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.
  4. Cascading -Yes, Google does offer cascading results - they are:
    1. Rooftop (parcel)
    2. Range Interpolated
    3. Geometric Center
    4. Approximate

Geocodio

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Download '8 Questions to Ask When Selecting A Geocoding API' Now.

Smarty

  1. 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.
  2. 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.
  3. 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.
  4. Cascading results- Yes, Smarty tells you the level of accuracy achieved. The levels of accuracy we return in our API response:
    1. Rooftop
    2. Parcel centroid
    3. Address range
    4. ZIP 4
    5. 5-digit ZIP

Accuracy, Non-Matches & Cascading Comparison Summary:

Feature Esri Google Geocodio Smarty
Rooftop Accurate Geocodes
SubAddress Matching
Non-Match Indication

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

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

Google guards its 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.

Geocodio

Yep. Storing geocodes and displaying them on 3rd party maps is not against the Geocodio terms of service.

Smarty

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:

Feature Esri Google Geocodio Smarty
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.

Feature Esri Google Geocodio Smarty
Batch Upload Geocoding
Geocoding API

Download '8 Questions to Ask When Selecting A Geocoding API' Now.

Conclusion

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

Esri offers world-class geocoding solutions and accuracy. Their on-premise solutions can be lightning-fast but come at a high price. Esri’s liberal terms of use mean you can do almost anything you want with their geocodes as long as you follow their rules. If you want that lightning speed through their cloud-based geocoder though, you’re out of luck. A few dozen lookups per second will be your cap. If you want speed with Esri, the on-premise solution is your only choice.

Esri doesn’t provide:

  1. Geocoding faster than 27 QPS in the cloud.
  2. 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

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:

  1. 3rd party maps
  2. Geocode storage
  3. 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

Geocodio offers a great solution for budget latitude and longitude coordinates, where accuracy and precision aren’t important factors.

Geocodio doesn’t provide:

  1. Rooftop level accuracy
  2. The Distinction between rooftop and parcel centroid geocodes
  3. SubAddress geocodes
  4. Validated, standardized addresses

Smarty

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
  • JavaScript SDK
  • PHP SDK
  • Python SDK
  • Ruby

Yeah. Smarty speaks your language. Now, lets 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.

Feature Esri Google Geocodio Smarty
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
Validates Address?
Rooftop Accurate Geocodes
SubAddress Matching
No-Match Indication
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.

Download '8 Questions to Ask When Selecting A Geocoding API' Now.

The leader in location data intelligence

Ready to get started?