Forget Google Maps – Get More from Geocode API for Less (REVIEW)
It used to be that Google Maps was the undisputed king of geocoding, commanding a royal sum from developers seeking to integrate its data into their apps. But in 2018, the innovators at SaaS Industries said “enough is enough”, and released their 100% Euro-made Geocode API to bring access truly global datasets down to an affordable price point.
So, did they succeed in their task? Today, we’re going to take a closer look at what makes Geocode API tick in our comprehensive review, plus whether it’s right for your business.
Geocoding 101 – Common use-cases
Chances are good that if you’re on this page, you don’t need much of a primer on geocoding. But for the sake of talking to everyone in the room, here’s a brief introduction on the technique, plus how it can be beneficial to your business.
Essentially, geocoding is the process of converting plain-language addresses and locations to precise measurements of longitude and latitude on the world map. Similarly, reverse geocoding takes those coordinates, and spits out the real-world names of places most closely associated (by proximity and/or relevance) with that geolocation.
The full array of applications for this technology is dizzying, but to name a few:
- Help delivery drivers find the right drop-off point – The White House has a huge campus, and you wouldn’t expect an Amazon driver to walk up to the front door to make a delivery. Instead, you’d geocode the coordinates of the specific drop-off point in the designated wing, then make this data available to shipping companies to follow for seamless deliveries.
- Clean up a database of iffy customer addresses – You’ve built an awesome form, and your customers fill it out gladly. It’s just a shame that they’re all human beings who make common mistakes, yielding a messy glut of possibly unusable data that hampers your direct mail campaign. But with geocoding, you can quickly identify which addresses are a bit off, while standardizing the rest of the good ones into a format that delivers the results you want every time.
- Create handy autocomplete suggestions on your site – What if you didn’t have to worry about incorrectly submitted addresses on your form in the first place? With geocoding, your site visitors can input an incomplete or partial address, then get a useful list of related (and correctly formatted) addresses to choose from. It’s convenient for the UX of your site or app, and convenient to your data collection efforts.
- Enrich the data you already have – You probably already have a wealth of location data that you’ve collected from (or provide to) customers. But with geocoding, you can fetch and append all kinds of extra layers of information associated with those data points. This can help you sort your data set in more meaningful ways. For example, you could add a neighborhood data point to all of your existing street addresses, then sort by neighborhood for more effective canvassing.
Why Geocode API is worth your consideration
Virtually everyone knows and uses Google Maps. It is the gold standard for geolocation data, because we interface with its data set almost every day. For the most part, we collectively place a lot of trust in Maps, so integrating it into your app boosts consumer confidence in your offering by association.
So with that said, why would you trust a relative newcomer like the Geocode API? It boils down to ROI–Google’s services are expensive. Let’s put it into perspective: to make half a million API requests to Google would cost a cool $2,000 a month. You get amazing data–but you’d better have a profound way to leverage it, or you’ll go broke quick.
On the other hand, Geocode API’s most basic, least proportionately discounted paid plan gives you TWO MILLION requests for a mere $85 per month. Comparing the price per request, you’ve got:
- Google Maps API @ $0.004 per request
- Geocode API @ $0.0000425 per request
Geocode API is literally a hundred times cheaper than the Google Maps API. What’s more, its data set is of comparable scope and quality. (In fact, there are some meaningful ways in which it is actually better than Google’s, but we’ll get into that later.)
Setting aside dollar-value comparisons for a moment, Geocode API is exceedingly simply to use and integrate. Even given this fact, SaaS Industries has gone above and beyond to offer concierge onboarding and personalized customer support (all support tickets are answered within 24 hours, no exceptions)–and baked this service directly into the price you pay for those millions of monthly requests.
Ultimately, the Google vs Geocode API argument can be made analogous to buying an expensive designer shirt vs paying your local tailor a fraction of the price to craft you one. Our money’s on the tailor-made shirt being the better fit.
Using the Geocode API
Normally, we’d recommend you make a beeline to the API’s documentation page to learn about its endpoints, parameters, and integrations. But that tactic only sort of works with Geocode API…
In fact, navigating to https://geocodeapi1.docs.apiary.io reveals only scant information, with the majority of the verbiage going towards the three basic authentication methods. The rest of the page dedicates fewer than two sentences to the core endpoints that make Geocode API tick (these are /search, /reverse, and /status). So what gives?
Geocode API bases much of its infrastructure on Pelias, the open-source geolocation source engine by Mapzen. As such, the two share a common set of parameters, and thus Pelias’ documentation will suffice for teaching you how to use Geocode API for both forward and reverse geocoding.
With that’s said, let’s take a look at what you can do with each endpoint.
Forward geocoding with /search
Your most basic API request will look something like this:
https://app.geocodeapi.io/api/v1/search?apikey=fd646df0-810d-11ea-9f24-85fc9ad6f471&text=Atlanta
Breaking that down, you’ll see the Geocode API base URL, appended by the /search endpoint, your API key, and your query for Atlanta. Even though we were looking for Atlanta, GA, Geocode API returns a ton of results that might potentially satisfy more niche queries for the term (like Atlanta, KS, or the Hotel Atlanta in Vienna, Austria).
Here’s a snippet of what it’ll return:
{ "geocoding": { "version": "0.2", "attribution": "https://geocodeapi.io/attribution", "query": { "text": "atlanta", "size": 10, "layers": [ "venue", "street", "country", "macroregion", "region", "county", "localadmin", "locality", "borough", "neighbourhood", "continent", "empire", "dependency", "macrocounty", "macrohood", "microhood", "disputed", "postalcode", "ocean", "marinearea" ], "private": false, "lang": { "name": "English", "iso6391": "en", "iso6393": "eng", "defaulted": true }, "querySize": 20, "parser": "libpostal", "parsed_text": { "city": "atlanta" } }, "warnings": [ "performance optimization: excluding 'address' layer" ], "engine": { "name": "Pelias", "author": "Mapzen", "version": "1.0" }, "timestamp": 1587247179802 }, "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -84.414581, 33.769805 ] }, "properties": { "id": "85936429", "gid": "whosonfirst:locality:85936429", "layer": "locality", "source": "whosonfirst", "source_id": "85936429", "name": "Atlanta", "confidence": 1, "match_type": "exact", "accuracy": "centroid", "country": "United States", "country_gid": "whosonfirst:country:85633793", "country_a": "USA", "region": "Georgia", "region_gid": "whosonfirst:region:85688535", "region_a": "GA", "locality": "Atlanta", "locality_gid": "whosonfirst:locality:85936429", "continent": "North America", "continent_gid": "whosonfirst:continent:102191575", "label": "Atlanta, GA, USA" }, "bbox": [ -84.5508496385, 33.6479858, -84.2896205088, 33.8868632704 ] }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -93.05266, 33.11875 ] }, "properties": { "id": "1125873901", "gid": "whosonfirst:locality:1125873901", "layer": "locality", "source": "whosonfirst", "source_id": "1125873901", "name": "Atlanta", "confidence": 1, "match_type": "exact", "accuracy": "centroid", "country": "United States", "country_gid": "whosonfirst:country:85633793", "country_a": "USA", "region": "Arkansas", "region_gid": "whosonfirst:region:85688549", "region_a": "AR", "locality": "Atlanta", "locality_gid": "whosonfirst:locality:1125873901", "continent": "North America", "continent_gid": "whosonfirst:continent:102191575", "label": "Atlanta, AR, USA" }, "bbox": [ -93.05266, 33.11875, -93.05266, 33.11875 ] }, { "type": "Feature", "geometry": { "type": "Point", "coordinates": [ -121.12077, 37.81298 ] }, "properties": { "id": "1125797253", "gid": "whosonfirst:locality:1125797253", "layer": "locality", "source": "whosonfirst", "source_id": "1125797253", "name": "Atlanta", "confidence": 1, "match_type": "exact", "accuracy": "centroid", "country": "United States", "country_gid": "whosonfirst:country:85633793", "country_a": "USA", "region": "California", "region_gid": "whosonfirst:region:85688637", "region_a": "CA", "locality": "Atlanta", "locality_gid": "whosonfirst:locality:1125797253", "continent": "North America", "continent_gid": "whosonfirst:continent:102191575", "label": "Atlanta, CA, USA" }, "bbox": [ -121.12077, 37.81298, -121.12077, 37.81298 ] } ...
Of course, you don’t always want every option there is in response to a basic request. In this case, you’ll use Geocode API’s various parameters. Here’s a non-exhaustive look at each of them:
- size – Narrows down the number of results returned to the value you specify. Want the top three results? Append size=3 onto your request.
- country – Let’s say you’re definitely NOT looking for the Hotel Atlanta in Vienna, and just want to see all the places named Atlanta in the United States. Use this parameter along with your desired alpha-3 country code–in this case, USA–to constrain your search to that country’s borders.
- rect.min/max_lat/lon – You’ll actually specify four coordinate values for this boundary, which draws a rectangle around a specific area and searches exclusively therein.
- circle.lat/lon/radius – Similar to the rectangular boundary, you’ll use basic geometry to draw a circle around a specific coordinate you’ll use to centralize your search.
- gid – Documentation states this parameter bounds your search to a “parent administrative area”. In plain English, this refers to a hierarchy of data points which can contain any number of locations. Tiers scale up from neighborhoods to cities, states, regions, countries, etc. and, you can constrain your search according to an area’s global ID, aka gid. The nomenclature depends upon which data set you’re sourcing from, but the documentation is readily available. This is mostly useful when drawing a circle or rectangle would include results from odd-shaped areas you’d otherwise want to omit.
- point.lat/lon – This parameter focuses your search around a point, and ranks your results according to proximity.
The beautiful thing about this system is that you can combine parameters for highly accurate and relevant results. For example, you can use both the rectangle and circle boundaries to search only where the two overlap, or you can mix and match either with the proximity function.
Geocode API has a couple more tricks up its sleeve to help you manage your results in the form of filtering:
- sources – As alluded to earlier, Geocode API has access to multiple sources, including OpenStreetMap (osm), OpenAddresses (oa), Who’s on First (wof), and GeoNames (gn). If you have a preference for one over the other, you can filter your results by setting sources=osm, for example.
- layers – Consider this your search magnifying lens, enabling you to conduct searches both granular and grand. Layers include: venue, street, country, macroregion, region, county, localadmin, locality, borough, neighbourhood (American users should note the UK spelling), continent, empire, dependency, macrocounty, macrohood, microhood, disputed, postalcode, ocean, marinearea.
Reverse geocoding with /reverse
This is the endpoint for reverse geocoding, which bases a search around inputted coordinates. It will then yield results which are most likely to be relevant to your search. For example, a search around the coordinates 41.4036° N, 2.1744° E would look like this:
https://app.geocodeapi.io/api/v1/reverse?apikey=fd646df0-810d-11ea-9f24-85fc9ad6f471&point.lat=41.4036&point.lon=2.1744
The top result? The Sagrada Familia in Barcelona, Spain. And in fact, you would get all that information and more per result returned, rather than just the Sagrada Familia.
Once again, there are several possible layers of information and four major data sources to parse. You can also bound your search with a circle, by country, or by gid. And of course, you can broaden or narrow the number of results you get with size.
Most important to this endpoint is the distance and confidence score, which taken together is the API’s way to telling you how sure it is you were searching for a particular result with your query.
Checking your quota with /status
Easily the simplest of the three major endpoints, calling this endpoint returns your remaining requests. This information is also available in your account Dashboard, but who has time to navigate there when your app can tell you directly?
Performance
So, we know what the Geocode API can do, but how well does it do it?
Once again, confidence is key. When you sign up for a paid Geocode API plan, SaaS Industries supplies you with an SLA, which guarantees an impressive 99.9% uptime. With thousands of satisfied customers all over the world, ranging from startups to enterprise-level, it’s clear this is a commitment they take very seriously.
Considering their clientele, that figure is no mean feat. In fact, Geocode API routinely processes millions of requests per day without a hiccup, thanks in no small part to its robust worldwide server network. This is key for businesses looking to aggressively scale–you never have to waste resources developing a new geocoding solution for enterprise-level operations.
Speaking of servers, Geocode API respects your right to privacy with 256-bit SSL encryption. This ensures your mission-critical business data never falls into the wrong hands, allowing you to make liberal use of your API integration without anxiety.
But what about the data itself? Geocode API primarily sources its data set from OpenStreetMap, the open-source mapping environment trusted by developers and digital cartographers the world over.
Compared to Google, OSM is unencumbered by bureaucracy, and can be rapidly updated to reflect geographical changes caused by anything from urban development to natural disasters. What’s more, OSM has proven that it is no more vulnerable to false mapping by cartographic vandals than Google’s closed environment.
Combined with OpenAddresses, Who’s on First, and GeoNames, and it’s clear that Geocode API offers a high-quality, agile, and fully global dataset to rival Google’s.
Pricing
We’ve already touched upon Geocode API’s generous pricing in abstract, but now let’s take a look at what each of their five subscription tiers offer.
- FREE – True to its namesake, the FREE tier costs you nothing but the time you spend to play around with the API. No upfront deposits, no credit card details on file, no obligation to continue following a trial period. You get a more-than generous 350,000 monthly request quota, with HTTPS encryption guarding each one. You are limited to two queries per second, so don’t expect a ton of throughput if you decide to integrate the API at this level. You’ll need some coding knowledge to do so, as well, as SaaS Industries doesn’t provide onboarding for FREE customers (though they’ll answer emails!)
- SMALL – $85/month. The SMALL tier is really anything but. It opens up a whopping 2 million monthly requests, boosts throughput at 25 queries per second, and continues to guard your connections with SSL encryption. What’s more, you get personalized support, and concierge onboarding to help you customize the API to your needs during integration. Finally, there’s an SLA attached to this and every tier above it, guaranteeing 99.9% uptime among other terms.
- MEDIUM – $135/month. This is the most popular Geocode API tier. It features everything in the SMALL tier, plus a 75% increase in your monthly capacity (3.5 million requests), plus 35 total queries per second. You can expect the same world-class customer support at this an all paid tiers.
- LARGE – $300/month. It seems like a hefty fee, but still pales in comparison to the most basic price point set by Google Maps. At a mere $0.0000375 per request, you’re really getting your money’s worth if your company needs are in the ballpark of 8 million requests per month. You get a ludicrous 50 queries per second as well, making short work of even heavy batch requests. Needless to say, the Geocode API team stands firmly by their LARGE SLAs, and are ready to provide customized support to achieve your goals.
- CUSTOM – Ever run a business so awesome, it can’t be bound by pre-prescribed subscription terms? If the answer is yes, then contact Geocode API directly to throw limits on monthly quotas and queries per second to the wind. Together, you’ll identify the best solutions to meet your needs, and then some–all at a price that guarantees ROI.
Verdict on the Geocode API
SaaS Industries set out with a goal in mind: to make quality geocoding much more affordable than the Google Maps API. To that end, Geocode API is a rousing success.
It offers similar or better functionality to Google, but at actual pennies on the dollar. The API itself is built off Zenmap’s incredibly popular Pelias platform, so Geocode API didn’t have to reinvent the wheel to succeed. What’s more, SaaS Industries maintains a robust server network that boasts incredible speeds and uptime, superior security, and seamless scalability. If the raw statistics weren’t enough to draw you in, then the passionate and brilliant Geocode API support team will work tirelessly to make up the difference.
Overall, you’ll be hard-pressed to find a more robust, easier-to-use, and more affordable geocoding API. AddictiveTips confidently recommends Geocode API to startups, SMBs, and enterprises alike.
Got any questions or comments on the Geocode API? Leave us a note in the comments below!