1"use strict";(self.webpackChunkgeoapify_home=self.webpackChunkgeoapify_home||[]).push([[5814],{2017:function(e,t,n){n.r(t),n.d(t,{default:function(){return z}});var a=n(8453),s=n(6540);function o(e){const t=Object.assign({div:"div",h1:"h1",p:"p",i:"i",ul:"ul",li:"li",a:"a",h3:"h3",span:"span",h4:"h4",table:"table",thead:"thead",tr:"tr",th:"th",tbody:"tbody",td:"td",strong:"strong",code:"code",h2:"h2"},(0,a.RP)(),e.components),{BackgroundPanel:n,SplitSection:o,ButtonGroup:r,Button:l,PageImage:c,TableOfContent:p,Card:u,JSONTree:m,Tabs:d,TabList:g,Tab:h,TabPanel:f,PageList:k,FAQWithStructuredData:y,Banner:w}=t;return n||i("BackgroundPanel",!0),w||i("Banner",!0),l||i("Button",!0),r||i("ButtonGroup",!0),u||i("Card",!0),y||i("FAQWithStructuredData",!0),m||i("JSONTree",!0),c||i("PageImage",!0),k||i("PageList",!0),o||i("SplitSection",!0),h||i("Tab",!0),g||i("TabList",!0),f||i("TabPanel",!0),p||i("TableOfContent",!0),d||i("Tabs",!0),s.createElement(s.Fragment,null,s.createElement("div",{className:"-mt-20 pt-20",id:"about"}),"\n",s.createElement(n,{color:"smoke-white",type:"bottom-right"},s.createElement("div",{className:"pt-5"},s.createElement(o,{viewType:"larger",mediaType:"large",reverseOrder:!0,textSlot:s.createElement(t.div,null,s.createElement(t.h1,null,"Routing API"),s.createElement(t.div,{className:"h3"},"Get exact times and distances for vehicles and people"),s.createElement(t.p,null,"Geoapify's Road Routing API makes it easy to calculate a route between two or more waypoints for ",s.createElement(t.i,null,"cars"),", ",s.createElement(t.i,null,"trucks"),", ",s.createElement(t.i,null,"bicycles"),", ",s.createElement(t.i,null,"walking"),", and ",s.createElement(t.i,null,"transit"),". Our API returns the route object with route geometry in GeoJSON format."),s.createElement(t.p,null,"Results include:"),s.createElement(t.ul,null,s.createElement(t.li,null,"Route directions (or turn-by-turn instructions)"),s.createElement(t.li,null,"Exact travel time and distance between locations"),s.createElement(t.li,null,"Route details including elevation profiles, road properties and restrictions")),s.createElement(t.p,null,"Our API gives you all the information you need to ",s.createElement(t.i,null,"plan trips for vehicles and people"),". Whether you want to plan a driving route for your fleet, a package delivery route, a hiking route for your vacation, or something else, our API has you covered."),s.createElement(t.div,{className:"mt-5 mb-5 text-center lg:text-left mr-0 md:mr-64"},s.createElement(r,{left:!0},s.createElement(l,{className:"mr-6",type:"secondary",text:"Get started",newTab:!0,noWrap:!0,url:"/get-started-with-maps-api/"}),s.createElement(l,{type:"secondary-dark",text:"Documentation",url:"https://apidocs.geoapify.com/docs/routing/",noFollow:!0})))),mediaSlot:s.createElement(c,{dir:"routing-api",name:"route-between-multiple-locations",alt:"A route between multiple locations in Belgium"})}))),"\n",s.createElement(p,{titles:[{label:"About Routing API",id:"about"},{label:"Try Routing API",id:"demo"},{label:"Use Cases",id:"use-cases"},{label:"Features and capabilities",id:"features"},{label:"Getting started",id:"getting-started"},{label:"Pricing",id:"pricing"},{label:"Routing API tutorials",id:"tutorials"},{label:"FAQ",id:"faq"}]}),"\n",s.createElement("h2",{className:"-mt-28 pt-28",id:"demo"},"Try Routing API"),"\n",s.createElement(t.p,null,"Click on the map to set a starting point and destination points, choose the transportation mode - car, truck, bicycle, pedestrian, or transit:"),"\n",s.createElement("div",{className:"width-default-wider bordered-image mb-10"},s.createElement("iframe",{src:"https://apidocs.geoapify.com/demo/routing?hideHeader=true",hspace:"0",vspace:"0",marginHeight:"0",marginWidth:"0",scrolling:"no",width:"100%",height:"500px",frameBorder:"0"},"Iframes not supported")),"\n",s.createElement(t.p,null,"Try out different options and travel modes in our ",s.createElement(t.a,{href:"https://apidocs.geoapify.com/playground/routing/",target:"_blank",rel:"nofollow"},"Routing API Playground"),". Get an API key and get started today. We offer Freemium pricing so you can get started right away for free, and buy a different package when you need it."),"\n",s.createElement(r,{className:"max-w-screen-md md:w-full mt-5 md:mx-auto"},s.createElement(l,{type:"secondary",newTab:!0,noWrap:!0,text:"Get API key",url:"https://myprojects.geoapify.com"}),s.createElement(l,{type:"secondary-dark",newTab:!0,text:"Documentation",url:"https://apidocs.geoapify.com/docs/routing/"}),s.createElement(l,{type:"secondary-dark",newTab:!0,text:"Playground",url:"https://apidocs.geoapify.com/playground/routing/"}),s.createElement(l,{type:"secondary-dark",text:"Pricing",url:"/pricing/"})),"\n",s.createElement("div",{className:"place-delimiter"}),"\n",s.createElement("h2",{className:"-mt-28 pt-28",id:"use-cases"},"Road Routing Use Cases"),"\n",s.createElement(t.h3,null,"Get driving or walking routes between waypoints"),"\n",s.createElement(t.p,null,"Our Road Routing gives you driving or walking route geometry, along with route length and duration. Easily estimate the real distance and time between provided waypoints, and visualize the route on a map."),"\n",s.createElement(t.span,{dangerouslySetInnerHTML:{__html:"<span class='gatsby-resp-image-wrapper' style='position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; '>\n <a class='gatsby-resp-image-link' href='/static/1efe079ef71d49a3ff70eada3a28b796/2c5fd/road-routing-use-cases-route-between-locations.png' style='display: block' target='_blank' rel='noopener'>\n <span class='gatsby-resp-image-background-image' style=\"padding-bottom: 67.33333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/webp;base64,UklGRlgAAABXRUJQVlA4IEwAAABQAwCdASoUAA0APtFUpEuoJKOhsAgBABoJZQC/ODBhg9p8AAD+8EoVvRqirdrSoshWB6g7FSNBaThA7Fd4ZxV1akTM+89bwhiNjAAA'); background-size: cover; display: block;\"></span>\n <img class='gatsby-resp-image-image' alt='Road routing use cases: route between locations' title='' src='/static/1efe079ef71d49a3ff70eada3a28b796/0a47e/road-routing-use-cases-route-between-locations.png' srcset='/static/1efe079ef71d49a3ff70eada3a28b796/5a46d/road-routing-use-cases-route-between-locations.png 300w,\n/static/1efe079ef71d49a3ff70eada3a28b796/fc2a6/road-routing-use-cases-route-between-locations.png 450w,\n/static/1efe079ef71d49a3ff70eada3a28b796/0a47e/road-routing-use-cases-route-between-locations.png 600w,\n/static/1efe079ef71d49a3ff70eada3a28b796/2c5fd/road-routing-use-cases-route-between-locations.png 1006w' sizes='(max-width: 600px) 100v
1w, 600px' style='width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;' loading='lazy' decoding='async'>\n </a>\n </span>"}}),"\n",s.createElement("div",{className:"image-caption"},"Route API to calculate the route between locations"),"\n",s.createElement(t.h3,null,"Get navigation instructions"),"\n",s.createElement(t.p,null,"The API returns turn-by-turn navigation instructions for each route, so you can use the API alongside GPS tools. Request detailed navigation including street names, and detailed information about maneuvers. Routing API supports many languages, so you can use the âlangâ input parameter to define your language."),"\n",s.createElement("div",{className:"width-default"},s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-remark-copy-button-container">\n <button\n class="gatsby-remark-copy-button"\n onClick="copyToClipboard(`{\n "text": "Turn right onto East 14th Street.",\n "type": "Right",\n "transition_instruction": "Turn right. Then Bear left toward Interstate 70 West.",\n "pre_transition_instruction": "Turn right onto East 14th Street. Then Bear left toward Interstate 70 West.",\n "post_transition_instruction": "Continue for 60 meters.",\n "streets": ["East 14th Street"]\n}`, this)"\n >\n <svg class="copy-icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">\x3c!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--\x3e<path fill="#FFFFFF" d="M384 336H192c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16l140.1 0L400 115.9V320c0 8.8-7.2 16-16 16zM192 384H384c35.3 0 64-28.7 64-64V115.9c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1H192c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256c35.3 0 64-28.7 64-64V416H272v32c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16H96V128H64z"/></svg><svg class="success-icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path fill="#fff" d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>\n </button>\n </div>'}}),s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-highlight" data-language="json"><pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>\n <span class="token property">"text"</span><span class="token operator">:</span> <span class="token string">"Turn right onto East 14th Street."</span><span class="token punctuation">,</span>\n <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"Right"</span><span class="token punctuation">,</span>\n <span class="token property">"transition_instruction"</span><span class="token operator">:</span> <span class="token string">"Turn right. Then Bear left toward Interstate 70 West."</span><span class="token punctuation">,</span>\n <span class="token property">"pre_transition_instruction"</span><span class="token operator">:</span> <span class="token string">"Turn right onto East 14th Street. Then Bear left toward Interstate 70 West."</span><span class="token punctuation">,</span>\n <span class="token property">"post_transition_instruction"</span><span class="token operator">:</span> <span class="token string">"Continue for 60 meters."</span><span class="token punctuation">,</span>\n <span class="token property">"streets"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">"East 14th Street"</span><span class="token punctuation">]</span>\n<span class="token punctuation">}</span></code></pre></div>'}})),"\n",s.createElement(t.h3,null,"Route analysis"),"\n",s.createElement(t.p,null,"As well as directions, our API gives you practical route information. Use the âroute_detailsâ parameter to get detailed information and analyze how good the route is. Get details about road class and surface, number of lanes, and how many maneuvers each route will take. Route analysis information helps you make decisions about route efficiency, fuel consumption, and ease of driving or walking."),"\n",s.createElement("div",{className:"width-default"},s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-remark-copy-button-container">\n <button\n class="gatsby-remark-copy-button"\n onClick="copyToClipboard(`{\n "speed": 40,\n "speed_limit": 40,\n "truck_limit": 40,\n "surface": "paved_smooth",\n "lane_count": 3,\n "road_class": "secondary",\n "name": "East 10th Street",\n "toll": false,\n "tunnel": false,\n "bridge": false,\n "roundabout": false,\n "rightside": true,\n "traversability": "forward",\n "elevation": 286\n}`, this)"\n >\n <svg class="copy-icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">\x3c!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--\x3e<path fill="#FFFFFF" d="M384 336H192c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16l140.1 0L400 115.9V320c0 8.8-7.2 16-16 16zM192 384H384c35.3 0 64-28.7 64-64V115.9c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1H192c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256c35.3 0 64-28.7 64-64V416H272v32c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16H96V128H64z"/></svg><svg class="success-icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
1<path d="M0 0h24v24H0z" fill="none"/><path fill="#fff" d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>\n </button>\n </div>'}}),s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-highlight" data-language="json"><pre class="language-json"><code class="language-json"><span class="token punctuation">{</span>\n <span class="token property">"speed"</span><span class="token operator">:</span> <span class="token number">40</span><span class="token punctuation">,</span>\n <span class="token property">"speed_limit"</span><span class="token operator">:</span> <span class="token number">40</span><span class="token punctuation">,</span>\n <span class="token property">"truck_limit"</span><span class="token operator">:</span> <span class="token number">40</span><span class="token punctuation">,</span>\n <span class="token property">"surface"</span><span class="token operator">:</span> <span class="token string">"paved_smooth"</span><span class="token punctuation">,</span>\n <span class="token property">"lane_count"</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>\n <span class="token property">"road_class"</span><span class="token operator">:</span> <span class="token string">"secondary"</span><span class="token punctuation">,</span>\n <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"East 10th Street"</span><span class="token punctuation">,</span>\n <span class="token property">"toll"</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>\n <span class="token property">"tunnel"</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>\n <span class="token property">"bridge"</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>\n <span class="token property">"roundabout"</span><span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">,</span>\n <span class="token property">"rightside"</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>\n <span class="token property">"traversability"</span><span class="token operator">:</span> <span class="token string">"forward"</span><span class="token punctuation">,</span>\n <span class="token property">"elevation"</span><span class="token operator">:</span> <span class="token number">286</span>\n<span class="token punctuation">}</span></code></pre></div>'}})),"\n",s.createElement(t.h3,null,"Calculate and preview hiking and mountain biking routes"),"\n",s.createElement(t.p,null,"Use Routing APi to calculate and preview hiking or mountain biking routes. Get a feel for the terrain before you even set out. You can also request elevation information to create elevation profile visualizations. These are helpful for any hiking or biking route, especially among mountains.\nIf you only need to extract elevation values for coordinates (without route calculation), use the ",s.createElement(t.a,{href:"/elevation-api/"},"Elevation API"),"."),"\n",s.createElement(t.span,{dangerouslySetInnerHTML:{__html:"<span class='gatsby-resp-image-wrapper' style='position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; '>\n <a class='gatsby-resp-image-link' href='/static/b08b8b25f61e6e06ab126eba5483ce12/63ec5/road-routing-use-cases-bicycle-and-hiking-routes-elevation-profile.png' style='display: block' target='_blank' rel='noopener'>\n <span class='gatsby-resp-image-background-image' style=\"padding-bottom: 38.33333333333333%; position: relative; bottom: 0; left: 0; background-image: url('data:image/webp;base64,UklGRlYAAABXRUJQVlA4IEoAAACQAwCdASoUAAgAPtFUo0uoJKMhsAgBABoJYxwACxOAAFP9nATAAP7xNR5RgMmAsjNJCSrGvqyQeuQifDSri7lJPbv64VPy2QwAAA=='); background-size: cover; display: block;\"></span>\n <img class='gatsby-resp-image-image' alt='Road routing use cases: route elevation profile' title='' src='/static/b08b8b25f61e6e06ab126eba5483ce12/0a47e/road-routing-use-cases-bicycle-and-hiking-routes-elevation-profile.png' srcset='/static/b08b8b25f61e6e06ab126eba5483ce12/5a46d/road-routing-use-cases-bicycle-and-hiking-routes-elevation-profile.png 300w,\n/static/b08b8b25f61e6e06ab126eba5483ce12/fc2a6/road-routing-use-cases-bicycle-and-hiking-routes-elevation-profile.png 450w,\n/static/b08b8b25f61e6e06ab126eba5483ce12/0a47e/road-routing-use-cases-bicycle-and-hiking-routes-elevation-profile.png 600w,\n/static/b08b8b25f61e6e06ab126eba5483ce12/63ec5/road-routing-use-cases-bicycle-and-hiking-routes-elevation-profile.png 812w' sizes='(max-width: 600px) 100v
1w, 600px' style='width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;' loading='lazy' decoding='async'>\n </a>\n </span>"}}),"\n",s.createElement("div",{className:"image-caption"},"Elevation profile for hiking and bicycle routes"),"\n",s.createElement("div",{className:"width-default-wider grid grid-cols-1 lg:grid-cols-3 lg:mx-10"},s.createElement(u,null,s.createElement(t.h4,null,"Need to estimate distance and travel time for multiple locations?"),s.createElement("div",{className:"flex-1 flex items-center"},s.createElement("p",null,"Our ",s.createElement("b",null,"Route Matrix API")," returns time/distance for multiple locations, up to 1000 values at once.")),s.createElement("div",{className:"text-center"},s.createElement("span",null,s.createElement(l,{type:"primary",text:"Go to Route Matrix API",url:"/route-matrix-api/"})))),s.createElement(u,null,s.createElement(t.h4,null,"Need to reconstruct a route from its GPS coordinates?"),s.createElement("div",{className:"flex-1 flex items-center"},s.createElement("p",null,"Our ",s.createElement("b",null,"Map Matching API")," lets you put in GPS coordinates, and matches them to existing roads. You get route geometry alongside route details.")),s.createElement("div",{className:"text-center"},s.createElement("span",null,s.createElement(l,{type:"primary",text:"Go to Map Matching API",url:"/map-matching-api/"})))),s.createElement(u,null,s.createElement(t.h4,null,"Need to find the optimal route between locations?"),s.createElement("div",{className:"flex-1 flex items-center"},s.createElement("p",null,"Our ",s.createElement("b",null,"Route Planner API")," lets you search for the optimal route between multiple locations, and for multiple vehicles or people.")),s.createElement("div",{className:"text-center"},s.createElement("span",null,s.createElement(l,{type:"primary",text:"Go to Route Planner API",url:"/route-planner-api/"}))))),"\n",s.createElement("div",{className:"place-delimiter"}),"\n",s.createElement("h2",{className:"-mt-28 pt-28",id:"features"},"Features and capabilities"),"\n",s.createElement(t.h3,null,"Support a variety of travel modes"),"\n",s.createElement(t.p,null,"Routing API supports multiple travel modes and vehicle types. That means you get a route that's tailor made to your specific conditions. Supported modes include:"),"\n",s.createElement("div",{className:"width-default"},s.createElement(t.table,null,s.createElement(t.thead,null,s.createElement(t.tr,null,s.createElement(t.th,null,"Mode"),s.createElement(t.th,null,"Description"))),s.createElement(t.tbody,null,s.createElement(t.tr,null,s.createElement(t.td,null,s.createElement(t.strong,null,"Driving")),s.createElement(t.td,null,"A passenger car with a maximum weight of 3.5 tonnes and a maximum height of 1.6 meters.")),s.createElement(t.tr,null,s.createElement(t.td,null,s.createElement(t.strong,null,"Light Truck")),s.createElement(t.td,null,"Suitable for a larger passenger car, small delivery truck, camper van, or other van, with a maximum weight of 3.5 tonnes and a maximum height of 3.2 meters.")),s.createElement(t.tr,null,s.createElement(t.td,null,s.createElement(t.strong,null,"Medium truck")),s.createElement(t.td,null,"A medium sized truck such as a delivery vehicle with a maximum weight of 7.5 tonnes and a maximum height of 4 meters.")),s.createElement(t.tr,null,s.createElement(t.td,null,s.createElement(t.strong,null,"Truck")),s.createElement(t.td,null,"A standard full size truck with a maximum weight of 22 tonnes and a maximum height of 4 meters.")),s.createElement(t.tr,null,s.createElement(t.td,null,s.createElement(t.strong,null,"Heavy truck")),s.createElement(t.td,null,"A heavyweight vehicle weight up to 40 tonnes.")),s.createElement(t.tr,null,s.createElement(t.td,null,s.createElement(t.strong,null,"Truck carrying dangerous goods")),s.createElement(t.td,null,"Suitable for trucks carrying dangerous good such as flammables, explosives, or solvents, with a maximum weight of 22 tonnes and a maximum height of 4 meters.")),s.createElement(t.tr,null,s.createElement(t.td,null,s.createElement(t.strong,null,"Long truck")),s.createElement(t.td,null,"Suitable for longer vehicles with a length up to 34 meters.")),s.createElement(t.tr,null,s.createElement(t.td,null,s.createElement(t.strong,null,"Bus")),s.createElement(t.td,null,"Our APi will help you find lanes and roads with bus only access.")),s.createElement(t.tr,null,s.createElement(t.td,null,s.createElement(t.strong,null,"Scooter")),s.createElement(t.td,null,"Put together routes for motor scooters and mopeds.")),s.createElement(t.tr,null,s.createElement(t.td,null,s.createElement(t.strong,null,"Motorcycle")),s.createElement(t.td,null,"Suitable for motorcycle riders, helping you to find suitable road classes to drive safely.")),s.createElement(t.tr,null,s.createElement(t.td,null,s.createElement(t.strong,null,"Bicycle")),s.createElement(t.td,null,"Find routes that work for city bicycles that are built to ride on roads and paths with good surfaces.")),s.createElement(t.tr,null,s.createElement(t.td,null,s.createElement(t.strong,null,"Mountain bicycle")),s.createElement(t.td,null,"Suitable for off-road use, but slower on roads. Our API takes road time into account.")),s.createElement(t.tr,null,s.createElement(t.td,null,s.createElement(t.strong,null,"Road bicycle")),s.createElement(t.td,null,"Road bikes have narrow tires and lightweight frames. Use our API to find the best roads to travel to your destination.")),s.createElement(t.tr,null,s.createElement(t.td,null,s.createElement(t.strong,null,"Walk")),s.createElement(t.td,null,"Getting to your destination on foot? Our API still has y
1our back. Pedestrian mode is set to a speed of 5 km/hour.")),s.createElement(t.tr,null,s.createElement(t.td,null,s.createElement(t.strong,null,"Hike")),s.createElement(t.td,null,"Our specialized hiking mode uses hiking trails and more difficult paths than our walking mode.")),s.createElement(t.tr,null,s.createElement(t.td,null,s.createElement(t.strong,null,"Transit")),s.createElement(t.td,null,"Find the best way to reach your destination using transit or public transport."))))),"\n",s.createElement(t.h3,null,"Skip gates, roads, and even countries"),"\n",s.createElement(t.p,null,"Our Routing API lets you set barriers around specific locations, so the API won't build a route through them. You can skip tunnels and bridges, or set it to avoid specific roads. You can even set it to avoid specific countries, for example in areas where some routes might cross a border and come back again."),"\n",s.createElement(t.p,null,"Here is an example URL that shows how to add barriers on the roads:"),"\n",s.createElement("div",{className:"width-default"},s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-remark-copy-button-container">\n <button\n class="gatsby-remark-copy-button"\n onClick="copyToClipboard(`https://api.geoapify.com/v1/routing?mode=drive&avoid=location:36.081202,-79.475436&waypoints=36.08017014270986,-79.48035675866345|36.08253462115621,-79.45918129233303&apiKey=YOUR_API_KEY\n`, this)"\n >\n <svg class="copy-icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">\x3c!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--\x3e<path fill="#FFFFFF" d="M384 336H192c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16l140.1 0L400 115.9V320c0 8.8-7.2 16-16 16zM192 384H384c35.3 0 64-28.7 64-64V115.9c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1H192c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256c35.3 0 64-28.7 64-64V416H272v32c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16H96V128H64z"/></svg><svg class="success-icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path fill="#fff" d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>\n </button>\n </div>'}}),s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-highlight" data-language="jsx"><pre class="language-jsx"><code class="language-jsx"><span class="token literal-property property">https</span><span class="token operator">:</span><span class="token operator">/</span><span class="token operator">/</span>api<span class="token punctuation">.</span>geoapify<span class="token punctuation">.</span>com<span class="token operator">/</span>v1<span class="token operator">/</span>routing<span class="token operator">?</span>mode<span class="token operator">=</span>drive<span class="token operator">&</span>avoid<span class="token operator">=</span>location<span class="token operator">:</span><span class="token number">36.081202</span><span class="token punctuation">,</span><span class="token operator">-</span><span class="token number">79.475436</span><span class="token operator">&</span>waypoints<span class="token operator">=</span><span class="token number">36.08017014270986</span><span class="token punctuation">,</span><span class="token operator">-</span><span class="token number">79.48035675866345</span><span class="token operator">|</span><span class="token number">36.08253462115621</span><span class="token punctuation">,</span><span class="token operator">-</span><span class="token number">79.45918129233303</span><span class="token operator">&</span>apiKey<span class="token operator">=</span><span class="token constant">YOUR_API_KEY</span>\n</code></pre></div>'}})),"\n",s.createElement(t.p,null,"Here is the result of a call to the Routing API:"),"\n",s.createElement(t.span,{dangerouslySetInnerHTML:{__html:"<span class='gatsby-resp-image-wrapper' style='position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; '>\n <a class='gatsby-resp-image-link' href='/static/3f71fe6a2c3b1c856c66828c7b40b3ff/1fbe8/avoid-locations-when-calculating-routes.png' style='display: block' target='_blank' rel='noopener'>\n <span class='gatsby-resp-image-background-image' style=\"padding-bottom: 43.99999999999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/webp;base64,UklGRl4AAABXRUJQVlA4IFIAAAAwAwCdASoUAAkAPtFUo0uoJKMhsAgBABoJZwDG9C0HgOQAAP7wwETOUqSqCn+g6el+o6PodnzAKLYJvZ9CLZu8qQHOUOmAakh8/tnyMbvbHNAA'); background-size: cover; display: block;\"></span>\n <img class='gatsby-resp-image-image' alt='Result of avoid location option' title='' src='/static/3f71fe6a2c3b1c856c66828c7b40b3ff/0a47e/avoid-locations-when-calculating-routes.png' srcset='/static/3f71fe6a2c3b1c856c66828c7b40b3ff/5a46d/avoid-locations-when-calculating-routes.png 300w,\n/static/3f71fe6a2c3b1c856c66828c7b40b3ff/fc2a6/avoid-locations-when-calculating-routes.png 450w,\n/static/3f71fe6a2c3b1c856c66828c7b40b3ff/0a47e/avoid-locations-when-calculating-routes.png 600w,\n/static/3f71fe6a2c3b1c856c66828c7b40b3ff/1fbe8/avoid-locations-when-calculating-routes.png 757w' sizes='(max-width: 600px) 100v
1w, 600px' style='width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;' loading='lazy' decoding='async'>\n </a>\n </span>"}}),"\n",s.createElement("div",{className:"image-caption"},"Set barrier on South Church Street/US 70"),"\n",s.createElement(t.h3,null,"Avoid unwanted route parts"),"\n",s.createElement(t.p,null,"If you want to avoid specific route parts such as toll roads, ferries, or highways, you can. The Routing API makes it easy to avoid specific parts. If you don't want to go down a toll road, or take your vehicle onto a ferry, the API makes it easy to avoid that. And if an unwanted route part comes up between your destinations, the API will offer you alternative routes if possible."),"\n",s.createElement(t.p,null,"Here is an URL that uses the Avoid Toll Roads and Avoid Highways parameters:"),"\n",s.createElement("div",{className:"width-default"},s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-remark-copy-button-container">\n <button\n class="gatsby-remark-copy-button"\n onClick="copyToClipboard(`https://api.geoapify.com/v1/routing?mode=drive&avoid=tolls|highways&waypoints=40.709398574687725,-74.08840443457757|40.81123976392868,-72.88224315187449&apiKey=YOUR_API_KEY\n`, this)"\n >\n <svg class="copy-icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">\x3c!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--\x3e<path fill="#FFFFFF" d="M384 336H192c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16l140.1 0L400 115.9V320c0 8.8-7.2 16-16 16zM192 384H384c35.3 0 64-28.7 64-64V115.9c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1H192c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256c35.3 0 64-28.7 64-64V416H272v32c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16H96V128H64z"/></svg><svg class="success-icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path fill="#fff" d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>\n </button>\n </div>'}}),s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-highlight" data-language="jsx"><pre class="language-jsx"><code class="language-jsx"><span class="token literal-property property">https</span><span class="token operator">:</span><span class="token operator">/</span><span class="token operator">/</span>api<span class="token punctuation">.</span>geoapify<span class="token punctuation">.</span>com<span class="token operator">/</span>v1<span class="token operator">/</span>routing<span class="token operator">?</span>mode<span class="token operator">=</span>drive<span class="token operator">&</span>avoid<span class="token operator">=</span>tolls<span class="token operator">|</span>highways<span class="token operator">&</span>waypoints<span class="token operator">=</span><span class="token number">40.709398574687725</span><span class="token punctuation">,</span><span class="token operator">-</span><span class="token number">74.08840443457757</span><span class="token operator">|</span><span class="token number">40.81123976392868</span><span class="token punctuation">,</span><span class="token operator">-</span><span class="token number">72.88224315187449</span><span class="token operator">&</span>apiKey<span class="token operator">=</span><span class="token constant">YOUR_API_KEY</span>\n</code></pre></div>'}})),"\n",s.createElement(t.h3,null,"Control how intermediate waypoints are treated"),"\n",s.createElement(t.p,null,"When a route contains ",s.createElement(t.strong,null,"3 or more waypoints"),", you can control how intermediate waypoints are handled with the ",s.createElement(t.code,null,"intermediate_waypoint_mode")," parameter."),"\n",s.createElement(t.p,null,"Supported values:"),"\n",s.createElement(t.ul,null,"\n",s.createElement(t.li,null,s.createElement(t.code,null,"stopover"),": the default mode; intermediate waypoints are treated as stop points"),"\n",s.createElement(t.li,null,s.createElement(t.code,null,"through_stop"),": keeps intermediate waypoints as route legs, but preserves movement continuity through the waypoint"),"\n",s.createElement(t.li,null,s.createElement(t.code,null,"pass_through"),": treats intermediate waypoints as pass-through shaping points rather than stop points"),"\n"),"\n",s.createElement(t.p,null,"Here is a request example that uses ",s.createElement(t.code,null,"intermediate_waypoint_mode=through_stop"),":"),"\n",s.createElement("div",{className:"width-default"},s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-remark-copy-button-container">\n <button\n class="gatsby-remark-copy-button"\n onClick="copyToClipboard(`https://api.geoapify.com/v1/routing?waypoints=49.266798,4.0152071|49.267243,4.0166331|49.267668,4.0181211&mode=drive&format=json&intermediate_waypoint_mode=through_stop&apiKey=YOUR_API_KEY`, this)"\n >\n <svg class="copy-icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">\x3c!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--\x3e<path fill="#FFFFFF" d="M384 336H192c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16l140.1 0L400 115.9V320c0 8.8-7.2 16-16 16zM192 384H384c35.3 0 64-28.7 64-64V115.9c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1H192c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256c35.3 0 64-28.7 64-64V416H272v32c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16H96V128H64z"/></svg><svg class="success-icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
1<path d="M0 0h24v24H0z" fill="none"/><path fill="#fff" d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>\n </button>\n </div>'}}),s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-highlight" data-language="jsx"><pre class="language-jsx"><code class="language-jsx"><span class="token literal-property property">https</span><span class="token operator">:</span><span class="token operator">/</span><span class="token operator">/</span>api<span class="token punctuation">.</span>geoapify<span class="token punctuation">.</span>com<span class="token operator">/</span>v1<span class="token operator">/</span>routing<span class="token operator">?</span>waypoints<span class="token operator">=</span><span class="token number">49.266798</span><span class="token punctuation">,</span><span class="token number">4.0152071</span><span class="token operator">|</span><span class="token number">49.267243</span><span class="token punctuation">,</span><span class="token number">4.0166331</span><span class="token operator">|</span><span class="token number">49.267668</span><span class="token punctuation">,</span><span class="token number">4.0181211</span><span class="token operator">&</span>mode<span class="token operator">=</span>drive<span class="token operator">&</span>format<span class="token operator">=</span>json<span class="token operator">&</span>intermediate_waypoint_mode<span class="token operator">=</span>through_stop<span class="token operator">&</span>apiKey<span class="token operator">=</span><span class="token constant">YOUR_API_KEY</span></code></pre></div>'}})),"\n",s.createElement(t.p,null,"Use ",s.createElement(t.code,null,"through_stop")," when you want intermediate waypoints to split the route into legs, but do not want the route to behave like a full stopover at each point."),"\n",s.createElement(t.span,{dangerouslySetInnerHTML:{__html:"<span class='gatsby-resp-image-wrapper' style='position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 600px; '>\n <a class='gatsby-resp-image-link' href='/static/5dea1442002265339a61937474455ee9/29007/intermediate_waypoint_mode.png' style='display: block' target='_blank' rel='noopener'>\n <span class='gatsby-resp-image-background-image' style=\"padding-bottom: 43.66666666666667%; position: relative; bottom: 0; left: 0; background-image: url('data:image/webp;base64,UklGRkoAAABXRUJQVlA4ID4AAAAQAwCdASoUAAkAPtFUo0uoJKMhsAgBABoJaQAAetDEoAAA/vE1H4Luskk2J0vbQTaJbvFRA6H+HyY4dgPAAA=='); background-size: cover; display: block;\"></span>\n <img class='gatsby-resp-image-image' alt='Intermediate waypoint mode' title='' src='/static/5dea1442002265339a61937474455ee9/0a47e/intermediate_waypoint_mode.png' srcset='/static/5dea1442002265339a61937474455ee9/5a46d/intermediate_waypoint_mode.png 300w,\n/static/5dea1442002265339a61937474455ee9/fc2a6/intermediate_waypoint_mode.png 450w,\n/static/5dea1442002265339a61937474455ee9/0a47e/intermediate_waypoint_mode.png 600w,\n/static/5dea1442002265339a61937474455ee9/29007/intermediate_waypoint_mode.png 1600w' sizes='(max-width: 600px) 100vw, 600px' style='width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;' loading='lazy' decoding='async'>\n </a>\n </span>"}}),"\n",s.createElement("div",{className:"image-caption"},"Control whether intermediate waypoints behave as stopovers, through-stops, or pass-through shaping points."),"\n",s.createElement(t.h3,null,"Get directions and instructions"),"\n",s.createElement(t.p,null,"Every route result includes navigation instructions to guide you to your destination. For example, âDrive west on Freisinger StraÃe/DAH 9â or âEnter the roundabout and take the 2nd exitâ. The API supports instructions in English, German, Italian, Spanish, French, and other languages."),"\n",s.createElement(t.h3,null,"See elevation profiles"),"\n",s.createElement(t.p,null,"Ask the API for a route elevation profile to determine how much elevation you'll gain on your route. This is great for bike and hiking routes so you know a
1head of time what to expect. Knowing a route's elevation helps you determine its difficulty.\nIf your use case is coordinate-based elevation lookup only, you can use ",s.createElement(t.a,{href:"/elevation-api/"},"Elevation API")," instead of Routing API."),"\n",s.createElement(t.h3,null,"Easy to use and permissive"),"\n",s.createElement(t.p,null,"Our routing API is accessible via HTTP GET requests and easy to integrate with any programming language. Results are returned as ",s.createElement(t.a,{href:"https://geojson.org/",target:"_blank",rel:"nofollow"},"GeoJSON objects"),". Because our Routing API is based on open data, you can store and redistribute your results."),"\n",s.createElement("div",{className:"place-delimiter"}),"\n",s.createElement("h2",{className:"-mt-28 pt-28",id:"getting-started"},"Getting started"),"\n",s.createElement(t.p,null,"Getting started with Routing API is easy:"),"\n",s.createElement(t.h3,null,"Step 1. Register and get an API Key"),"\n",s.createElement(t.p,null,"You'll need an API key to get started. Register on ",s.createElement(t.a,{href:"https://myprojects.geoapify.com/",target:"_blank",rel:"nofollow"},"Geoapify MyProjects")," and get an API key."),"\n",s.createElement(t.h3,null,"Step 2. Generate and call HTTP Get request"),"\n",s.createElement(t.p,null,"Generate an HTTP Get request with input data and make the call.\nUse our ",s.createElement(t.a,{href:"https://apidocs.geoapify.com/playground/routing",target:"_blank",rel:"nofollow"},"Playground")," and ",s.createElement(t.a,{href:"https://apidocs.geoapify.com/docs/routing/",target:"_blank",rel:"nofollow"},"Documentation")," to learn about Routing API request/response structure."),"\n",s.createElement(t.p,null,"Here's an example of a Routing API URL that calculates a route between 5 waypoints for bicycle:"),"\n",s.createElement("div",{className:"width-default"},s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-remark-copy-button-container">\n <button\n class="gatsby-remark-copy-button"\n onClick="copyToClipboard(`https://api.geoapify.com/v1/routing?waypoints=47.569664,10.7021002|47.575734,10.720492|47.567089,10.733584|47.557827,10.749579|47.544780,10.722865&mode=bicycle&apiKey=YOUR_API_KEY`, this)"\n >\n <svg class="copy-icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">\x3c!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--\x3e<path fill="#FFFFFF" d="M384 336H192c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16l140.1 0L400 115.9V320c0 8.8-7.2 16-16 16zM192 384H384c35.3 0 64-28.7 64-64V115.9c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1H192c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256c35.3 0 64-28.7 64-64V416H272v32c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16H96V128H64z"/></svg><svg class="success-icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path fill="#fff" d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>\n </button>\n </div>'}}),s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-highlight" data-language="javascript"><pre class="language-javascript"><code class="language-javascript"><span class="token literal-property property">https</span><span class="token operator">:</span><span class="token operator">/</span><span class="token operator">/</span>api<span class="token punctuation">.</span>geoapify<span class="token punctuation">.</span>com<span class="token operator">/</span>v1<span class="token operator">/</span>routing<span class="token operator">?</span>waypoints<span class="token operator">=</span><span class="token number">47.569664</span><span class="token punctuation">,</span><span class="token number">10.7021002</span><span class="token operator">|</span><span class="token number">
147.575734</span><span class="token punctuation">,</span><span class="token number">10.720492</span><span class="token operator">|</span><span class="token number">47.567089</span><span class="token punctuation">,</span><span class="token number">10.733584</span><span class="token operator">|</span><span class="token number">47.557827</span><span class="token punctuation">,</span><span class="token number">10.749579</span><span class="token operator">|</span><span class="token number">47.544780</span><span class="token punctuation">,</span><span class="token number">10.722865</span><span class="token operator">&</span>mode<span class="token operator">=</span>bicycle<span class="token operator">&</span>apiKey<span class="token operator">=</span><span class="token constant">YOUR_API_KEY</span></code></pre></div>'}})),"\n",s.createElement(t.p,null,"Here is the response object returned by the API call:"),"\n",s.createElement("div",{className:"width-default text-sm mb-10"},s.createElement(m,{theme:{scheme:"ashes",author:"jannik siebert (https://github.com/janniks)",base00:"#1C2023",base01:"#393F45",base02:"#565E65",base03:"#747C84",base04:"#ADB3BA",base05:"#C7CCD1",base06:"#DFE2E5",base07:"#F3F4F5",base08:"#C7AE95",base09:"#C7C795",base0A:"#AEC795",base0B:"#95C7AE",base0C:"#95AEC7",base0D:"#AE95C7",base0E:"#C795AE",base0F:"#C79595"},invertTheme:!0,hideRoot:!0,shouldExpandNodeInitially:(e,t,n)=>n<=1||0===e[0],data:{features:[{type:"Feature",properties:{mode:"bicycle",waypoints:[{location:[10.7021,47.569664],original_index:0},{location:[10.720492,47.575734],original_index:1},{location:[10.733584,47.567089],original_index:2},{location:[10.749579,47.557827],original_index:3},{location:[10.722865,47.54478],original_index:4}],distance:11324,time:3323.695,legs:[{distance:2678,time:577,steps:[{instruction:{text:"Bike east on SchulhausstraÃe."},from_index:0,to_index:1,distance:69,time:11.437},{instruction:{text:"Turn right onto TheresienstraÃe."},from_index:1,to_index:2,distance:58,time:12.5},{instruction:{text:"Turn left onto SebastianstraÃe/B 16."},from_index:2,to_index:6,distance:63,time:15.798},{instruction:{text:"Turn right."},from_index:6,to_index:7,distance:12,time:3.985},{instruction:{text:"Turn left onto Lechsteg."},from_index:7,to_index:30,distance:636,time:139.754},{instruction:{text:"Keep right at the fork."},from_index:30,to_index:43,distance:440,time:105.45},{instruction:{text:"Turn left."},from_index:43,to_index:57,distance:388,time:73.352},{instruction:{text:"Turn left."},from_index:57,to_index:59,distance:16,time:11.7},{instruction:{text:"Bear right onto Kienbergweg."},from_index:59,to_index:60,distance:4,time:1.399},{instruction:{text:"Turn right onto Am Winkelacker."},from_index:60,to_index:65,distance:210,time:43.966},{instruction:{text:"Turn right."},from_index:65,to_index:66,distance:35,time:5.94},{instruction:{text:"Turn left onto FrauenbergstraÃe."},from_index:66,to_index:84,distance:667,time:134.423},{instruction:{text:"Turn left onto Schelleweg."},from_index:84,to_index:89,distance:78,time:17.291},{instruction:{text:"Your destination is on the right."},from_index:89,to_index:89,distance:0,time:0}]},{distance:1670,time:455.294,steps:[{instruction:{text:"Bike southeast on Schelleweg."},from_index:0,to_index:25,distance:1351,time:327.672},{instruction:{text:"Turn left onto Bullachbergweg."},from_index:25,to_index:26,distance:11,time:6.2},{instruction:{text:"Turn right."},from_index:26,to_index:50,distance:307,time:121.421},{instruction:{text:"Your destination is on the right."},from_index:50,to_index:50,distance:0,time:0}]},{distance:3686,time:1204.786,steps:[{instruction:{text:"Bike east."},from_index:0,to_index:24,distance:307,time:78.967},{instruction:{text:"Turn right onto Bullachbergweg."},from_index:24,to_index:41,distance:228,time:51.972},{instruction:{text:"Turn right onto Schwangauer StraÃe."},from_index:41,to_index:67,distance:1330,time:291.743},{instruction:{text:"Turn right."},from_index:67,to_index:68,distance:13,time:5.399},{instruction:{text:"Turn left onto ParkstraÃe/St 2008. Continue on St 2008."},from_index:68,to_index:87,distance:289,time:91.457},{instruction:{text:"Turn left onto NeuschwansteinstraÃe."},from_index:87,to_index:102,distance:159,time:59.192},{instruction:{text:"Turn right to stay on NeuschwansteinstraÃe."},from_index:102,to_index:110,distance:118,time:54},{instruction:{text:"Turn left to stay on NeuschwansteinstraÃe."},from_index:110,to_index:176,distance:1242,time:572.053},{instruction:{text:"Your destination is on the right."},from_index:176,to_index:176,distance:0,time:0}]},{distance:3288,time:1086.614,steps:[{instruction:{text:"Bike northwest on NeuschwansteinstraÃe."},from_index:0,to_index:66,distance:1242,time:206.327},{instruction:{text:"Turn right to stay on NeuschwansteinstraÃe."},from_index:66,to_index:74,distance:118,time:11.52},{instruction:{text:"Turn left to stay on NeuschwansteinstraÃe."},from_index:74,to_index:89,distance:159,time:20.379},{instruction:{text:"Turn left onto AlpseestraÃe/St 2008."},from_index:89,to_index:101,distance:245,time:51.78},{instruction:{text:"Turn left."},from_index:101,to_index:105,distance:93,time:30.568},{instruction:{text:"Keep left at the fork."},from_index:105,to_index:135,distance:1008.9999999999999,time:553.949},{instruction:{text:"Bear left."},from_index:135,to_index:148,distance:422,time:212.087},{instruction:{text:"Your destination is on the right."},from_index:148,to_index:148,distance:0,time:0}]}]},geometry:{type:"MultiLineString",coordinates:[[[10.70205,47.569344],[10.702975,47.569277],[10.703022,47.568759],[10.70331,47.568689],[10.703476,47.568649],[10.703638,47.568613],[10.703812,47.568561],[10.70375,47.568458],[10.703898,47.568413],[10.704018,47.568374],[10.705258,47.567975],[10.706177,47.567655],[10.70701,47.567341],[10.707827,47.567004],[10.708445,47.566722],[10.708509,47.56668],[10.708547,47.566645],[10.708567,47.566627],[10.708609,47.566565],[10.708695,47.566482],[10.709663,47.565553],[10.709738,47.565472],[10.709806,47.56
15403],[10.709837,47.565386],[10.709867,47.56537],[10.709961,47.565361],[10.710073,47.565375],[10.710256,47.565428],[10.710365,47.565437],[10.71043,47.565429],[10.71049,47.565415],[10.710794,47.565283],[10.711155,47.565381],[10.71147,47.565376],[10.711855,47.565252],[10.712213,47.565155],[10.712652,47.565073],[10.713071,47.565025],[10.713325,47.565004],[10.713722,47.564999],[10.714129,47.564998],[10.714793,47.565064],[10.715413,47.565154],[10.71612,47.565278],[10.716116,47.565298],[10.716118,47.565346],[10.716122,47.565375],[10.716138,47.565401],[10.71621,47.565448],[10.716305,47.5655],[10.716612,47.565637],[10.718028,47.566261],[10.718194,47.566351],[10.718392,47.566459],[10.719592,47.567201],[10.719872,47.567402],[10.719977,47.567471],[10.720017,47.567496],[10.719899,47.567538],[10.719819,47.567532],[10.719772,47.567548],[10.719799,47.567618],[10.71982,47.56772],[10.71986,47.567847],[10.719984,47.568302],[10.720234,47.569402],[10.7207,47.569449],[10.72058,47.569684],[10.720535,47.569802],[10.720285,47.570402],[10.720163,47.571072],[10.720064,47.571305],[10.720035,47.571414],[10.720044,47.571505],[10.720077,47.571614],[10.720201,47.571782],[10.720233,47.571841],[10.720545,47.572427],[10.720766,47.572953],[10.720773,47.573214],[10.720713,47.573469],[10.720609,47.573802],[10.720617,47.574097],[10.720755,47.574442],[10.72124,47.575206],[10.72106,47.575334],[10.720842,47.575459],[10.720676,47.575552],[10.720485,47.575624],[10.72043,47.575641]],[[10.72043,47.575641],[10.720485,47.575624],[10.720676,47.575552],[10.720842,47.575459],[10.72106,47.575334],[10.72124,47.575206],[10.72317,47.57385],[10.723266,47.573782],[10.723325,47.573749],[10.723488,47.573673],[10.723749,47.573551],[10.724084,47.573403],[10.724387,47.573269],[10.724785,47.573085],[10.725394,47.572812],[10.725512,47.572756],[10.726651,47.572229],[10.726971,47.572078],[10.727238,47.571949],[10.727376,47.571893],[10.727508,47.571826],[10.730056,47.570603],[10.732461,47.569426],[10.73361,47.56885],[10.734445,47.568459],[10.734737,47.568335],[10.734867,47.568375],[10.734872,47.568292],[10.734902,47.568244],[10.734963,47.568211],[10.734967,47.568183],[10.734997,47.568136],[10.735165,47.568018],[10.73552,47.567802],[10.73571,47.567651],[10.735775,47.567568],[10.7358,47.567513],[10.735789,47.56744],[10.73575,47.567409],[10.73567,47.567385],[10.735518,47.567377],[10.735355,47.567381],[10.735044,47.567374],[10.734955,47.567359],[10.734883,47.567328],[10.734487,47.567117],[10.734401,47.567083],[10.73424,47.567061],[10.733907,47.567036],[10.733613,47.567009],[10.733613,47.567009]],[[10.733613,47.567009],[10.733613,47.567009],[10.733907,47.567036],[10.73424,47.567061],[10.734401,47.567083],[10.734487,47.567117],[10.734883,47.567328],[10.734955,47.567359],[10.735044,47.567374],[10.735355,47.567381],[10.735518,47.567377],[10.73567,47.567385],[10.73575,47.567409],[10.735789,47.56744],[10.7358,47.567513],[10.735775,47.567568],[10.73571,47.567651],[10.73552,47.567802],[10.735165,47.568018],[10.734997,47.568136],[10.734967,47.568183],[10.734963,47.568211],[10.734902,47.568244],[10.734872,47.568292],[10.734867,47.568375],[10.735177,47.568402],[10.735303,47.568402],[10.735497,47.568384],[10.735779,47.568312],[10.736064,47.568261],[10.736126,47.568257],[10.736194,47.568259],[10.736286,47.568282],[10.736509,47.568372],[10.73662,47.568434],[10.736719,47.568449],[10.737009,47.568503],[10.737204,47.56852],[10.73734,47.56851],[10.737559,47.568468],[10.737697,47.568434],[10.737761,47.56843],[10.737747,47.568336],[10.737746,47.568245],[10.737756,47.568064],[10.737811,47.567773],[10.73785,47.567501],[10.737868,47.566901],[10.73792,47.566467],[10.738046,47.565924],[10.738081,47.565701],[10.738164,47.56484],[10.738335,47.564004],[10.738576,47.562456],[10.738609,47.562233],[10.738744,47.561389],[10.739062,47.560494],[10.739287,47.55978],[10.739501,47.559226],[10.739615,47.558972],[10.739867,47.55841],[10.740067,47.557921],[10.740102,47.557837],[10.740142,47.557737],[10.740389,47.557176],[10.740567,47.556951],[10.740577,47.556837],[10.74067,47.556719],[10.74056,47.556623],[10.740746,47.556521],[10.740807,47.556486],[10.740815,47.556348],[10.74
10788,47.556237],[10.740752,47.556192],[10.740715,47.556145],[10.740597,47.55604],[10.740523,47.555974],[10.740383,47.555863],[10.740291,47.55579],[10.740037,47.555589],[10.739776,47.555353],[10.739498,47.555138],[10.739322,47.555026],[10.739261,47.554997],[10.739161,47.554961],[10.739009,47.554908],[10.738829,47.554868],[10.738579,47.554822],[10.73863,47.554637],[10.738685,47.55459],[10.738779,47.554558],[10.738904,47.554561],[10.739055,47.554585],[10.739196,47.554596],[10.739328,47.554601],[10.739591,47.554595],[10.739811,47.554617],[10.740055,47.554644],[10.740137,47.55464],[10.740223,47.554631],[10.740285,47.554602],[10.740326,47.554574],[10.740337,47.554543],[10.740332,47.554514],[10.740318,47.554481],[10.740293,47.554449],[10.74024,47.554404],[10.740143,47.554352],[10.740012,47.554293],[10.739852,47.55422],[10.739163,47.553868],[10.74,47.553783],[10.740591,47.553725],[10.740905,47.553629],[10.741146,47.553577],[10.741287,47.553572],[10.74142,47.553591],[10.742712,47.553944],[10.742801,47.554005],[10.742913,47.554082],[10.743116,47.554222],[10.743142,47.554327],[10.743691,47.554836],[10.744429,47.555132],[10.74491,47.555253],[10.745081,47.555265],[10.745283,47.555334],[10.745395,47.555416],[10.745477,47.555503],[10.745523,47.555708],[10.745602,47.555851],[10.745642,47.555905],[10.745739,47.555998],[10.746044,47.556214],[10.746256,47.556322],[10.746614,47.556516],[10.746881,47.556773],[10.747046,47.557102],[10.747404,47.557515],[10.747586,47.557665],[10.747659,47.5577],[10.747774,47.557754],[10.747924,47.557773],[10.748146,47.557781],[10.748306,47.557794],[10.748481,47.557843],[10.748585,47.557872],[10.748749,47.557985],[10.748825,47.558051],[10.74888,47.558127],[10.748891,47.558209],[10.748875,47.558261],[10.748832,47.558328],[10.748744,47.558413],[10.748695,47.558489],[10.748703,47.558554],[10.748724,47.558595],[10.748836,47.558659],[10.749214,47.558737],[10.749477,47.558756],[10.74961,47.558741],[10.749794,47.558701],[10.750024,47.558624],[10.750121,47.558557],[10.750157,47.558487],[10.750178,47.558447],[10.750174,47.558341],[10.750154,47.558299],[10.75012,47.558265],[10.749867,47.558185],[10.749719,47.558124],[10.74962,47.558038],[10.749612,47.558008],[10.749613,47.557976],[10.749617,47.557931],[10.749633,47.557901],[10.749647,47.557894]],[[10.749647,47.557894],[10.749633,47.557901],[10.749617,47.557931],[10.749613,47.557976],[10.749612,47.558008],[10.74962,47.558038],[10.749719,47.558124],[10.749867,47.558185],[10.75012,47.558265],[10.750154,47.558299],[10.750174,47.558341],[10.750178,47.558447],[10.750157,47.558487],[10.750121,47.558557],[10.750024,47.558624],[10.749794,47.558701],[10.74961,47.558741],[10.749477,47.558756],[10.749214,47.558737],[10.748836,47.558659],[10.748724,47.558595],[10.748703,47.558554],[10.748695,47.558489],[10.748744,47.558413],[10.748832,47.558328],[10.748875,47.558261],[10.748891,47.558209],[10.74888,47.558127],[10.748825,47.558051],[10.748749,47.557985],[10.748585,47.557872],[10.748481,47.557843],[10.748306,47.557794],[10.748146,47.557781],[10.747924,47.557773],[10.747774,47.557754],[10.747659,47.5577],[10.747586,47.557665],[10.747404,47.557515],[10.747046,47.557102],[10.746881,47.556773],[10.746614,47.556516],[10.746256,47.556322],[10.746044,47.556214],[10.745739,47.555998],[10.745642,47.555905],[10.745602,47.555851],[10.745523,47.555708],[10.745477,47.555503],[10.745395,47.555416],[10.745283,47.555334],[10.745081,47.555265],[10.74491,47.555253],[10.744429,47.555132],[10.743691,47.554836],[10.743142,47.554327],[10.743116,47.554222],[10.742913,47.554082],[10.742801,47.554005],[10.742712,47.553944],[10.74142,47.553591],[10.741287,47.553572],[10.741146,47.553577],[10.740905,47.553629],[10.740591,47.553725],[10.74,47.553783],[10.739163,47.553868],[10.739852,47.55422],[10.740012,47.554293],[10.740143,47.554352],[10.74024,47.554404],[10.740293,47.554449],[10.740318,47.554481],[10.740332,47.554514],[10.74
10337,47.554543],[10.740326,47.554574],[10.740285,47.554602],[10.740223,47.554631],[10.740137,47.55464],[10.740055,47.554644],[10.739811,47.554617],[10.739591,47.554595],[10.739328,47.554601],[10.739196,47.554596],[10.739055,47.554585],[10.738904,47.554561],[10.738779,47.554558],[10.738685,47.55459],[10.73863,47.554637],[10.738579,47.554822],[10.738227,47.554768],[10.738072,47.554759],[10.737853,47.554739],[10.737778,47.554724],[10.737725,47.554713],[10.737291,47.554559],[10.73684,47.554273],[10.736612,47.554128],[10.736356,47.553974],[10.736176,47.553884],[10.736045,47.553833],[10.735819,47.553769],[10.735817,47.553443],[10.735705,47.553349],[10.735566,47.55322],[10.735485,47.552994],[10.735451,47.552833],[10.735413,47.552577],[10.735385,47.552317],[10.735191,47.552123],[10.734939,47.551917],[10.734652,47.551665],[10.734453,47.551432],[10.73415,47.550988],[10.733842,47.550629],[10.733681,47.550344],[10.733397,47.550126],[10.733185,47.550001],[10.732879,47.549817],[10.732684,47.549667],[10.732383,47.549506],[10.732207,47.54943],[10.732107,47.549345],[10.732044,47.549222],[10.731981,47.549095],[10.731875,47.548968],[10.73173,47.548905],[10.731492,47.548862],[10.731251,47.548826],[10.730562,47.548634],[10.729872,47.548518],[10.729081,47.548414],[10.728112,47.548199],[10.727683,47.547989],[10.726857,47.547803],[10.726063,47.547519],[10.725945,47.547346],[10.72583,47.547068],[10.725578,47.546857],[10.725487,47.546603],[10.725353,47.546399],[10.725232,47.546138],[10.725071,47.545881],[10.72462,47.545582],[10.72447,47.545249],[10.724258,47.545003],[10.72391,47.544867],[10.723459,47.544776],[10.722982,47.544619]]]}}],properties:{mode:"bicycle",waypoints:[{lat:47.56966409664861,lon:10.702100289050122},{lat:47.57573429205553,lon:10.720492940671761},{lat:47.56708924097521,lon:10.733584594210242},{lat:47.557827601138655,lon:10.749579062142516},{lat:47.544780140219984,lon:10.722865975815466}]},type:"FeatureCollection"}})),"\n",s.createElement(t.p,null,"The response has one feature of MultiLineString. The feature properties contain waypoints and route legs. Each route leg includes time/distance information and Directions instructions."),"\n",s.createElement(t.p,null,"The code samples below show you how to make an API call with different programming languages:"),"\n",s.createElement("div",{className:"width-default mb-20"},s.createElement(d,null,s.createElement(g,null,s.createElement(h,null,"JavaScript"),s.createElement(h,null,"Angular"),s.createElement(h,null,"Node.js-fetch"),s.createElement(h,null,"Python"),s.createElement(h,null,"cURL")),s.createElement(f,{key:"JavaScript"},s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-remark-copy-button-container">\n <button\n class="gatsby-remark-copy-button"\n onClick="copyToClipboard(`\nfetch(\'https://api.geoapify.com/v1/routing?waypoints=48.184731,11.547931|48.168254,11.581501|48.179391,11.612174&mode=drive&apiKey=YOUR_API_KEY\')\n.then(resp => resp.json())\n.then((calculatedRouteGeoJSON) => {\n\tconsole.log(calculatedRouteGeoJSON);\n});\n`, this)"\n >\n <svg class="copy-icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">\x3c!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--\x3e<path fill="#FFFFFF" d="M384 336H192c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16l140.1 0L400 115.9V320c0 8.8-7.2 16-16 16zM192 384H384c35.3 0 64-28.7 64-64V115.9c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1H192c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256c35.3 0 64-28.7 64-64V416H272v32c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16H96V128H64z"/></svg><svg class="success-icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path fill="#fff" d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>\n </button>\n </div>'}}),s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-highlight" data-language="javascript"><pre class="language-javascript"><code class="language-javascript">\n<span class="token function">fetch</span><span class="token punctuation">(</span><span class="token string">\'https://api.geoapify.com/v1/routing?waypoints=48.184731,11.547931|48.168254,11.581501|48.179391,11.612174&mode=drive&apiKey=YOUR_API_KEY\'</span><span class="token punctuation">)</span>\n<span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token parameter">resp</span> <span class="token operator">=></span> resp<span class="token punctuation">.</span><span class="token function">json</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>\n<span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">calculatedRouteGeoJSON</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>\n\tconsole<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>calculatedRouteGeoJSON<span class="token punctuation">)</span><span class="token punctuation">;</span>\n<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>\n</code></pre></div>'}})),s.createElement(f,{key:"Angular"},s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-remark-copy-button-container">\n <button\n class="gatsby-remark-copy-button"\n onClick="copyToClipboard(`import { Component, OnInit } from \'@angular/core\';\nimport { HttpClient } from \'@angular/common/http\';\n\n@Component({ selector: \'app\', templateUrl: \'app.component.html\' })\nexport class AppComponent implements OnInit {\n \n constructor(private http: HttpClient) { }\n\n ngOnInit() { \n this.http.get<any>(\'https://api.geoapify.com/v1/routing?waypoints=48.184731,11.547931|48.168254,11.581501|48.179391,11.612174&mode=drive&apiKey=YOUR_API_KEY\')\n .subscribe(calculatedRouteGeoJSON =>
1 {\n \tconsole.log(calculatedRouteGeoJSON);\n })\n }\n};`, this)"\n >\n <svg class="copy-icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">\x3c!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--\x3e<path fill="#FFFFFF" d="M384 336H192c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16l140.1 0L400 115.9V320c0 8.8-7.2 16-16 16zM192 384H384c35.3 0 64-28.7 64-64V115.9c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1H192c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256c35.3 0 64-28.7 64-64V416H272v32c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16H96V128H64z"/></svg><svg class="success-icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path fill="#fff" d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>\n </button>\n </div>'}}),s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-highlight" data-language="javascript"><pre class="language-javascript"><code class="language-javascript"><span class="token keyword">import</span> <span class="token punctuation">{</span> Component<span class="token punctuation">,</span> OnInit <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">\'@angular/core\'</span><span class="token punctuation">;</span>\n<span class="token keyword">import</span> <span class="token punctuation">{</span> HttpClient <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">\'@angular/common/http\'</span><span class="token punctuation">;</span>\n\n@<span class="token function">Component</span><span class="token punctuation">(</span><span class="token punctuation">{</span> <span class="token literal-property property">selector</span><span class="token operator">:</span> <span class="token string">\'app\'</span><span class="token punctuation">,</span> <span class="token literal-property property">templateUrl</span><span class="token operator">:</span> <span class="token string">\'app.component.html\'</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>\n<span class="token keyword">export</span> <span class="token keyword">class</span> <span class="token class-name">AppComponent</span> <span class="token keyword">implements</span> <span class="token class-name">OnInit</span> <span class="token punctuation">{</span>\n \n <span class="token function">constructor</span><span class="token punctuation">(</span><span class="token parameter"><span class="token keyword">private</span> <span class="token literal-property property">http</span><span class="token operator">:</span> HttpClient</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span>\n\n <span class="token function">ngOnInit</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> \n <span class="token keyword">this</span><span class="token punctuation">.</span>http<span class="token punctuation">.</span>get<span class="token operator"><</span>any<span class="token operator">></span><span class="token punctuation">(</span><span class="token string">\'https://api.geoapify.com/v1/routing?waypoints=48.184731,11.547931|48.168254,11.581501|48.179391,11.612174&mode=drive&apiKey=YOUR_API_KEY\'</span><span class="token punctuation">)</span>\n <span class="token punctuation">.</span><span class="token function">subscribe</span><span class="token punctuation">(</span><span class="token parameter">calculatedRouteGeoJSON</span> <span class="token operator">=></span> <span class="token punctuation">{</span>\n \tconsole<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>calculatedRouteGeoJSON<span class="token punctuation">)</span><span class="token punctuation">;</span>\n <span class="token punctuation">}</span><span class="token punctuation">)</span>\n <span class="token punctuation">}</span>\n<span class="token punctuation">}</span><span class="token punctuation">;</span></code></pre></div>'}})),s.createElement(f,{key:"Node.js-fetch"},s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-remark-copy-button-container">\n <button\n class="gatsby-remark-copy-button"\n onClick="copyToClipboard(`const fetch = require(\'node-fetch\'); // run "npm install node-fetch" to install\n\nfetch(\'https://api.geoapify.com/v1/routing?waypoints=48.184731,11.547931|48.168254,11.581501|48.179391,11.612174&mode=drive&apiKey=YOUR_API_KEY\')\n.then(resp => resp.json())\n.then((calculatedRouteGeoJSON) => {\n\tconsole.log(calculatedRouteGeoJSON);\n});`, this)"\n >\n <svg class="copy-icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">\x3c!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--\x3e<path fill="#FFFFFF" d="M384 336H192c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16l140.1 0L400 115.9V320c0 8.8-7.2 16-16 16zM192 384H384c35.3 0 64-28.7 64-64V115.9c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1H192c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256c35.3 0 64-28.7 64-64V416H272v32c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16H96V128H64z"/></svg><svg class="success-icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
1<path d="M0 0h24v24H0z" fill="none"/><path fill="#fff" d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>\n </button>\n </div>'}}),s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-highlight" data-language="javascript"><pre class="language-javascript"><code class="language-javascript"><span class="token keyword">const</span> fetch <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">\'node-fetch\'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// run "npm install node-fetch" to install</span>\n\n<span class="token function">fetch</span><span class="token punctuation">(</span><span class="token string">\'https://api.geoapify.com/v1/routing?waypoints=48.184731,11.547931|48.168254,11.581501|48.179391,11.612174&mode=drive&apiKey=YOUR_API_KEY\'</span><span class="token punctuation">)</span>\n<span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token parameter">resp</span> <span class="token operator">=></span> resp<span class="token punctuation">.</span><span class="token function">json</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>\n<span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token punctuation">(</span><span class="token parameter">calculatedRouteGeoJSON</span><span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>\n\tconsole<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>calculatedRouteGeoJSON<span class="token punctuation">)</span><span class="token punctuation">;</span>\n<span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span></code></pre></div>'}})),s.createElement(f,{key:"Python"},s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-remark-copy-button-container">\n <button\n class="gatsby-remark-copy-button"\n onClick="copyToClipboard(`import requests\nurl = "https://api.geoapify.com/v1/routing"\nquerystring = {"waypoints": "48.184731,11.547931|48.168254,11.581501|48.179391,11.612174", "mode": "drive", "apiKey": "YOUR_API_KEY"}\nresponse = requests.request("GET", url, params=querystring)\ndata = response.json()\nrouteTotalTimeSeconds = data["features"][0]["properties"]["time"]\nprint(routeTotalTimeSeconds)`, this)"\n >\n <svg class="copy-icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">\x3c!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--\x3e<path fill="#FFFFFF" d="M384 336H192c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16l140.1 0L400 115.9V320c0 8.8-7.2 16-16 16zM192 384H384c35.3 0 64-28.7 64-64V115.9c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1H192c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256c35.3 0 64-28.7 64-64V416H272v32c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16H96V128H64z"/></svg><svg class="success-icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path fill="#fff" d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>\n </button>\n </div>'}}),s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-highlight" data-language="python"><pre class="language-python"><code class="language-python"><span class="token keyword">
1import</span> requests\nurl <span class="token operator">=</span> <span class="token string">"https://api.geoapify.com/v1/routing"</span>\nquerystring <span class="token operator">=</span> <span class="token punctuation">{</span><span class="token string">"waypoints"</span><span class="token punctuation">:</span> <span class="token string">"48.184731,11.547931|48.168254,11.581501|48.179391,11.612174"</span><span class="token punctuation">,</span> <span class="token string">"mode"</span><span class="token punctuation">:</span> <span class="token string">"drive"</span><span class="token punctuation">,</span> <span class="token string">"apiKey"</span><span class="token punctuation">:</span> <span class="token string">"YOUR_API_KEY"</span><span class="token punctuation">}</span>\nresponse <span class="token operator">=</span> requests<span class="token punctuation">.</span>request<span class="token punctuation">(</span><span class="token string">"GET"</span><span class="token punctuation">,</span> url<span class="token punctuation">,</span> params<span class="token operator">=</span>querystring<span class="token punctuation">)</span>\ndata <span class="token operator">=</span> response<span class="token punctuation">.</span>json<span class="token punctuation">(</span><span class="token punctuation">)</span>\nrouteTotalTimeSeconds <span class="token operator">=</span> data<span class="token punctuation">[</span><span class="token string">"features"</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">"properties"</span><span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token string">"time"</span><span class="token punctuation">]</span>\n<span class="token keyword">print</span><span class="token punctuation">(</span>routeTotalTimeSeconds<span class="token punctuation">)</span></code></pre></div>'}})),s.createElement(f,{key:"cURL"},s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-remark-copy-button-container">\n <button\n class="gatsby-remark-copy-button"\n onClick="copyToClipboard(`curl -XGET "https://api.geoapify.com/v1/routing?waypoints=48.184731,11.547931|48.168254,11.581501|48.179391,11.612174&mode=drive&apiKey=YOUR_API_KEY"`, this)"\n >\n <svg class="copy-icon" width="16" height="16" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">\x3c!--!Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--\x3e<path fill="#FFFFFF" d="M384 336H192c-8.8 0-16-7.2-16-16V64c0-8.8 7.2-16 16-16l140.1 0L400 115.9V320c0 8.8-7.2 16-16 16zM192 384H384c35.3 0 64-28.7 64-64V115.9c0-12.7-5.1-24.9-14.1-33.9L366.1 14.1c-9-9-21.2-14.1-33.9-14.1H192c-35.3 0-64 28.7-64 64V320c0 35.3 28.7 64 64 64zM64 128c-35.3 0-64 28.7-64 64V448c0 35.3 28.7 64 64 64H256c35.3 0 64-28.7 64-64V416H272v32c0 8.8-7.2 16-16 16H64c-8.8 0-16-7.2-16-16V192c0-8.8 7.2-16 16-16H96V128H64z"/></svg><svg class="success-icon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path fill="#fff" d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"/></svg>\n </button>\n </div>'}}),s.createElement(t.span,{dangerouslySetInnerHTML:{__html:'<div class="gatsby-highlight" data-language="bash"><pre class="language-bash"><code class="language-bash"><span class="token function">curl</span> <span class="token parameter variable">-XGET</span> <span class="token string">"https://api.geoapify.com/v1/routing?waypoints=48.184731,11.547931|48.168254,11.581501|48.179391,11.612174&mode=drive&apiKey=YOUR_API_KEY"</span></code></pre></div>'}})))),"\n",s.createElement("div",{className:"place-delimiter"}),"\n",s.createElement("h2",{className:"-mt-28 pt-28",id:"pricing"},"How Much Does It Cost?"),"\n",s.createElement(t.p,null,"We offer ",s.createElement(t.a,{href:"/pricing/"},"Affordable Prices")," for businesses of all sizes. Our free plan includes up to 3000 credits a day. Each API call costs a certain
1number of credits:"),"\n",s.createElement(t.ul,null,"\n",s.createElement(t.li,null,"Each route leg costs 1 credit. For example, a route with 2 waypoints has 1 leg, and a route with 3 waypoints has 2 legs."),"\n",s.createElement(t.li,null,"Longer routes may cost more. An additional credit is added for each 500 kilometers of route length."),"\n",s.createElement(t.li,null,"Some advanced options can increase the total cost, for example route optimization, barriers, avoid areas, or extra route details such as elevation."),"\n"),"\n",s.createElement(t.p,null,"Use our ",s.createElement(t.a,{href:"/pricing-details/#routing"},"Pricing Calculator")," to estimate how many credits you need."),"\n",s.createElement(t.p,null,"Read more about how we calculate costs ",s.createElement(t.a,{href:"https://apidocs.geoapify.com/docs/routing/#pricing",target:"_blank",rel:"nofollow"},"here"),"."),"\n",s.createElement("h2",{className:"sticky-anchor",id:"tutorials"},"Routing API Tutorials"),"\n",s.createElement(t.p,null,"Check out our tutorials to make it easy to get started and get the results you want with Routing API:"),"\n",s.createElement("div",{className:"tutorial-groups mb-2
10"},s.createElement(k,{keys:["tutorial/how-to-use-route-directions-api","tutorial/draw-route-on-the-maplibre-mapbox-map","tutorial/draw-route-elevation-profile-with-chartjs","tutorial/creating-a-printable-version-of-driving-directions"]}),s.createElement(t.p,null,"Still not sure how to start? If you're facing any problems or have questions, we're here to help! ",s.createElement(t.a,{href:"mailto:[email protected]",target:"_blank",rel:"nofollow"},"Contact us")," and we will be happy to assist.")),"\n",s.createElement("div",{className:"place-delimiter"}),"\n",s.createElement("div",{id:"faq",className:"-mt-28 pt-28"}),"\n",s.createElement(y,{title:"FAQ",questions:[{question:"How do you bill Directions API Requests?",answer:'A route between every pair of waypoints is counted as a credit. Learn more about the API pricing on the <a href="https://apidocs.geoapify.com/docs/routing/" target="_blank" rel="noopener noreferrer">API Documentation page</a>.'},{question:"How is 'Truck' mode different from 'Drive' mode?",answer:"Truck mode takes into account truck-specific road restrictions, and avoids narrow roads and residential areas. It also prioritizes routes with fewer maneuvers."},{question:"I need to build routes for heavy transport. Can your API do that?",answer:'The Geoapify Routing API has a very flexible and powerful engine under the hood. <a href="mailto:[email protected]" rel="nofollow">Contact us</a> and we will create a solution that works for your business.'},{question:"How good is coverage for public transport?",answer:"We provide worldwide coverage for public transport. We use official GTFS feeds when they are available and approximated models for other places."},{question:"Can we use custom GTFS feeds with your Routing API?",answer:"Sure! We can set up a dedicated server for you that builds routes with your GTFS feeds."},{question:"What are the Routing API limits, and can I process larger workloads?",answer:'Routing limits are profile-dependent and validated by distance between consecutive waypoints. For larger non-real-time routing workloads, use the <a href="/batch-api/">Batch API</a> to run asynchronous routing jobs with higher practical limits.'},{question:"How do I avoid an unwanted immediate u-turn at an intermediate waypoint?",answer:"Use <code>intermediate_waypoint_mode=through_stop</code> when your route contains 3 or more waypoints. This keeps intermediate waypoints as route legs, but preserves movement continuity through the waypoint and helps avoid an immediate u-turn there."},{question:"When should I use through_stop instead of stopover?",answer:"Use <code>through_stop</code> when you want intermediate waypoints to remain part of the route structure, but you do not want them to behave like full stop points. If you omit the parameter, the default mode is <code>stopover</code>."},{question:"When should I use pass_through instead of stopover or through_stop?",answer:"Use <code>pass_through</code> when an intermediate waypoint should shape the route geometry without being treated as a stopover. This is useful when you need to guide the route through a specific point without creating a stop-like behavior there."},{question:"Can you provide custom conditions for high volumes?",answer:'Yes! <a href="mailto:[email protected]" rel="nofollow">Contact us</a> and we\'ll work out a plan that suits your needs'}]}),"\n",s.createElement(w,null,s.createElement(t.h2,null,"Ready To Get Started?"),s.createElement("div",{className:"h4 text-center"},"Get an API key and start using Geoapify Routing API for free today."),s.createElement(t.p,null,"Need help getting started or want to discuss your specific needs? ",s.createElement(t.a,{href:"mailto:[email protected]",target:"_blank",rel:"nofollow"},"Get in touch")," and our team will be happy to help."),s.createElement("div",{className:"max-w-screen-md md:w-full mx-5 md:mx-auto"},s.createElement(r,null,s.createElement(l,{type:"secondary",newTab:!0,text:"Get API Key",url:"https://myprojects.geoapify.com"}),s.createElement(l,{type:"secondary-dark",newTab:!0,text:"Documentation",url:"https://apidocs.geoapify.com/docs/routing/"}),s.createElement(l,{type:"secondary-dark",text:"Pricing",url:"/pricing/"})))))}var r=function(e={}){const{wrapper:t}=Object.assign({},(0,a.RP)(),e.components);return t?s.createElement(t,e,s.createElement(o,e)):o(e)};function i(e,t){throw new Error("Expected "+(t?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}var l=n(4794),c=n(8154),p=n(627),u=n(1574),m=n(7127),d=n(1963),g=n(1562),h=n(1543),f=n(3428),k=n(3008),y=n(3133),w=n(633),b=n(3481),v=n(9911),E=n(5841),x=n(9856),A=n(3007),_=n(529),H=n(8818),I=n(5898),T=n(1435),F=n(118),P=n(8314),S=n(9310),q=n(3960),C=n(5130),V=n(2833),L=n(8261);const M=(0,n(2259).Ay)((()=>Promise.all([n.e(1869),n.e(3773)]).then(n.bind(n,3773)))),R=({data:{page:e,logo:t,siteData:n},children:o,pageContext:{modifiedTime:r}})=>{const i={Link:l.Link,SplitSection:b.A,GeoapifyCleanCookiesButton:d.A,FAQStructutedData:k.A,PageImage:y.A,PageGifImage:w.A,Backgroun
1dPanel:v.A,SocialButtons:E.A,Card:x.A,PageCard:A.A,Button:_.A,ButtonGroup:H.A,Banner:T.A,PageList:I.A,FAQWithStructuredData:F.A,TableOfContent:q.A,Tab:p.oz,Tabs:p.tU,TabList:p.wb,TabPanel:p.Kp,Swiper:M,PricingList:P.A,CreditsCalculator:S.A,PricingCalculator:C.A,InputCheckbox:V.A,StatefulChecklist:L.A,JSONTree:u.d},R=e.frontmatter.featuredImage?e.frontmatter.featuredImage.childImageSharp.original:{},z=e.frontmatter.twitterImage2x1?e.frontmatter.twitterImage2x1.childImageSharp.original:{},N=e.frontmatter.categories&&e.frontmatter.categories.length?e.frontmatter.categories.map((e=>f.A.find((t=>t.id===e)).label)):null,B="home"===e.frontmatter.slug.split("/").join("")?"https://www.geoapify.com/":`https://www.geoapify.com/${e.frontmatter.slug}/`,O=!!e.frontmatter.hideHeaderFooter,G=!!e.frontmatter.hideCookieBanner;return s.createElement(s.Fragment,null,s.createElement(c.m,null,s.createElement("link",{rel:"canonical",href:B,"data-baseprotocol":"https:","data-basehost":"www.geoapify.com"})),s.createElement(h.A,{webpageTitle:e.frontmatter.title_60,webpageDescription:e.frontmatter.description_120,slug:e.frontmatter.slug,imageSrc:R.src,imageWidth:R.width,imageHeight:R.height,imageAlt:e.frontmatter.featuredImageAlt_120,ogType:"website",twitterImageSrc:z.src,twitterTitle:e.frontmatter.twitterTitle_70,twitterImageAlt:e.frontmatter.twitterImageAlt_420,twitterDescription:e.frontmatter.twitterDescription_200,articleTags:N,created:e.frontmatter.date,modified:r}),s.createElement(g.A,{geoapifyTitle:n.siteMetadata.title_60,geoapifyDescription:n.siteMetadata.description_120,geoapifySlogan:n.siteMetadata.slogan,companyName:n.siteMetadata.company,webpageTitle:e.frontmatter.title_60,webpageDescription:e.frontmatter.description,slug:e.frontmatter.slug,logoSrc:t.childImageSharp.gatsbyImageData.src,logoWidth:t.childImageSharp.gatsbyImageData.presentationWidth,logoHeight:t.childImageSharp.gatsbyImageData.presentationHeight,imageSrc:R.src,imageWidth:R.width,imageHeight:R.height,additionalData:e.frontmatter.structuredData}),s.createElement(m.A,{hideHeader:O,hideFooter:O,hideCookieBanner:G},s.createElement("div",{className:"geoapify-page"},s.createElement(a.xA,{components:i},o))))};function z(e){return s.createElement(R,e,s.createElement(r,e))}}}]); 2//# sourceMappingURL=component---src-template-page-js-content-file-path-src-pages-routing-api-index-mdx-8ea6ecf82437fdeb778d.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.