Pricing
Migration

Change the host, keep the query string.

This is the closest of the three migrations by design: response field names and nesting follow HERE's documented payloads, so most integrations move without touching the code that reads the response.

  • Same field names and nesting on geocoding, routing, matrix, isolines, traffic and places
  • Flexible polyline by default, as on HERE
  • Free allowances identical, so the free tier does not shrink on the way over
  • Every rate exactly half of the list price you are paying today

The swap

Host and auth header. Everything below is the parameter map.

diff
- https://geocode.search.hereapi.com?apiKey=YOUR_KEY
+ https://api.apinavi.com
+ Authorization: Bearer $APINAVI_KEY

Parameter map

Geocoding & search

HEREApiNaviNote
GET /v1/geocode?q=GET /v1/geocode?q=Identical. Response fields keep their names.
GET /v1/revgeocode?at=GET /v1/revgeocode?at=
GET /v1/autosuggest?q=&at=GET /v1/autosuggest?q=&at=
in=countryCode:DEUin=countryCode:DEU
items[].scoring.queryScoreitems[].scoring.queryScoreSame 0–1 range; our field scores cover fewer components.
items[].resultType=administrativeAreaitems[].resultType=localityWe collapse three administrative levels into locality and district.

Routing

HEREApiNaviNote
GET /v8/routes?transportMode=GET /v1/routes?transportMode=Version segment differs; parameters do not.
return=polyline,summaryreturn=polyline,summary
vehicle[grossWeight]vehicle[grossWeight]
POST /v8/matrixPOST /v1/matrixSynchronous up to 500×500; larger jobs return a job id.
GET /v8/isolinesGET /v1/isolines
spans=speedLimit,truckRestrictionspans=speedLimit,truckRestriction

Maps & traffic

HEREApiNaviNote
maps.hereapi.com/v3/base/mc/{z}/{x}/{y}/png8/v1/tiles/raster/{z}/{x}/{y}.png
vector/mc/{z}/{x}/{y}/omv/v1/tiles/vector/{z}/{x}/{y}.mvtLayer names follow the OpenMapTiles convention rather than HERE's.
GET /v7/flow?in=bbox:GET /v1/traffic/flow?in=bbox:
GET /v7/incidents?in=GET /v1/traffic/incidents?in=

Where it is not a drop-in

Administrative result types

HERE returns three administrative levels; we collapse them into locality and district. If you branch on resultType, that branch needs one extra case removed.

Vector tile layer names

Our MVT layers follow the OpenMapTiles convention rather than HERE's naming. A style needs its layer references renamed — mechanical, but not zero.

Indoor and HD data

We do not serve indoor venue maps or lane-level HD content. If you use either, this is not a migration you should make.

Scoring granularity

queryScore matches HERE's 0–1 semantics, but fieldScore covers fewer components. Thresholds usually transfer; per-component gates may need retuning.

How teams usually do it

  1. 01

    Shadow

    Send a copy of production traffic to both providers for a week. No user-facing change.

  2. 02

    Diff

    Compare field by field on the endpoints you actually use. Most teams find two or three real differences, not twenty.

  3. 03

    Split

    Move 5%, then 50%, watching error rate and latency per region.

  4. 04

    Cut

    Flip the rest, keep the old key alive for a fortnight, then rotate it out.

Dual-run mode

Point a percentage of traffic at both providers and diff the responses. The console shows field-level disagreement rates per endpoint, so you cut over on evidence rather than on a spot check.

Leaving later

The same tables read in reverse, and an export endpoint returns your saved geofences, styles and batch results in open formats. A migration guide that only points inwards is a warning sign, not a feature.

Cutover checklist

  • Rate limits raised on the new key before the split, not after
  • Spend cap set for the first full month
  • Saved place identifiers re-resolved if you store them
  • Polyline decoder confirmed against a known route
  • Coverage checked for the countries in the long tail of your traffic
  • Old key rotated out and removed from secrets

Compare with HERE