[{"data":1,"prerenderedAt":856},["ShallowReactive",2],{"footer-learn-links":3,"learn-\u002Flearn\u002Fisochrones\u002F":7,"related-learn-\u002Flearn\u002Fisochrones\u002F":855},[4],{"title":5,"path":6},"What Is an Isochrone?","\u002Flearn\u002Fisochrones",{"id":8,"title":5,"author":9,"body":10,"category":752,"description":819,"extension":820,"head":821,"image":823,"imageAlt":823,"keywords":823,"meta":824,"modified":823,"navigation":366,"path":6,"published":825,"rawbody":826,"schemaOrg":827,"seo":849,"stem":851,"term":852,"termDescription":853,"__hash__":854},"learn\u002Flearn\u002Fisochrones.md","Stadia Maps Team",{"type":11,"value":12,"toc":797},"minimark",[13,17,36,41,60,64,67,70,97,104,108,111,135,150,154,161,242,245,263,267,291,294,302,306,309,465,484,497,501,509,538,542,549,572,576,584,616,620,625,628,632,647,651,682,686,701,705,712,716,720,723,749,753,793],[14,15,5],"h1",{"id":16},"what-is-an-isochrone",[18,19,20,21,29,30,35],"p",{},"An ",[22,23,28],"a",{"href":24,"rel":25,"target":27},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIsochrone_map",[26],"external","_blank","isochrone"," is a shape on a map that shows everywhere you can reach from a starting point within a set travel time or distance, given a mode of travel. Also called a travel time map, isoline, or reachable range, an isochrone follows the road, path, or transit network, so the shape reflects how people actually move, not just how far a straight line goes. The ",[22,31,34],{"href":32,"rel":33,"target":27},"https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Fisochrones\u002F",[26],"Stadia Maps Isochrone API"," returns them as GeoJSON polygons or linestrings for driving, walking, cycling, and nearly a dozen other travel modes.",[37,38,40],"h2",{"id":39},"key-takeaways","Key Takeaways",[42,43,44,48,51,54,57],"ul",{},[45,46,47],"li",{},"An isochrone shows everywhere reachable from a starting point within a set travel time or distance, based on the real road, path, or transit network.",[45,49,50],{},"Unlike a fixed-radius buffer, an isochrone accounts for road geometry, one-way streets, mode of travel, and (optionally) real-time traffic.",[45,52,53],{},"The Stadia Maps Isochrone API supports nearly a dozen travel modes, including driving, walking, cycling, bus, taxi, and truck.",[45,55,56],{},"Output is a GeoJSON FeatureCollection that renders directly in MapLibre GL JS, Leaflet, or any GeoJSON-aware map library.",[45,58,59],{},"Isochrones are the right tool for site selection, service-area planning, and accessibility analysis. They are not a substitute for routing (single ETA) or matrix (ranked distances).",[37,61,63],{"id":62},"why-not-just-use-a-radius-for-isochrones","Why Not Just Use a Radius for Isochrones?",[18,65,66],{},"A fixed-radius buffer is fast, but for most real questions, it is wrong. A 10-minute drive out of downtown San Francisco covers a different area than a 10-minute drive out of suburban Phoenix. Highways, one-way streets, rivers with no bridges, transit availability, and pedestrian-only zones all bend the shape.",[18,68,69],{},"Cases where a radius breaks:",[42,71,72,79,85,91],{},[45,73,74,78],{},[75,76,77],"strong",{},"Rivers and rail corridors."," A bridge or tunnel can be the only crossing for kilometers. A circle ignores that.",[45,80,81,84],{},[75,82,83],{},"One-way networks."," Driving out of a dense center is often slower than driving in. The reachable area is asymmetric.",[45,86,87,90],{},[75,88,89],{},"Mode mismatch."," A 15-minute walking radius reaches almost nothing on a road network built for cars, not people.",[45,92,93,96],{},[75,94,95],{},"Time of day."," A drive-time isochrone at 04:00 is much larger than the same isochrone at 17:30 when accounting for traffic.",[18,98,99,100,103],{},"If your product or application is making decisions based on who can reach a point quickly, then a radius is a meaningful penalty for accuracy. That is what the ",[22,101,34],{"href":32,"rel":102,"target":27},[26]," is designed to fix.",[37,105,107],{"id":106},"how-isochrones-are-calculated","How Isochrones Are Calculated",[18,109,110],{},"Isochrone engines work in roughly the same way:",[112,113,114,123,126,129,132],"ol",{},[45,115,116,117,122],{},"Take the ",[22,118,121],{"href":119,"rel":120,"target":27},"https:\u002F\u002Fwiki.openstreetmap.org\u002Fwiki\u002FRouting",[26],"road, path, and transit network"," as a graph.",[45,124,125],{},"Assign a travel cost to every edge based on speed, mode, and any time-of-day model.",[45,127,128],{},"Run a search outward from the origin, expanding by accumulated cost rather than distance.",[45,130,131],{},"When the search hits each time or distance threshold, capture the reachable subgraph.",[45,133,134],{},"Turn that subgraph into a polygon or linestring by buffering reachable edges and dissolving the result.",[18,136,137,138,143,144,149],{},"Stadia Maps runs isochrones on ",[22,139,142],{"href":140,"rel":141,"target":27},"https:\u002F\u002Fgithub.com\u002Fvalhalla\u002Fvalhalla",[26],"Valhalla",", an open-source routing engine that Stadia Maps contributes to. Valhalla uses a tiled, multimodal graph and supports per-mode costing models, which is why the same endpoint can produce a useful pedestrian, bicycle, or automobile isochrone without swapping engines. For more on how the Stadia Maps routing stack fits together, see the ",[22,145,148],{"href":146,"rel":147,"target":27},"https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002F",[26],"Routing overview",".",[37,151,153],{"id":152},"isochrone-parameters-that-matter","Isochrone Parameters That Matter",[18,155,156,157,160],{},"The ",[22,158,34],{"href":32,"rel":159,"target":27},[26]," exposes the parameters that actually change the shape.",[42,162,163,172,206,218,234],{},[45,164,165,171],{},[75,166,167],{},[168,169,170],"code",{},"locations",": The starting point (latitude and longitude). Required.",[45,173,174,179,180,183,184,183,187,183,190,183,193,196,197,200,201,149],{},[75,175,176],{},[168,177,178],{},"costing",": The travel mode. Options include ",[168,181,182],{},"auto",", ",[168,185,186],{},"bicycle",[168,188,189],{},"pedestrian",[168,191,192],{},"bus",[168,194,195],{},"taxi",", and ",[168,198,199],{},"truck",", among others. The full list is in the ",[22,202,205],{"href":203,"rel":204,"target":27},"https:\u002F\u002Fdocs.stadiamaps.com\u002Fapi-reference\u002F",[26],"API reference",[45,207,208,213,214,217],{},[75,209,210],{},[168,211,212],{},"contours",": One or more time or distance thresholds. Each contour can carry a ",[168,215,216],{},"color"," that is echoed back in the response for direct rendering.",[45,219,220,225,226,229,230,233],{},[75,221,222],{},[168,223,224],{},"polygons",": Set to ",[168,227,228],{},"true"," for filled polygons or ",[168,231,232],{},"false"," for linestrings. Use linestrings for accessibility plots or overlay layers.",[45,235,236,241],{},[75,237,238],{},[168,239,240],{},"date_time",": For traffic-influenced modes, the departure or arrival time. Skipping this defaults to average conditions.",[18,243,244],{},"Two more that are less obvious but matter in production:",[42,246,247,255],{},[45,248,249,254],{},[75,250,251],{},[168,252,253],{},"denoise",": Removes small disconnected fragments below a relative size threshold. Lower it if you need to see remote islands of reachability.",[45,256,257,262],{},[75,258,259],{},[168,260,261],{},"generalize",": Simplification tolerance in meters. Lower numbers produce more detailed shapes and larger payloads.",[37,264,266],{"id":265},"how-traffic-changes-an-isochrone","How Traffic Changes an Isochrone",[18,268,269,270,275,276,279,280,283,284,279,287,290],{},"For automobile, bus, taxi, and truck modes, the Stadia Maps Isochrone API supports ",[22,271,274],{"href":272,"rel":273,"target":27},"https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Fisochrones\u002F#traffic-influenced-profiles",[26],"traffic-influenced profiles"," via the ",[168,277,278],{},"_traffic"," and ",[168,281,282],{},"_traffic_premium"," suffixes. ",[168,285,286],{},"auto_traffic",[168,288,289],{},"truck_traffic_premium"," are two examples.",[18,292,293],{},"Traffic-influenced isochrones combine live conditions with historical data, so a rush-hour isochrone is typically smaller than the same isochrone at 03:00. If your product uses isochrones for logistics, dispatch, or delivery-zone decisions, a static-speed isochrone will overstate reachability during peak hours.",[18,295,296,297,301],{},"Traffic-influenced routing requires a Standard plan or higher. See the ",[22,298,300],{"href":299},"\u002Fpricing\u002F","pricing page"," for plan details.",[37,303,305],{"id":304},"how-do-you-generate-an-isochrone","How Do You Generate an Isochrone?",[18,307,308],{},"Here is what a request to the Stadia Maps Isochrone API looks like. This example asks for a 5-minute pedestrian isochrone from a point in Tallinn, Estonia.",[310,311,316],"pre",{"className":312,"code":313,"language":314,"meta":315,"style":315},"language-typescript shiki shiki-themes github-light","POST https:\u002F\u002Fapi.stadiamaps.com\u002Fisochrone\u002Fv1\nContent-Type: application\u002Fjson\n\n{\n  \"locations\": [{\"lat\": 59.436884, \"lon\": 24.742595}],\n  \"costing\": \"pedestrian\",\n  \"contours\": [{\"time\": 5, \"color\": \"aabbcc\"}],\n  \"polygons\": true\n}\n","typescript","",[168,317,318,339,361,368,374,406,420,448,459],{"__ignoreMap":315},[319,320,323,327,331,335],"span",{"class":321,"line":322},"line",1,[319,324,326],{"class":325},"sYu0t","POST",[319,328,330],{"class":329},"s7eDp"," https",[319,332,334],{"class":333},"sgsFI",":",[319,336,338],{"class":337},"sAwPA","\u002F\u002Fapi.stadiamaps.com\u002Fisochrone\u002Fv1\n",[319,340,342,345,349,352,355,358],{"class":321,"line":341},2,[319,343,344],{"class":333},"Content",[319,346,348],{"class":347},"sD7c4","-",[319,350,351],{"class":329},"Type",[319,353,354],{"class":333},": application",[319,356,357],{"class":347},"\u002F",[319,359,360],{"class":333},"json\n",[319,362,364],{"class":321,"line":363},3,[319,365,367],{"emptyLinePlaceholder":366},true,"\n",[319,369,371],{"class":321,"line":370},4,[319,372,373],{"class":333},"{\n",[319,375,377,381,384,387,390,393,395,398,400,403],{"class":321,"line":376},5,[319,378,380],{"class":379},"sYBdl","  \"locations\"",[319,382,383],{"class":333},": [{",[319,385,386],{"class":379},"\"lat\"",[319,388,389],{"class":333},": ",[319,391,392],{"class":325},"59.436884",[319,394,183],{"class":333},[319,396,397],{"class":379},"\"lon\"",[319,399,389],{"class":333},[319,401,402],{"class":325},"24.742595",[319,404,405],{"class":333},"}],\n",[319,407,409,412,414,417],{"class":321,"line":408},6,[319,410,411],{"class":379},"  \"costing\"",[319,413,389],{"class":333},[319,415,416],{"class":379},"\"pedestrian\"",[319,418,419],{"class":333},",\n",[319,421,423,426,428,431,433,436,438,441,443,446],{"class":321,"line":422},7,[319,424,425],{"class":379},"  \"contours\"",[319,427,383],{"class":333},[319,429,430],{"class":379},"\"time\"",[319,432,389],{"class":333},[319,434,435],{"class":325},"5",[319,437,183],{"class":333},[319,439,440],{"class":379},"\"color\"",[319,442,389],{"class":333},[319,444,445],{"class":379},"\"aabbcc\"",[319,447,405],{"class":333},[319,449,451,454,456],{"class":321,"line":450},8,[319,452,453],{"class":379},"  \"polygons\"",[319,455,389],{"class":333},[319,457,458],{"class":325},"true\n",[319,460,462],{"class":321,"line":461},9,[319,463,464],{"class":333},"}\n",[18,466,467,468,473,474,477,478,483],{},"The response is a ",[22,469,472],{"href":470,"rel":471,"target":27},"https:\u002F\u002Fdatatracker.ietf.org\u002Fdoc\u002Fhtml\u002Frfc7946",[26],"GeoJSON"," ",[168,475,476],{},"FeatureCollection"," with one feature per contour. It renders directly in ",[22,479,482],{"href":480,"rel":481,"target":27},"https:\u002F\u002Fmaplibre.org\u002F",[26],"MapLibre GL JS",", Leaflet, or any GeoJSON-aware renderer.",[18,485,486,487,491,492,149],{},"For runnable code in TypeScript, Python, Kotlin, Swift, PHP, or cURL, see the ",[22,488,490],{"href":32,"rel":489,"target":27},[26],"Stadia Maps Isochrone API docs",". A step-by-step MapLibre GL JS walkthrough is in the ",[22,493,496],{"href":494,"rel":495,"target":27},"https:\u002F\u002Fdocs.stadiamaps.com\u002Ftutorials\u002Fdisplay-isochrones-on-a-map\u002F",[26],"Display Isochrones on a Map tutorial",[37,498,500],{"id":499},"where-isochrones-fall-short","Where Isochrones Fall Short",[18,502,503,504,508],{},"Isochrones are not always the right tool. Beyond the parameter details in the ",[22,505,507],{"href":32,"rel":506,"target":27},[26],"Isochrones documentation",", here are the practical patterns worth knowing:",[42,510,511,517,526,532],{},[45,512,513,516],{},[75,514,515],{},"Very small time bands are noisy."," A 1-minute isochrone is mostly buffer around the origin. For travel times below a few minutes, results depend heavily on off-road buffering rather than on real network travel, so use very short contours with caution.",[45,518,519,522,523,525],{},[75,520,521],{},"Static isochrones do not reflect traffic."," Without a ",[168,524,240],{}," parameter, automobile isochrones can dramatically overstate reachability at rush hour or understate it at night.",[45,527,528,531],{},[75,529,530],{},"Cross-provider comparisons rarely agree."," Two providers will produce different polygons for the same origin because they use different graphs, different speed models, and different generalization settings. Standardize on a single provider for consistency across your product.",[45,533,534,537],{},[75,535,536],{},"Isochrones describe geographic reachability, not service areas."," Delivery zones, minimum-order distances, and exclusion rules are business logic that should sit on top of the isochrone, not inside it.",[37,539,541],{"id":540},"isochrone-vs-matrix-vs-routing-which-do-you-need","Isochrone vs. Matrix vs. Routing: Which Do You Need?",[18,543,156,544,548],{},[22,545,547],{"href":146,"rel":546,"target":27},[26],"Stadia Maps Routing API"," family includes several related endpoints. Pick the right one:",[42,550,551,560,569],{},[45,552,553,554,559],{},"For a single point-to-point travel time or ETA, use ",[22,555,558],{"href":556,"rel":557,"target":27},"https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Fstandard-routing\u002F",[26],"standard routing",". It is cheaper and more precise than an isochrone.",[45,561,562,563,568],{},"For \"which of these N destinations is closest by drive time,\" use the ",[22,564,567],{"href":565,"rel":566,"target":27},"https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Ftime-distance-matrix\u002F",[26],"Time\u002FDistance Matrix API",". Isochrones describe an area, not a ranking.",[45,570,571],{},"For service-area billing logic, compute the isochrone once, store the polygon, and query against it. Recomputing on every request wastes API credits.",[37,573,575],{"id":574},"common-isochrone-use-cases","Common Isochrone Use Cases",[18,577,578,579,583],{},"Isochrones answer questions where a \"how far in time\" constraint matters more than a \"how far in miles\" constraint. The ",[22,580,582],{"href":581},"\u002Fproducts\u002Frouting-navigation\u002Fisochrones\u002F","Stadia Maps Isochrones product page"," frames it as \"reachable range decision-making\" and lists example questions this API commonly answers:",[42,585,586,592,598,604,610],{},[45,587,588,591],{},[75,589,590],{},"Site selection."," Retail, healthcare, and logistics teams compare reachable population, demographics, or competitor density inside a drive-time band. A 20-minute isochrone is a better proxy for catchment than a 10-mile radius.",[45,593,594,597],{},[75,595,596],{},"Accessibility and mobility analysis."," Walking or transit isochrones show real access to schools, clinics, or grocery stores, not just distance.",[45,599,600,603],{},[75,601,602],{},"EV and fuel planning."," A driving isochrone with a distance constraint answers \"what is reachable in the last 20 miles before I need to charge or refuel?\"",[45,605,606,609],{},[75,607,608],{},"Marketplace coverage."," When a merchant joins a delivery platform, an isochrone defines the visible service area.",[45,611,612,615],{},[75,613,614],{},"Real estate search."," Filtering listings by \"30 minutes from my office by transit\" is an isochrone query against a property index.",[37,617,619],{"id":618},"frequently-asked-questions","Frequently Asked Questions",[621,622,624],"h3",{"id":623},"what-is-an-isochrone-map","What is an isochrone map?",[18,626,627],{},"An isochrone map displays one or more isochrone shapes, each connecting all points reachable within a set travel time or distance from a common starting point. Isochrone maps are used for site selection, accessibility analysis, service-area planning, and mobility studies.",[621,629,631],{"id":630},"what-is-the-difference-between-an-isochrone-and-an-isodistance","What is the difference between an isochrone and an isodistance?",[18,633,634,635,638,639,642,643,646],{},"Isochrones measure reachability in units of time; isodistances measure reachability in units of distance. The ",[22,636,34],{"href":32,"rel":637,"target":27},[26]," can be used to produce either by setting a ",[168,640,641],{},"time"," or ",[168,644,645],{},"distance"," value on each contour in the request.",[621,648,650],{"id":649},"what-travel-modes-does-the-stadia-maps-isochrone-api-support","What travel modes does the Stadia Maps Isochrone API support?",[18,652,156,653,656,657,183,659,183,661,183,663,183,665,196,667,669,670,183,672,183,674,196,676,678,679,149],{},[22,654,34],{"href":32,"rel":655,"target":27},[26]," supports nearly a dozen travel modes, including ",[168,658,182],{},[168,660,186],{},[168,662,189],{},[168,664,192],{},[168,666,195],{},[168,668,199],{},". Traffic-influenced variants exist for ",[168,671,182],{},[168,673,192],{},[168,675,195],{},[168,677,199],{},". The full list is in the ",[22,680,205],{"href":203,"rel":681,"target":27},[26],[621,683,685],{"id":684},"do-isochrones-account-for-traffic","Do isochrones account for traffic?",[18,687,688,689,692,693,279,695,697,698,700],{},"They can. The Stadia Maps Isochrone API offers ",[22,690,274],{"href":272,"rel":691,"target":27},[26]," via ",[168,694,278],{},[168,696,282],{}," suffixes on supported costing models. A traffic-influenced isochrone with an explicit ",[168,699,240],{}," reflects live conditions and historical patterns; a static isochrone assumes average speeds. Traffic-influenced routing requires a Standard plan or higher.",[621,702,704],{"id":703},"how-is-an-isochrone-request-billed-on-stadia-maps","How is an isochrone request billed on Stadia Maps?",[18,706,707,708,711],{},"Isochrone requests are billed as routing requests on the ",[22,709,710],{"href":299},"Stadia Maps API"," credit system. Contour count does not multiply the cost; a single request with three contours is a single billable request.",[37,713,715],{"id":714},"where-to-go-next","Where to Go Next",[621,717,719],{"id":718},"from-the-blog","From the Blog",[18,721,722],{},"More on isochrones and adjacent routing topics:",[42,724,725,731,737,743],{},[45,726,727],{},[22,728,730],{"href":729},"\u002Fblog\u002Finvisible-costs-of-routing-privacy-pricing-mau-trap\u002F","The Invisible Costs of Routing: Privacy, Pricing & the MAU Trap",[45,732,733],{},[22,734,736],{"href":735},"\u002Fblog\u002Fbeyond-the-car-routing-for-specialized-fleets\u002F","Beyond the Car: Routing for the Other 90% of Transport",[45,738,739],{},[22,740,742],{"href":741},"\u002Fblog\u002Fwhy-osm-routing-needs-real-time-traffic\u002F","Why Basic OSM Routing Needs Real-Time Traffic",[45,744,745],{},[22,746,748],{"href":747},"\u002Fblog\u002Ftraffic-influenced-routing-in-public-preview\u002F","Traffic-Influenced Routing Is Here (Public Preview)",[621,750,752],{"id":751},"routing-navigation","Routing & Navigation",[42,754,755,762,768,775,782,787],{},[45,756,757,761],{},[22,758,760],{"href":32,"rel":759,"target":27},[26],"Isochrones API documentation"," for the full parameter set",[45,763,764,767],{},[22,765,496],{"href":494,"rel":766,"target":27},[26]," with a working MapLibre GL JS example",[45,769,770,774],{},[22,771,773],{"href":556,"rel":772,"target":27},[26],"Standard Routing"," for a single point-to-point ETA",[45,776,777,781],{},[22,778,780],{"href":565,"rel":779,"target":27},[26],"Time\u002FDistance Matrix"," for ranked distances to many destinations",[45,783,784,786],{},[22,785,582],{"href":581}," and pricing tiers",[45,788,789],{},[22,790,792],{"href":791},"\u002Fproducts\u002Frouting-navigation\u002Fmatrix-routing\u002F","Matrix Routing product page",[794,795,796],"style",{},"html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":315,"searchDepth":370,"depth":370,"links":798},[799,800,801,802,803,804,805,806,807,808,815],{"id":39,"depth":341,"text":40},{"id":62,"depth":341,"text":63},{"id":106,"depth":341,"text":107},{"id":152,"depth":341,"text":153},{"id":265,"depth":341,"text":266},{"id":304,"depth":341,"text":305},{"id":499,"depth":341,"text":500},{"id":540,"depth":341,"text":541},{"id":574,"depth":341,"text":575},{"id":618,"depth":341,"text":619,"children":809},[810,811,812,813,814],{"id":623,"depth":363,"text":624},{"id":630,"depth":363,"text":631},{"id":649,"depth":363,"text":650},{"id":684,"depth":363,"text":685},{"id":703,"depth":363,"text":704},{"id":714,"depth":341,"text":715,"children":816},[817,818],{"id":718,"depth":363,"text":719},{"id":751,"depth":363,"text":752},"An isochrone is a shape that shows everywhere you can reach from a given point within a set time or distance. Learn how they work, what parameters matter, and how to generate one with the Stadia Maps Isochrone API.","md",{"script":822},[],null,{},"2026-07-14","---\ntitle: What Is an Isochrone?\ndescription: An isochrone is a shape that shows everywhere you can reach from a given point within a set time or distance. Learn how they work, what parameters matter, and how to generate one with the Stadia Maps Isochrone API.\nseo:\n  ogDescription: An isochrone is a shape that shows everywhere you can reach from a point within a set time or distance.\ncategory: Routing & Navigation\nauthor: Stadia Maps Team\nterm: Isochrone\ntermDescription: A shape on a map showing everywhere reachable from a starting point within a set travel time or distance, given a mode of travel.\npublished: 2026-07-14\nschemaOrg:\n  - \"@type\": FAQPage\n    mainEntity:\n      - \"@type\": Question\n        name: What is an isochrone map?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: An isochrone map is a map that displays one or more isochrone shapes, each connecting all points reachable within a set travel time or distance from a common starting point.\n      - \"@type\": Question\n        name: What is the difference between an isochrone and an isodistance?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: Isochrones measure reachability in units of time; isodistances measure reachability in units of distance. The Stadia Maps Isochrone API can produce either by setting a time or distance value on each contour.\n      - \"@type\": Question\n        name: What travel modes does the Stadia Maps Isochrone API support?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: The Stadia Maps Isochrone API supports nearly a dozen travel modes, including auto, bicycle, pedestrian, bus, taxi, and truck. Traffic-influenced variants exist for auto, bus, taxi, and truck.\n      - \"@type\": Question\n        name: Do isochrones account for traffic?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: The Stadia Maps Isochrone API offers traffic-influenced profiles via _traffic and _traffic_premium suffixes on supported costing models. A traffic-influenced isochrone with an explicit date_time reflects live conditions and historical patterns. Traffic-influenced routing requires a Standard plan or higher.\n      - \"@type\": Question\n        name: How is an isochrone request billed?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: Isochrone requests are billed as routing requests on the Stadia Maps API credit system. Contour count does not multiply the cost; one request with three contours is one billable request.\n---\n\n# What Is an Isochrone?\n\nAn [isochrone](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIsochrone_map) is a shape on a map that shows everywhere you can reach from a starting point within a set travel time or distance, given a mode of travel. Also called a travel time map, isoline, or reachable range, an isochrone follows the road, path, or transit network, so the shape reflects how people actually move, not just how far a straight line goes. The [Stadia Maps Isochrone API](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Fisochrones\u002F) returns them as GeoJSON polygons or linestrings for driving, walking, cycling, and nearly a dozen other travel modes.\n\n## Key Takeaways\n\n- An isochrone shows everywhere reachable from a starting point within a set travel time or distance, based on the real road, path, or transit network.\n- Unlike a fixed-radius buffer, an isochrone accounts for road geometry, one-way streets, mode of travel, and (optionally) real-time traffic.\n- The Stadia Maps Isochrone API supports nearly a dozen travel modes, including driving, walking, cycling, bus, taxi, and truck.\n- Output is a GeoJSON FeatureCollection that renders directly in MapLibre GL JS, Leaflet, or any GeoJSON-aware map library.\n- Isochrones are the right tool for site selection, service-area planning, and accessibility analysis. They are not a substitute for routing (single ETA) or matrix (ranked distances).\n\n## Why Not Just Use a Radius for Isochrones?\n\nA fixed-radius buffer is fast, but for most real questions, it is wrong. A 10-minute drive out of downtown San Francisco covers a different area than a 10-minute drive out of suburban Phoenix. Highways, one-way streets, rivers with no bridges, transit availability, and pedestrian-only zones all bend the shape.\n\nCases where a radius breaks:\n\n- **Rivers and rail corridors.** A bridge or tunnel can be the only crossing for kilometers. A circle ignores that.\n- **One-way networks.** Driving out of a dense center is often slower than driving in. The reachable area is asymmetric.\n- **Mode mismatch.** A 15-minute walking radius reaches almost nothing on a road network built for cars, not people.\n- **Time of day.** A drive-time isochrone at 04:00 is much larger than the same isochrone at 17:30 when accounting for traffic.\n\nIf your product or application is making decisions based on who can reach a point quickly, then a radius is a meaningful penalty for accuracy. That is what the [Stadia Maps Isochrone API](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Fisochrones\u002F) is designed to fix.\n\n## How Isochrones Are Calculated\n\nIsochrone engines work in roughly the same way:\n\n1. Take the [road, path, and transit network](https:\u002F\u002Fwiki.openstreetmap.org\u002Fwiki\u002FRouting) as a graph.\n2. Assign a travel cost to every edge based on speed, mode, and any time-of-day model.\n3. Run a search outward from the origin, expanding by accumulated cost rather than distance.\n4. When the search hits each time or distance threshold, capture the reachable subgraph.\n5. Turn that subgraph into a polygon or linestring by buffering reachable edges and dissolving the result.\n\nStadia Maps runs isochrones on [Valhalla](https:\u002F\u002Fgithub.com\u002Fvalhalla\u002Fvalhalla), an open-source routing engine that Stadia Maps contributes to. Valhalla uses a tiled, multimodal graph and supports per-mode costing models, which is why the same endpoint can produce a useful pedestrian, bicycle, or automobile isochrone without swapping engines. For more on how the Stadia Maps routing stack fits together, see the [Routing overview](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002F).\n\n## Isochrone Parameters That Matter\n\nThe [Stadia Maps Isochrone API](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Fisochrones\u002F) exposes the parameters that actually change the shape.\n\n- **`locations`**: The starting point (latitude and longitude). Required.\n- **`costing`**: The travel mode. Options include `auto`, `bicycle`, `pedestrian`, `bus`, `taxi`, and `truck`, among others. The full list is in the [API reference](https:\u002F\u002Fdocs.stadiamaps.com\u002Fapi-reference\u002F).\n- **`contours`**: One or more time or distance thresholds. Each contour can carry a `color` that is echoed back in the response for direct rendering.\n- **`polygons`**: Set to `true` for filled polygons or `false` for linestrings. Use linestrings for accessibility plots or overlay layers.\n- **`date_time`**: For traffic-influenced modes, the departure or arrival time. Skipping this defaults to average conditions.\n\nTwo more that are less obvious but matter in production:\n\n- **`denoise`**: Removes small disconnected fragments below a relative size threshold. Lower it if you need to see remote islands of reachability.\n- **`generalize`**: Simplification tolerance in meters. Lower numbers produce more detailed shapes and larger payloads.\n\n## How Traffic Changes an Isochrone\n\nFor automobile, bus, taxi, and truck modes, the Stadia Maps Isochrone API supports [traffic-influenced profiles](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Fisochrones\u002F#traffic-influenced-profiles) via the `_traffic` and `_traffic_premium` suffixes. `auto_traffic` and `truck_traffic_premium` are two examples.\n\nTraffic-influenced isochrones combine live conditions with historical data, so a rush-hour isochrone is typically smaller than the same isochrone at 03:00. If your product uses isochrones for logistics, dispatch, or delivery-zone decisions, a static-speed isochrone will overstate reachability during peak hours.\n\nTraffic-influenced routing requires a Standard plan or higher. See the [pricing page](\u002Fpricing\u002F) for plan details.\n\n## How Do You Generate an Isochrone?\n\nHere is what a request to the Stadia Maps Isochrone API looks like. This example asks for a 5-minute pedestrian isochrone from a point in Tallinn, Estonia.\n\n```typescript\nPOST https:\u002F\u002Fapi.stadiamaps.com\u002Fisochrone\u002Fv1\nContent-Type: application\u002Fjson\n\n{\n  \"locations\": [{\"lat\": 59.436884, \"lon\": 24.742595}],\n  \"costing\": \"pedestrian\",\n  \"contours\": [{\"time\": 5, \"color\": \"aabbcc\"}],\n  \"polygons\": true\n}\n```\n\nThe response is a [GeoJSON](https:\u002F\u002Fdatatracker.ietf.org\u002Fdoc\u002Fhtml\u002Frfc7946) `FeatureCollection` with one feature per contour. It renders directly in [MapLibre GL JS](https:\u002F\u002Fmaplibre.org\u002F), Leaflet, or any GeoJSON-aware renderer.\n\nFor runnable code in TypeScript, Python, Kotlin, Swift, PHP, or cURL, see the [Stadia Maps Isochrone API docs](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Fisochrones\u002F). A step-by-step MapLibre GL JS walkthrough is in the [Display Isochrones on a Map tutorial](https:\u002F\u002Fdocs.stadiamaps.com\u002Ftutorials\u002Fdisplay-isochrones-on-a-map\u002F).\n\n## Where Isochrones Fall Short\n\nIsochrones are not always the right tool. Beyond the parameter details in the [Isochrones documentation](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Fisochrones\u002F), here are the practical patterns worth knowing:\n\n- **Very small time bands are noisy.** A 1-minute isochrone is mostly buffer around the origin. For travel times below a few minutes, results depend heavily on off-road buffering rather than on real network travel, so use very short contours with caution.\n- **Static isochrones do not reflect traffic.** Without a `date_time` parameter, automobile isochrones can dramatically overstate reachability at rush hour or understate it at night.\n- **Cross-provider comparisons rarely agree.** Two providers will produce different polygons for the same origin because they use different graphs, different speed models, and different generalization settings. Standardize on a single provider for consistency across your product.\n- **Isochrones describe geographic reachability, not service areas.** Delivery zones, minimum-order distances, and exclusion rules are business logic that should sit on top of the isochrone, not inside it.\n\n## Isochrone vs. Matrix vs. Routing: Which Do You Need?\n\nThe [Stadia Maps Routing API](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002F) family includes several related endpoints. Pick the right one:\n\n- For a single point-to-point travel time or ETA, use [standard routing](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Fstandard-routing\u002F). It is cheaper and more precise than an isochrone.\n- For \"which of these N destinations is closest by drive time,\" use the [Time\u002FDistance Matrix API](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Ftime-distance-matrix\u002F). Isochrones describe an area, not a ranking.\n- For service-area billing logic, compute the isochrone once, store the polygon, and query against it. Recomputing on every request wastes API credits.\n\n## Common Isochrone Use Cases\n\nIsochrones answer questions where a \"how far in time\" constraint matters more than a \"how far in miles\" constraint. The [Stadia Maps Isochrones product page](\u002Fproducts\u002Frouting-navigation\u002Fisochrones\u002F) frames it as \"reachable range decision-making\" and lists example questions this API commonly answers:\n\n- **Site selection.** Retail, healthcare, and logistics teams compare reachable population, demographics, or competitor density inside a drive-time band. A 20-minute isochrone is a better proxy for catchment than a 10-mile radius.\n- **Accessibility and mobility analysis.** Walking or transit isochrones show real access to schools, clinics, or grocery stores, not just distance.\n- **EV and fuel planning.** A driving isochrone with a distance constraint answers \"what is reachable in the last 20 miles before I need to charge or refuel?\"\n- **Marketplace coverage.** When a merchant joins a delivery platform, an isochrone defines the visible service area.\n- **Real estate search.** Filtering listings by \"30 minutes from my office by transit\" is an isochrone query against a property index.\n\n## Frequently Asked Questions\n\n### What is an isochrone map?\n\nAn isochrone map displays one or more isochrone shapes, each connecting all points reachable within a set travel time or distance from a common starting point. Isochrone maps are used for site selection, accessibility analysis, service-area planning, and mobility studies.\n\n### What is the difference between an isochrone and an isodistance?\n\nIsochrones measure reachability in units of time; isodistances measure reachability in units of distance. The [Stadia Maps Isochrone API](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Fisochrones\u002F) can be used to produce either by setting a `time` or `distance` value on each contour in the request.\n\n### What travel modes does the Stadia Maps Isochrone API support?\n\nThe [Stadia Maps Isochrone API](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Fisochrones\u002F) supports nearly a dozen travel modes, including `auto`, `bicycle`, `pedestrian`, `bus`, `taxi`, and `truck`. Traffic-influenced variants exist for `auto`, `bus`, `taxi`, and `truck`. The full list is in the [API reference](https:\u002F\u002Fdocs.stadiamaps.com\u002Fapi-reference\u002F).\n\n### Do isochrones account for traffic?\n\nThey can. The Stadia Maps Isochrone API offers [traffic-influenced profiles](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Fisochrones\u002F#traffic-influenced-profiles) via `_traffic` and `_traffic_premium` suffixes on supported costing models. A traffic-influenced isochrone with an explicit `date_time` reflects live conditions and historical patterns; a static isochrone assumes average speeds. Traffic-influenced routing requires a Standard plan or higher.\n\n### How is an isochrone request billed on Stadia Maps?\n\nIsochrone requests are billed as routing requests on the [Stadia Maps API](\u002Fpricing\u002F) credit system. Contour count does not multiply the cost; a single request with three contours is a single billable request.\n\n## Where to Go Next\n\n### From the Blog\n\nMore on isochrones and adjacent routing topics:\n\n- [The Invisible Costs of Routing: Privacy, Pricing & the MAU Trap](\u002Fblog\u002Finvisible-costs-of-routing-privacy-pricing-mau-trap\u002F)\n- [Beyond the Car: Routing for the Other 90% of Transport](\u002Fblog\u002Fbeyond-the-car-routing-for-specialized-fleets\u002F)\n- [Why Basic OSM Routing Needs Real-Time Traffic](\u002Fblog\u002Fwhy-osm-routing-needs-real-time-traffic\u002F)\n- [Traffic-Influenced Routing Is Here (Public Preview)](\u002Fblog\u002Ftraffic-influenced-routing-in-public-preview\u002F)\n\n### Routing & Navigation\n\n- [Isochrones API documentation](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Fisochrones\u002F) for the full parameter set\n- [Display Isochrones on a Map tutorial](https:\u002F\u002Fdocs.stadiamaps.com\u002Ftutorials\u002Fdisplay-isochrones-on-a-map\u002F) with a working MapLibre GL JS example\n- [Standard Routing](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Fstandard-routing\u002F) for a single point-to-point ETA\n- [Time\u002FDistance Matrix](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Ftime-distance-matrix\u002F) for ranked distances to many destinations\n- [Stadia Maps Isochrones product page](\u002Fproducts\u002Frouting-navigation\u002Fisochrones\u002F) and pricing tiers\n- [Matrix Routing product page](\u002Fproducts\u002Frouting-navigation\u002Fmatrix-routing\u002F)\n",[828],{"@type":829,"mainEntity":830},"FAQPage",[831,836,839,842,845],{"@type":832,"name":624,"acceptedAnswer":833},"Question",{"@type":834,"text":835},"Answer","An isochrone map is a map that displays one or more isochrone shapes, each connecting all points reachable within a set travel time or distance from a common starting point.",{"@type":832,"name":631,"acceptedAnswer":837},{"@type":834,"text":838},"Isochrones measure reachability in units of time; isodistances measure reachability in units of distance. The Stadia Maps Isochrone API can produce either by setting a time or distance value on each contour.",{"@type":832,"name":650,"acceptedAnswer":840},{"@type":834,"text":841},"The Stadia Maps Isochrone API supports nearly a dozen travel modes, including auto, bicycle, pedestrian, bus, taxi, and truck. Traffic-influenced variants exist for auto, bus, taxi, and truck.",{"@type":832,"name":685,"acceptedAnswer":843},{"@type":834,"text":844},"The Stadia Maps Isochrone API offers traffic-influenced profiles via _traffic and _traffic_premium suffixes on supported costing models. A traffic-influenced isochrone with an explicit date_time reflects live conditions and historical patterns. Traffic-influenced routing requires a Standard plan or higher.",{"@type":832,"name":846,"acceptedAnswer":847},"How is an isochrone request billed?",{"@type":834,"text":848},"Isochrone requests are billed as routing requests on the Stadia Maps API credit system. Contour count does not multiply the cost; one request with three contours is one billable request.",{"ogDescription":850,"title":5,"description":819},"An isochrone is a shape that shows everywhere you can reach from a point within a set time or distance.","learn\u002Fisochrones","Isochrone","A shape on a map showing everywhere reachable from a starting point within a set travel time or distance, given a mode of travel.","Cvnh1Onbi0Et3-kewENWLcHjEvTiJcGLv398AQCUGDw",[],1784097816443]