Calculate travel (driving) distance and time using routing data from Bing Maps with worldwide routing and rooftop geoconing. Driving, Walking, Transit and other travel modes are supported.

Request Details

Example Request Url
https://geodata.cdxtech.com/api/georoutepoint?key={your-key}&routeStart={routeStart}&routeEnd={routeEnd}&travelMode={travelMode}&optimize={optimize}&distanceUnit={distanceUnit}&avoidOptions={avoidOptions}&transitDateTime={transitDateTime}&transitTimeMode={transitTimeMode}&format={format}

Description Required Default Value Example
key Authentication Key key=dd76pxfi4feydh4bz_dtrjyf6flu4-987asdjhajkd555usds28ad984yhz
wayPoints Points, landmarks, or addresses wayPoints=34.1026760,-118.4524720_34.01950,-118.49060
travelMode Mode of travel driving travelMode=transit (supported options: driving, walking, transit)
optimize How to optimize route time optimize=distance (supported options: distance, time, timeWithTraffic, timeAvoidClosure)
distanceUnit How to optimize route mi distanceUnit=mile (supported options: mi or mile, km or kilimeter)
avoidOptions Road types to minimize or avoid If blank, highways and tolls are allowed avoidOptions=highways (supported options: highways, tolls, minimizeHighways, minimizeTolls (or any combination))
transitDateTime Required for transit mode, optional for driving transitDateTime=03/01/2011 (options: 03/01/2011 or 03/01/2011 05:42:00)
transitTimeMode Required for transit mode, optional for driving departure transitTimeMode=arrival (supported options: arrival, departure, lastAvailable)
format Output Formatting json format=json (supported formats: json, xml)

Coding Examples

Here are some coding examples to get you started. Please feel free to contact support if you need additional assistance.



string key = "{your-key}";
string wayPoints = "34.1026760,-118.4524720_34.01950,-118.49060";
string travelMode = "driving";
string optimize = "";
string distanceUnit = "mi";
string avoidOptions = "";
string transitDateTime = "";
string transitTimeMode = "departure";
string format = "json";
HttpResponseMessage message = null;
using (HttpClient client = new HttpClient())
{
	client.BaseAddress = new Uri("https://geodata.cdxtech.com");
	StringBuilder url = new StringBuilder("/api/georoutepoint?");
	url.Append("key=").Append(key);
	url.Append("&wayPoints=").Append(wayPoints);
	url.Append("&travelMode=").Append(travelMode);
	url.Append("&optimize=").Append(optimize);
	url.Append("&distanceUnit=").Append(distanceUnit);
	url.Append("&avoidOptions=").Append(avoidOptions);
	url.Append("&transitDateTime=").Append(transitDateTime);
	url.Append("&transitTimeMode=").Append(transitTimeMode);
	url.Append("&format=").Append(format);
	message = client.GetAsync(url.ToString()).Result;
}



import requests

def get_georoute_point(
    api_key,
    waypoints,
    travel_mode,
    optimize,
    distance_unit,
    avoid_options,
    transit_datetime,
    transit_time_mode,
    response_format="json",
):
    """Fetch route data with multiple waypoints using the API."""
    base_url = "https://geodata.cdxtech.com"
    endpoint = "/api/georoutepoint"
    url = f"{base_url}{endpoint}"
    params = {
        "key": api_key,
        "wayPoints": waypoints,
        "travelMode": travel_mode,
        "optimize": optimize,
        "distanceUnit": distance_unit,
        "avoidOptions": avoid_options,
        "transitDateTime": transit_datetime,
        "transitTimeMode": transit_time_mode,
        "format": response_format,
    }
    response = requests.get(url, params=params)
    response.raise_for_status()
    try:
        return response.json()
    except ValueError:
        return response.text

if __name__ == "__main__":
    key = "{your-key}"
    waypoints = "34.1026760,-118.4524720_34.01950,-118.49060"
    travel_mode = "driving"
    optimize = ""
    distance_unit = "mi"
    avoid_options = ""
    transit_datetime = ""
    transit_time_mode = "departure"
    fmt = "json"
    data = get_georoute_point(
        key,
        waypoints,
        travel_mode,
        optimize,
        distance_unit,
        avoid_options,
        transit_datetime,
        transit_time_mode,
        fmt,
    )
    import json
    if isinstance(data, (dict, list)):
        print(json.dumps(data, indent=2))
    else:
        print(data)



// Cargo.toml
// [dependencies]
// reqwest = { version = "0.11", features = ["blocking", "json"] }
// serde = { version = "1.0", features = ["derive"] }
// serde_json = "1.0"

use std::error::Error;

fn get_georoute_point(
    api_key: &str,
    waypoints: &str,
    travel_mode: &str,
    optimize: &str,
    distance_unit: &str,
    avoid_options: &str,
    transit_datetime: &str,
    transit_time_mode: &str,
    response_format: &str,
) -> Result> {
    let client = reqwest::blocking::Client::new();
    let resp = client
        .get("https://geodata.cdxtech.com/api/georoutepoint")
        .query(&[
            ("key", api_key),
            ("wayPoints", waypoints),
            ("travelMode", travel_mode),
            ("optimize", optimize),
            ("distanceUnit", distance_unit),
            ("avoidOptions", avoid_options),
            ("transitDateTime", transit_datetime),
            ("transitTimeMode", transit_time_mode),
            ("format", response_format),
        ])
        .send()?
        .error_for_status()?;
    let json: serde_json::Value = resp.json()?;
    Ok(json)
}

