TransitLand · Schema
ValhallaMatrixRequest
TransportationPublic APIsTransitGTFSOpen DataRoutingGeospatial
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/transitland/main/json-schema/transitland-valhalla-matrix-request-schema.json",
"title": "ValhallaMatrixRequest",
"x-generated": "2026-10-19",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/transitland-routing-openapi.yml#/components/schemas/ValhallaMatrixRequest",
"allOf": [
{
"$ref": "#/$defs/ValhallaBaseRequest"
},
{
"properties": {
"expansion_max_distance": {
"default": 0,
"description": "Maximum path distance in meters for an expansion. Currently this is implemented for the timedistancematrix algorithm. Source-target pairs whose cheapest path distance exceeds this limit will be returned as unreachable (with null time and distance).",
"maximum": 100000,
"minimum": 0,
"type": "integer"
},
"matrix_locations": {
"description": "Early-exit after finding this many targets. Only valid for TDMatrix algorithm.",
"minimum": 1,
"type": "integer"
},
"shape_format": {
"$ref": "#/$defs/ValhallaShapeFormat"
},
"sources": {
"items": {
"$ref": "#/$defs/ValhallaLocation"
},
"minItems": 1,
"type": "array",
"x-rad-max-items": 20
},
"targets": {
"items": {
"$ref": "#/$defs/ValhallaLocation"
},
"minItems": 1,
"type": "array",
"x-rad-max-items": 20
},
"verbose": {
"default": true,
"description": "Include detailed per-cell metadata in the response.",
"type": "boolean"
}
},
"required": [
"sources",
"targets",
"costing"
],
"type": "object"
}
],
"$defs": {
"ValhallaAutoCostingOptions": {
"allOf": [
{
"$ref": "#/$defs/ValhallaBaseCostingOptions"
},
{
"description": "Options for auto, bus, and taxi costings. Parsed in src/sif/autocost.cc.",
"properties": {
"alley_factor": {
"default": 1,
"description": "A factor that modifies (multiplies) the cost when [alleys](https://wiki.openstreetmap.org/wiki/Tag:service%3Dalley) are encountered. Auto routes generally want to avoid alleys or narrow service roads between buildings.",
"maximum": 100000,
"minimum": 0.1,
"type": "number"
},
"height": {
"default": 1.6,
"description": "Vehicle height in meters for access restriction matching.",
"type": "number"
},
"include_hot": {
"default": false,
"description": "A boolean value which indicates the desire to include tolled HOV roads which require the driver to pay a toll if the occupant requirement isn't met.",
"type": "boolean"
},
"include_hov2": {
"default": false,
"description": "A boolean value which indicates the desire to include HOV roads with a 2-occupant requirement in the route when advantageous.",
"type": "boolean"
},
"include_hov3": {
"default": false,
"description": "A boolean value which indicates the desire to include HOV roads with a 3-occupant requirement in the route when advantageous.",
"type": "boolean"
},
"length": {
"default": 2.7,
"description": "Vehicle length in meters for access restriction matching.",
"type": "number"
},
"restriction_probability": {
"default": 100,
"description": "Percentage chance to honour probabilistic access restrictions.",
"maximum": 100,
"minimum": 0,
"type": "integer"
},
"top_speed": {
"default": 140,
"description": "Top speed the vehicle can go in km/h. Also used to avoid roads with higher speeds than this value (see speed_penalty_factor for more details). `top_speed` must be between 10 and 252 km/h. The default value is 140 km/h for auto, taxi and bus.",
"maximum": 252,
"minimum": 10,
"type": "integer"
},
"use_distance": {
"default": 0,
"description": "A factor that allows controlling the contribution of distance and time to the route costs. The value is in range between 0 and 1, where 0 only takes time into account and 1 only distance. A factor of 0.5 will weigh them roughly equally.",
"maximum": 1,
"minimum": 0,
"type": "number"
},
"use_highways": {
"default": 0.5,
"description": "This value indicates the willingness to take highways. This is a range of values between 0 and 1. Values near 0 attempt to avoid highways and values near 1 will favor highways. Note that sometimes highways are required to complete a route so values of 0 are not guaranteed to avoid highways entirely.",
"maximum": 1,
"minimum": 0,
"type": "number"
},
"use_tolls": {
"default": 0.5,
"description": "This value indicates the willingness to take roads with tolls. This is a range of values between 0 and 1. Values smaller than 0.5 attempt to avoid tolls and values greater than 0.5 will slightly favor them. A value of 0.5 indicates no preference. Note that sometimes roads with tolls are required to complete a route so values of 0 are not guaranteed to avoid them entirely.",
"maximum": 1,
"minimum": 0,
"type": "number"
},
"weight": {
"default": 0.8,
"description": "Vehicle weight in metric tons for access restriction matching.",
"type": "number"
},
"width": {
"default": 1.9,
"description": "Vehicle width in meters for access restriction matching.",
"type": "number"
}
},
"type": "object"
}
]
},
"ValhallaBaseCostingOptions": {
"allOf": [
{
"$ref": "#/$defs/ValhallaHardExclusions"
},
{
"properties": {
"alley_penalty": {
"description": "A penalty that is applied when transitioning onto an alley. Default is 60 seconds for bicycle, 5 seconds otherwise.",
"maximum": 43200,
"minimum": 0,
"type": "number"
},
"closure_factor": {
"default": 9,
"description": "A factor that penalizes the cost when traversing a closed edge (eg: if `search_filter.exclude_closures` is `false` for origin and/or destination location and the route starts/ends on closed edges). Its value can range from `1.0` - don't penalize closed edges, to `10.0` - apply high cost penalty to closed edges. Default value is `9.0`. **Note:** This factor is applicable only for motorized modes of transport, i.e auto, motorcycle, motor_scooter, bus, truck & taxi.",
"maximum": 10,
"minimum": 1,
"type": "number"
},
"country_crossing_cost": {
"default": 600,
"description": "A cost applied when encountering an international border. This cost is added to the estimated and elapsed times.",
"maximum": 43200,
"minimum": 0,
"type": "number"
},
"country_crossing_penalty": {
"default": 0,
"description": "A penalty applied for a country crossing. This penalty can be used to create paths that avoid spanning country boundaries.",
"maximum": 43200,
"minimum": 0,
"type": "number"
},
"destination_only_penalty": {
"default": 600,
"description": "A penalty applied when entering an road which is only allowed to enter if necessary to reach the [destination](https://wiki.openstreetmap.org/wiki/Tag:vehicle%3Ddestination).",
"maximum": 43200,
"minimum": 0,
"type": "number"
},
"disable_hierarchy_pruning": {
"default": false,
"description": "Disable graph hierarchy culling; if the bee-line distance between waypoints exceeds the config parameter value for service_limits.max_distance_disable_hierarchy_culling, the option is ignored",
"type": "boolean"
},
"ferry_cost": {
"default": 300,
"description": "A cost applied when entering a ferry. This cost is added to the estimated and elapsed times.",
"maximum": 43200,
"minimum": 0,
"type": "number"
},
"fixed_speed": {
"default": 0,
"description": "Fixed speed the vehicle can go in km/h. Used to override the calculated speed. Can be useful if speed of vehicle is known. Value must be between 1 and 252. The default value is 0, which disables fixed speed and falls back to the standard calculated speed based on the road attribution.",
"maximum": 252,
"minimum": 0,
"type": "integer"
},
"gate_cost": {
"default": 30,
"description": "A cost applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with undefined or private access is encountered. This cost is added to estimated and elapsed times.",
"maximum": 43200,
"minimum": 0,
"type": "number"
},
"gate_penalty": {
"description": "A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) with no access information is on the road. Default is 300 for bicycle, 30 otherwise.",
"maximum": 43200,
"minimum": 0,
"type": "number"
},
"ignore_access": {
"default": false,
"description": "Will ignore mode-specific access tags. Especially useful for matching GPS traces to the road network regardless of restrictions",
"type": "boolean"
},
"ignore_closures": {
"default": false,
"description": "If set to `true`, ignores all closures, marked due to live traffic closures, during routing. **Note:** This option cannot be set if `location.search_filter.exclude_closures` is also specified in the request and will return an error if it is.",
"type": "boolean"
},
"ignore_oneways": {
"default": false,
"description": "If set to `true`, ignores one-way restrictions. Especially useful for matching GPS traces to the road network ignoring uni-directional traffic rules. Not included in `ignore_restrictions` option.",
"type": "boolean"
},
"ignore_restrictions": {
"description": "If set to `true`, ignores any restrictions (e.g. turn/dimensional/conditional restrictions). Especially useful for matching GPS traces to the road network regardless of restrictions.",
"type": "boolean"
},
"maneuver_penalty": {
"default": 5,
"description": "A penalty applied when transitioning between roads that do not have consistent naming — in other words, no road names in common. This penalty can be used to create simpler routes that tend to have fewer maneuvers or narrative guidance instructions. The default maneuver penalty is five seconds.",
"maximum": 43200,
"minimum": 0,
"type": "number"
},
"name": {
"description": "Required for recostings entries; must be unique.",
"type": "string"
},
"private_access_penalty": {
"description": "A penalty applied when a [gate](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dgate) or [bollard](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dbollard) with `access=private` is encountered. Default is 600 for pedestrian, 450 otherwise.",
"maximum": 43200,
"minimum": 0,
"type": "number"
},
"rail_ferry_cost": {
"default": 300,
"description": "A cost applied when entering a rail ferry. This cost is added to the estimated and elapsed times.",
"maximum": 43200,
"minimum": 0,
"type": "number"
},
"service_factor": {
"default": 1,
"description": "A factor that modifies (multiplies) the cost when generic service roads are encountered.",
"maximum": 100000,
"minimum": 0.1,
"type": "number"
},
"service_penalty": {
"description": "A penalty applied for transition to generic service road. The default penalty is 0 for trucks and pedestrian, 75 for auto/bus/taxi, 15 otherwise.",
"maximum": 43200,
"minimum": 0,
"type": "number"
},
"shortest": {
"default": false,
"description": "Changes the metric to quasi-shortest, i.e. purely distance-based costing. Note, this will disable all other costings & penalties. Also note, `shortest` will not disable hierarchy pruning, leading to potentially sub-optimal routes for some costing models.",
"type": "boolean"
},
"speed_penalty_factor": {
"default": 0.05,
"description": "Penalty factor applied for edges when edge speed is faster than top speed. The default value is 0.05. If you want to use `top_speed` without penalizing roads where the edge speed is much lower than `top_speed`, set this value to 0.",
"maximum": 1,
"minimum": 0,
"type": "number"
},
"speed_types": {
"description": "Which speed sources to consider for computing edge cost. Defaults to all available types. Predicted, current and freeflow additionally require `date_time` to be set. If the array is left empty, or none of these sources are available, Valhalla will fall back to the default speed.",
"items": {
"$ref": "#/$defs/ValhallaSpeedType"
},
"maxItems": 4,
"type": "array",
"uniqueItems": true
},
"toll_booth_cost": {
"default": 15,
"description": "A cost applied when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This cost is added to the estimated and elapsed times.",
"maximum": 43200,
"minimum": 0,
"type": "number"
},
"toll_booth_penalty": {
"default": 0,
"description": "A penalty applied to the cost when a [toll booth](https://wiki.openstreetmap.org/wiki/Tag:barrier%3Dtoll_booth) is encountered. This penalty can be used to create paths that avoid toll roads.",
"maximum": 43200,
"minimum": 0,
"type": "number"
},
"use_ferry": {
"default": 0.5,
"description": "This value indicates the willingness to take ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid ferries and values near 1 will favor ferries. Note that sometimes ferries are required to complete a route so values of 0 are not guaranteed to avoid ferries entirely.",
"maximum": 1,
"minimum": 0,
"type": "number"
},
"use_living_streets": {
"description": "This value indicates the willingness to take living streets. This is a range of values between 0 and 1. Values near 0 attempt to avoid living streets and values near 1 will favor living streets. The default value is 0 for truck, 0.5 for bicycle, 0.6 for pedestrian, 0.1 otherwise. Note that sometimes living streets are required to complete a route so values of 0 are not guaranteed to avoid living streets entirely.",
"maximum": 1,
"minimum": 0,
"type": "number"
},
"use_rail_ferry": {
"default": 0.4,
"description": "This value indicates the willingness to take rail ferries. This is a range of values between 0 and 1. Values near 0 attempt to avoid rail ferries and values near 1 will favor them. Note that sometimes rail ferries may be required to complete a route so values of 0 are not guaranteed to avoid them entirely.",
"maximum": 1,
"minimum": 0,
"type": "number"
},
"use_tracks": {
"description": "This value indicates the willingness to take track roads. This is a range of values between 0 and 1. Values near 0 attempt to avoid tracks and values near 1 will favor tracks a little bit. The default value is 0 for auto and truck, 0.5 otherwise. Note that sometimes tracks are required to complete a route so values of 0 are not guaranteed to avoid tracks entirely.",
"maximum": 1,
"minimum": 0,
"type": "number"
}
},
"type": "object"
}
],
"description": "Options shared by all costing models. Parsed in src/sif/dynamiccost.cc.",
"type": "object"
},
"ValhallaBaseRequest": {
"properties": {
"costing": {
"$ref": "#/$defs/ValhallaCostingType"
},
"costing_options": {
"$ref": "#/$defs/ValhallaCostingOptions"
},
"date_time": {
"$ref": "#/$defs/ValhallaDateTimeOptions"
},
"exclude_locations": {
"description": "A set of locations to exclude or avoid within a route.",
"items": {
"$ref": "#/$defs/ValhallaLocation"
},
"type": "array"
},
"exclude_polygons": {
"description": "Array of coordinate rings `[[lon,lat],…]` or a GeoJSON FeatureCollection. Roads intersecting these rings will be avoided during path finding.",
"oneOf": [
{
"description": "Array of closed coordinate rings. All edges intersecting any ring are excluded.",
"items": {
"items": {
"items": {
"type": "number"
},
"maxItems": 2,
"minItems": 2,
"type": "array"
},
"type": "array"
},
"type": "array"
},
{
"description": "GeoJSON FeatureCollection. Each Feature may carry a `properties.levels` array to restrict exclusion to specific building/indoor levels in pedestrian routing.",
"properties": {
"features": {
"items": {
"properties": {
"geometry": {
"description": "GeoJSON Polygon geometry (single-ring only)",
"type": "object"
},
"properties": {
"properties": {
"levels": {
"description": "Building/indoor levels to exclude within this polygon. When omitted, all edges intersecting the polygon are excluded.",
"items": {
"type": "integer"
},
"type": "array"
}
},
"type": "object"
},
"type": {
"enum": [
"Feature"
],
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"type": {
"enum": [
"FeatureCollection"
],
"type": "string"
}
},
"type": "object"
}
]
},
"format": {
"$ref": "#/$defs/ValhallaOutputFormat"
},
"id": {
"description": "Arbitrary request identifier echoed in the response.",
"type": "string"
},
"language": {
"default": "en-US",
"description": "BCP47 locale for narrative output. See locales/ for supported values.",
"type": "string"
},
"linear_cost_factors": {
"description": "Customized cost factors that influence path finding, specified as an array of JSON objects. Objects can be either a GeoJSON linestring feature and a `\"factor\"` property or a plain object with a \"shape\" key, whose value needs to be an encoded polyline (with 6 digit precision), and a \"factor\" key whose value needs to be float. Valhalla will perform an edge walk (see the map matching documentation for more info) to match the geometry onto edges and use those factors in costing. Edges with factors larger than 1 will be increasingly avoided, while edges with factors smaller than 1 increasingly favored.",
"items": {
"$ref": "#/$defs/ValhallaLinearCostFactor"
},
"type": "array"
},
"units": {
"default": "km",
"enum": [
"km",
"miles",
"mi"
],
"type": "string"
}
},
"type": "object"
},
"ValhallaBicycleCostingOptions": {
"allOf": [
{
"$ref": "#/$defs/ValhallaBaseCostingOptions"
},
{
"description": "Options for bicycle costing. Parsed in src/sif/bicyclecost.cc.",
"properties": {
"avoid_bad_surfaces": {
"default": 0.25,
"description": "This value is meant to represent how much a cyclist wants to avoid roads with poor surfaces relative to the bicycle type being used. This is a range of values between 0 and 1. When the value is 0, there is no penalization of roads with different surface types; only bicycle speed on each surface is taken into account. As the value approaches 1, roads with poor surfaces for the bike are penalized heavier so that they are only taken if they significantly improve travel time. When the value is equal to 1, all bad surfaces are completely disallowed from routing, including start and end points.",
"maximum": 1,
"minimum": 0,
"type": "number"
},
"bicycle_type": {
"default": "hybrid",
"description": "The type of bicycle. Affects the cycling speed and surface factors.",
"enum": [
"road",
"hybrid",
"city",
"cross",
"mountain"
],
"type": "string",
"x-enumDescriptions": {
"city": "A bicycle made mostly for city riding or casual riding on roads and paths with good surfaces. Sets cycling_speed to 18 km/h.",
"cross": "A cyclo-cross bicycle, which is similar to a road bicycle but with wider tires suitable to rougher surfaces. Sets cycling_speed to 20 km/h.",
"hybrid": "A bicycle made mostly for city riding or casual riding on roads and paths with good surfaces. Sets cycling_speed to 18 km/h.",
"mountain": "A mountain bicycle suitable for most surfaces but generally heavier and slower on paved surfaces. Sets cycling_speed to 16 km/h.",
"road": "A road-style bicycle with narrow tires that is generally lightweight and designed for speed on paved surfaces. Sets cycling_speed to 25 km/h."
}
},
"bss_rent_penalty": {
"default": 0,
"description": "This value is useful when `bikeshare` is chosen as travel mode. It is meant to describe the potential effort to return a rental bike. This value won't be displayed and used only inside of the algorithm.",
"maximum": 43200,
"minimum": 0,
"type": "number"
},
"bss_return_cost": {
"default": 120,
"description": "This value is useful when `bikeshare` is chosen as travel mode. It is meant to give the time will be used to return a rental bike. This value will be displayed in the final directions and used to calculate the whole duration.",
"maximum": 43200,
"minimum": 0,
"type": "number"
},
"cycling_speed": {
"description": "Cycling speed in km/h. Defaults depend on transport_type.",
"minimum": 5,
"type": "number"
},
"use_hills": {
"default": 0.25,
"description": "A cyclist's desire to tackle hills in their routes. This is a range of values from 0 to 1, where 0 attempts to avoid hills and steep grades even if it means a longer (time and distance) path, while 1 indicates the rider does not fear hills and steeper grades. Based on the `use_hills` factor, penalties are applied to roads based on elevation change and grade. These penalties help the path avoid hilly roads in favor of flatter roads or less steep grades where available. Note that it is not always possible to find alternate paths to avoid hills (for example when route locations are in mountainous areas).",
"maximum": 1,
"minimum": 0,
"type": "number"
},
"use_roads": {
"default": 0.25,
"description": "A cyclist's propensity to use roads alongside other vehicles. This is a range of values from 0 to 1, where 0 attempts to avoid roads and stay on cycleways and paths, and 1 indicates the rider is more comfortable riding on roads. Based on the `use_roads` factor, roads with certain classifications and higher speeds are penalized in an attempt to avoid them when finding the best path.",
"maximum": 1,
"minimum": 0,
"type": "number"
}
},
"type": "object"
}
]
},
"ValhallaCostingOptions": {
"description": "Costing options keyed by costing model name.",
"properties": {
"auto": {
"$ref": "#/$defs/ValhallaAutoCostingOptions"
},
"bicycle": {
"$ref": "#/$defs/ValhallaBicycleCostingOptions"
},
"bikeshare": {
"$ref": "#/$defs/ValhallaPedestrianCostingOptions"
},
"bus": {
"$ref": "#/$defs/ValhallaAutoCostingOptions"
},
"motor_scooter": {
"$ref": "#/$defs/ValhallaMotorScooterCostingOptions"
},
"motorcycle": {
"$ref": "#/$defs/ValhallaMotorcycleCostingOptions"
},
"pedestrian": {
"$ref": "#/$defs/ValhallaPedestrianCostingOptions"
},
"taxi": {
"$ref": "#/$defs/ValhallaAutoCostingOptions"
},
"truck": {
"$ref": "#/$defs/ValhallaTruckCostingOptions"
}
},
"type": "object"
},
"ValhallaCostingType": {
"description": "`multimodal` is not available. The street graph has no transit; use transit routing at `/api/v2/routing/otp/plan`.",
"enum": [
"auto",
"bicycle",
"pedestrian",
"truck",
"bus",
"taxi",
"motor_scooter",
"motorcycle",
"bikeshare",
"auto_pedestrian"
],
"type": "string"
},
"ValhallaDateTimeOptions": {
"properties": {
"type": {
"description": "0=current, 1=depart_at, 2=arrive_by, 3=invariant",
"enum": [
0,
1,
2,
3
],
"type": "integer"
},
"value": {
"description": "ISO 8601 local datetime string in the format `YYYY-MM-DDTHH:MM`, e.g. `2016-07-03T08:06`. Required for types 1, 2, 3.",
"type": "string"
}
},
"type": "object"
},
"ValhallaFactor": {
"description": "Cost multiplier applied to matched edges (min dependent on service configuration, default 1).",
"type": "number",
"x-rad-max": 20,
"x-rad-min": 0.1
},
"ValhallaGeoJsonFactorVariant": {
"properties": {
"geometry": {
"properties": {
"coordinates": {
"description": "Array of [lon, lat] positions.",
"items": {
"items": {
"type": "number"
},
"maxItems": 2,
"minItems": 2,
"type": "array"
},
"type": "array"
},
"type": {
"enum": [
"LineString"
],
"type": "string"
}
},
"required": [
"type",
"coordinates"
],
"type": "object"
},
"properties": {
"properties": {
"factor": {
"$ref": "#/$defs/ValhallaFactor"
}
},
"required": [
"factor"
],
"type": "object"
},
"type": {
"enum": [
"Feature"
],
"type": "string"
}
},
"required": [
"type",
"geometry",
"properties"
],
"type": "object"
},
"ValhallaHardExclusions": {
"description": "**EXPERIMENTAL** — Hard exclusion options available for all costing methods. These options are not available by default; the server config must have `service_limits.allow_hard_exclusions` set to true in order to allow them. If not allowed and any of the hard excludes is set to true, the server will return a warning and ignore the hard excludes.",
"properties": {
"exclude_bridges": {
"default": false,
"description": "This value indicates whether or not the path may include bridges. If `exclude_bridges` is set to true it is allowed to start and end with bridges, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.",
"type": "boolean"
},
"exclude_ferries": {
"default": false,
"description": "This value indicates whether or not the path may include ferries. If `exclude_ferries` is set to true it is allowed to start and end with ferries, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.",
"type": "boolean"
},
"exclude_highways": {
"default": false,
"description": "This value indicates whether or not the path may include highways. If `exclude_highways` is set to true it is allowed to start and end with highways, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.",
"type": "boolean"
},
"exclude_tolls": {
"default": false,
"description": "This value indicates whether or not the path may include tolls. If `exclude_tolls` is set to true it is allowed to start and end with tolls, but is not allowed to have them in the middle of the route path, otherwise they are allowed. If set to true, it is highly plausible that no path will be found.",
"type": "boolean"
},
# --- truncated at 32 KB (61 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/transitland/refs/heads/main/json-schema/transitland-valhalla-matrix-request-schema.json
Work with this as data
Every JSON Schema 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 schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.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.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/transitland-valhalla-matrix-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?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.