Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/stadia-maps-roads-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: 'Confidently create beautiful maps for all your users with our tools. Choose your style from our library or build your own. With a rich palette of choices to fit any context and support for dozens of languages and scripts, you can deliver a quality experience for your customers no matter what part of the globe they call home. '
version: 7.1.0
title: Stadia Maps Roads API
contact:
name: Stadia Maps Support
url: https://www.stadiamaps.com
email: support@stadiamaps.com
servers:
- url: https://api.stadiamaps.com
- url: https://api-eu.stadiamaps.com
tags:
- name: Roads
paths:
/nearest_roads/v1:
post:
tags:
- Roads
operationId: nearest-roads
summary: Find the nearest roads to the set of input locations.
description: The nearest roads API allows you query for detailed information about streets and intersections near the input locations.
security:
- ApiKeyAuth: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/nearestRoadsRequest'
responses:
'200':
description: A list of streets and intersections that match the query.
content:
application/json:
schema:
$ref: '#/components/schemas/nearestRoadsResponse'
'400':
description: Bad request; more details will be included
components:
schemas:
speeds:
type: object
properties:
predicted:
type: boolean
description: Does this edge have predicted (historical) speed records?
constrained_flow:
type: integer
description: Speed when there is no traffic, in kph.
free_flow:
type: integer
description: Speed when there is heavy traffic, in kph.
type:
type: string
enum:
- classified
- tagged
description: The type of speed which is used when setting default speeds. When `tagged`, the explicit `max_speed` tags from OpenStreetMap are being used. When `classified`, the values are being inferred from the highway classification.
default:
type: integer
description: 'The default speed used for calculations. NOTE: Values greater than 250 are used for special cases and should not be treated as literal.'
access:
type: object
properties:
golf_cart:
type: boolean
wheelchair:
type: boolean
taxi:
type: boolean
HOV:
type: boolean
truck:
type: boolean
emergency:
type: boolean
pedestrian:
type: boolean
car:
type: boolean
bus:
type: boolean
bicycle:
type: boolean
motorcycle:
type: boolean
moped:
type: boolean
autoCostingOptions:
allOf:
- $ref: '#/components/schemas/baseCostingOptions'
- type: object
properties:
height:
type: number
format: double
description: The height of the automobile (in meters).
default: 1.9
width:
type: number
format: double
description: The width of the automobile (in meters).
default: 1.6
toll_booth_cost:
type: integer
description: The estimated cost (in seconds) when a toll booth is encountered.
default: 15
toll_booth_penalty:
type: integer
description: A penalty (in seconds) applied to the route cost when a toll booth is encountered. This penalty can be used to reduce the likelihood of suggesting a route with toll booths unless absolutely necessary.
default: 0
ferry_cost:
type: integer
description: The estimated cost (in seconds) when a ferry is encountered.
default: 300
use_highways:
type: number
format: double
description: A measure of willingness to take highways. Values near 0 attempt to avoid highways, and values near 1 will favour them. Note that as some routes may be impossible without highways, 0 does not guarantee avoidance of them.
default: 0.5
minimum: 0
maximum: 1
use_tolls:
type: number
format: double
description: A measure of willingness to take toll roads. Values near 0 attempt to avoid tolls, and values near 1 will favour them. Note that as some routes may be impossible without tolls, 0 does not guarantee avoidance of them.
default: 0.5
minimum: 0
maximum: 1
use_tracks:
$ref: '#/components/schemas/useTracksCostingOption'
top_speed:
type: integer
description: The top speed (in kph) that the vehicle is capable of travelling.
default: 140
minimum: 10
maximum: 252
shortest:
type: boolean
description: If true changes the cost metric to be quasi-shortest (pure distance-based) costing. This will disable ALL other costing factors.
default: false
ignore_closures:
type: boolean
description: If true, ignores all known closures. This option cannot be set if `location.search_filter.exclude_closures` is also specified.
default: false
include_hov2:
type: boolean
description: If true, indicates the desire to include HOV roads with a 2-occupant requirement in the route when advantageous.
default: false
include_hov3:
type: boolean
description: If true, indicates the desire to include HOV roads with a 3-occupant requirement in the route when advantageous.
default: false
include_hot:
type: boolean
description: If true, indicates the desire to include toll roads which require the driver to pay a toll if the occupant requirement isn't met
default: false
alley_factor:
type: number
format: double
description: A factor that multiplies the cost when alleys are encountered.
default: 1
geoAttributes:
type: object
properties:
curvature:
type: integer
description: Curvature factor.
max_down_slope:
type: number
format: float
description: The maximum downward slope. Uses 1 degree precision for slopes to -16 degrees, and 4 degree precision afterwards (up to a max of -76 degrees).
max_up_slope:
type: number
format: float
description: The maximum upward slope. Uses 1 degree precision for slopes to 16 degrees, and 4 degree precision afterwards (up to a max of 76 degrees).
weighted_grade:
type: number
format: float
description: The weighted estimate of the grade.
length:
type: integer
description: The length of the edge, in meters.
locateEdgeInfo:
type: object
properties:
mean_elevation:
type: number
format: float
description: The mean elevation, in meters, relative to sea level.
shape:
type: string
description: An encoded polyline (https://developers.google.com/maps/documentation/utilities/polylinealgorithm). Note that the polyline is always encoded with 6 digits of precision, whereas most implementations default to 5.
names:
type: array
items:
type: string
description: A list of names that the edge goes by.
bike_network:
$ref: '#/components/schemas/bikeNetwork'
way_id:
type: integer
description: The OSM way ID associated with this edge.
required:
- way_id
- shape
directionsOptions:
type: object
properties:
units:
$ref: '#/components/schemas/distanceUnit'
language:
$ref: '#/components/schemas/valhallaLanguages'
directions_type:
type: string
enum:
- none
- maneuvers
- instructions
default: instructions
description: The level of directional narrative to include. Locations and times will always be returned, but narrative generation verbosity can be controlled with this parameter.
useFerryCostingOption:
type: number
format: double
description: A measure of willingness to take ferries. Values near 0 attempt to avoid ferries, and values near 1 will favour them. Note that as some routes may be impossible without ferries, 0 does not guarantee avoidance of them.
default: 0.5
minimum: 0
maximum: 1
nodeId:
type: object
properties:
id:
type: integer
format: int64
value:
type: integer
format: int64
tile_id:
type: integer
format: int64
level:
type: integer
valhallaLanguages:
type: string
enum:
- bg-BG
- ca-ES
- cs-CZ
- da-DK
- de-DE
- el-GR
- en-GB
- en-US-x-pirate
- en-US
- es-ES
- et-EE
- fi-FI
- fr-FR
- hi-IN
- hu-HU
- it-IT
- ja-JP
- nb-NO
- nl-NL
- pl-PL
- pt-BR
- pt-PT
- ro-RO
- ru-RU
- sk-SK
- sl-SI
- sv-SE
- tr-TR
- uk-UA
default: en-US
requestId:
type: string
description: An identifier to disambiguate requests (echoed by the server).
example: kesklinn
useTracksCostingOption:
type: number
format: double
description: A measure of willingness to take track roads. Values near 0 attempt to avoid them, and values near 1 will favour them. Note that as some routes may be impossible without track roads, 0 does not guarantee avoidance of them. The default value is 0 for automobiles, busses, and trucks; and 0.5 for all other costing modes.
minimum: 0
maximum: 1
nodeType:
type: string
enum:
- street_intersection
- gate
- bollard
- toll_booth
- multi_use_transit_stop
- bike_share
- parking
- motor_way_junction
- border_control
distanceUnit:
type: string
enum:
- km
- mi
default: km
coordinate:
type: object
properties:
lat:
type: number
format: double
description: The latitude of a point in the shape.
example: 59.436884
minimum: -90
maximum: 90
lon:
type: number
format: double
description: The longitude of a point in the shape.
example: 24.742595
minimum: -180
maximum: 180
required:
- lat
- lon
locateEdge:
type: object
properties:
edge_id:
$ref: '#/components/schemas/nodeId'
way_id:
type: integer
description: The OSM way ID associated with this edge (absent in verbose response; see the edge info).
correlated_lat:
type: number
format: double
correlated_lon:
type: number
format: double
percent_along:
type: number
format: double
side_of_street:
type: string
enum:
- left
- right
- neither
linear_reference:
type: string
description: A base64-encoded [OpenLR location reference](https://www.openlr-association.com/fileadmin/user_upload/openlr-whitepaper_v1.5.pdf), for a graph edge of the road network matched by the query.
outbound_reach:
type: integer
heading:
type: number
format: float
inbound_reach:
type: integer
distance:
type: number
format: float
predicted_speeds:
type: array
items:
type: integer
description: Predicted speed information based on historical data. If available, this will include 2016 entries. Each entry represents 5 minutes, where the first entry represents midnight on Monday, the second entry represents 00:05 on Monday, etc.
edge_info:
$ref: '#/components/schemas/locateEdgeInfo'
edge:
$ref: '#/components/schemas/locateDetailedEdge'
warnings:
type: array
items:
type: string
required:
- correlated_lat
- correlated_lon
- side_of_street
- percent_along
locateNode:
allOf:
- $ref: '#/components/schemas/coordinate'
- type: object
properties:
traffic_signal:
type: boolean
type:
$ref: '#/components/schemas/nodeType'
node_id:
$ref: '#/components/schemas/nodeId'
access:
$ref: '#/components/schemas/access'
edge_count:
type: integer
administrative:
$ref: '#/components/schemas/administrative'
intersection_type:
type: string
enum:
- regular
- false
- dead-end
- fork
density:
type: integer
local_edge_count:
type: integer
mode_change:
type: boolean
costingModel:
type: string
enum:
- auto
- bus
- taxi
- truck
- bicycle
- bikeshare
- motor_scooter
- motorcycle
- pedestrian
- low_speed_vehicle
description: 'A model which influences the routing based on the type of travel. The costing model affects parameters ranging from which roads are legally accessible to preferences based on comfort or speed.
See https://valhalla.github.io/valhalla/api/turn-by-turn/api-reference/#costing-models for in-depth descriptions of each costing model.'
truckCostingOptions:
allOf:
- $ref: '#/components/schemas/autoCostingOptions'
- type: object
properties:
height:
type: number
format: double
description: The height of the truck (in meters).
default: 4.11
width:
type: number
format: double
description: The width of the truck (in meters).
default: 2.6
length:
type: number
format: double
description: The length of the truck (in meters).
default: 21.64
weight:
type: number
format: double
description: The weight of the truck (in tonnes).
default: 21.77
axle_load:
type: number
format: double
description: The axle load of the truck (in tonnes).
default: 9.07
hazmat:
type: boolean
description: Whether or not the truck is carrying hazardous materials.
default: false
bicycleCostingOptions:
allOf:
- $ref: '#/components/schemas/baseCostingOptions'
- type: object
properties:
bicycle_type:
type: string
enum:
- Road
- Hybrid
- Cross
- Mountain
default: Hybrid
description: 'The type of bicycle:
* Road: has narrow tires and is generally lightweight and designed for speed on paved surfaces * Hybrid or City: designed for city riding or casual riding on roads and paths with good surfaces * Cross: similar to a road bike, but has wider tires so it can handle rougher surfaces * Mountain: able to handle most surfaces, but generally heavier and slower on paved surfaces'
cycling_speed:
type: integer
description: "The average comfortable travel speed (in kph) along smooth, flat roads. The costing will vary the speed based on the surface, bicycle type, elevation change, etc. This value should be the average sustainable cruising speed the cyclist can maintain over the entire route.\nThe default speeds are as follows based on bicycle type:\n * Road - 25kph\n * Cross - 20kph\n * Hybrid - 18kph\n * Mountain - 16kph"
use_roads:
type: number
format: double
description: A measure of willingness to use roads alongside other vehicles. Values near 0 attempt to avoid roads and stay on cycleways, and values near 1 indicate the cyclist is more comfortable on roads.
default: 0.5
minimum: 0
maximum: 1
use_hills:
$ref: '#/components/schemas/useHillsCostingOption'
avoid_bad_surfaces:
type: number
format: double
description: A measure of how much the cyclist wants to avoid roads with poor surfaces relative to the type of bicycle being ridden. When 0, there is no penalization of roads with poorer surfaces, and only bicycle speed is taken into account. As the value approaches 1, roads with poor surfaces relative to the bicycle type receive a heaver penalty, so they will only be taken if they significantly reduce travel time. When the value is 1, all bad surfaces are completely avoided from the route, including the start and end points.
default: 0.25
minimum: 0
maximum: 1
bss_return_cost:
type: integer
description: The estimated cost (in seconds) to return a bicycle in `bikeshare` mode.
default: 120
bss_return_penalty:
type: integer
description: A penalty (in seconds) to return a bicycle in `bikeshare` mode.
default: 0
locateDetailedEdge:
type: object
properties:
sidewalk_left:
type: boolean
description: Is there a sidewalk to the left of the edge?
sidewalk_right:
type: boolean
description: Is there a sidewalk to the right of the edge?
lane_count:
type: integer
stop_sign:
type: boolean
description: Is there a stop sign at end of the directed edge?
sac_scale:
type: string
enum:
- none
- hiking
- mountain hiking
- demanding mountain hiking
- alpine hiking
- demanding alpine hiking
- difficult alpine hiking
yield_sign:
type: boolean
description: Is there a yield sign at end of the directed edge?
not_thru:
type: boolean
description: Does the edge lead to a "no-through" region?
forward:
type: boolean
description: Is the edge info forward? If false, then reverse is implied.
end_node:
$ref: '#/components/schemas/nodeId'
truck_route:
type: boolean
description: Is the edge part of a truck route/network?
speeds:
$ref: '#/components/schemas/speeds'
bike_network:
type: boolean
description: Is the edge part of a bicycle network?
round_about:
type: boolean
description: Is the edge part of a roundabout?
traffic_signal:
type: boolean
description: Is there a traffic signal at the end of the directed edge?
access_restriction:
type: boolean
description: Is there a general restriction or access condition?
destination_only:
type: boolean
description: Is the edge destination only? If so, it will not be routed through.
geo_attributes:
$ref: '#/components/schemas/geoAttributes'
start_restriction:
$ref: '#/components/schemas/restrictions'
cycle_lane:
type: string
description: Indication of the type of cycle lane (if any) present along an edge.
enum:
- none
- shared
- dedicated
- separated
end_restriction:
$ref: '#/components/schemas/restrictions'
seasonal:
type: boolean
description: Is access seasonal (ex. no access in winter)?
country_crossing:
type: boolean
description: Does the edge cross into a new country?
part_of_complex_restriction:
type: boolean
description: Is the edge part of a complex restriction?
has_sign:
type: boolean
description: Do exit signs exist for the edge?
access:
$ref: '#/components/schemas/restrictions'
bridge:
type: boolean
description: Is the edge part of a bridge?
classification:
$ref: '#/components/schemas/highwayClassification'
toll:
type: boolean
description: Is the edge a toll road?
tunnel:
type: boolean
description: Is the edge a tunnel?
motorScooterCostingOptions:
allOf:
- $ref: '#/components/schemas/autoCostingOptions'
- type: object
properties:
use_primary:
type: number
format: double
description: A measure of willingness to use primary roads. Values near 0 attempt to avoid primary roads and stay on roads with lower speeds, and values near 1 indicate the rider is more comfortable on these roads.
default: 0.5
minimum: 0
maximum: 1
use_hills:
type: number
format: double
description: A measure of willingness to take tackle hills. Values near 0 attempt to avoid hills and steeper grades even if it means a longer route, and values near 1 indicates that the rider does not fear them. Note that as some routes may be impossible without hills, 0 does not guarantee avoidance of them.
default: 0.5
minimum: 0
maximum: 1
bikeNetwork:
type: object
properties:
mountain:
type: boolean
local:
type: boolean
regional:
type: boolean
national:
type: boolean
motorcycleCostingOptions:
allOf:
- $ref: '#/components/schemas/autoCostingOptions'
- type: object
properties:
use_highways:
type: number
format: double
description: A measure of willingness to use highways. Values near 0 attempt to avoid highways and stay on roads with lower speeds, and values near 1 indicate the rider is more comfortable on these roads.
default: 1
minimum: 0
maximum: 1
use_trails:
type: number
format: double
description: A measure of the rider's sense of adventure. Values near 0 attempt to avoid highways and stay on roads with potentially unsuitable terrain (trails, tracks, unclassified, or bad surfaces), and values near 1 will tend to avoid major roads and route on secondary roads.
default: 0
minimum: 0
maximum: 1
costingOptions:
type: object
properties:
auto:
$ref: '#/components/schemas/autoCostingOptions'
bus:
$ref: '#/components/schemas/autoCostingOptions'
taxi:
$ref: '#/components/schemas/autoCostingOptions'
truck:
$ref: '#/components/schemas/truckCostingOptions'
bicycle:
$ref: '#/components/schemas/bicycleCostingOptions'
motor_scooter:
$ref: '#/components/schemas/motorScooterCostingOptions'
motorcycle:
$ref: '#/components/schemas/motorcycleCostingOptions'
pedestrian:
$ref: '#/components/schemas/pedestrianCostingOptions'
low_speed_vehicle:
$ref: '#/components/schemas/lowSpeedVehicleCostingOptions'
nearestRoadsResponse:
type: array
items:
$ref: '#/components/schemas/locateObject'
example:
- input_lon: 24.742595
input_lat: 59.436884
nodes: []
edges:
- predicted_speeds: []
linear_reference: KxGYOypEIXriAAAcABo6Uow=
edge_info:
speed_limit: 0
shape: '{zvjpBwtden@zG`H~EdG'
names:
- Rataskaevu
bike_network:
mountain: false
local: false
regional: false
national: false
mean_elevation: 36
way_id: 4853850
edge_id:
id: 1800
value: 60404861586
tile_id: 860498
level: 2
edge:
sidewalk_left: false
sidewalk_right: false
lane_count: 1
not_thru: false
forward: false
bike_network: false
round_about: false
access:
truck: true
pedestrian: true
wheelchair: true
taxi: true
HOV: true
emergency: false
motorcycle: true
car: true
moped: true
bus: true
bicycle: true
golf_cart: true
bridge: false
tunnel: false
destination_only: false
seasonal: false
classification:
internal: false
link: false
surface: paved
use: living_street
classification: service_other
toll: false
has_sign: false
country_crossing: false
part_of_complex_restriction: false
cycle_lane: none
end_restriction:
truck: false
pedestrian: false
wheelchair: false
taxi: false
HOV: false
emergency: false
motorcycle: false
car: false
moped: false
bus: false
bicycle: false
geo_attributes:
curvature: 5
max_down_slope: -7
max_up_slope: 0
weighted_grade: -6.67
length: 32
start_restriction:
truck: false
pedestrian: false
wheelchair: false
taxi: false
HOV: false
emergency: false
motorcycle: false
car: false
moped: false
bus: false
bicycle: false
traffic_signal: false
access_restriction: false
truck_route: false
speeds:
predicted: false
constrained_flow: 0
free_flow: 0
type: classified
default: 20
end_node:
id: 2895
value: 97146964626
tile_id: 860498
level: 2
inbound_reach: 50
distance: 2.2
percent_along: 0.54802
side_of_street: neither
outbound_reach: 50
correlated_lon: 24.74263
live_speed: {}
correlated_lat: 59.436875
- predicted_speeds: []
linear_reference: KxGYSCpELHryAP/l/+k6QnM=
edge_info:
speed_limit: 0
shape: '{zvjpBwtden@zG`H~EdG'
names:
- Rataskaevu
bike_network:
mountain: false
local: false
regional: false
national: false
mean_elevation: 36
way_id: 4853850
edge_id:
id: 7368
value: 247235938962
tile_id: 860498
level: 2
edge:
sidewalk_left: false
sidewalk_right: false
lane_count: 1
not_thru: false
forward: true
bike_network: false
round_about: false
access:
truck: true
pedestrian: true
wheelchair: true
taxi: true
HOV: true
emergency: false
motorcycle: true
car: true
moped: true
bus: true
bicycle: true
bridge: false
tunnel: false
destination_only: false
seasonal: false
classification:
internal: false
link: false
surface: paved
use: living_street
classification: service_other
toll: false
has_sign: false
country_crossing: false
part_of_complex_restriction: false
cycle_lane: none
end_restriction:
truck: false
pedestrian: false
wheelchair: false
taxi: false
HOV: false
emergency: false
motorcycle: false
car: false
moped: false
bus: false
bicycle: false
geo_attributes:
curvature: 5
max_down_slope: 0
max_up_slope: 7
weighted_grade: 6.67
length: 32
start_restriction:
truck: false
pedestrian: false
wheelchair: false
taxi: false
HOV: false
emergency: false
motorcycle: false
car: false
moped: false
bus: false
bicycle: false
traffic_signal: false
access_restriction: false
truck_route: false
speeds:
predicted: false
constrained_flow: 0
free_flow: 0
type: classified
default: 20
end_node:
id: 819
value: 27487963794
tile_id: 860498
level: 2
inbound_reach: 50
distance: 2.2
percent_along: 0.45198
side_of_street: neither
outbound_reach: 50
correlated_lon: 24.74263
live_speed: {}
correlated_lat: 59.436875
highwayClassification:
type: object
properties:
internal:
type: boolean
description: Is the edge internal to an intersection?
link:
type: boolean
description: Is the edge a ramp or turn channel?
surface:
type: string
description: A representation of the smoothness of the highway. This is used for costing and access checks based on the vehicle type.
enum:
- paved_smooth
- paved
- paved_rough
- compacted
- dirt
- gravel
- path
- impassable
use:
type: string
enum:
- road
- ramp
- turn_channel
- track
- driveway
- alley
- parking_aisle
- emergency_access
- drive_through
- culdesac
- living_street
- service_road
- cycleway
- mountain_bike
- sidewalk
- footway
- elevator
- steps
- escalator
- path
- pedestrian
- bridleway
- pedestrian_crossing
- rest_area
- service_area
- other
- rail
- ferry
- rail-ferry
- bus
- egress_connection
- platform_connnection
- transit_connection
- construction
classification:
type: string
description: The classification/importance of the road/path. Used for a variety of purposes including fallback speed estimation and access for certain vehicle types.
enum:
- motorway
- trunk
- primary
- secondary
- tertiary
- unclassified
- residential
- service_other
nearestRoadsRequest:
allOf:
- type: object
properties:
locations:
type: array
items:
$ref: '#/components/schemas/coordinate'
minItems: 1
costing:
# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/stadia-maps/refs/heads/main/openapi/stadia-maps-roads-api-openapi.yml