fn main() -> Result<(), Box> {
    let api_key = "{your-key}";
    let waypoints = "34.1026760,-118.4524720_34.01950,-118.49060";
    let travel_mode = "driving";
    let optimize = "";
    let distance_unit = "mi";
    let avoid_options = "";
    let transit_datetime = "";
    let transit_time_mode = "departure";
    let fmt = "json";

    match get_georoute_point(
        api_key,
        waypoints,
        travel_mode,
        optimize,
        distance_unit,
        avoid_options,
        transit_datetime,
        transit_time_mode,
        fmt,
    ) {
        Ok(data) => println!("Response JSON:\n{}", serde_json::to_string_pretty(&data)?),
        Err(err) => eprintln!("Error fetching data: {}", err),
    }

    Ok(())
}



async function getGeoroutePoint({
    key,
    wayPoints,
    travelMode,
    optimize,
    distanceUnit,
    avoidOptions,
    transitDateTime,
    transitTimeMode,
    format = "json",
}) {
    const baseUrl = "https://geodata.cdxtech.com";
    const endpoint = "/api/georoutepoint";
    const params = new URLSearchParams({
        key,
        wayPoints,
        travelMode,
        optimize,
        distanceUnit,
        avoidOptions,
        transitDateTime,
        transitTimeMode,
        format,
    });
    const url = `${baseUrl}${endpoint}?${params.toString()}`;
    const response = await fetch(url);
    if (!response.ok) {
        throw new Error(`HTTP error! Status: ${response.status}`);
    }
    const text = await response.text();
    try {
        return JSON.parse(text);
    } catch {
        return text;
    }
}

// Example usage:
(async () => {
    const key = "{your-key}";
    const wayPoints = "34.1026760,-118.4524720_34.01950,-118.49060";
    const travelMode = "driving";
    const optimize = "";
    const distanceUnit = "mi";
    const avoidOptions = "";
    const transitDateTime = "";
    const transitTimeMode = "departure";
    const format = "json";
    try {
        const data = await getGeoroutePoint({
            key,
            wayPoints,
            travelMode,
            optimize,
            distanceUnit,
            avoidOptions,
            transitDateTime,
            transitTimeMode,
            format,
        });
        console.log("Response:", data);
    } catch (err) {
        console.error("Error fetching data:", err);
    }
})();



Dim key As String = "{your-key}"
Dim wayPoints As String = "34.1026760,-118.4524720_34.01950,-118.49060";
Dim travelMode As String = "driving";
Dim optimize As String = "";
Dim distanceUnit As String = "mi";
Dim avoidOptions As String = "";
Dim transitDateTime As String = "";
Dim transitTimeMode As String = "departure";
Dim format As String = "json"
Dim message As HttpResponseMessage = Nothing
Using client As New HttpClient()
	client.BaseAddress = New Uri("https://geodata.cdxtech.com")
	
	Dim url As New StringBuilder("/api/georoutepoint?")
	url.Append("key=").Append(key)
	url.Append("&wayPoints=").Append(wayPoints)
	url.Append("&travelMode=").Append(travelMode)
	url.Append("&format=").Append(format)
	message = client.GetAsync(url.ToString()).Result
End Using

The following is for the VBA-WEB Excel template available at http://vba-tools.github.io/VBA-Web/



Dim Client As New WebClient
Dim Request As New WebRequest
Dim key As String
Dim wayPoints As String
Dim travelMode As String
Dim optimize As String
Dim distanceUnit As String
Dim avoidOptions As String
Dim transitDateTime As String
Dim transitTimeMode As String
Dim format As String
key = "{your-key}"
wayPoints = "34.1026760,-118.4524720_34.01950,-118.49060"
travelMode = "driving"
format = "json"
Client.BaseUrl = "https://geodata.cdxtech.com/api/"
Request.Method = WebMethod.HttpGet
Request.ResponseFormat = WebFormat.Json
Request.Resource = "georoutepoint?key={key}&wayPoints={wayPoints}&travelMode={driving}&format={format}"
Request.AddUrlSegment "key", key
Request.AddUrlSegment "wayPoints", wayPoints
Request.AddUrlSegment "travelMode", travelMode
Request.AddUrlSegment "format", format 
	
Set Response = Client.Execute(Request)

Output Examples

Here are some output data examples. You can also use the Report Generator tab to export specific data files.



{
	"service": "GeoRoutePoint",
	"url": "https://geodata.cdxtech.com/api/georoutepoint?key={your-key}&wayPoints=&travelMode=driving&optimize=&distanceUnit=mi&avoidOptions=&transitDateTime=&transitTimeMode=departure&format=json",
	"status": "RequestError",
	"tokenCharge": 0,
	"message": "At least one way point Required",
	"totalResults": 0,
	"results": null,
	"usage": null,
	"duration": 0.0,
	"timeStamp": "2017-07-24T10:02:26.3248014-04:00"
}



<Root>
  <Service>GeoRoutePoint</Service>
  <Url>https://geodata.cdxtech.com/api/georoutepoint?key={your-key}&amp;wayPoints=&amp;travelMode=driving&amp;optimize=&amp;distanceUnit=mi&amp;avoidOptions=&amp;transitDateTime=&amp;transitTimeMode=departure&amp;format=xml</Url>
  <Status>RequestError</Status>
  <TokenCharge>0</TokenCharge>
  <Message>At least one way point Required</Message>
  <TotalResults>0</TotalResults>
  <Results />
  <Usage />
  <Duration>0</Duration>
  <TimeStamp>2017-07-24T10:02:27.7245321-04:00</TimeStamp>
</Root>