[{"data":1,"prerenderedAt":234},["ShallowReactive",2],{"blog-\u002Fblog\u002Fnew-sdk-php\u002F":3,"related-blog-\u002Fblog\u002Fnew-sdk-php\u002F":198},{"id":4,"title":5,"abstract":6,"author":6,"body":7,"description":183,"excerpt":6,"extension":184,"head":6,"image":6,"keywords":185,"meta":190,"modified":6,"navigation":191,"path":192,"proficiencyLevel":6,"published":193,"rawbody":194,"schemaOrg":6,"schemaType":6,"seo":195,"stem":196,"__hash__":197},"blog\u002Fblog\u002Fnew-sdk-php.md","Official SDK for PHP is Now Available",null,{"type":8,"value":9,"toc":173},"minimark",[10,14,27,32,35,48,52,61,82,86,89,93,112,116],[11,12,5],"h1",{"id":13},"official-sdk-for-php-is-now-available",[15,16,17,18,26],"p",{},"Today we are happy to announce the initial release of our ",[19,20,25],"a",{"href":21,"rel":22,"target":24},"https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Fphp\u002F?utm_source=marketing_site&utm_campaign=php_sdk_launch&utm_content=php_announcement_news",[23],"external","_blank","PHP SDK",".\nThis SDK makes it easier than ever to access geocoding, routing, elevation,\nand time zone information in PHP.",[28,29,31],"h2",{"id":30},"improving-the-developer-experience","Improving the Developer Experience",[15,33,34],{},"Before today, PHP developers accessed the Stadia Maps APIs\nusing an HTTP library (such as cURL) and some JSON processing code.\nWhile our APIs are easy to integrate with using standard HTTP libraries,\nthere are several reasons to use one of our SDKs:",[36,37,38,42,45],"ul",{},[39,40,41],"li",{},"Less code to maintain—our SDKs handle the API integration for you!",[39,43,44],{},"Discover the API through autocomplete and documentation without leaving your IDE.",[39,46,47],{},"Immediately discover and use new features with a package updates. We're always improving our APIs, and we keep the SDKs in sync.",[28,49,51],{"id":50},"our-seventh-sdk","Our Seventh SDK",[15,53,54,55,60],{},"We're always speaking with users,\nso when the need of a PHP SDK came up a few times,\nwe saw an opportunity to make development easier.\nThanks to our existing ",[19,56,59],{"href":57,"rel":58,"target":24},"https:\u002F\u002Fdocs.stadiamaps.com\u002Fapi-reference\u002F?utm_source=marketing_site&utm_campaign=php_sdk_launch&utm_content=php_announcement_news",[23],"OpenAPI spec","\nand experience packaging for other languages,\nwe published the first release in less than a day!",[15,62,63,64,69,70,75,76,81],{},"The PHP SDK is our seventh official SDK,\nand complements our existing API clients for TypeScript, Python, Kotlin, and Swift.\nNow, if you're counting carefully, you may have noticed that we only mentioned five.\nThat's because we also have an ",[19,65,68],{"href":66,"rel":67,"target":24},"https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Fmaplibre-gl-js-autocomplete-search-plugin\u002F?utm_source=marketing_site&utm_campaign=php_sdk_launch&utm_content=php_announcement_news",[23],"autocomplete search plugin for MapLibre GL JS",",\nand a ",[19,71,74],{"href":72,"rel":73,"target":24},"https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Fferrostar\u002F?utm_source=marketing_site&utm_campaign=php_sdk_launch&utm_content=php_announcement_news",[23],"mobile turn-by-turn navigation SDK",".\nYou can learn more about all of our SDKs at ",[19,77,80],{"href":78,"rel":79,"target":24},"https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Foverview\u002F?utm_source=marketing_site&utm_campaign=php_sdk_launch&utm_content=php_announcement_news",[23],"docs.stadiamaps.com",".",[28,83,85],{"id":84},"we-want-your-feedback","We Want Your Feedback",[15,87,88],{},"Are you a PHP developer?\nWe'd love to hear your thoughts on the new SDK!\nLet us know how you're using it, and how we can make it better.\nYour feedback helps us continuously improve the SDKs.",[28,90,92],{"id":91},"where-to-get-it","Where to Get It",[15,94,95,96,101,102,106,107,81],{},"Do you use Composer?\nWe've hosted the package on ",[19,97,100],{"href":98,"rel":99,"target":24},"https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fstadiamaps\u002Fapi",[23],"Packagist","\nfor easy installation with ",[103,104,105],"code",{},"composer install",".\nAnd if you'd prefer to just download the files directly,\nyou can do that too!\nLike all of our SDKs, it's completely open-source,\nand you can find the code and installation instructions\non ",[19,108,111],{"href":109,"rel":110,"target":24},"https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-php",[23],"GitHub",[28,113,115],{"id":114},"learn-more-next-steps","Learn More & Next Steps",[36,117,118,126,134],{},[39,119,120,121,125],{},"Read our ",[19,122,124],{"href":78,"rel":123,"target":24},[23],"SDK documentation"," for installation instructions and example code.",[39,127,128,133],{},[19,129,132],{"href":130,"rel":131,"target":24},"https:\u002F\u002Fclient.stadiamaps.com\u002Fsignup\u002F?utm_source=marketing_site&utm_medium=blog&utm_campaign=php_sdk_launch&utm_content=php_sdk_announcement",[23],"Create an account"," to get an API key. Start building today without a credit card!",[39,135,136,137,142,143,148,149,154,155,160,161,166,167,172],{},"Join our community on ",[19,138,141],{"href":139,"rel":140,"target":24},"https:\u002F\u002Fslack.openstreetmap.us\u002F",[23],"Slack"," or ",[19,144,147],{"href":145,"rel":146,"target":24},"https:\u002F\u002Fdiscord.gg\u002FqRBy6qqtdT",[23],"Discord",", follow us\non ",[19,150,153],{"href":151,"rel":152,"target":24},"https:\u002F\u002Fen.osm.town\u002F@stadiamaps",[23],"Mastodon",", ",[19,156,159],{"href":157,"rel":158,"target":24},"https:\u002F\u002Ftwitter.com\u002F@stadiamaps",[23],"Twitter",", or\n",[19,162,165],{"href":163,"rel":164,"target":24},"https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fstadia-maps\u002F",[23],"LinkedIn",", or sign-up for our ",[19,168,171],{"href":169,"rel":170,"target":24},"https:\u002F\u002Feepurl.com\u002Fgs51fD",[23],"mailing list","!",{"title":174,"searchDepth":175,"depth":175,"links":176},"",4,[177,179,180,181,182],{"id":30,"depth":178,"text":31},2,{"id":50,"depth":178,"text":51},{"id":84,"depth":178,"text":85},{"id":91,"depth":178,"text":92},{"id":114,"depth":178,"text":115},"We're making it easier to access geocoding, routing, elevation, and time zone APIs in PHP.","md",[25,186,187,188,189],"Backend Development","API Client","Geocoding","Routing",{},true,"\u002Fblog\u002Fnew-sdk-php","2024-07-26","---\ndescription: \"We're making it easier to access geocoding, routing, elevation, and time zone APIs in PHP.\"\npublished: \"2024-07-26\"\nkeywords:\n  - PHP SDK\n  - Backend Development\n  - API Client\n  - Geocoding\n  - Routing\n---\n\n# Official SDK for PHP is Now Available\n\nToday we are happy to announce the initial release of our [PHP SDK](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Fphp\u002F?utm_source=marketing_site&utm_campaign=php_sdk_launch&utm_content=php_announcement_news){ target=\"_blank\" }.\nThis SDK makes it easier than ever to access geocoding, routing, elevation,\nand time zone information in PHP.\n\n## Improving the Developer Experience\n\nBefore today, PHP developers accessed the Stadia Maps APIs\nusing an HTTP library (such as cURL) and some JSON processing code.\nWhile our APIs are easy to integrate with using standard HTTP libraries,\nthere are several reasons to use one of our SDKs:\n\n* Less code to maintain—our SDKs handle the API integration for you!\n* Discover the API through autocomplete and documentation without leaving your IDE.\n* Immediately discover and use new features with a package updates. We're always improving our APIs, and we keep the SDKs in sync.\n\n## Our Seventh SDK\n\nWe're always speaking with users,\nso when the need of a PHP SDK came up a few times,\nwe saw an opportunity to make development easier.\nThanks to our existing [OpenAPI spec](https:\u002F\u002Fdocs.stadiamaps.com\u002Fapi-reference\u002F?utm_source=marketing_site&utm_campaign=php_sdk_launch&utm_content=php_announcement_news){ target=\"_blank\" }\nand experience packaging for other languages,\nwe published the first release in less than a day!\n\nThe PHP SDK is our seventh official SDK,\nand complements our existing API clients for TypeScript, Python, Kotlin, and Swift.\nNow, if you're counting carefully, you may have noticed that we only mentioned five.\nThat's because we also have an [autocomplete search plugin for MapLibre GL JS](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Fmaplibre-gl-js-autocomplete-search-plugin\u002F?utm_source=marketing_site&utm_campaign=php_sdk_launch&utm_content=php_announcement_news){ target=\"_blank\" },\nand a [mobile turn-by-turn navigation SDK](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Fferrostar\u002F?utm_source=marketing_site&utm_campaign=php_sdk_launch&utm_content=php_announcement_news){ target=\"_blank\" }.\nYou can learn more about all of our SDKs at [docs.stadiamaps.com](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Foverview\u002F?utm_source=marketing_site&utm_campaign=php_sdk_launch&utm_content=php_announcement_news){ target=\"_blank\" }.\n\n## We Want Your Feedback\n\nAre you a PHP developer?\nWe'd love to hear your thoughts on the new SDK!\nLet us know how you're using it, and how we can make it better.\nYour feedback helps us continuously improve the SDKs.\n\n## Where to Get It\n\nDo you use Composer?\nWe've hosted the package on [Packagist](https:\u002F\u002Fpackagist.org\u002Fpackages\u002Fstadiamaps\u002Fapi){ target=\"_blank\" }\nfor easy installation with `composer install`. \nAnd if you'd prefer to just download the files directly,\nyou can do that too!\nLike all of our SDKs, it's completely open-source,\nand you can find the code and installation instructions\non [GitHub](https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-php){ target=\"_blank\" }.\n\n## Learn More & Next Steps\n\n- Read our [SDK documentation](https:\u002F\u002Fdocs.stadiamaps.com\u002Fsdks\u002Foverview\u002F?utm_source=marketing_site&utm_campaign=php_sdk_launch&utm_content=php_announcement_news){ target=\"_blank\" } for installation instructions and example code.\n- [Create an account](https:\u002F\u002Fclient.stadiamaps.com\u002Fsignup\u002F?utm_source=marketing_site&utm_medium=blog&utm_campaign=php_sdk_launch&utm_content=php_sdk_announcement) to get an API key. Start building today without a credit card!\n- Join our community on [Slack](https:\u002F\u002Fslack.openstreetmap.us\u002F) or [Discord](https:\u002F\u002Fdiscord.gg\u002FqRBy6qqtdT), follow us\n  on [Mastodon](https:\u002F\u002Fen.osm.town\u002F@stadiamaps), [Twitter](https:\u002F\u002Ftwitter.com\u002F@stadiamaps), or\n  [LinkedIn](https:\u002F\u002Fwww.linkedin.com\u002Fcompany\u002Fstadia-maps\u002F), or sign-up for our [mailing list](https:\u002F\u002Feepurl.com\u002Fgs51fD)!\n\n",{"title":5,"description":183},"blog\u002Fnew-sdk-php","1z-yuIWhKyRwhsnmRRkhxsUydQp4jwJOcInOnQvIXQU",[199,209,222],{"title":200,"description":201,"path":202,"published":203,"keywords":204,"rawbody":208},"Announcing Version 2 of our Official SDKs","We've added new routing and elevation API features in our latest SDK releases.","\u002Fblog\u002Fannouncing-version-2-of-official-sdks","2024-03-20",[205,187,189,206,207],"SDK","Elevation","Release","---\ndescription: \"We've added new routing and elevation API features in our latest SDK releases.\"\npublished: 2024-03-20\nkeywords:\n  - SDK\n  - API Client\n  - Routing\n  - Elevation\n  - Release\n---\n\n# Announcing Version 2 of our Official SDKs\n\nToday marks a new milestone in the lifecycle of the Stadia Maps official SDKs.\nWe have just released version 2.0.0 of our API client libraries\nfor the web, mobile and backend.\nWith official clients in TypeScript, Swift, Kotlin, and Python,\nwe've already helped thousands of developers get started in just a few lines of code.\n\nThis release includes a number of improvements:\n\n* A factor for adjusting the cost of alleys when doing automobile routing\n* A resample distance parameter for elevation requests, which makes it even easier to get elevation profiles; just give us a simple set of points and we'll interpolate the rest!\n* Support for requesting one or more alternate routes (great for [navigation applications](\u002Fproducts\u002Frouting-navigation))\n* Additional options to ignore restrictions (particularly useful during map matching when you just want to know which roads a vehicle traversed)\n\nIf you're using one of our existing libraries already,\nit will generally keep on working as-is.\nHowever, in order to make a few of the improvements,\nwe had to introduce backwards-incompatible changes,\nwhich is why it gets a major version bump.\nFor migration instructions, refer to the release notes lined below:\n\n* [TypeScript](https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-ts\u002Freleases\u002Ftag\u002Fv2.0.0)\n* [Swift](https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-swift\u002Freleases\u002Ftag\u002F2.0.0)\n* [Kotlin](https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-kotlin\u002Freleases\u002Ftag\u002Fv2.0.0)\n* [Python](https:\u002F\u002Fgithub.com\u002Fstadiamaps\u002Fstadiamaps-api-py\u002Freleases\u002Ftag\u002Fv2.0.0)\n",{"title":210,"description":211,"path":212,"published":213,"keywords":214,"rawbody":221},"Why Basic OpenStreetMap Routing Needs Real-Time Traffic","OpenStreetMap is a world-class road network, but without real-time traffic it's a static dataset. Here's why algorithmic ETAs fall apart in production logistics and how Stadia Maps closes the gap with TomTom-powered routing.","\u002Fblog\u002Fwhy-osm-routing-needs-real-time-traffic","2026-05-12",[189,215,216,217,218,219,220],"Navigation","OpenStreetMap","Traffic Data","Matrix Routing","Logistics","TomTom","---\ndescription: >-\n  OpenStreetMap is a world-class road network, but without real-time traffic\n  it's a static dataset. Here's why algorithmic ETAs fall apart in production\n  logistics and how Stadia Maps closes the gap with TomTom-powered routing.\nexcerpt: >-\n  OpenStreetMap is great geography, but without real-time traffic it falls\n  short on ETAs. Stadia Maps closes the gap with TomTom-powered routing.\npublished: \"2026-05-12\"\nkeywords:\n  - Routing\n  - Navigation\n  - OpenStreetMap\n  - Traffic Data\n  - Matrix Routing\n  - Logistics\n  - TomTom\nauthor:\n  name: \"Ian Wagner\"\n  jobTitle: \"Founder & President \u002F COO\"\n  sameAs:\n    - \"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fian-w-wagner\u002F\"\n---\n\n# Why Basic OpenStreetMap Routing Needs Real-Time Traffic\n\n> OpenStreetMap (OSM) provides a world-class geographic foundation, but it remains a static dataset. Without real-time traffic integration, routing engines must rely on algorithmic proxies—like road class and legal speed limits—which often lead to unreliable ETAs and logistics bottlenecks.\n\n## The Problem\n\n[OpenStreetMap (OSM)](https:\u002F\u002Fwww.openstreetmap.org\u002Fabout) is one of the world's leading road maps, but a persistent gap remains between fixed geographic data and a [live navigation experience](\u002Fproducts\u002Frouting-navigation\u002F). Without dedicated traffic data, Estimated Times of Arrival (ETAs) are essentially educated guesses. While OSM is excellent at mapping the world's road network, a static dataset cannot capture the actual driving conditions at this exact moment. In enterprise-grade logistics, the lack of live data is often the first significant technical hurdle.\n\n## The Limits of Algorithmic Guesswork\n\nIn the absence of real-time data, a routing engine must estimate travel speeds based on tags and a few common proxies:\n\n- **Road Class:** Assuming a motorway is always faster than a residential street.\n- **Tagged Speed Limits:** Using the legal maximum as the baseline (when the tag even exists).\n- **Network Density:** Adjusting for urban vs. rural environments.\n- **Time of Day:** Using low-granularity buckets like \"daytime\" and \"nighttime.\"\n\nReal-world data show wild variances compared to these static estimates. Road class is a blunt instrument for predicting speed. Missing speed limit tags in open datasets force routing engines to rely on broad averages, resulting in unreliable ETAs and logistics delays. Rule-based algorithms are also notoriously bad at predicting choke points because open datasets don't account for traffic light timings, congestion near specific exits, or the \"invisible\" friction of a busy intersection.\n\n## The Stadia Maps Difference\n\nTo move from guesswork to precision, we integrated [TomTom's global traffic data](https:\u002F\u002Fwww.tomtom.com\u002Fproducts\u002Ftraffic-apis\u002F) directly into the [Stadia Maps routing engine](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002F). High-resolution historical profiles and live feeds allow for accurate, real-time routing. We provide this through three key technical pillars:\n\n1. **Global Coverage:** Access to consistent data across more countries than almost any other vendor.\n2. **Rapid Updates:** A traffic latency of approximately two minutes allows our API to suggest alternate routes almost as soon as a wreck occurs.\n3. **Historical Profiles:** Deep granularity forms the backbone of predictive routing. High-resolution historical data enables accurate, time-dependent routing in advance, allowing you to plan a route for Tuesday at 8:00 AM based on what might happen on Tuesdays at 8:00 AM.\n\n## Fleet Intelligence at Scale\n\nFor dispatch, optimization, and fleet operations, [matrix routing](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002Ftime-distance-matrix\u002F) (calculating the time and distance between many origins and destinations) is the engine's most critical function.\n\nThe Stadia Maps infrastructure supports matrix requests that are significantly larger than most competitors allow on standard plans. By integrating traffic data directly into these large-scale requests, we eliminate the need for developers to split requests into smaller chunks, reducing unnecessary complexity and latency.\n\nDevelopers maintain full agency over their implementation. We provide the fastest route based on live conditions, but the frequency of re-routing remains entirely in your control. Choice of revalidation frequency puts you in charge of the trade-off between real-time accuracy and [scaling costs](\u002Fpricing\u002F), ensuring your bills remain as predictable as your ETAs.\n\n---\n\n[Create a free account](https:\u002F\u002Fclient.stadiamaps.com\u002Fsignup\u002F) to start building with real-time traffic and high-performance routing today. Our [documentation](https:\u002F\u002Fdocs.stadiamaps.com\u002Frouting\u002F) provides everything you need to integrate TomTom-powered precision into your existing OSM workflow.\n",{"title":223,"description":224,"path":225,"published":226,"keywords":227,"rawbody":233},"75 Million More Addresses: Expanding Geocoding Precision","Our largest geocoding dataset expansion yet: 75 million new addresses from OpenAddresses, 3 million new POIs from Foursquare OS Places, smarter intent recognition, and new structured address fields (house_number, street, unit) on the v1 search API.","\u002Fblog\u002F75-million-more-addresses-geocoding-precision","2026-04-27",[188,228,229,230,231,232],"Addresses","OpenAddresses","Foursquare OS Places","Structured Search","Points of Interest","---\ndescription: >-\n  Our largest geocoding dataset expansion yet: 75 million new addresses from OpenAddresses,\n  3 million new POIs from Foursquare OS Places, smarter intent recognition, and new\n  structured address fields (house_number, street, unit) on the v1 search API.\npublished: 2026-04-27\nkeywords:\n  - Geocoding\n  - Addresses\n  - OpenAddresses\n  - Foursquare OS Places\n  - Structured Search\n  - Points of Interest\n---\n\n# 75 Million More Addresses: Expanding Geocoding Precision\n\nInaccurate geocoding breaks the user experience. If your query returns a street-level guess instead of a rooftop coordinate, a user might be on the right street but the wrong block, or a delivery driver gets routed to an approximate centroid instead of a front door. The coordinates are \"close enough\" until they aren't, and your application takes the blame.\n\nWe continuously update our geocoding dataset as new address and POI data becomes available. This release is our largest expansion yet: 75 million new addresses, 3 million new points of interest, improved intent recognition, and a new way to query with structured address fields.\n\n## Rooftop-Level Accuracy at Scale\n\nThe bulk of this expansion comes from OpenAddresses, one of the largest open datasets of address-level coordinates. These aren't interpolated guesses along a road segment. They're rooftop-level points tied to individual parcels, which matters for any application that depends on precise placement: routing, last-mile logistics, property lookup.\n\nThe gains aren't spread evenly. France and the US lead with roughly 25 million new addresses each, followed by Germany with 3 million and notable expansions across Brazil, Australia, and Mexico. If you've been hitting street-level fallbacks in these regions, you should see noticeably better results.\n\n## Fresher Points of Interest\n\nPOI data goes stale quickly. A restaurant opens, a shop closes, a business moves across the street, and suddenly your search results are sending users to the wrong place. We've added 3 million POIs from Foursquare OS Places, bringing our dataset more in line with what's actually on the ground. Better coverage for the kinds of searches your users actually run: finding a specific restaurant, locating the nearest pharmacy, or navigating to a business that opened last month.\n\n## Smarter Search, Fewer Misses\n\nBeyond raw data, we've improved how our [\u002Fsearch APIs](https:\u002F\u002Fstadiamaps.com\u002Fproducts\u002Fgeocoding-search\u002Fgeocoding\u002F) interpret what users actually mean. The changes focus on intent recognition: better handling of queries for larger geographic areas, complex or compound place names, and cases where the most obvious textual match isn't the right result.\n\nYour users should find more of what they're looking for on the first try.\n\n## Structured Address Input, Now on v1\n\nFor developers working with structured address data, this release adds `house_number`, `street`, and `unit` as first-class fields on the geocoding API. Previously, structured queries supported country, region, and postal code, but the address itself arrived as a single text field that we had to parse before running a match.\n\nIf your dataset is already structured that way, you can now pass it through directly. This is common for shipping, CRM, and property data. Queries with the new fields skip the parsing step entirely, which typically means better match quality and faster responses.\n\nThe free-text `address` field isn't going anywhere. If you only have a single string, we'll still parse it for you. The new fields are available on v1 today. Adopt them at your own pace.\n\n## No Tracking Required\n\nA common assumption in the industry is that better geocoding requires more user data: search history, device location, behavioral signals. We don't work that way. These improvements come from better source data and smarter algorithms, not from profiling your end users. Your users' queries are yours, not ours.\n\nAs with everything we build, these updates are available through standard APIs and SDKs, including MapLibre and Leaflet. Technical precision, fair pricing, and privacy are baked in from the start.\n\n## Get Started\n\nThe expanded dataset, structured address fields, and search improvements are live now for all Stadia Maps customers. New here? [Create a free account](https:\u002F\u002Fclient.stadiamaps.com\u002Fsignup\u002F) and start geocoding.\n",1778676026051]