Reverse Geocoding Free April 27, 2021
Five reasons why BigDataCloud API is better than Google Maps Free Reverse Geocoding API
Most modern mobile and web apps have location-based features enabled for content personalisation and customer targeting. These features are transforming the way we shop online, stream digital content, and read news. Almost all online commerce and social networks are driven by these hyper-local targeting features.
At the heart of these features, lies an algorithm that converts a user's geo-coordinates into readable location properties, called reverse geocoding. Based on this data, businesses are optimising and targeting their campaigns for maximum conversion.
There are many reverse geocoding service providers with various features and pricing models. Among them, Google has the most popular reverse geocoding API and is known to lead the industry. Upon in-depth research, you will find that these APIs have a lot of restrictions that impact the scalability and speed of your apps.
In this blog post, we have highlighted the major advantages of BigDataCloud’s reverse geocoding API, over Google’s API, and a few other well-known service providers’ APIs.
#1 More Accurate Reverse Geocoding Technology
The fundamental difference between BigDataCloud’s reverse geocoding API and others is the method used to convert geo-coordinates into a readable address. BigDataCloud is the first to deliver administrative/non-administrative boundary-based results, making it the perfect choice for identifying a user's practical area such as county, city, state and country.
All the other service providers resolve coordinates to the nearest street address, as a result, they aren’t always accurate and fail to provide rich locality information.
Example: Illustrating the difference in result due to the underlying algorithm.
Geo coordinates(Latitude and Longitude): 51.486782, -0.088560
The point on the map:
Reverse Geocoding Service Providers |
Raw Output of the APIs |
BigData Cloud |
SE17 2 London Borough of Southwark Other Information London Low Emission Zone Camberwell and Peckham, Westminster Constituency |
Google API |
139 Merrow St, London SE17 2NY, UK 129 Merrow St, London SE17 2NX, UK 10 Villa St, London SE17, UK Villa St, London SE17 2EL, UK |
Here API |
45 Villa Street, London, SE17 2EJ, United Kingdom "distance": 19 |
LocationIQ |
Villa Street, Bermondsey Spa, Walworth, London Borough of Southwark, London, Greater London, England, SE17, United Kingdom "important": none |
Conclusion
Google’s API was the only one to return multiple street names, whereas, Here and LocationIQ resolved to Villa street which was the closest street address, accompanied by an accuracy score. The example clearly demonstrates how resolving to the nearest street address doesn’t always provide accurate results. This can complicate the implementation of an API and increase the response time of your app. Whereas, resolving to the smallest locality area, as with BigDataCloud, gives you accurate information in near real-time.
#2 Better Freemium Policy
All the reverse geocoding service providers have a freemium plan with multiple features and rate limits. However, BigDataCloud is the only one to provide completely free reverse geocoding API for client-side implementation, without any rate limit or throttling.
Reverse Geocoding API Vendors |
BigDataCloud |
Google API |
LocationIQ |
Here API |
Need an Account? |
None for client-side implementation |
YES |
YES |
YES |
Need Credit Card Details |
NO |
YES |
NO |
NO |
Free Plan |
Unlimited Client-side implementation Free 50K queries per month for server-side implementation |
Provides $200USD worth of monthly free credit which resolves to 40K queries per month. |
10K queries per day |
250K queries per month |
Rate Limit |
None |
50 requests per seconds |
2 per seconds |
5K Monthly Active Users for mobile SDK implementation. No SLA |
If you want to implement reverse geocoding on the client-side for identifying a user's real-time location on the web or mobile, BigDataCloud has the best plan. Even for a server-side implementation, BigDataCloud provides an affordable rate with 50K free queries per month. All the other providers have strict rate limits and restrictions.
#3 Less Restrictive Terms and Conditions
Among all the service providers, Google has the most stringent terms and conditions. This means less flexibility and more hurdles during the development stage.
Some of Google’s key limitations are (not verbatim):
- You cannot use their API data on a map that is not a Google map.
- Your app needs to attribute Google by displaying their logo.
- If you build an API on top of Google’s API, then all Google's terms and conditions are transferred to your project.
- If you are building a mobile app, then you need to link to the TOS/Privacy Policy page on your app download page. For a web app you need to link to them in the footer.
- You must not prefetch, index, store, or cache any content except under the limited conditions stated in the terms and conditions.
Compared to this, BigDataCloud’s reverse geocoding implementation is easier and doesn’t have as many limitations. If you are using BigDataCloud’s client-side geocoding you don’t even need to attribute it. However, if you use LocationIQ’s free API for commercial projects you have to attribute and link back to the LocationIQ’s website. Here’s API has comparatively fewer restrictions as well.
#4 More Flexible Pricing Model
How does the pricing change with the growth of your business? This is important to understand so that you don’t end up paying too much in the future or realising that you cannot afford the service anymore.
Most service providers have different pro-level packages which either restrict features or usage.
Reverse Geocoding API Vendors |
Pricing (USD) |
Cost for 1 Million requests per month. |
BigDataCloud |
FREE 50K requests per month for Server-side API. $2/month for additional 50K. |
$38 |
Google API |
Pay-per-use model 0-100K $0.005 100K - 500K $0.004 500K + Contact Sales (50/sec) |
Approx $800 to $3000 |
LocationIQ |
20K/day (12/sec limit) $100/month 50K/day (15/sec) $200/month 1M/day (35/sec) $950/month |
$200 |
Here |
Freemium Plan pay $1 per 1K Pro Plan (1M/mon) $449/month |
$449 (limited to 5K MAU) |
BigDataCloud provides the most affordable and scalable pricing. If we assume that we need 1 Million requests per month, then you will notice that BigDataCloud’s pricing is far more reasonable compared to all other providers.
Furthermore, BigDataCloud’s pricing is not based on features; hence, all packages have access to all of the features. However, the pricing for Google API, LocationIQ, and Here increases significantly for higher API requests.
#5 Richer Location Dataset at Higher Speeds.
Regarding the quality and response rate of the APIs. Besides BigDataCloud, all the other APIs have inherent API hit limits per second which increases the overall data latency.
Using external API explorers, like Insomnia and Postman, we tested each of these APIs for the same input query. We executed the APIs multiple times and noted the variations in the response time. The table below provides an approximate of those response times.
The response time of BigDataCloud’s API is incredibly faster compared to other APIs.
Reverse Geocoding API Vendors |
BigDataCloud |
Google API |
LocationIQ |
Here API |
Response Time (As reported on Insomnia API explorer) |
32.8ms |
148ms |
434ms |
464s |
Comparison of the output results among various service providers.
Vendor/Quality |
BigDataCloud |
Google API |
Here API |
LocationIQ |
Output format |
JSON |
JSON |
JSON |
JSON |
Language Support |
Yes. BigDataCloud supports 147 languages. |
Yes |
Yes |
NO |
Output data parsing |
Provides exact locality region name and administrative level breakdown. Also provides aWikiID for each region. |
Provides multiple street addresses. |
Provides a single street address closest to the point. |
Provides a single street address closest to the point. |
Accuracy metrics |
Doesn’t contain accuracy metrics because the API provides the smallest area that resolves to a coordinate. Provide postal code level accuracy for the U.S, Great Britain, and Australia. |
Provides coordinates of a polygon area along with the street addresses. |
Provides the distance between the point and the address in meters. |
Provides an accuracy score between 0 to 1. |
Sample JSON Output
Input: 36.672886, -109.730101 (Latitude, Longitude)
Location IQ Output
{
"place_id": "120406974",
"licence": "https:\/\/locationiq.com\/attribution",
"osm_type": "way",
"osm_id": "145835222",
"lat": "36.6729441853216",
"lon": "-109.732954083088",
"display_name": "Apache County, Arizona, USA",
"address": {
"county": "Apache County",
"state": "Arizona",
"postcode": "86545",
"country": "United States of America",
"country_code": "us"
},
"boundingbox": [
"36.6603318",
"36.6821601",
"-109.7352939",
"-109.7329412"
]
}
BigDataCloud Output
{
"latitude": 36.67288589477539,
"longitude": -109.7301025390625,
"localityLanguageRequested": "en",
"continent": "North America",
"continentCode": "NA",
"countryName": "United States of America",
"countryCode": "US",
"principalSubdivision": "Arizona",
"locality": "Apache County",
"postcode": "86545",
"localityInfo": {
"administrative": [
{
"order": 1,
"adminLevel": 2,
"name": "United States of America",
"description": "country in North America",
"isoName": "United States of America (the)",
"isoCode": "US",
"wikidataId": "Q30"
},
{
"order": 3,
"adminLevel": 4,
"name": "Arizona",
"description": "state of the United States of America",
"isoName": "Arizona",
"isoCode": "US-AZ",
"wikidataId": "Q816"
},
{
"order": 5,
"adminLevel": 6,
"name": "Apache County",
"description": "county in Arizona, United States",
"wikidataId": "Q58771"
}
],
"informative": [
{
"order": 0,
"name": "North America",
"description": "continent on the Earth's northwestern quadrant",
"isoCode": "NA",
"wikidataId": "Q49"
},
{
"order": 2,
"name": "Colorado Plateau",
"description": "plateau in the southwestern United States",
"wikidataId": "Q925906"
},
{
"order": 4,
"name": "Navajo Nation",
"description": "aboriginal_lands"
},
{
"order": 6,
"name": "86545",
"description": "postal code"
}
]
}
}
Google API Output
{
"plus_code": {
"compound_code": "M7F9+5X Rock Point, AZ, USA",
"global_code": "858GM7F9+5X"
},
"results": [
{
"address_components": [
{
"long_name": "Unnamed Road",
"short_name": "Unnamed Road",
"types": [
"route"
]
},
{
"long_name": "Rock Point",
"short_name": "Rock Point",
"types": [
"locality",
"political"
]
},
{
"long_name": "Apache County",
"short_name": "Apache County",
"types": [
"administrative_area_level_2",
"political"
]
},
{
"long_name": "Arizona",
"short_name": "AZ",
"types": [
"administrative_area_level_1",
"political"
]
},
{
"long_name": "United States",
"short_name": "US",
"types": [
"country",
"political"
]
},
{
"long_name": "86545",
"short_name": "86545",
"types": [
"postal_code"
]
}
],
"formatted_address": "Unnamed Road, Rock Point, AZ 86545, USA",
"geometry": {
"bounds": {
"northeast": {
"lat": 36.6800319,
"lng": -109.7240248
},
"southwest": {
"lat": 36.647811,
"lng": -109.7263801
}
},
"location": {
"lat": 36.6638285,
"lng": -109.7254349
},
"location_type": "GEOMETRIC_CENTER",
"viewport": {
"northeast": {
"lat": 36.6800319,
"lng": -109.7238534697085
},
"southwest": {
"lat": 36.647811,
"lng": -109.7265514302915
}
}
},
"place_id": "ChIJ36CSaZKiMIcR1vrOUpmbHBM",
"types": [
"route"
]
},
{
"address_components": [
{
"long_name": "86545",
"short_name": "86545",
"types": [
"postal_code"
]
},
{
"long_name": "Rock Point",
"short_name": "Rock Point",
"types": [
"locality",
"political"
]
},
{
"long_name": "Apache County",
"short_name": "Apache County",
"types": [
"administrative_area_level_2",
"political"
]
},
{
"long_name": "Arizona",
"short_name": "AZ",
"types": [
"administrative_area_level_1",
"political"
]
},
{
"long_name": "United States",
"short_name": "US",
"types": [
"country",
"political"
]
}
],
"formatted_address": "Rock Point, AZ 86545, USA",
"geometry": {
"bounds": {
"northeast": {
"lat": 36.932033,
"lng": -109.367176
},
"southwest": {
"lat": 36.4654809,
"lng": -109.7937421
}
},
"location": {
"lat": 36.7039897,
"lng": -109.6163185
},
"location_type": "APPROXIMATE",
"viewport": {
"northeast": {
"lat": 36.932033,
"lng": -109.367176
},
"southwest": {
"lat": 36.4654809,
"lng": -109.7937421
}
}
},
"place_id": "ChIJo776HimgMIcRuHPkmPerSSs",
"types": [
"postal_code"
]
},
{
"address_components": [
{
"long_name": "Apache County",
"short_name": "Apache County",
"types": [
"administrative_area_level_2",
"political"
]
},
{
"long_name": "Arizona",
"short_name": "AZ",
"types": [
"administrative_area_level_1",
"political"
]
},
{
"long_name": "United States",
"short_name": "US",
"types": [
"country",
"political"
]
}
],
"formatted_address": "Apache County, AZ, USA",
"geometry": {
"bounds": {
"northeast": {
"lat": 36.9993889,
"lng": -109.0452231
},
"southwest": {
"lat": 33.4754171,
"lng": -110.0007051
}
},
"location": {
"lat": 35.5313224,
"lng": -109.3783206
},
"location_type": "APPROXIMATE",
"viewport": {
"northeast": {
"lat": 36.9993889,
"lng": -109.0452231
},
"southwest": {
"lat": 33.4754171,
"lng": -110.0007051
}
}
},
"place_id": "ChIJ-WDLw6lhJYcRcrSQ4ttk6sE",
"types": [
"administrative_area_level_2",
"political"
]
},
{
"address_components": [
{
"long_name": "Arizona",
"short_name": "AZ",
"types": [
"administrative_area_level_1",
"political"
]
},
{
"long_name": "United States",
"short_name": "US",
"types": [
"country",
"political"
]
}
],
"formatted_address": "Arizona, USA",
"geometry": {
"bounds": {
"northeast": {
"lat": 37.0042599,
"lng": -109.0452231
},
"southwest": {
"lat": 31.3325693,
"lng": -114.8138273
}
},
"location": {
"lat": 34.0489281,
"lng": -111.0937311
},
"location_type": "APPROXIMATE",
"viewport": {
"northeast": {
"lat": 37.0042599,
"lng": -109.0452231
},
"southwest": {
"lat": 31.3325693,
"lng": -114.8138273
}
}
},
"place_id": "ChIJaxhMy-sIK4cRcc3Bf7EnOUI",
"types": [
"administrative_area_level_1",
"political"
]
},
{
"address_components": [
{
"long_name": "United States",
"short_name": "US",
"types": [
"country",
"political"
]
}
],
"formatted_address": "United States",
"geometry": {
"bounds": {
"northeast": {
"lat": 71.5388001,
"lng": -66.885417
},
"southwest": {
"lat": 18.7763,
"lng": 170.5957
}
},
"location": {
"lat": 37.09024,
"lng": -95.712891
},
"location_type": "APPROXIMATE",
"viewport": {
"northeast": {
"lat": 71.5388001,
"lng": -66.885417
},
"southwest": {
"lat": 18.7763,
"lng": 170.5957
}
}
},
"place_id": "ChIJCzYy5IS16lQRQrfeQ5K5Oxw",
"types": [
"country",
"political"
]
}
],
"status": "OK"
}
Here API Output
{
"items": [
{
"title": "86514, Teec Nos Pos, AZ, United States",
"resultType": "street",
"address": {
"label": "86514, Teec Nos Pos, AZ, United States",
"countryCode": "USA",
"countryName": "United States",
"state": "Arizona",
"county": "Apache",
"city": "Teec Nos Pos",
"postalCode": "86514"
},
"position": {
"lat": 36.67289,
"lng": -109.7255
},
"access": [
{
"lat": 36.67289,
"lng": -109.7255
}
],
"distance": 410,
"mapView": {
"west": -109.72403,
"south": 36.64782,
"east": -109.72791,
"north": 36.70525
}
}
]
}
More examples and comparisons of the output.
Example #1: Somewhere in the North Atlantic Ocean.
Output/ Coordinate |
BigData Cloud |
Google API |
Here API |
LocationIQ |
66.752353, -28.549259 (Somewhere in the North Atlantic Ocean) |
Atlantic Ocean |
Atlantic Ocean |
Unable to Geocode |
Unable to Geocode |
Conclusion:
When you provide a point that cannot be resolved to the closest street address, Here and LocationIQ fail to resolve to any address at all.
Example #2: Somewhere in the Sahara Desert.
Output/ Coordinate |
BigData Cloud |
Google API |
Here API |
LocationIQ |
24.997479, 27.129873 (Al Wahat Al Dakhla Desert, New Valley Governorate, Egypt) |
Al Wādī al Jadīd, New Valley Governorate, Egypt, a republic in North Africa. More Info Gilf Kebir, a mountain range The Western Desert, Libyan desert Sahara, desert in Africa |
Al Wahat Al Dakhla Desert, New Valley Governorate, Egypt |
Markaz El Wahat El Dakhla, Egypt |
New Valley Governorate, Egypt |
Conclusion:
BigDataCloud’s API is able to provide more locality information about the region compared to other service providers.
Example #3: Somewhere near Hudson Bay.
Output/ Coordinate |
BigData Cloud |
Google API |
Here API |
LocationIQ |
54.004022, -80.765083 (Southern end of Hudson Bay, between Ontario and Quebec) |
James Bay, Hudson Bay, Qikiqtaaluk Region, Nunavut, Canada |
Baffin, Unorganized, Nunavut, Canada |
Nunavut, NU, Canada "distance": -94933, |
Qikiqtaaluk Region, Nunavut, Canada “important”:none |
Conclusion
BigDataCloud’s API was the only one to identify the actual name of the bay, James Bay, and associate it as being part of Hudson Bay. Here and LocationIQ’s API wasn’t able to provide an accurate result.
Example #4: Somewhere in London
Output/ Coordinate |
BigData Cloud |
Google API |
Here |
LocationIQ |
51.771637, -0.393646 (Redbourn Civil Parish, UK) |
Redbourn, AL3 6, St Albans, Redbourn, Hertfordshire, East of England, England, UK |
Punchbowl Ln, St Albans AL3, UK St Albans AL3 6RF, UK Redbourn Civil Parish, UK St Albans AL3, UK Hertfordshire, UK |
Punch Bowl Lane, St Albans, AL3 6, United Kingdom Hertfordshire "distance": 19 |
Punch Bowl Lane, Redbourn, St Albans, Hertfordshire, East of England, England, AL3 6RP, United Kingdom "important": none. |
Conclusion
This is yet another example of how resolving to the nearest street can give a false result. All the other APIs have identified the point being near Punchbowl Ln, St. Google, as usual, has provided multiple options.
Example #5: Somewhere in Los Angeles
Output/ Coordinate |
BigData Cloud |
Google API |
Here API |
LocationIQ |
34.123111, -118.022614 (Arcadia, CA 91006, USA) |
91006 Arcadia Los Angeles County California, USA |
1505 S 4th Ave, Arcadia, CA 91006, USA 1500 S 3rd Ave, Arcadia, CA 91006, USA 1501-1599 S 3rd Ave, Arcadia, CA 91006, USA |
1505 S 4th Ave, Arcadia, CA 91006, United States |
1505, South 4th Avenue, Arcadia, Los Angeles County, California, 91006, USA |
Conclusion
Google has provided two street addresses - 4th Ave and 3rd Ave street. Here and LocationIQ have simply provided 4th Ave as the location. As the point is almost in equidistance from the streets the location is ambiguous and cannot be accurately resolved. The best option, in this case, is to use the smallest resolved area rather than a precise street address.
For most of the APIs, the first 10,000 queries are free.
Get started with the hassel free account creation process.
Fully featured access to APIs which are free for moderate use