Geocoding API

Convert Between Addresses & Geographic Coordinates


Geocoding is the process of converting a human-readable address into a pair of latitude and longitude coordinates, which are necessary to "plot" the address on a map. Reverse Geocoding is the opposite, i.e. converting a pair of lat/long coordinates into a human-readable address.

This free geocoding API service is provided by Map Maker (My Maps Inc), a web-based Map Making program. In listening to our customers, we recognized that high-volume geocoding is cost prohibitive. For example, Google Maps charges $5 per 1000 geocode requests. If you need to geocode lots of locations, that becomes expensive very quickly.

To solve this problem we created this free geocoding service, which offers generous limits that will suit most users. For those in need of very high-volume geocoding, we offer very affordable geocoding plans (see below).

Geocoding API Endpoint URLs

IMPORTANT: All API requests now require an API Key. Please Sign Up (Free) to get a FREE API key.

Forward Geocode: https://geocode.maps.co/search?q=address&api_key=api_key

Reverse Geocode: https://geocode.maps.co/reverse?lat=latitude&lon=longitude&api_key=api_key

Replace {address}, {latitude} and {longitude} with the values to geocode. You will also need to replace {api_key} with your API key. If you do not have an API key, please create a free account to obtain an API key. NOTE: Our API endpoints return JSON data by default. For different formats, append "&format={format}", where {format} is one of the following: xml, json, jsonv2, geojson, geocodejson.

For examples & more details see "How Do I Use This Geocoding API?" below
Please also be sure to read the "API Limitations / Rate Throttling"

Geocoding Plans & Limits

Our Free Geocoding plan offers generous limits of up to 1 million queries per month, at a maximum rate of 1 request per second.

To upgrade to a plan with higher limits, please Create an account.

Plan Monthly (US$):
1 Request/Second
1,000,000 /month
FREE
2 Requests/Second
3,000,000 /month
$39 BUY
5 Requests/Second
12,500,000 /month
$100 BUY
10 Requests/Second
25,000,000 /month
$170 BUY
10+ Requests/Second Contact Us

If you enjoy this free geocoding service, please help us by sharing our Map Maker service online.

For Support: [email protected]

+ How Do I Use This Geocoding API?

Use the instructions below for both forward and reverse geocoding. Please remember to replace api_key with your actual API key.

Forward Geocoding (convert address to coordinates):

To "free form" search for an address, you can pass the address string using the q parameter to the /search endpoint, e.g.:

https://geocode.maps.co/search?q=555+5th+Ave+New+York+NY+10017+US&api_key=api_key

Or you can search by name, e.g. for the Statue of Liberty:

https://geocode.maps.co/search?q=Statue+of+Liberty+NY+US&api_key=api_key

However, you can also reverse geocode by providing the following parameters:

  • street=<housenumber> <streetname>
  • city=<city>
  • county=<county>
  • state=<state>
  • country=<country>
  • postalcode=<postalcode>

For example:

https://geocode.maps.co/search?street=555+5th+Ave&city=New+York&state=NY&postalcode=10017&country=US&api_key=api_key

Reverse Geocoding (convert coordinates to address / place):

To reverse geocode, provide both the lat and lon parameters to the /reverse endpoint, e.g:

https://geocode.maps.co/reverse?lat=40.7558017&lon=-73.9787414&api_key=api_key

NOTE: Our API endpoints return JSON data by default. To return data in a different format, you can append "&format={format}", where {format} is one of the following: xml, json, jsonv2, geojson, geocodejson. Please remember to substitute {address}, {latitude} and {longitude} in the URLs above with your URL-endoded values.

+ API Limitations / Rate Throttling

Updated December 25 2023: Free accounts are limited to 1 request per second.

If you need high volume geocoding, please create an account to upgrade.

If your application exceeds the request limit for your plan, requests will be rejected with an HTTP 429 response. Upon receiving an HTTP 429 response, please throttle your application's rate of requests, e.g., by implementing a 1-second pause after each request.

Since HTTP 429 responses will not contain any geocoding results, such queries will need to be performed again after a delay.

During periods of extremely high traffic loads, the server may refuse to process your request and instead respond with an HTTP 503.

We reserve the right to block clients deemed to be abusing the service, e.g., clients making excessive repeated/duplicate requests, ignoring HTTP response codes that indicate your client should moderate request rates, flooding the API service with requests that consume too many server resources, etc. Blocked clients will receive an HTTP 403 response. If your client receives an HTTP 403, please contact us at the email address above so that we can work with you to resolve the issue.

These limits are subject to change without notice to ensure the stability of our systems. This section will be updated when we change the API limits.

+ Getting No Results? Please Read This...

If you are getting no results for some queries, this means that OpenStreetMap (OSM) and/or Nominatim could not find a results for your request. Unfortunately, there is nothing we can do about this.

For more comprehensive and accurate results, you may need to use a commercial geocoding service, such as Esri or Google.

+ About Geocoding Data

This geocoding service uses OpenStreetMap (OSM) data and the Nominatim geocoding platform.

+ Legal / Disclaimers

THIS SERVICE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY OF ANY KIND.

NO REPRESENTATION IS MADE WITH RESPECT TO THE CONTINUED AVAILABILITY OF THIS SERVICE OR THE ACCURACY OF RESULTS RETURNED BY THIS SERVICE.

YOU ARE FREE TO USE THE RESULTS GENERATED BY THIS GEOCODING SERVICE AS DESIRED ON CONDITION THAT SUCH USAGE COMPLIES WITH THE TERMS OF OPENSTREETMAP ("OSM") AND NOMINATIM.

USE AT YOUR OWN RISK!

Alert