GMPRO docs: Google Maps truck route / Large Vehicle Routing
How to enable Google Maps truck route / Large Vehicle Routing (LVR) with the Route Optimization API.
The most requested Google Maps feature for the past ten years is truck routing, the ability to use Google Maps to safely route large vehicles around narrow roads, low bridges and roads with truck restrictions, such as parkways in New York and New Jersey. It took a while, but it's finally here. In this post, I'll show you how to build a truck route with the Google Maps Route Optimization API's new Large Vehicle Routing (LVR) feature. We'll cover worked examples, pricing (spoiler: it's free with GMPRO), and what this all means for the navigation and routing software business.

Part 1: GMPRO: Google Maps Platform route optimization API
Part 2: GMPRO TSP solver: Google Maps with more than 25 waypoints
Part 3: Google Maps route optimization: multi vehicle
Part 4: GMPRO fleet routing app - free route planner for multiple stops
Part 5: GMPRO docs: Fixed vehicle costs
Part 6: GMPRO docs: Territory optimization and route planning
Part 7: GMPRO docs: Solving the VRP with route clustering and soft constraints
Part 8: GMPRO docs: Driver load balancing with soft constraints
Part 9: GMPRO docs: Driver breaks
Part 10: GMPRO docs: Complete deliveries before pickups in cargo bike logistics
Part 11: GMPRO docs: Force stop sequences using precedence rules
Part 12: GMPRO docs: Cut cost / raise care with smart NEMT routing
Part 13: GMPRO docs: Routing for Demand Responsive Transport
Part 14: GMPRO docs: Squash durations and parking
Part 15: GMPRO docs: Use a Google Maps truck route with large vehicle routing (this article)
Why did Google Maps launch Large Vehicle Routing?

Large vehicles like trucks and buses face challenges that cars don't. Drivers must navigate low bridges, narrow tunnels, and tight turns, while operators plan around local, state, and national road regulations.
If you run a logistics company that moves goods by truck or other large vehicles, you can't let your drivers rely on the Google Maps app or the Google Maps APIs for routing and turn by turn navigation. The risk of being sent down a truck restricted road and getting fined, or worse, causing a serious accident, is too high.
Many commercial trucking companies already use Google Maps for general mapping, address validation, and route optimization. With this new Large Vehicle Routing feature, they no longer have to switch to a different app or navigation service for the actual driving, which unlocks a whole new market for Google Maps that was previously served by HERE, Tom Tom and PC Miler (the industry leader in the US).
Why use Google Maps truck route / Large Vehicle Routing?
Here are three very good reasons to use the new Google Maps Large Vehicle Routing feature.
- Improve pricing and planning accuracy. Many logistics companies pay drivers by mileage. But the figure they use isn't the actual distance driven. It's the shortest route between stops, as calculated by Google Maps or a similar routing tool. The problem is that traditional routing algorithms are tuned for the routes and speeds of standard cars, so they ignore the factors that constrain large vehicles. Things like height limits, weight restrictions, and truck legal roads. As a result, the calculated mileage can differ substantially from what a driver actually covers, which causes disputes and general driver unhappiness.
- Avoid road hazards and keep your insurance costs down. Large Vehicle Routing builds route plans that steer vehicles clear of low overhead clearances, weight-restricted roads, and other physical hazards.
- It's free (kind of). Large Vehicle Routing is included in standard GMPRO pricing, which starts at $0.03 per shipment, so there's no extra charge to use it.
If you run a logistics operation with trucks or other large vehicles, Google Maps LVR is worth evaluating, especially if many of your drivers are new and unfamiliar with local roads and restrictions. Contact me for a demo and Google sponsored proof of concept.
Google Maps truck route / Large Vehicle Routing worked example
Truck routing is supported in two Google Maps APIs: Route Optimization (GMPRO) and Routes. This article focuses specifically on adding truck routing to GMPRO. Here's what you need to do.
Enable Large Vehicle Routing in your Google Cloud Console project
To get LVR enabled on your Google Cloud Console, you can either fill in the contact form or reach out to me directly. It's currently in GA but limited to the US, and Google is qualifying customers before granting access.
Add Large Vehicle Routing to your standard GMPRO request

In the vehicles object, set travelMode to "TRUCK" and add a vehicleInfo object that contains the physical specifications of the vehicle. For example, this is a typical setup for a tractor-trailer / semi (like Optimus Prime).
"vehicleInfo": {
"totalAxleCount": 5,
"totalHeightMm": 4114,
"totalLengthMm": 21945,
"totalWidthMm": 2590,
"totalWeightKg": 36287,
"trailerInfo": [{
"lengthMm": 16154
}]
}The following table lists the properties available within the vehicleInfo object:
| Field | Type | Constraints | Description |
|---|---|---|---|
| totalHeightMm | integer | positive | Total height of the vehicle, in millimeters. |
| totalWidthMm | integer | positive | Total width of the vehicle, in millimeters. |
| totalLengthMm | integer | positive | Total length of the vehicle, in millimeters. |
| totalWeightKg | integer | positive | Total weight of the vehicle, in kilograms. |
| trailerInfo | array | - | Specifications for each trailer attached to the vehicle. Each element describes one trailer. |
| trailerInfo[].lengthMm | integer | positive | Length of an individual trailer, in millimeters. |
And here's what a standard LVR GMPRO request looks like. This route takes you from the Empire State Building in New York City to the suburb of Scarsdale, New York.
Endpoint POST https://routeoptimization.googleapis.com/v1/projects/{PROJECT_ID}:optimizeTours
Headers
Content-Type: application/json
Authorization: Bearer $(gcloud auth application-default print-access-token)
Note: Unlike most Google Maps Platform APIs where you append ?key=, GMPRO uses IAM.You send a bearer access token, typically minted from a service account credential in production. Read GMPRO TSP solver: Google Maps with more than 25 waypoints for step by step instructions on how to do this.
Request
{
"model": {
"shipments": [
{
"label": "Empire-State-Building",
"deliveries": [
{
"arrivalLocation": {
"latitude": 40.7484445,
"longitude": -73.9882393
},
"timeWindows": [
{
"startTime": "2026-06-06T09:00:00Z"
}
],
"duration": "60s"
}
],
"loadDemands": {
"volume": {
"amount": 4
}
}
}
],
"vehicles": [
{
"travelMode": "TRUCK",
"routeModifiers": {
"vehicleInfo": {
"totalAxleCount": 5,
"totalHeightMm": 4114,
"totalLengthMm": 21945,
"totalWidthMm": 2590,
"totalWeightKg": 36287,
"trailerInfo": [{
"lengthMm": 16154
}]
}
},
"loadLimits": {
"volume": {
"softMaxLoad": 20,
"costPerUnitAboveSoftMax": 50
}
},
"label": "truck-01",
"startLocation": {
"latitude": 40.9850862,
"longitude": -73.7802697
},
"travelDurationMultiple": 1,
"startTimeWindows": [
{
"startTime": "2026-06-06T09:00:00Z"
}
],
"costPerKilometer": 1
}
],
"globalStartTime": "2026-06-06T00:00:00+00:00",
"globalEndTime": "2026-06-06T23:59:59+00:00"
},
"populatePolylines": true
}Response
{
"routes": [
{
"vehicleLabel": "truck-01",
"vehicleStartTime": "2026-06-06T09:00:00Z",
"vehicleEndTime": "2026-06-06T10:25:17Z",
"visits": [
{
"startTime": "2026-06-06T10:24:17Z",
"detour": "0s",
"shipmentLabel": "Empire-State-Building",
"loadDemands": {
"volume": {
"amount": "-4"
}
},
"visitType": "DELIVER_SHIPMENT"
}
],
"transitions": [
{
"travelDuration": "5057s",
"travelDistanceMeters": 37978,
"waitDuration": "0s",
"totalDuration": "5057s",
"startTime": "2026-06-06T09:00:00Z",
"vehicleLoads": {
"volume": {
"amount": "4"
}
}
},
{
"travelDuration": "0s",
"waitDuration": "0s",
"totalDuration": "0s",
"startTime": "2026-06-06T10:25:17Z"
}
],
"routePolyline": {
"points": "}{cyF~eiaMGCGAG@Ej@Eh@CTEXLJZP\\RRLRJj@Zp@\\J^JXBJDJDNLp@Jh@PTDj@D\\L|A?@Fj@QJy@f@A?KF?@SJMJA@KFA@MHKJIJGFEHCBCFGHABCHGNCJCJELCLAD?DEVIh@ALAD?@EXIt@AHG`@Ip@G`@Gh@EZCLAD?D..."
},
"routeToken": "CqYBCkQKKgoiChhtb2RlbC52ZWhpY2xlcy50cnVjay0wMRABGgQIABAAEgYKBAgAEAAaEgoQdHJ1Y2stMDEtZHVtbXktMDESXAoiChhFbXBpcmUtU3RhdGUtQnVpbGRpbmcQARoECAAQABIENDIyMBoQ2026MDYwNlQwOTAwMDBaKhBEVU1NWV9UT0tFTl9BRklfMDE4Ac2FGkQ6BJ",
"metrics": {
"performedShipmentCount": 1,
"travelDuration": "5057s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "60s",
"totalDuration": "5117s",
"travelDistanceMeters": 37978,
"maxLoads": {
"volume": {
"amount": "4"
}
},
"performedMandatoryShipmentCount": 1
},
"routeCosts": {
"model.vehicles.cost_per_kilometer": 37.978
},
"routeTotalCost": 37.978,
"vehicleFullness": {
"maxFullness": 0.0947610140928536,
"maxLoad": 4.33680868994202e-19,
"activeSpan": 0.0947610140928536
}
}
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "5057s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "60s",
"totalDuration": "5117s",
"travelDistanceMeters": 37978,
"maxLoads": {
"volume": {
"amount": "4"
}
},
"performedMandatoryShipmentCount": 1
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2026-06-06T09:00:00Z",
"latestVehicleEndTime": "2026-06-06T10:25:17Z",
"totalCost": 37.978,
"costs": {
"model.vehicles.cost_per_kilometer": 37.978
}
}
}As expected, the routePolyline returned gives you a route that specifically avoids the Henry Hudson Parkway on the Upper West Side.

Provide turn by turn navigation
To send the route to your drivers, pass the routeToken from the response to the Navigation SDK in your driver app to start a navigation session (note: Navigation SDK pricing starts at $0.05 per destination, but there is no additional charge for using a LVR compatible route token).
The route the Navigation SDK follows can shift with traffic and road conditions, so it may sometimes diverge from the route the token describes. Whenever this happens (or when the driver leaves the planned route for whatever reason), the route token ensures that any recalculated route still respects the vehicle attributes set in the original GMPRO request.
Google Maps Large Vehicle Routing pricing
Large Vehicle Routing doesn't cost extra. It's included with GMPRO at no charge beyond your existing usage. If your company already uses the Google Maps stack elsewhere, this is especially good news. Handing off a GMPRO route to in-vehicle navigation powered by a different mapping provider is tricky. The route GMPRO generated and the one shown in the app can disagree, with mismatched ETAs or stop sequences. Keeping the whole flow within Google Maps avoids that.
It also means one less set of vendors, contracts, and payment terms to manage. If Google is already an approved supplier and you're using GMPRO or the Routes API elsewhere in your system, enabling LVR, and passing its route token to the Navigation SDK, is an easy call.
For now, LVR is US only and still missing some features, such as truck toll pricing and speed limits. Even so, I expect the launch to pressure existing truck routing providers like HERE and Tom Tom, which are really only one sprint away from being swapped out, especially with coding assistance from LLMs.
How I feel about Google Maps Large Vehicle Routing
I think it's a fantastic addition to the Google Maps API ecosystem. Truck routing was one of the last big features missing from the platform, and the product and engineering teams behind the Routes API and GMPRO have nailed the launch.
It took a long time to release, and for good reason. If Google Maps sends you on a detour and you're five minutes late to a meeting, you'd be annoyed, but that's about it. If LVR sends a semi into a bridge (see the videos of the Canopener Bridge in Durham, North Carolina), that's a lawsuit waiting to happen.
Putting together the truck restriction data must have been difficult too. For US road regulations, a "truck" generally means a vehicle used commercially to haul goods that's heavy enough to face extra rules. Federal oversight kicks in around 10,000 lbs, and a commercial driver's license is required at 26,001 lbs. But many local restrictions, like the New York and New Jersey parkway bans define trucks by their commercial use and body type rather than weight, so there's no single national definition.
Finally, there's the algorithmic cost. Adding truck restrictions to a shortest path search is inherently slower. Standard routing is fast because it precomputes one shared road network and optimizes a single number, travel time. Truck routing can't. It has to treat the network as vehicle specific, check every road against several physical limits, reason about maneuvers like U-turns and left turns rather than just roads, and work with a larger search space to find a legal path.
Afi Labs helped test an early version of Large Vehicle Routing with several of our customers. At first, GMPRO with Large Vehicle Routing enabled was too slow to be usable in production. So it's genuinely impressive that the Google Maps engineering team got the algorithm fast enough for a public launch in the second half of 2026.
This article was written by Afi Labs, a Google Maps Premier Partner and reseller. We build route optimization, navigation, and fleet tracking software on Google Maps, and offer volume pricing on GMP licensing. Talk to an engineer or follow Afian on LinkedIn.