Entur · Schema

Result

CompanyPublic TransportJourney PlanningMobilityOpen DataNorwayTransitGraphQL

Properties

Name Type Description
type string
features array
metadata object
bbox array [minLon, minLat, maxLon, maxLat]
View JSON Schema on GitHub

JSON Schema

entur-result-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/entur/main/json-schema/entur-result-schema.json",
  "title": "Result",
  "x-generated": "2026-10-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/entur-geocoder-openapi.yml#/components/schemas/Result",
  "required": [
    "features",
    "metadata",
    "type"
  ],
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "FeatureCollection"
      ]
    },
    "features": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Feature"
      }
    },
    "metadata": {
      "$ref": "#/$defs/Metadata"
    },
    "bbox": {
      "maxItems": 4,
      "minItems": 4,
      "type": "array",
      "description": "[minLon, minLat, maxLon, maxLat]",
      "items": {
        "type": "number"
      }
    }
  },
  "$defs": {
    "Address": {
      "type": "object",
      "properties": {
        "streetName": {
          "type": "string"
        },
        "houseNumber": {
          "type": "string"
        },
        "postalCode": {
          "type": "string"
        },
        "locality": {
          "type": "string"
        },
        "localityId": {
          "type": "string"
        },
        "borough": {
          "type": "string"
        },
        "boroughId": {
          "type": "string"
        },
        "county": {
          "type": "string"
        },
        "countyId": {
          "type": "string"
        },
        "countryCode": {
          "type": "string"
        }
      }
    },
    "Feature": {
      "required": [
        "geometry",
        "properties",
        "type"
      ],
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "Feature"
          ]
        },
        "geometry": {
          "$ref": "#/$defs/Geometry"
        },
        "properties": {
          "$ref": "#/$defs/Place"
        },
        "bbox": {
          "maxItems": 4,
          "minItems": 4,
          "type": "array",
          "description": "GeoJSON bounding box `[minLon, minLat, maxLon, maxLat]`. Present for features with a real extent (streets, groups of stop places); omitted for point features.",
          "items": {
            "type": "number"
          }
        }
      }
    },
    "Filters": {
      "type": "object",
      "properties": {
        "layers": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Layer"
          }
        },
        "sources": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "countries": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "counties": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "localities": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "fareZones": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "fareZoneAuthorities": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "stopPlaceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "multimodal": {
          "type": "string",
          "enum": [
            "parent",
            "child",
            "all"
          ]
        }
      },
      "description": "Echoes the request filters as sent, not the effective filter set."
    },
    "Geometry": {
      "required": [
        "coordinates",
        "type"
      ],
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "Point"
          ]
        },
        "coordinates": {
          "maxItems": 2,
          "minItems": 2,
          "type": "array",
          "description": "[longitude, latitude]",
          "items": {
            "type": "number"
          }
        }
      }
    },
    "Layer": {
      "type": "string",
      "enum": [
        "address",
        "street",
        "stopPlace",
        "groupOfStopPlaces",
        "poi",
        "place"
      ]
    },
    "Metadata": {
      "required": [
        "query",
        "resultCount",
        "timestamp"
      ],
      "type": "object",
      "properties": {
        "query": {
          "$ref": "#/$defs/QueryInfo"
        },
        "resultCount": {
          "type": "integer"
        },
        "timestamp": {
          "type": "string",
          "description": "Response generation time as an ISO 8601 instant (UTC).",
          "format": "date-time"
        }
      }
    },
    "Names": {
      "required": [
        "default",
        "display"
      ],
      "type": "object",
      "properties": {
        "default": {
          "type": "string",
          "description": "Official name"
        },
        "label": {
          "type": "string",
          "description": "Common or colloquial name"
        },
        "display": {
          "type": "string",
          "description": "Formatted name with locality context, suitable for display"
        }
      }
    },
    "Place": {
      "required": [
        "id",
        "layer",
        "names",
        "source"
      ],
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "names": {
          "$ref": "#/$defs/Names"
        },
        "layer": {
          "$ref": "#/$defs/Layer"
        },
        "address": {
          "$ref": "#/$defs/Address"
        },
        "categories": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "fareZones": {
          "type": "array",
          "description": "Zones the place is in; they overlap, so a stop can be in several. A multimodal parent lists its own plus its children's, so use `multimodal=child` for per-departure zones.",
          "items": {
            "type": "string"
          }
        },
        "transportModes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/TransportMode"
          }
        },
        "stopPlaceTypes": {
          "type": "array",
          "description": "NeTEx StopPlaceType values (same value set as the `stopPlaceTypes` filter parameter)",
          "items": {
            "type": "string"
          }
        },
        "stopPlaceRole": {
          "type": "string",
          "description": "A stop place's role in the parent-child hierarchy: `parent` (aggregates child stops), `child`, or `standalone`. Present on `stopPlace` features; absent on other layers and on stop places not yet reindexed. Treat an absent or unrecognised value as unknown, not `standalone`. (`parent`/`child` both mean multimodal.)",
          "enum": [
            "parent",
            "child",
            "standalone"
          ]
        },
        "source": {
          "type": "string",
          "description": "Data source identifier (same values as the sources filter)",
          "enum": [
            "openstreetmap",
            "kartverket-matrikkelenadresse",
            "kartverket-stedsnavn",
            "nsr",
            "custom-poi"
          ]
        },
        "distance": {
          "type": "number",
          "description": "Distance from the reverse query point in kilometres (3-decimal precision). Present on `/v3/reverse` responses only; the field is omitted (not `null`) on autocomplete and place lookup.",
          "format": "double"
        },
        "description": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Per-language description. Keys are ISO 639-2 alpha-3 language codes (`nor`, `eng`, etc.). The field is omitted (not `null`) when the underlying record has no description."
        }
      }
    },
    "QueryInfo": {
      "required": [
        "lang",
        "limit"
      ],
      "type": "object",
      "properties": {
        "text": {
          "type": "string"
        },
        "lat": {
          "type": "number",
          "format": "double"
        },
        "lon": {
          "type": "number",
          "format": "double"
        },
        "limit": {
          "type": "integer"
        },
        "lang": {
          "type": "string"
        },
        "filters": {
          "$ref": "#/$defs/Filters"
        }
      }
    },
    "TransportMode": {
      "required": [
        "mode"
      ],
      "type": "object",
      "properties": {
        "mode": {
          "type": "string"
        },
        "subMode": {
          "type": "string"
        }
      }
    }
  }
}

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.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/entur-result"
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.