[{"data":1,"prerenderedAt":733},["ShallowReactive",2],{"footer-learn-links":3,"site-prefooter-cta":13,"learn-\u002Flearn\u002Freverse-geocoding\u002F":21,"related-learn-\u002Flearn\u002Freverse-geocoding\u002F":712,"learn-org-author":721},[4,7,10],{"title":5,"path":6},"What Is Reverse Geocoding?","\u002Flearn\u002Freverse-geocoding",{"title":8,"path":9},"What Is Geocoding?","\u002Flearn\u002Fgeocoding",{"title":11,"path":12},"What Is an Isochrone?","\u002Flearn\u002Fisochrones",{"id":14,"extension":15,"heading":16,"meta":17,"stem":18,"text":19,"__hash__":20},"site\u002Fsite\u002Fprefooter-cta.yml","yml","Business Outcomes That Fuel Your Growth",{},"site\u002Fprefooter-cta","With Stadia Maps, you build the solutions that matter. Logistics platforms provide accurate ETAs, fleet management apps reduce fuel costs, and emergency dispatch systems improve response times.","XztWiZDFyAC0XCoeYLLQrcyaVmP8uvGWALRS354c9I4",{"id":22,"title":5,"body":23,"category":595,"description":678,"extension":679,"head":680,"image":682,"imageAlt":683,"keywords":683,"meta":684,"modified":683,"navigation":685,"path":6,"published":686,"rawbody":687,"schemaOrg":688,"seo":707,"stem":708,"term":709,"termDescription":710,"__hash__":711},"learn\u002Flearn\u002Freverse-geocoding.md",{"type":24,"value":25,"toc":655},"minimark",[26,30,71,76,116,120,123,158,169,178,182,191,194,258,261,265,272,342,349,353,356,372,385,392,396,399,431,435,438,476,480,485,488,492,498,502,530,534,537,541,549,553,557,560,592,596,651],[27,28,5],"h1",{"id":29},"what-is-reverse-geocoding",[31,32,33,41,42,46,47,52,53,57,58,57,61,57,64,57,67,70],"p",{},[34,35,40],"a",{"href":36,"rel":37,"target":39},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FReverse_geocoding",[38],"external","_blank","Reverse geocoding"," is the process of converting a coordinate pair (latitude and longitude) into a human-readable address, place name, or administrative boundary. Also called coordinate lookup or address lookup from coordinates, reverse geocoding is what turns a GPS fix, a map click, or an IoT device ping into something a person can read. It is the counterpart to ",[34,43,45],{"href":44},"\u002Flearn\u002Fgeocoding\u002F","forward geocoding",", which goes the other direction (address to coordinates). The ",[34,48,51],{"href":49,"rel":50,"target":39},"https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Freverse-search\u002F",[38],"Stadia Maps Reverse Geocoding API"," can return the nearest address, the nearest point of interest, or the administrative context (",[54,55,56],"code",{},"neighbourhood",", ",[54,59,60],{},"locality",[54,62,63],{},"county",[54,65,66],{},"region",[54,68,69],{},"country",") for any point on Earth.",[72,73,75],"h2",{"id":74},"key-takeaways","Key Takeaways",[77,78,79,83,107,110,113],"ul",{},[80,81,82],"li",{},"Reverse geocoding converts coordinates into an address, place name, or administrative boundary.",[80,84,85,86,57,89,57,92,95,96,57,98,57,100,57,102,57,104,106],{},"The Stadia Maps Reverse Geocoding API supports fine-grained layers (",[54,87,88],{},"address",[54,90,91],{},"poi",[54,93,94],{},"street",") and coarse administrative layers (",[54,97,56],{},[54,99,60],{},[54,101,63],{},[54,103,66],{},[54,105,69],{},").",[80,108,109],{},"Coarse-layer requests return features that contain the point. Fine-layer requests return the nearest features by distance.",[80,111,112],{},"Postal codes are not a reverse-geocoding layer on the Stadia Maps API. Read them from the returned address instead.",[80,114,115],{},"Reverse geocoding is available on every Stadia Maps plan, and results can be stored permanently on Standard, Professional, and Enterprise plans.",[72,117,119],{"id":118},"how-reverse-geocoding-works","How Reverse Geocoding Works",[31,121,122],{},"Under the hood, reverse geocoding is a spatial search problem with two distinct modes.",[124,125,126,141],"ol",{},[80,127,128,132,133,57,135,137,138,140],{},[129,130,131],"strong",{},"Nearest-neighbor mode"," (for fine-grained layers like ",[54,134,88],{},[54,136,91],{},", and ",[54,139,94],{},"). The geocoder searches for the closest features to the coordinate and returns them sorted by distance.",[80,142,143,146,147,57,149,57,151,57,153,137,155,157],{},[129,144,145],{},"Point-in-polygon mode"," (for coarse administrative layers like ",[54,148,69],{},[54,150,66],{},[54,152,63],{},[54,154,60],{},[54,156,56],{},"). The geocoder returns the features whose boundaries contain the point.",[31,159,160,161,164,165,168],{},"The ",[34,162,51],{"href":49,"rel":163,"target":39},[38]," runs both modes from the same endpoint. Which behavior you get depends on the ",[54,166,167],{},"layers"," parameter you pass. Combined queries return a mixed result set.",[31,170,171,172,177],{},"Each result carries source attribution and a confidence score. See ",[34,173,176],{"href":174,"rel":175,"target":39},"https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fdetermining-result-quality\u002F",[38],"Determining Result Quality"," for how to read those signals.",[72,179,181],{"id":180},"what-are-layers-in-reverse-geocoding","What Are Layers in Reverse Geocoding?",[31,183,184,185,190],{},"Every place in the Stadia Maps geocoder is tagged with a ",[34,186,189],{"href":187,"rel":188,"target":39},"https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Flayers\u002F",[38],"layer"," that describes what kind of thing it is. Reverse geocoding uses layers in two ways: to filter what comes back, and to determine how the search is executed (nearest versus containing).",[31,192,193],{},"The layers most useful for reverse geocoding:",[77,195,196,203,214,221,228,235,250],{},[80,197,198,202],{},[129,199,200],{},[54,201,88],{},": A specific street address.",[80,204,205,209,210,213],{},[129,206,207],{},[54,208,91],{}," (or ",[54,211,212],{},"venue"," in v1): A business, building, or point of interest.",[80,215,216,220],{},[129,217,218],{},[54,219,94],{},": A road or street segment.",[80,222,223,227],{},[129,224,225],{},[54,226,56],{},": A social or administrative neighbourhood (note the British spelling).",[80,229,230,234],{},[129,231,232],{},[54,233,60],{},": A town, hamlet, or city.",[80,236,237,57,241,57,245,249],{},[129,238,239],{},[54,240,63],{},[129,242,243],{},[54,244,66],{},[129,246,247],{},[54,248,69],{},": Progressively larger administrative units.",[80,251,252,257],{},[129,253,254],{},[54,255,256],{},"coarse",": An alias that queries all administrative layers at once. Fast, useful when you only need context.",[31,259,260],{},"Postal codes are not used as a reverse-geocoding layer on the Stadia Maps API. If you need a postal code for a point, reverse geocode to the address layer and read the postal code from the result.",[72,262,264],{"id":263},"reverse-geocoding-parameters-that-matter","Reverse Geocoding Parameters That Matter",[31,266,160,267,271],{},[34,268,270],{"href":49,"rel":269,"target":39},[38],"Reverse Geocoding endpoint"," takes two required parameters and several optional ones that change the result set.",[77,273,274,288,295,318,326,334],{},[80,275,276,281,282,287],{},[129,277,278],{},[54,279,280],{},"point.lat"," and ",[129,283,284],{},[54,285,286],{},"point.lon",": The coordinate to reverse geocode. Both required.",[80,289,290,294],{},[129,291,292],{},[54,293,167],{},": Restrict the search to specific layers. Defaults to fine-grained layers when omitted.",[80,296,297,302,303,57,306,57,309,57,312,57,315,106],{},[129,298,299],{},[54,300,301],{},"sources",": Restrict to specific data sources (",[54,304,305],{},"openstreetmap",[54,307,308],{},"openaddresses",[54,310,311],{},"whosonfirst",[54,313,314],{},"geonames",[54,316,317],{},"foursquare",[80,319,320,325],{},[129,321,322],{},[54,323,324],{},"boundary.country",": Limit results to specific countries (ISO 2 or 3 character codes).",[80,327,328,333],{},[129,329,330],{},[54,331,332],{},"boundary.circle.radius",": For fine-grained queries, limit the search to a circle around the point. Defaults to 1km.",[80,335,336,341],{},[129,337,338],{},[54,339,340],{},"size",": Maximum number of results to return. Defaults to 10.",[31,343,344,345,348],{},"The most common tuning move is switching to ",[54,346,347],{},"layers=coarse"," for fast administrative-context lookups. That query type does not need to sort by distance and typically returns quickly.",[72,350,352],{"id":351},"how-do-you-reverse-geocode-a-coordinate","How Do You Reverse Geocode a Coordinate?",[31,354,355],{},"Here is what a reverse geocoding request to the Stadia Maps API looks like. This example reverses a point in Tallinn, Estonia.",[357,358,363],"pre",{"className":359,"code":360,"language":361,"meta":362,"style":362},"language-http shiki shiki-themes github-light","GET https:\u002F\u002Fapi.stadiamaps.com\u002Fgeocoding\u002Fv2\u002Freverse?point.lat=59.444351&point.lon=24.750645\n","http","",[54,364,365],{"__ignoreMap":362},[366,367,370],"span",{"class":368,"line":369},"line",1,[366,371,360],{},[31,373,374,375,378,379,384],{},"The response is a GeoJSON ",[54,376,377],{},"FeatureCollection",". Each feature includes the coordinates, parsed address components, layer, confidence score, and source attribution. Full response format details are in the ",[34,380,383],{"href":381,"rel":382,"target":39},"https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fapi-response-format\u002F",[38],"Common Response Format docs",".",[31,386,387,388,384],{},"For runnable code in TypeScript, Python, Kotlin, Swift, PHP, or cURL, see the ",[34,389,391],{"href":49,"rel":390,"target":39},[38],"Stadia Maps Reverse Geocoding API docs",[72,393,395],{"id":394},"where-reverse-geocoding-falls-short","Where Reverse Geocoding Falls Short",[31,397,398],{},"Reverse geocoding has real limits worth knowing before you build.",[77,400,401,407,413,419,425],{},[80,402,403,406],{},[129,404,405],{},"Coordinates in ambiguous places produce ambiguous results."," A point inside a parking lot, an office park, or a large building can return the parent property, a neighboring address, or nothing useful. Always check the layer and confidence of the top result.",[80,408,409,412],{},[129,410,411],{},"Coordinates over water or wilderness are best effort."," Reverse geocoding returns the nearest feature; if that feature is 20km away, the result is a geographic fact, not an address.",[80,414,415,418],{},[129,416,417],{},"Coarse and fine results answer different questions."," \"What city is this in?\" (coarse, point-in-polygon) and \"What is the nearest street address?\" (fine, nearest-neighbor) look similar but return different shapes of answer. Pick the layer that matches the question.",[80,420,421,424],{},[129,422,423],{},"Postal codes are not a reverse-geocoding layer."," As noted above, read them from the returned address rather than querying them directly.",[80,426,427,430],{},[129,428,429],{},"Two providers rarely agree exactly."," Different providers use different data, different scoring, and different tie-breaking logic. Standardize on one provider to keep your product consistent.",[72,432,434],{"id":433},"common-reverse-geocoding-use-cases","Common Reverse Geocoding Use Cases",[31,436,437],{},"Reverse geocoding appears wherever a product has coordinates but needs to display something a human can read.",[77,439,440,446,452,458,464,470],{},[80,441,442,445],{},[129,443,444],{},"Delivery and ride-share pickup."," A driver's phone reports GPS coordinates. The app reverses those coordinates to display the pickup address to the passenger.",[80,447,448,451],{},[129,449,450],{},"Emergency response."," A 911 call carries GPS coordinates. Reverse geocoding turns those into a street address for the dispatcher.",[80,453,454,457],{},[129,455,456],{},"Photo and content tagging."," Add city, region, and country tags to photos or posts based on where they were captured.",[80,459,460,463],{},[129,461,462],{},"IoT and connected devices."," A sensor pings its location periodically; reverse geocoding turns that into a place the operator recognizes.",[80,465,466,469],{},[129,467,468],{},"Location-aware AI and agents."," Give an agent the ability to answer \"Where am I?\" or \"What neighborhood is this?\" from raw coordinates.",[80,471,472,475],{},[129,473,474],{},"Analytics and segmentation."," Roll up event coordinates to city, region, or country for cohort analysis without asking the user for input.",[72,477,479],{"id":478},"frequently-asked-questions","Frequently Asked Questions",[481,482,484],"h3",{"id":483},"what-is-reverse-geocoding-used-for","What is reverse geocoding used for?",[31,486,487],{},"Reverse geocoding is used to convert a coordinate pair into a human-readable address, place name, or administrative boundary. Common uses include showing a rider's pickup address from GPS coordinates, powering nearby-place suggestions in delivery apps, tagging photos with a location, and identifying which city, county, or country a point falls within.",[481,489,491],{"id":490},"what-is-the-difference-between-reverse-geocoding-and-forward-geocoding","What is the difference between reverse geocoding and forward geocoding?",[31,493,494,495,497],{},"Forward geocoding converts an address or place name into coordinates. Reverse geocoding does the opposite: it converts coordinates into an address or nearby place. See ",[34,496,8],{"href":44}," for a full explanation of the forward direction; products that combine both are common.",[481,499,501],{"id":500},"what-layers-can-reverse-geocoding-return-on-stadia-maps","What layers can reverse geocoding return on Stadia Maps?",[31,503,504,505,57,507,57,509,511,512,57,514,57,516,57,518,57,520,522,523,525,526,384],{},"The Stadia Maps reverse geocoding endpoint can return fine-grained layers (",[54,506,88],{},[54,508,91],{},[54,510,94],{},") or coarse administrative layers (",[54,513,56],{},[54,515,60],{},[54,517,63],{},[54,519,66],{},[54,521,69],{},"). Use the ",[54,524,167],{}," parameter to restrict results. Coarse layers return features that contain the point; fine layers return the nearest features by distance. Full list in the ",[34,527,529],{"href":187,"rel":528,"target":39},[38],"Layers documentation",[481,531,533],{"id":532},"can-i-reverse-geocode-to-a-postal-code","Can I reverse geocode to a postal code?",[31,535,536],{},"Not directly. Postal codes are not used as a reverse geocoding layer on the Stadia Maps API. If you need a postal code for a coordinate, use reverse geocoding to retrieve the address and read the postal code from that result.",[481,538,540],{"id":539},"how-much-does-a-reverse-geocoding-request-cost-on-stadia-maps","How much does a reverse geocoding request cost on Stadia Maps?",[31,542,543,544,548],{},"Reverse geocoding requests are billed from the unified ",[34,545,547],{"href":546},"\u002Fpricing\u002F","Stadia Maps API"," credit pool, the same pool that covers forward geocoding, routing, and tiles. Each reverse geocoding request is a single billable request.",[72,550,552],{"id":551},"where-to-go-next","Where to Go Next",[481,554,556],{"id":555},"from-the-blog","From the Blog",[31,558,559],{},"More on geocoding and search from the Stadia Maps blog:",[77,561,562,568,574,580,586],{},[80,563,564],{},[34,565,567],{"href":566},"\u002Fblog\u002Fwhy-is-your-geocoding-bill-higher-than-it-should-be\u002F","The Hidden Cost of Search: Why Your Geocoding Bill Is Higher Than It Should Be",[80,569,570],{},[34,571,573],{"href":572},"\u002Fblog\u002Fopen-data-geocoding-global-search\u002F","The Open Data Superpower: Why Global Search Is Moving Beyond Proprietary Silos",[80,575,576],{},[34,577,579],{"href":578},"\u002Fblog\u002Fprecision-meets-privacy-consumer-search-experience\u002F","Precision Meets Privacy: Elevating the Consumer Search Experience",[80,581,582],{},[34,583,585],{"href":584},"\u002Fblog\u002F75-million-more-addresses-geocoding-precision\u002F","75 Million More Addresses: Expanding Geocoding Precision",[80,587,588],{},[34,589,591],{"href":590},"\u002Fblog\u002Fintroducing-stadia-maps-geocoding-search-v2\u002F","Introducing Geocoding & Search v2",[481,593,595],{"id":594},"geocoding-search","Geocoding & Search",[77,597,598,603,610,616,624,630,637,644],{},[80,599,600,602],{},[34,601,8],{"href":44}," for the forward direction and a full geocoding overview",[80,604,605,609],{},[34,606,608],{"href":49,"rel":607,"target":39},[38],"Reverse Geocoding API reference"," for the full parameter set",[80,611,612,615],{},[34,613,529],{"href":187,"rel":614,"target":39},[38]," for the full list of returnable place types",[80,617,618,623],{},[34,619,622],{"href":620,"rel":621,"target":39},"https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fsources\u002F",[38],"Sources documentation",": the five open data providers behind the API",[80,625,626,629],{},[34,627,176],{"href":174,"rel":628,"target":39},[38],": how to read confidence and layer signals",[80,631,632],{},[34,633,636],{"href":634,"rel":635,"target":39},"https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fsearch\u002F",[38],"Forward Geocoding API reference",[80,638,639],{},[34,640,643],{"href":641,"rel":642,"target":39},"https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fautocomplete\u002F",[38],"Autocomplete Search API reference",[80,645,646,650],{},[34,647,649],{"href":648},"\u002Fproducts\u002Fgeocoding-search\u002Fgeocoding\u002F","Geocoding product page"," and pricing tiers",[652,653,654],"style",{},"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":362,"searchDepth":656,"depth":656,"links":657},4,[658,660,661,662,663,664,665,666,674],{"id":74,"depth":659,"text":75},2,{"id":118,"depth":659,"text":119},{"id":180,"depth":659,"text":181},{"id":263,"depth":659,"text":264},{"id":351,"depth":659,"text":352},{"id":394,"depth":659,"text":395},{"id":433,"depth":659,"text":434},{"id":478,"depth":659,"text":479,"children":667},[668,670,671,672,673],{"id":483,"depth":669,"text":484},3,{"id":490,"depth":669,"text":491},{"id":500,"depth":669,"text":501},{"id":532,"depth":669,"text":533},{"id":539,"depth":669,"text":540},{"id":551,"depth":659,"text":552,"children":675},[676,677],{"id":555,"depth":669,"text":556},{"id":594,"depth":669,"text":595},"Reverse geocoding converts coordinates into an address or nearby place. Learn how it handles administrative layers and how to build one with Stadia Maps.","md",{"script":681},[],"\u002Fimages\u002Fog\u002Fwhat-is-reverse-geocoding.png",null,{},true,"2026-07-16","---\ntitle: What Is Reverse Geocoding?\ndescription: Reverse geocoding converts coordinates into an address or nearby place. Learn how it handles administrative layers and how to build one with Stadia Maps.\ncategory: Geocoding & Search\nimage: \u002Fimages\u002Fog\u002Fwhat-is-reverse-geocoding.png\nhead:\n  script: []\npublished: 2026-07-16\nschemaOrg:\n  - \"@type\": FAQPage\n    mainEntity:\n      - \"@type\": Question\n        name: What is reverse geocoding used for?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: Reverse geocoding is used to convert a coordinate pair into a human-readable address, place name, or administrative boundary. Common uses include showing a rider's pickup address from GPS coordinates, powering nearby-place suggestions in delivery apps, tagging photos with a location, and identifying which city, county, or country a point falls within.\n      - \"@type\": Question\n        name: What is the difference between reverse geocoding and forward geocoding?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: \"Forward geocoding converts an address or place name into coordinates. Reverse geocoding does the opposite: it converts coordinates into an address or nearby place. Products that combine both directions are common.\"\n      - \"@type\": Question\n        name: What layers can reverse geocoding return on Stadia Maps?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: The Stadia Maps reverse geocoding endpoint can return fine-grained layers (address, poi, street) or coarse administrative layers (neighbourhood, locality, county, region, country). Use the layers parameter to restrict results. Coarse layers return features that contain the point; fine layers return the nearest features by distance.\n      - \"@type\": Question\n        name: Can I reverse geocode to a postal code?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: Not directly. Postal codes are not used as a reverse geocoding layer on the Stadia Maps API. If you need a postal code for a coordinate, use reverse geocoding to retrieve the address and read the postal code from that result.\n      - \"@type\": Question\n        name: How much does a reverse geocoding request cost on Stadia Maps?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: Reverse geocoding requests are billed from the unified Stadia Maps API credit pool, the same pool that covers forward geocoding, routing, and tiles. Each reverse geocoding request is a single billable request.\nterm: Reverse Geocoding\ntermDescription: The process of converting a coordinate pair into a human-readable address or place.\n---\n\n# What Is Reverse Geocoding?\n\n[Reverse geocoding](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FReverse_geocoding) is the process of converting a coordinate pair (latitude and longitude) into a human-readable address, place name, or administrative boundary. Also called coordinate lookup or address lookup from coordinates, reverse geocoding is what turns a GPS fix, a map click, or an IoT device ping into something a person can read. It is the counterpart to [forward geocoding](\u002Flearn\u002Fgeocoding\u002F), which goes the other direction (address to coordinates). The [Stadia Maps Reverse Geocoding API](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Freverse-search\u002F) can return the nearest address, the nearest point of interest, or the administrative context (`neighbourhood`, `locality`, `county`, `region`, `country`) for any point on Earth.\n\n## Key Takeaways\n\n- Reverse geocoding converts coordinates into an address, place name, or administrative boundary.\n- The Stadia Maps Reverse Geocoding API supports fine-grained layers (`address`, `poi`, `street`) and coarse administrative layers (`neighbourhood`, `locality`, `county`, `region`, `country`).\n- Coarse-layer requests return features that contain the point. Fine-layer requests return the nearest features by distance.\n- Postal codes are not a reverse-geocoding layer on the Stadia Maps API. Read them from the returned address instead.\n- Reverse geocoding is available on every Stadia Maps plan, and results can be stored permanently on Standard, Professional, and Enterprise plans.\n\n## How Reverse Geocoding Works\n\nUnder the hood, reverse geocoding is a spatial search problem with two distinct modes.\n\n1. **Nearest-neighbor mode** (for fine-grained layers like `address`, `poi`, and `street`). The geocoder searches for the closest features to the coordinate and returns them sorted by distance.\n2. **Point-in-polygon mode** (for coarse administrative layers like `country`, `region`, `county`, `locality`, and `neighbourhood`). The geocoder returns the features whose boundaries contain the point.\n\nThe [Stadia Maps Reverse Geocoding API](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Freverse-search\u002F) runs both modes from the same endpoint. Which behavior you get depends on the `layers` parameter you pass. Combined queries return a mixed result set.\n\nEach result carries source attribution and a confidence score. See [Determining Result Quality](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fdetermining-result-quality\u002F) for how to read those signals.\n\n## What Are Layers in Reverse Geocoding?\n\nEvery place in the Stadia Maps geocoder is tagged with a [layer](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Flayers\u002F) that describes what kind of thing it is. Reverse geocoding uses layers in two ways: to filter what comes back, and to determine how the search is executed (nearest versus containing).\n\nThe layers most useful for reverse geocoding:\n\n- **`address`**: A specific street address.\n- **`poi`** (or `venue` in v1): A business, building, or point of interest.\n- **`street`**: A road or street segment.\n- **`neighbourhood`**: A social or administrative neighbourhood (note the British spelling).\n- **`locality`**: A town, hamlet, or city.\n- **`county`**, **`region`**, **`country`**: Progressively larger administrative units.\n- **`coarse`**: An alias that queries all administrative layers at once. Fast, useful when you only need context.\n\nPostal codes are not used as a reverse-geocoding layer on the Stadia Maps API. If you need a postal code for a point, reverse geocode to the address layer and read the postal code from the result.\n\n## Reverse Geocoding Parameters That Matter\n\nThe [Reverse Geocoding endpoint](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Freverse-search\u002F) takes two required parameters and several optional ones that change the result set.\n\n- **`point.lat`** and **`point.lon`**: The coordinate to reverse geocode. Both required.\n- **`layers`**: Restrict the search to specific layers. Defaults to fine-grained layers when omitted.\n- **`sources`**: Restrict to specific data sources (`openstreetmap`, `openaddresses`, `whosonfirst`, `geonames`, `foursquare`).\n- **`boundary.country`**: Limit results to specific countries (ISO 2 or 3 character codes).\n- **`boundary.circle.radius`**: For fine-grained queries, limit the search to a circle around the point. Defaults to 1km.\n- **`size`**: Maximum number of results to return. Defaults to 10.\n\nThe most common tuning move is switching to `layers=coarse` for fast administrative-context lookups. That query type does not need to sort by distance and typically returns quickly.\n\n## How Do You Reverse Geocode a Coordinate?\n\nHere is what a reverse geocoding request to the Stadia Maps API looks like. This example reverses a point in Tallinn, Estonia.\n\n```http\nGET https:\u002F\u002Fapi.stadiamaps.com\u002Fgeocoding\u002Fv2\u002Freverse?point.lat=59.444351&point.lon=24.750645\n```\n\nThe response is a GeoJSON `FeatureCollection`. Each feature includes the coordinates, parsed address components, layer, confidence score, and source attribution. Full response format details are in the [Common Response Format docs](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fapi-response-format\u002F).\n\nFor runnable code in TypeScript, Python, Kotlin, Swift, PHP, or cURL, see the [Stadia Maps Reverse Geocoding API docs](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Freverse-search\u002F).\n\n## Where Reverse Geocoding Falls Short\n\nReverse geocoding has real limits worth knowing before you build.\n\n- **Coordinates in ambiguous places produce ambiguous results.** A point inside a parking lot, an office park, or a large building can return the parent property, a neighboring address, or nothing useful. Always check the layer and confidence of the top result.\n- **Coordinates over water or wilderness are best effort.** Reverse geocoding returns the nearest feature; if that feature is 20km away, the result is a geographic fact, not an address.\n- **Coarse and fine results answer different questions.** \"What city is this in?\" (coarse, point-in-polygon) and \"What is the nearest street address?\" (fine, nearest-neighbor) look similar but return different shapes of answer. Pick the layer that matches the question.\n- **Postal codes are not a reverse-geocoding layer.** As noted above, read them from the returned address rather than querying them directly.\n- **Two providers rarely agree exactly.** Different providers use different data, different scoring, and different tie-breaking logic. Standardize on one provider to keep your product consistent.\n\n## Common Reverse Geocoding Use Cases\n\nReverse geocoding appears wherever a product has coordinates but needs to display something a human can read.\n\n- **Delivery and ride-share pickup.** A driver's phone reports GPS coordinates. The app reverses those coordinates to display the pickup address to the passenger.\n- **Emergency response.** A 911 call carries GPS coordinates. Reverse geocoding turns those into a street address for the dispatcher.\n- **Photo and content tagging.** Add city, region, and country tags to photos or posts based on where they were captured.\n- **IoT and connected devices.** A sensor pings its location periodically; reverse geocoding turns that into a place the operator recognizes.\n- **Location-aware AI and agents.** Give an agent the ability to answer \"Where am I?\" or \"What neighborhood is this?\" from raw coordinates.\n- **Analytics and segmentation.** Roll up event coordinates to city, region, or country for cohort analysis without asking the user for input.\n\n## Frequently Asked Questions\n\n### What is reverse geocoding used for?\n\nReverse geocoding is used to convert a coordinate pair into a human-readable address, place name, or administrative boundary. Common uses include showing a rider's pickup address from GPS coordinates, powering nearby-place suggestions in delivery apps, tagging photos with a location, and identifying which city, county, or country a point falls within.\n\n### What is the difference between reverse geocoding and forward geocoding?\n\nForward geocoding converts an address or place name into coordinates. Reverse geocoding does the opposite: it converts coordinates into an address or nearby place. See [What Is Geocoding?](\u002Flearn\u002Fgeocoding\u002F) for a full explanation of the forward direction; products that combine both are common.\n\n### What layers can reverse geocoding return on Stadia Maps?\n\nThe Stadia Maps reverse geocoding endpoint can return fine-grained layers (`address`, `poi`, `street`) or coarse administrative layers (`neighbourhood`, `locality`, `county`, `region`, `country`). Use the `layers` parameter to restrict results. Coarse layers return features that contain the point; fine layers return the nearest features by distance. Full list in the [Layers documentation](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Flayers\u002F).\n\n### Can I reverse geocode to a postal code?\n\nNot directly. Postal codes are not used as a reverse geocoding layer on the Stadia Maps API. If you need a postal code for a coordinate, use reverse geocoding to retrieve the address and read the postal code from that result.\n\n### How much does a reverse geocoding request cost on Stadia Maps?\n\nReverse geocoding requests are billed from the unified [Stadia Maps API](\u002Fpricing\u002F) credit pool, the same pool that covers forward geocoding, routing, and tiles. Each reverse geocoding request is a single billable request.\n\n## Where to Go Next\n\n### From the Blog\n\nMore on geocoding and search from the Stadia Maps blog:\n\n- [The Hidden Cost of Search: Why Your Geocoding Bill Is Higher Than It Should Be](\u002Fblog\u002Fwhy-is-your-geocoding-bill-higher-than-it-should-be\u002F)\n- [The Open Data Superpower: Why Global Search Is Moving Beyond Proprietary Silos](\u002Fblog\u002Fopen-data-geocoding-global-search\u002F)\n- [Precision Meets Privacy: Elevating the Consumer Search Experience](\u002Fblog\u002Fprecision-meets-privacy-consumer-search-experience\u002F)\n- [75 Million More Addresses: Expanding Geocoding Precision](\u002Fblog\u002F75-million-more-addresses-geocoding-precision\u002F)\n- [Introducing Geocoding & Search v2](\u002Fblog\u002Fintroducing-stadia-maps-geocoding-search-v2\u002F)\n\n### Geocoding & Search\n\n- [What Is Geocoding?](\u002Flearn\u002Fgeocoding\u002F) for the forward direction and a full geocoding overview\n- [Reverse Geocoding API reference](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Freverse-search\u002F) for the full parameter set\n- [Layers documentation](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Flayers\u002F) for the full list of returnable place types\n- [Sources documentation](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fsources\u002F): the five open data providers behind the API\n- [Determining Result Quality](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fdetermining-result-quality\u002F): how to read confidence and layer signals\n- [Forward Geocoding API reference](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fsearch\u002F)\n- [Autocomplete Search API reference](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fautocomplete\u002F)\n- [Geocoding product page](\u002Fproducts\u002Fgeocoding-search\u002Fgeocoding\u002F) and pricing tiers\n",[689],{"@type":690,"mainEntity":691},"FAQPage",[692,696,699,702,704],{"@type":693,"name":484,"acceptedAnswer":694},"Question",{"@type":695,"text":487},"Answer",{"@type":693,"name":491,"acceptedAnswer":697},{"@type":695,"text":698},"Forward geocoding converts an address or place name into coordinates. Reverse geocoding does the opposite: it converts coordinates into an address or nearby place. Products that combine both directions are common.",{"@type":693,"name":501,"acceptedAnswer":700},{"@type":695,"text":701},"The Stadia Maps reverse geocoding endpoint can return fine-grained layers (address, poi, street) or coarse administrative layers (neighbourhood, locality, county, region, country). Use the layers parameter to restrict results. Coarse layers return features that contain the point; fine layers return the nearest features by distance.",{"@type":693,"name":533,"acceptedAnswer":703},{"@type":695,"text":536},{"@type":693,"name":540,"acceptedAnswer":705},{"@type":695,"text":706},"Reverse geocoding requests are billed from the unified Stadia Maps API credit pool, the same pool that covers forward geocoding, routing, and tiles. Each reverse geocoding request is a single billable request.",{"title":5,"description":678},"learn\u002Freverse-geocoding","Reverse Geocoding","The process of converting a coordinate pair into a human-readable address or place.","01bFhYJZ5fuz333fTSWdA-We0cpFxoADm9Jpr-1XvBs",[713,717],{"title":8,"description":714,"path":9,"published":715,"category":595,"rawbody":716},"Learn how geocoding works, where the data comes from, and how to use the Stadia Maps Geocoding API.","2026-07-14","---\ntitle: What Is Geocoding?\ndescription: Learn how geocoding works, where the data comes from, and how to use the Stadia Maps Geocoding API.\ncategory: Geocoding & Search\nhead:\n  script: []\nimage: \u002Fimages\u002Fog\u002Fwhat-is-geocoding.png\npublished: 2026-07-14\nschemaOrg:\n  - \"@type\": FAQPage\n    mainEntity:\n      - \"@type\": Question\n        name: What is address geocoding?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: Address geocoding is the process of converting a street address or place name into geographic coordinates (latitude and longitude). It is the primary way products bridge between human-readable location input and machine-readable spatial data. The Stadia Maps Geocoding API handles address geocoding through its forward geocoding, structured geocoding, and autocomplete endpoints.\n      - \"@type\": Question\n        name: What is the difference between geocoding and reverse geocoding?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: \"Geocoding (forward geocoding) converts an address or place name into coordinates. Reverse geocoding does the opposite: it converts coordinates into an address or place. Products that combine both directions are common.\"\n      - \"@type\": Question\n        name: What data sources does the Stadia Maps Geocoding API use?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: \"The Stadia Maps Geocoding API queries five documented open sources: OpenStreetMap for global roads and points of interest, OpenAddresses for authoritative government address data, Who's On First for administrative places, GeoNames for populated places and natural features, and Foursquare Open Source Places for business and venue data.\"\n      - \"@type\": Question\n        name: Can I store geocoded addresses permanently on Stadia Maps?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: Yes. With a Standard, Professional, or Enterprise subscription, geocoded results can be stored permanently in your own database. Most competitor APIs charge a premium to allow storage.\n      - \"@type\": Question\n        name: How much does a geocoding request cost on Stadia Maps?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: Geocoding requests are billed from a unified credit pool on the Stadia Maps API, the same pool that covers routing, tiles, and other endpoints. Forward, reverse, structured, and autocomplete requests are each single billable requests. Bulk geocoding is billed per address in the batch.\nterm: Geocoding\ntermDescription: The process of converting an address, place name, or point of interest into geographic coordinates.\n---\n\n# What Is Geocoding?\n\n[Geocoding](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAddress_geocoding) is the process of converting an address, place name, or point of interest into geographic coordinates (latitude and longitude). Also called address geocoding, address lookup, or place search, geocoding is the foundation of any product that needs to bridge human-readable places and machine-readable coordinates. Reverse geocoding does the opposite: it takes a coordinate pair and returns the nearest place. The [Stadia Maps Geocoding API](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Foverview\u002F) handles both directions, along with structured, bulk, and autocomplete variants, and draws on a documented set of open data sources so the provenance of every result is inspectable.\n\n## Key Takeaways\n\n- Geocoding converts a human-readable address or place name into geographic coordinates (latitude and longitude). Reverse geocoding does the opposite.\n- Geocoding quality depends on the underlying data. The Stadia Maps Geocoding API documents its five sources: OpenStreetMap, OpenAddresses, Who's On First, GeoNames, and Foursquare Open Source Places.\n- One credit pool covers forward, reverse, structured, bulk, and autocomplete variants. Pick the endpoint that matches the input shape.\n- Accuracy varies by country. Build a confidence check into any product that geocodes internationally.\n- Stadia Maps permits permanent storage of geocoded results on Standard, Professional, and Enterprise plans without a per-request surcharge.\n\n## Forward vs. Reverse Geocoding\n\nGeocoding has a direction. Every product decision that involves it starts with picking the right one.\n\n- **Forward geocoding** takes a string like `Pärnu mnt 388b` and returns coordinates like `59.381096, 24.661382`. Used for search bars, address forms, and any workflow where a user or dataset knows the place name and needs the location.\n- **Reverse geocoding** takes coordinates like `59.381096, 24.661382` and returns the nearest known place. Used when the input is a GPS fix, a map click, or an IoT device pinging its location.\n\nSome products need both. A ride-share driver's phone reverses their coordinates to display an address; the passenger's app forward-geocodes a destination string to route to it. The [Stadia Maps Geocoding API](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Foverview\u002F) exposes separate endpoints for each direction, plus specialized ones for autocomplete, structured input, and bulk processing.\n\n## How Geocoding Actually Works\n\nUnder the hood, a geocoder is a chain of parsing, matching, scoring, and ranking decisions. The steps look roughly like this:\n\n1. **Parse the input.** Break the query into components (house number, street, city, postal code, country, place type).\n2. **Search candidate records.** Query the underlying database for matches across the relevant data sources and layers.\n3. **Score candidates.** Rank by string similarity, geographic focus, layer priority, and boundary constraints.\n4. **Interpolate when necessary.** For addresses that do not exist verbatim in the database, the geocoder can estimate the location by interpolating along the street segment. Not every geocoder does this. The Stadia Maps [Forward Geocoding endpoint](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fsearch\u002F) does.\n5. **Return the best matches** with a confidence score and full attribution so the caller can decide what to trust.\n\nThe details of each step vary by provider, which is why two geocoders can return different results for the same query. Understanding this pipeline is the difference between debugging a geocoding bug in an hour and shipping a workaround that quietly returns the wrong city for 3% of your users.\n\n## What Data Sources Does a Geocoder Use?\n\nEvery geocoder is only as good as the data it searches. The Stadia Maps Geocoding API is transparent about what it queries; the [full source list](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fsources\u002F) is documented and each result carries attribution back to its origin.\n\n- [**OpenStreetMap**](https:\u002F\u002Fwww.openstreetmap.org\u002F) provides the primary global coverage for roads, addresses, and points of interest. Community-maintained and open.\n- [**OpenAddresses**](https:\u002F\u002Fopenaddresses.io\u002F) aggregates authoritative address data from government and public sources worldwide. Stadia Maps sponsors OpenAddresses.\n- [**Who's On First**](https:\u002F\u002Fwhosonfirst.org\u002F) provides a global gazetteer of administrative places (countries, regions, counties, localities, neighborhoods). Used for hierarchy and reverse geocoding at the boundary level.\n- [**GeoNames**](https:\u002F\u002Fwww.geonames.org\u002F) adds populated places, natural features, and administrative fill-in for parts of the world where OSM coverage is thinner.\n- [**Foursquare Open Source Places**](https:\u002F\u002Fdocs.foursquare.com\u002Fdata-products\u002Fdocs\u002Ffsq-places-open-source) contributes point-of-interest data for businesses and venues.\n\nFiltering the `sources` parameter lets you constrain results to a subset when you want to control what backs your search. That is a real feature; most competitor APIs treat their data provenance as a trade secret.\n\n## Key Geocoding API Parameters\n\nThe forward geocoding endpoint takes one required parameter (`text`) and several optional ones that dramatically change what you get back. Full details in the [Forward Geocoding docs](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fsearch\u002F).\n\n- **`text`**: The place name or address. Required.\n- **`focus.point.lat` \u002F `focus.point.lon`**: Bias results toward a focus point. Use the user's map center or their known location to prefer nearby matches.\n- **`boundary.rect.*`, `boundary.circle.*`, `boundary.country`, `boundary.gid`**: Hard limits on where results can appear. Use these when your product only operates in specific regions.\n- **`layers`**: Restrict to specific data layers (`address`, `venue`, `postalcode`, `country`, and more). Fewer layers means faster, more relevant results.\n- **`sources`**: Restrict to specific data sources (`openstreetmap`, `openaddresses`, `whosonfirst`, `geonames`, `foursquare`). Useful when you want, for example, only address-authoritative sources for a shipping form.\n- **`size`**: Maximum number of results to return. Default is 10.\n- **`lang`**: A BCP47 language tag for localized results.\n\nThe single most common mistake is over-constraining. If your first query returns nothing, drop a boundary or a layer filter before assuming the geocoder is broken.\n\n## Why Geocoding Accuracy Varies by Country\n\nGeocoding quality is not uniform globally. Address density, government data availability, and OSM coverage all vary by country. This is a factual limitation that competitor \"what is geocoding\" pages tend to skip.\n\nSome patterns worth knowing:\n\n- **North America and Western Europe** have deep coverage across OSM, OpenAddresses, and Who's On First. Interpolation fills in most missing house numbers along known streets.\n- **Japan and parts of East Asia** use non-linear addressing systems that do not map cleanly to street-and-number geocoders. Structured input helps a lot here; see the [Structured Geocoding endpoint](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fstructured-search\u002F).\n- **Rapidly growing cities** in South Asia, Southeast Asia, and Africa may have addresses that exist physically but are not yet in any data source. Fuzzy matching and community-driven OSM contributions close the gap over time; expect variance.\n- **Rural and remote areas** everywhere degrade gracefully to the nearest named place rather than an exact street number.\n\nIf your product operates internationally, build in a confidence check (see the [Determining Result Quality docs](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fdetermining-result-quality\u002F)) and design a fallback UX for low-confidence matches. Do not assume the same accuracy in every market.\n\n## How Do You Geocode an Address?\n\nHere is what a forward geocoding request to the Stadia Maps Geocoding API looks like. This example geocodes an address in Tallinn, Estonia.\n\n```http\nGET https:\u002F\u002Fapi.stadiamaps.com\u002Fgeocoding\u002Fv1\u002Fsearch?text=P%C3%B5hja+pst+27\n```\n\nThe response is a GeoJSON `FeatureCollection`. Each feature carries the coordinates, the parsed address components, a confidence score, and source attribution. Full response format details are in the [Common Response Format docs](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fapi-response-format\u002F).\n\nFor runnable code in TypeScript, Python, Kotlin, Swift, PHP, or cURL, see the [Stadia Maps Forward Geocoding API docs](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fsearch\u002F).\n\n## Structured vs. Bulk vs. Autocomplete Geocoding\n\nForward geocoding is not always the right endpoint. The [Geocoding & Search overview](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Foverview\u002F) breaks down when to use each variant.\n\n- **Building an interactive search-as-you-type experience?** Use the [Autocomplete endpoint](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fautocomplete\u002F). It is optimized for partial input and faster response times.\n- **Working with pre-parsed address components** (`house_number`, `street`, `city`, `region`, `postalcode`, `country`)? Use [Structured Geocoding](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fstructured-search\u002F). It takes the guesswork out of string parsing and improves accuracy for postal addresses, especially internationally.\n- **Processing thousands of addresses at once?** Use [Bulk Geocoding](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fbulk-geocoding-search\u002F). Up to 5,000 queries per request.\n- **Reversing coordinates back to a place?** Use the [Reverse Geocoding endpoint](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Freverse-search\u002F).\n\n## Where Geocoding Falls Short\n\nGeocoding has real limits. A page that pretends otherwise is not being honest with the reader.\n\n- **A geocoder is not an address validator.** It returns the best match it can find. If your user typed a nonexistent address, the geocoder will often return a nearest-street-segment interpolation rather than an error. Check the confidence score and layer type on every result before treating it as authoritative.\n- **Autocomplete and forward geocoding are not interchangeable.** Autocomplete is optimized for speed on partial input; forward geocoding is optimized for accuracy on complete input. Using one where the other belongs produces bad UX or bad results.\n- **Interpolated addresses are estimates, not guarantees.** The result may be tens of meters off the actual building, or on the wrong side of the street. For delivery-critical use cases, verify with a follow-up reverse geocode or with authoritative sources.\n- **Two providers rarely agree exactly.** Different providers use different data sources, different scoring, and different parsers. Pick one and standardize within your own product to avoid inconsistencies.\n- **You may or may not be allowed to store results.** Most vendors charge extra to persist geocoding results in your own database. Stadia Maps allows permanent storage on the Standard, Professional, and Enterprise plans without a surcharge; see the [terms of service](https:\u002F\u002Fstadiamaps.com\u002Fterms-of-service\u002F) for details.\n\n## Common Geocoding Use Cases\n\nGeocoding shows up anywhere a product needs to move between human-readable places and machine-readable coordinates. A partial list:\n\n- **Address forms and checkout flows.** Convert a user-entered shipping address to coordinates for downstream routing, delivery-zone checks, or tax calculation.\n- **Store locator and site finder.** Take a user's zip code or city and center the map on the corresponding coordinates.\n- **Lead enrichment and CRM cleanup.** Bulk-geocode a customer list to enable geographic segmentation, territory analysis, or field-sales routing.\n- **Logistics and last-mile delivery.** Convert delivery addresses to coordinates for isochrone-based service-area decisions or routing.\n- **Real estate search.** Geocode a listing's address to place it on a map and enable spatial queries.\n- **Location-aware AI and agents.** Give an LLM or agent the ability to translate free-text user requests (\"a coffee shop near Union Square\") into structured coordinates for a follow-up API call.\n\n## Frequently Asked Questions\n\n### What is address geocoding?\n\nAddress geocoding is the process of converting a street address or place name into geographic coordinates (latitude and longitude). It is the primary way products bridge between human-readable location input and machine-readable spatial data. The [Stadia Maps Geocoding API](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Foverview\u002F) handles address geocoding through its forward geocoding, structured geocoding, and autocomplete endpoints.\n\n### What is the difference between geocoding and reverse geocoding?\n\nGeocoding (forward geocoding) converts an address or place name into coordinates. Reverse geocoding does the opposite: it converts coordinates into an address or place. Products that combine both directions are common. For example, a user types a destination (forward geocoded) and a driver's phone shows the address of their current GPS position (reverse geocoded).\n\n### What data sources does the Stadia Maps Geocoding API use?\n\nThe Stadia Maps Geocoding API queries five documented open sources: [OpenStreetMap](https:\u002F\u002Fwww.openstreetmap.org\u002F) for global roads and points of interest, [OpenAddresses](https:\u002F\u002Fopenaddresses.io\u002F) for authoritative government address data, [Who's On First](https:\u002F\u002Fwhosonfirst.org\u002F) for administrative places, [GeoNames](https:\u002F\u002Fwww.geonames.org\u002F) for populated places and natural features, and [Foursquare Open Source Places](https:\u002F\u002Fdocs.foursquare.com\u002Fdata-products\u002Fdocs\u002Ffsq-places-open-source) for business and venue data. Every result carries attribution back to its source; see the [Sources documentation](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fsources\u002F) for the full list.\n\n### Can I store geocoded addresses permanently on Stadia Maps?\n\nYes, with a Standard, Professional, or Enterprise subscription, geocoded results can be stored permanently in your own database. Most competitor APIs charge a premium (often 10x the standard request price) to allow storage. See the [Stadia Maps terms of service](https:\u002F\u002Fstadiamaps.com\u002Fterms-of-service\u002F) for the full policy.\n\n### How much does a geocoding request cost on Stadia Maps?\n\nGeocoding requests are billed from a unified credit pool on the [Stadia Maps API](\u002Fpricing\u002F), the same pool that covers routing, tiles, and other endpoints. Forward, reverse, structured, and autocomplete requests are each single billable requests. Bulk geocoding is billed per address in the batch. See the pricing page for plan tiers and credit allocations.\n\n## Where to Go Next\n\n### From the Blog\n\nMore on geocoding from the Stadia Maps blog:\n\n- [The Open Data Superpower: Why Global Search is Moving Beyond Proprietary Silos](\u002Fblog\u002Fopen-data-geocoding-global-search\u002F)\n- [Precision Meets Privacy: Elevating the Consumer Search Experience](\u002Fblog\u002Fprecision-meets-privacy-consumer-search-experience\u002F)\n- [75 Million More Addresses: Expanding Geocoding Precision](\u002Fblog\u002F75-million-more-addresses-geocoding-precision\u002F)\n- [Introducing Stadia Maps Geocoding & Search v2: Supercharge Your Search](\u002Fblog\u002Fintroducing-stadia-maps-geocoding-search-v2\u002F)\n\n### Geocoding & Search\n\n- [Geocoding & Search overview docs](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Foverview\u002F) for best practices and endpoint selection\n- [Forward Geocoding API reference](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fsearch\u002F)\n- [Reverse Geocoding API reference](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Freverse-search\u002F)\n- [Structured Geocoding API reference](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fstructured-search\u002F)\n- [Bulk Geocoding API reference](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fbulk-geocoding-search\u002F)\n- [Autocomplete Search API reference](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fautocomplete\u002F)\n- [Sources documentation](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fsources\u002F): full list of data providers behind the API\n- [Determining Result Quality](https:\u002F\u002Fdocs.stadiamaps.com\u002Fgeocoding-search-autocomplete\u002Fdetermining-result-quality\u002F): how to read confidence and layer signals\n- [Geocoding product page](\u002Fproducts\u002Fgeocoding-search\u002Fgeocoding\u002F) and pricing tiers\n",{"title":11,"description":718,"path":12,"published":715,"category":719,"rawbody":720},"Learn how isochrones work, what parameters matter, and how to generate one with the Stadia Maps Isochrone API.","Routing & Navigation","---\ntitle: What Is an Isochrone?\ndescription: Learn how isochrones work, what parameters matter, and how to generate one with the Stadia Maps Isochrone API.\ncategory: Routing & Navigation\nhead:\n  script: []\nimage: \u002Fimages\u002Fog\u002Fwhat-is-an-isochrone.png\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 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      - \"@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 be used to produce either by setting a time or distance value on each contour in the request.\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. The full list is in the API reference.\n      - \"@type\": Question\n        name: Do isochrones account for traffic?\n        acceptedAnswer:\n          \"@type\": Answer\n          text: They can. 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; a static isochrone assumes average speeds. Traffic-influenced routing requires a Standard plan or higher.\n      - \"@type\": Question\n        name: How is an isochrone request billed on Stadia Maps?\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; a single request with three contours is a single billable request.\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.\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```http\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",{"id":722,"bio":683,"extension":15,"jobTitle":683,"meta":723,"name":724,"sameAs":725,"slug":728,"stem":729,"twitterCreator":683,"type":730,"url":731,"__hash__":732},"authors\u002Fauthors\u002Fstadia-maps.yml",{},"Stadia Maps",[726,727],"https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fstadia-maps\u002F","https:\u002F\u002Fgithub.com\u002Fstadiamaps","stadia-maps","authors\u002Fstadia-maps","Organization","https:\u002F\u002Fstadiamaps.com\u002F","jRSutfRcYEknA-OSdkWoPHgm7Iep6BJfLBIsMtzQONk",1784630967747]