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
  • dev.virtualearth.net
Use insteadbing.mygeocode.com
Key parameterkey (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)
Before
curl "https://dev.virtualearth.net/REST/v1/Locations?q=15010%20NE%2036th%20St%2C%20Redmond%2C%20WA%2098052&key=YOUR_BING_KEY"
After
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.

See pricing Get a free key

Endpoints

Path on bing.mygeocode.comWhat it doesBacked by
/REST/v1/Locations?q=...Find a location by queryForward geocoding
/REST/v1/Locations?countryRegion=...&locality=...&addressLine=...Find a location by structured addressForward geocoding
/REST/v1/Locations/{lat},{lon}Find a location by point (reverse)Reverse geocoding
/REST/v1/Autosuggest?query=...AutosuggestAddress autocomplete
/REST/v1/TimeZone/{lat},{lon}Time zone by pointTimezone lookup
/REST/v1/TimeZone/List?timezoneStandard=IANA (or WINDOWS)List of time zonesTimezone lookup
/REST/v1/TimeZone/Convert?datetime=...&desttz=...Convert a time to another time zoneTimezone lookup
/REST/v1/Elevation/List?points=lat,lon,lat,lonElevations for a list of pointsElevation lookup
/REST/v1/Elevation/Polyline?points=...&samples=...Elevations along a pathElevation lookup
/REST/v1/Elevation/Bounds?bounds=...&rows=...&cols=...Elevations on a grid inside a boxElevation 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.

Response from bing.mygeocode.com
{
  "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/plain body Bing documents.
  • Elevation/SeaLevel answers 404: heights are already above mean sea level here, so there is no geoid offset to apply.
  • Time zone answers include the dstRule object, with the rule written the way the time zone database does it (Sun>=8, lastSun) and the adjustment in minutes.
  • estimatedTotal counts 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 (or output=xml) answers in Bing’s XML on every endpoint.
  • incl=ciso2 adds countryRegionIso2 and inclnb=1 the neighborhood, only when asked for, as Bing does.
  • Find a location by point adds the intersection block (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

How the drop-ins work, the overview, and the JavaScript library drop-ins.