Quickly integrate with the best geocoding providers

Write the integration once

Try out the providers and find the best fit

Don't spend time learning providers' APIs

Don't worry about the selection—you can easily change the provider later. Superface works with the best providers. One or all.

Here.com

FREEMIUM

  • 250K requests/month
  • $1/1000 additional transactions

PRO PLAN $449/month

  • 1mil requests/month
  • $1/1000 additional transactions Customer support
  • 5 requests per second
  • 5k monthly active users
  • Data transfer per month 2.5GB
  • Database storage per month 5GB
Google Maps

FREE TIER

  • free $200 worth usage / month
  • $300 trial credit valid for 90 days for new New Google Cloud and Google Maps Platform users

PRICE PER REQUEST

  • $5 / 1000 requests (0-100k requests/month)
  • $4 / 1000 requests (100k - 500k requests/month)s Customer support
  • 50 requests per second
  • Google map must be used to display results
Azure Maps

FREE TRIAL

  • 5000 free requests / month
  • free $200 worth of usage valid for 30 days

PRO PLAN

  • $4.50 / 1000 requests (0-100k requests/month)
  • $3 / 1000 requests (100-500k requests/month)
  • prices go as low as $0.50 per 1000 requests with usage exceeding 1mil requests / month
OpenCage

FREE TRIAL

  • 2,500 requests/day
  • 1 request/sec

FROM $50/month

  • 10,000 requests/day *15 requests/sec
  • multiple API keys
  • priority support
  • custom pricing for large traffic available
  • paid plan scales up to $1000/month with 500k requests/day
TomTom

FREE

  • 2,500 requests/day

PAY AS YOU GROW

  • $0.50 / 1000 additional requests after exceeding 2,500 requests/day
  • Personalized support for paying users
  • custom enterprise plans available
Nominatim

FREE

FREE

Community maintained, 1 request/second, required to display attribution

1

Install OneSDK for Node.js

Superface OneSDK is an open-source library that will give you one interface to every provider.

$ npm install @superfaceai/one-sdk
$ npx @superfaceai/cli install address/geocoding
2

Configure provider(s)

Note you will need to obtain and set the API keys directly from the provider.
# Here.com
$ npx @superfaceai/cli configure here -p address/geocoding
$ export HERE_API_KEY=your-value-from-here
# Google Maps
$ npx @superfaceai/cli configure google-maps -p address/geocoding
$ export GOOGLE_API_KEY=your-value-from-google-maps
# Azure Maps
$ npx @superfaceai/cli configure azure -p address/geocoding
$ export AZURE_API_KEY=your-value-from-azure
# OpenCage
$ npx @superfaceai/cli configure opencage -p address/geocoding
$ export OPENCAGE_API_KEY=your-value-from-opencage
# TomTom
$ npx @superfaceai/cli configure tomtom -p address/geocoding
$ export TOMTOM_API_KEY=your-value-from-tomtom
# Nominatim
$ npx @superfaceai/cli configure nominatim -p address/geocoding
No keys needed
3

Write simple code

Use the OneSDK in your Node.js app:

const { SuperfaceClient } = require('@superfaceai/one-sdk');
async function main() { const sdk = new SuperfaceClient();
 
// Load the installed profile
const profile = await sdk.getProfile('address/geocoding');
const result = await profile.getUseCase('Geocode')
  .perform({
    addressCountry: 'United States',
    addressLocality: 'San Francisco',
    postalCode: 'CA 94103',
    streetAddress: '325 Ninth Street',
  });
  try {
    const data = result.unwrap();
    console.log(data) }
  catch (error) {
    console.error(error)
}}
 
main();
# Run the code
$ node index.js
Done!

Bonus: Multiple geocoding providers

You can configure additional providers for your integration; Just repeat step 3 as many times as you wish.

Do not forget to set your API keys for newly configured providers!

 

With multiple providers configured, you can select which one is used either in the configuration file or directly in the code.

Provider configuration in superface/super.json

{
  "profiles": {
    "address/geocoding": {
      "version": "3.1.2",
      "providers": {
      "nominatim": {},
      "tomtom": {}
    },
    "priority": [
      "nominatim",
      "tomtom"
    ]
    }
  },
  "providers": {
    "nominatim": {
      "security": []
    },
    "tomtom": {
      "security": [
        {
          "id": "apikey",
          "apikey": "$TOMTOM_API_KEY"
        }
      ]
    }
  }
}

Provider configuration in the code

const { SuperfaceClient } = require('@superfaceai/one-sdk');
async function main() { const sdk = new SuperfaceClient();
 
// Load the installed provider
const provider = await sdk.getProvider('nominatim');
// Load the installed profile
const profile = await sdk.getProfile('address/geocoding');
const result = await profile.getUseCase('Geocode')
  .perform({
    addressCountry: 'United States',
    addressLocality: 'San Francisco',
    postalCode: 'CA 94103',
    streetAddress: '325 Ninth Street',
  },{
    provider,
  });
  try {
    const data = result.unwrap();
    console.log(data) }
  catch (error) {
    console.error(error)
}}
 
main();

Bonus: Monitor your geocoding integration

Sign up for Superface and set your SDK token to get real-time insight into your geocoding integration.

$ export SDK_TOKEN=your-superface-sdk-token
Sign up for Superface
Design and brand