Bing Maps REST Services drop-in replacement
Microsoft is retiring Bing Maps for Enterprise. Free and basic keys stopped working on 30 June 2025 and enterprise agreements end on 30 June 2028. If you have code built on the Locations, Autosuggest, Time Zone or Elevation REST services, point it at bing.mygeocode.com and keep the same response parsing.
Change one hostname
| Original host |
|
|---|---|
| Use instead | bing.mygeocode.com |
| Key parameter | key (optional: any address gets 2,500 requests a day with no key; put your My Geocode key here for credit, packages and a usage history) |
curl "https://dev.virtualearth.net/REST/v1/Locations?q=15010%20NE%2036th%20St%2C%20Redmond%2C%20WA%2098052&key=YOUR_BING_KEY"curl "https://bing.mygeocode.com/REST/v1/Locations?q=15010%20NE%2036th%20St%2C%20Redmond%2C%20WA%2098052&key=YOUR_MYGEOCODE_KEY"Why people move
The Bing endpoints are going away on a fixed schedule. Migrating to Azure Maps means new response shapes and new client code. Changing one hostname does not.
Same free allowance, key or not. Requests to bing.mygeocode.com count toward the same 2,500 free requests a day your address, or your key, gets on our own endpoints. Above that, prepaid credit at €0.0001 per request, or €50 a month for an Unlimited key. Signing up takes a name and an email address, and no card.
Endpoints
| Path on bing.mygeocode.com | What it does | Backed by |
|---|---|---|
/REST/v1/Locations?q=... | Find a location by query | Forward geocoding |
/REST/v1/Locations?countryRegion=...&locality=...&addressLine=... | Find a location by structured address | Forward geocoding |
/REST/v1/Locations/{lat},{lon} | Find a location by point (reverse) | Reverse geocoding |
/REST/v1/Autosuggest?query=... | Autosuggest | Address autocomplete |
/REST/v1/TimeZone/{lat},{lon} | Time zone by point | Timezone lookup |
/REST/v1/TimeZone/List?timezoneStandard=IANA (or WINDOWS) | List of time zones | Timezone lookup |
/REST/v1/TimeZone/Convert?datetime=...&desttz=... | Convert a time to another time zone | Timezone lookup |
/REST/v1/Elevation/List?points=lat,lon,lat,lon | Elevations for a list of points | Elevation lookup |
/REST/v1/Elevation/Polyline?points=...&samples=... | Elevations along a path | Elevation lookup |
/REST/v1/Elevation/Bounds?bounds=...&rows=...&cols=... | Elevations on a grid inside a box | Elevation lookup |
Example response
This is what the request above returns. Field names, nesting and types follow Bing Maps. Only the data behind them is ours.
{
"authenticationResultCode": "ValidCredentials",
"brandLogoUri": "https://www.mygeocode.com/assets/img/logo.svg",
"copyright": "Copyright My Geocode",
"resourceSets": [
{
"estimatedTotal": 1,
"resources": [
{
"__type": "Location:http://schemas.microsoft.com/search/local/ws/rest/v1",
"bbox": [47.6404590924991, -122.1395553778099, 47.6414571660389, -122.1385576162411],
"name": "15010 NE 36th St, Redmond, WA 98052, United States",
"point": {
"type": "Point",
"coordinates": [47.64097, -122.13905]
},
"address": {
"addressLine": "15010 NE 36th St",
"adminDistrict": "WA",
"countryRegion": "United States",
"formattedAddress": "15010 NE 36th St, Redmond, WA 98052, United States",
"locality": "Redmond",
"postalCode": "98052"
},
"confidence": "High",
"entityType": "Address",
"geocodePoints": [
{
"type": "Point",
"coordinates": [47.64097, -122.13905],
"calculationMethod": "Interpolation",
"usageTypes": ["Display", "Route"]
}
],
"matchCodes": ["Good"]
}
]
}
],
"statusCode": 200,
"statusDescription": "OK",
"traceId": "mg-800bcdbd70"
}Details and differences
No key is needed for the first 2,500 requests a day. To use a My Geocode key, put it where your Bing Maps key went: the key query parameter. The X-API-Key header, Authorization: Bearer and HTTP Basic authentication (the key as the user name) work on every host too, so client libraries that authenticate their own way keep working unchanged.
Copyright lines, licence names, terms and privacy links in the response are ours rather than the original provider’s. Everything else keeps the original shape.
- Elevation requests accept the points in the query string, in a form body, or in the
text/plainbody Bing documents. Elevation/SeaLevelanswers 404: heights are already above mean sea level here, so there is no geoid offset to apply.- Time zone answers include the
dstRuleobject, with the rule written the way the time zone database does it (Sun>=8,lastSun) and the adjustment in minutes. estimatedTotalcounts the resources in the set, as Bing does.TimeZone?query=takes a latitude and longitude pair.- Elevation List, Polyline and Bounds take up to 1,024 points, as Bing does; each point counts as one request here.
o=xml(oroutput=xml) answers in Bing’s XML on every endpoint.incl=ciso2addscountryRegionIso2andinclnb=1the neighborhood, only when asked for, as Bing does.- Find a location by point adds the
intersectionblock (base street, the street crossing it, and the display name) wherever road data is loaded.
If your client depends on a field or behaviour that is not listed here, tell us. Compatibility gaps get fixed quickly because they are usually small.
Other drop-in hosts
- Google Maps
- HERE
- Mapbox
- Geocode.Farm
- Nominatim (OSM)
- OpenCage
- LocationIQ
- Geoapify
- TomTom
- MapQuest
- Geocodio
- PositionStack
- ip-api
- ipinfo
- ipstack
- Open-Elevation
How the drop-ins work, the overview, and the JavaScript library drop-ins.