Entur · Schema
SearchResponse
CompanyPublic TransportJourney PlanningMobilityOpen DataNorwayTransitGraphQL
Properties
| Name | Type | Description |
|---|---|---|
| tripPatternId | string | |
| offers | array | |
| recommendations | object | |
| optionalProducts | array | |
| unavailableProducts | array | |
| notices | array | Additional information about potentially missing information or functionality due to transient errors. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/entur/main/json-schema/entur-search-response-schema.json",
"title": "SearchResponse",
"x-generated": "2026-10-09",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/entur-offers-partner-openapi.yml#/components/schemas/SearchResponse",
"type": "object",
"properties": {
"tripPatternId": {
"type": "string"
},
"offers": {
"type": "array",
"items": {
"$ref": "#/$defs/OfferSummary"
}
},
"recommendations": {
"$ref": "#/$defs/RecommendationResult"
},
"optionalProducts": {
"type": "array",
"items": {
"$ref": "#/$defs/OptionalProduct"
}
},
"unavailableProducts": {
"type": "array",
"items": {
"$ref": "#/$defs/UnavailableProduct"
}
},
"notices": {
"type": "array",
"description": "Additional information about potentially missing information or functionality due to transient errors.",
"items": {
"type": "string",
"description": "A code identifying which downstream service was unavailable. Known values: OSDM (OSDM-gateway unavailable), PERSONALISATION (Personalisation service unavailable), INVENTORY (Inventory service unavailable), SEATING (Seating service unavailable). This list may be extended without a spec change."
}
}
},
"required": [
"offers",
"recommendations"
],
"$defs": {
"AccommodationFacilityEnum": {
"type": "string",
"default": "ANY",
"description": "Subset of AccommodationFacilityEnumeration from NeTEx facility support.",
"enum": [
"ANY",
"SLEEPER",
"SEATING",
"COUCHETTE",
"RECLINING_SEATS",
"STANDING"
]
},
"AccommodationForServiceJourney": {
"type": "object",
"description": "Accommodation for service journey.",
"properties": {
"serviceJourney": {
"$ref": "#/$defs/ServiceJourneySummary"
},
"accommodation": {
"type": "array",
"items": {
"type": "string",
"description": "Accommodation facility. Compatible with the current NeTEx implementation of AccommodationFacilityEnumeration at Entur. Related to but may include more than 'AccommodationFacilityEnum'."
}
}
},
"required": [
"accommodation",
"serviceJourney"
]
},
"AvailableFulfilmentMethod": {
"type": "object",
"description": "Describes which fulfilmentMethods are available for an Offer,.",
"properties": {
"id": {
"type": "string",
"description": "NeTEx standard."
},
"version": {
"type": "string",
"description": "NeTEx standard."
},
"distributionRights": {
"type": "array",
"description": "Says what the distribution channel is allowed to do with this offer. Compatible with the current NeTEx implementation of DistributionRightsEnumeration at Entur.",
"items": {
"type": "string"
},
"minItems": 1
}
},
"required": [
"id",
"version"
]
},
"CappedDiscountOption": {
"type": "object",
"description": "A discount might be given based on previous transactions if CappedDiscountRequest was specified. A cappingSpecification must be specified in the traveller attribute in the request to the search/ endpoints in order to receive a discount. Capping must also be enabled by the operator of the service journey.",
"properties": {
"cappedDiscountRightRef": {
"$ref": "#/$defs/ObjectRef"
},
"cappedDiscountRuleRef": {
"$ref": "#/$defs/ObjectRef"
},
"alternatives": {
"type": "array",
"items": {
"$ref": "#/$defs/CappingAlternative"
}
}
},
"required": [
"cappedDiscountRightRef",
"cappedDiscountRuleRef"
]
},
"CappingAlternative": {
"type": "object",
"description": "An alternative is based on previous transactions might have a discount at the expense of setting the start date in the past.",
"properties": {
"selectableId": {
"type": "string",
"description": "A pseudo random string that is used to select what alternative to use when purchasing an offer."
},
"discount": {
"$ref": "#/$defs/Price"
},
"startDateTime": {
"type": "string",
"format": "date-time",
"description": "The start date of this alternative."
},
"endDateTime": {
"type": "string",
"format": "date-time",
"description": "The end date of this alternative."
}
},
"required": [
"discount",
"endDateTime",
"selectableId",
"startDateTime"
]
},
"Carnet": {
"type": "object",
"description": "Representation of a repeatable ticket, with an optional duration for each instance and an amount of times the ticket can be used.",
"properties": {
"amount": {
"type": "integer",
"description": "Number of times the ticket can be used."
},
"duration": {
"type": "string",
"format": "duration",
"description": "Validity duration of each use, formatted according to ISO-8601."
}
},
"required": [
"amount"
]
},
"DiscountRightSummary": {
"type": "object",
"description": "Summary of a sale discount right that has been applied to the fare product.",
"properties": {
"id": {
"type": "string"
},
"version": {
"type": "string"
},
"price": {
"$ref": "#/$defs/Price"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"originatingFromProductId": {
"type": "string"
}
},
"required": [
"description",
"id",
"name",
"price",
"version"
]
},
"DurationEnum": {
"type": "string",
"default": "ANY",
"description": "Validity duration. Subset of UsageValidityTypeEnumeration from NeTEx usage parameter travel support.",
"enum": [
"SINGLE_TRIP",
"RETURN_TRIP",
"CARNET",
"DAY_PASS",
"WEEKLY_PASS",
"WEEKEND_PASS",
"MONTHLY_PASS",
"SEASON_TICKET",
"PROFILE_MEMBERSHIP",
"OPEN_ENDED",
"OTHER",
"ANY"
]
},
"FareClassEnum": {
"type": "string",
"default": "ANY",
"description": "A type of FareClass. Subset of FareClassEnumeration from NeTEx service restrictions support.",
"enum": [
"FIRST_CLASS",
"SECOND_CLASS",
"THIRD_CLASS",
"ECONOMY_CLASS",
"BUSINESS_CLASS",
"TURISTA",
"PREFERENTE",
"PREMIUM_CLASS",
"ANY",
"STANDARD_CLASS",
"UNKNOWN"
]
},
"GeographicalValidity": {
"type": "object",
"description": "Describes the geographical validity of a product. Includes information on ServiceJourneys, PointToPointValidity and ZonalValidity. In cases of replacement transport, these fields describe the replacement journey.",
"properties": {
"serviceJourneys": {
"type": "array",
"description": "Service journeys where this product is valid.",
"items": {
"$ref": "#/$defs/ServiceJourneySummary"
}
},
"pointToPointValidity": {
"$ref": "#/$defs/PointToPointValidity"
},
"zonalValidity": {
"$ref": "#/$defs/ZonalValidity"
}
}
},
"GeographicalValidityCovered": {
"type": "object",
"description": "Describes the geographical validity covered by the recommendation.",
"properties": {
"coversEntireJourney": {
"type": "boolean",
"description": "Indicates whether the geographical validity covers the entire journey or not."
},
"serviceJourneys": {
"type": "array",
"description": "The service journeys this geographical validity applies to.",
"items": {
"type": "string"
},
"minItems": 1
},
"pointToPointValidity": {
"$ref": "#/$defs/PointToPointValidity"
},
"zonalValidity": {
"$ref": "#/$defs/ZonalValidity"
}
},
"required": [
"coversEntireJourney"
]
},
"GroupSummary": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"version": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"userProfiles": {
"type": "array",
"description": "User profiles and their required number of travellers in the group.",
"items": {
"$ref": "#/$defs/UserProfileInGroupSummary"
}
}
},
"required": [
"description",
"id",
"userProfiles",
"version"
]
},
"NamedReference": {
"type": "object",
"description": "A simple reference with id and name.",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"id",
"name"
]
},
"ObjectRef": {
"type": "object",
"description": "Object ref.",
"properties": {
"ref": {
"type": "string",
"description": "object ref ref."
},
"version": {
"type": "string",
"description": "object ref version."
}
},
"required": [
"ref"
]
},
"OfferSummary": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The id of an offer. This id will be referenced in recommendations where there are \"offersToBuy\". Also, the offerId can be used to obtain the original offer-structure from v1."
},
"name": {
"type": "string",
"description": "The name of the SalesPackage that this OfferSummary represents."
},
"salesPackageId": {
"type": "string",
"description": "Id of the SalesPackage."
},
"salesPackageVersion": {
"type": "string",
"description": "Version of the SalesPackage."
},
"description": {
"type": "string",
"description": "The description of the offer."
},
"price": {
"$ref": "#/$defs/Price"
},
"availableFulfilmentMethods": {
"type": "array",
"items": {
"$ref": "#/$defs/AvailableFulfilmentMethod"
}
},
"geographicalValidity": {
"$ref": "#/$defs/GeographicalValidity"
},
"preassignedProducts": {
"type": "array",
"description": "All mandatory products that give the buyer a right to travel is found here.",
"items": {
"$ref": "#/$defs/PreassignedProduct"
}
},
"optionalProductsSelectableIds": {
"type": "array",
"description": "This field contains an array of selectableId's to optional products associated with an offer. The optional products are found in the field \"optionalProducts\" in the search response.",
"items": {
"type": "string"
},
"minItems": 1
},
"travellerMapping": {
"type": "array",
"description": "Mapping of which travellers this offer applies to.",
"items": {
"$ref": "#/$defs/TravellerMappingSummary"
},
"uniqueItems": true
},
"available": {
"type": "integer",
"description": "Number of this offer available to buy at this point in time."
},
"cappedDiscountOption": {
"$ref": "#/$defs/CappedDiscountOption"
},
"eligibleForAccrualInPrograms": {
"type": "array",
"description": "Buying this offer may give points in these personalisation programs.",
"items": {
"$ref": "#/$defs/ProgramAccrualSummary"
}
},
"availablePrograms": {
"type": "array",
"description": "The customer may join the following programs to get points from buying this offer. It is expected that the caller does work to add the customer to the program.",
"items": {
"$ref": "#/$defs/ProgramSummary"
}
}
},
"required": [
"availableFulfilmentMethods",
"description",
"geographicalValidity",
"id",
"name",
"preassignedProducts",
"price",
"salesPackageId",
"salesPackageVersion"
]
},
"OfferToBuy": {
"type": "object",
"description": "Describes which offer to buy and how many of this offer to buy to satisfy a recommendation.",
"properties": {
"id": {
"type": "string",
"description": "Id of the offer to buy."
},
"numberToBuy": {
"type": "integer",
"description": "Number of this offer to buy."
},
"selectableProductIds": {
"type": "array",
"description": "List of selectableIds of supplement products which upgrades a product.",
"items": {
"type": "string"
}
},
"possibleTravellerIds": {
"type": "array",
"description": "One possible grouping of travellers for the number of offers to buy.",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"required": [
"id",
"numberToBuy",
"possibleTravellerIds",
"selectableProductIds"
]
},
"OptionalProduct": {
"type": "object",
"description": "Representation of a optional product that can be selected together with mandatory products in an offer.",
"properties": {
"id": {
"type": "string",
"description": "Id of the optional product."
},
"version": {
"type": "string",
"description": "Version of the optional product."
},
"selectableId": {
"type": "string",
"description": "This is the id that is referred to from the OfferSummary's optionalProductsSelectableId's. It is also the id used when reserving the offer in later steps."
},
"name": {
"type": "string",
"description": "Name of the optional product."
},
"description": {
"type": "string",
"description": "Description of the optional product."
},
"price": {
"$ref": "#/$defs/Price"
},
"properties": {
"$ref": "#/$defs/PropertiesSummary"
},
"geographicalValidity": {
"$ref": "#/$defs/GeographicalValidity"
},
"discountRights": {
"type": "array",
"description": "Optional discounts applied to this product.",
"items": {
"$ref": "#/$defs/DiscountRightSummary"
},
"minItems": 1
},
"available": {
"type": "integer",
"description": "How many of this optional product is available to buy at this point in time."
},
"supplementProductType": {
"type": "string",
"description": "Describes what type of supplement product this is. Compatible with the current NeTEx implementation of SupplementProductTypeEnumeration at Entur."
}
},
"required": [
"description",
"geographicalValidity",
"id",
"name",
"price",
"properties",
"selectableId",
"version"
]
},
"OrganisationSummary": {
"type": "object",
"description": "id and and name of an organisation.",
"properties": {
"id": {
"type": "string",
"description": "the netex-id of organisation."
},
"name": {
"type": "string",
"description": "the name of the organisation."
}
},
"required": [
"id",
"name"
]
},
"PointToPointValidity": {
"type": "object",
"description": "Start and stop places where the product is valid.",
"properties": {
"fromPlace": {
"$ref": "#/$defs/NamedReference",
"description": "Valid from place."
},
"toPlace": {
"$ref": "#/$defs/NamedReference",
"description": "Valid to place."
}
},
"required": [
"fromPlace",
"toPlace"
]
},
"PreassignedProduct": {
"type": "object",
"description": "Representation of a mandatory product that is included in an offer.",
"properties": {
"id": {
"type": "string",
"description": "The id if the preassigned product."
},
"version": {
"type": "string",
"description": "The version of the preassigned product."
},
"name": {
"type": "string",
"description": "The name of the preassigned product."
},
"description": {
"type": "string",
"description": "The description of the preassigned product."
},
"properties": {
"$ref": "#/$defs/PropertiesSummary"
},
"geographicalValidity": {
"$ref": "#/$defs/GeographicalValidity"
},
"discountRights": {
"type": "array",
"description": "Optional discounts applied to this product.",
"items": {
"$ref": "#/$defs/DiscountRightSummary"
},
"minItems": 1
}
},
"required": [
"description",
"geographicalValidity",
"id",
"name",
"properties",
"version"
]
},
"Price": {
"type": "object",
"description": "Price with currency and optional VAT information for this element.",
"properties": {
"amount": {
"type": "string",
"description": "The amount."
},
"vatGroup": {
"type": "string",
"description": "The VAT group."
},
"currency": {
"type": "string",
"description": "The currency of the amount."
}
},
"required": [
"amount",
"currency"
]
},
"ProgramAccrualSummary": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"reference": {
"type": "string",
"description": "Identifier for the loyalty program."
},
"name": {
"type": "string"
},
"infoLink": {
"type": "string",
"description": "URL to information about the loyalty program."
},
"paused": {
"type": "boolean",
"description": "Whether accrual for this program is currently paused."
}
},
"required": [
"id"
]
},
"ProgramSummary": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"reference": {
"type": "string",
"description": "Identifier for the loyalty program."
},
"name": {
"type": "string"
},
"infoLink": {
"type": "string",
"description": "URL to information about the loyalty program."
}
},
"required": [
"id"
]
},
"PropertiesSummary": {
"type": "object",
"description": "Summary of properties for a product. The properties field contains all necessary information about a product. Here you will find accommodations, baggageTypes, fareClass, userProfiles and more.",
"properties": {
"isExchangeable": {
"type": "boolean",
"description": "Whether the ticket can be exchanged for a different departure."
},
"isRefundable": {
"type": "boolean",
"description": "Whether the ticket can be refunded."
},
"accommodations": {
"type": "array",
"description": "Accommodation facilities available per service journey.",
"items": {
"$ref": "#/$defs/AccommodationForServiceJourney"
}
},
"baggageTypes": {
"type": "array",
"items": {
"type": "string",
"description": "Type of baggage. Compatible with the current NeTEx implementation of BaggageTypeEnumeration at Entur. Related to but may include more than 'BaggageTypeEnum'."
}
},
"reservingRequirements": {
"type": "array",
"description": "Reservation requirements per service journey.",
"items": {
"$ref": "#/$defs/ReservingRequirementForServiceJourney"
}
},
"userProfileSummary": {
"$ref": "#/$defs/UserProfileSummary"
},
"organisation": {
"$ref": "#/$defs/OrganisationSummary"
},
"duration": {
"type": "string",
"description": "Validity duration of the product, formatted according to ISO-8601."
},
"group": {
"$ref": "#/$defs/GroupSummary"
},
"fareClasses": {
"type": "array",
"items": {
"type": "string",
"description": "A type of FareClass. Compatible with the current NeTEx implementation of FareClassEnumeration at Entur. Related to but may include more than 'FareClassEnum'."
}
},
"carnet": {
"$ref": "#/$defs/Carnet"
},
"durationType": {
"type": "string",
"description": "Validity duration. Compatible with the current NeTEx implementation of UsageValidityTypeEnumeration at Entur. Related to but may include more than 'DurationTypeEnum'."
},
"nuisanceFacilities": {
"type": "array",
"items": {
"type": "string",
"description": "Nuisance facility for the product. Compatible with the current NeTEx implementation of NuisanceFacilityEnumeration at Entur."
}
}
},
"required": [
"organisation"
]
},
"Recommendation": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier of a recommendation within this response."
},
"geographicalValidityCovered": {
"$ref": "#/$defs/GeographicalValidityCovered"
},
"typeOfRecommendation": {
"$ref": "#/$defs/TypeOfRecommendationEnum"
},
"durationType": {
"$ref": "#/$defs/DurationEnum"
},
"fareClass": {
"$ref": "#/$defs/FareClassEnum"
},
"facilitySet": {
"$ref": "#/$defs/AccommodationFacilityEnum"
},
"offersToBuy": {
"type": "array",
"description": "Describes which offer to buy and how many of this offer to buy to satisfy a recommendation.",
"items": {
"$ref": "#/$defs/OfferToBuy"
}
},
"combineWithToCoverEntireJourney": {
"type": "array",
"description": "List of RecommendationCombination covering remaining parts of the journey. The current recommendation can be combined with one of these to cover the entire journey.",
"items": {
"$ref": "#/$defs/RecommendationCombination"
}
}
},
"required": [
"geographicalValidityCovered",
"id",
"offersToBuy",
"typeOfRecommendation"
]
},
"RecommendationCombination": {
"type": "object",
"description": "A combination of recommendations that together cover the entire journey.",
"properties": {
"geographicalValidityCovered": {
"$ref": "#/$defs/GeographicalValidityCovered"
},
"recommendationsToCoverEntireJourney": {
"type": "array",
"description": "You must select all recommendations in the list to cover the geographical validity.",
"items": {
"type": "string",
"description": "Id of the recommendation(s) to select."
},
"minItems": 1
}
},
"required": [
"geographicalValidityCovered",
"recommendationsToCoverEntireJourney"
],
"title": "RecommendationCombination"
},
"RecommendationResult": {
"type": "object",
"description": "A set of recommendations matching the provided recommendation configuration.",
"properties": {
"coveringEntireJourney": {
"type": "array",
"description": "Recommendations that cover the entire journey.",
"items": {
"$ref": "#/$defs/Recommendation"
}
},
"coveringPartOfJourney": {
"type": "array",
"description": "Recommendations that cover part of the journey. Use `combineWithToCoverEntireJourney` when available to build recommendations to achieve full journey coverage.",
"items": {
"$ref": "#/$defs/Recommendation"
}
}
}
},
"ReservingRequirementForServiceJourney": {
"type": "object",
"properties": {
"serviceJourney": {
"$ref": "#/$defs/ServiceJourneySummary"
},
"reservingRequirement": {
"type": "string",
"description": "Indicates requirements for reservation. Compatible with the current NeTEx implementation of ReservationEnumeration at Entur."
},
"seatMapIsAvailable": {
"type": "boolean",
"description": "Whether a seat map is available for seat selection on this service journey."
}
},
"required": [
"seatMapIsAvailable",
"serviceJourney"
]
},
"ServiceJourneySummary": {
"type": "object",
"properties": {
"datedServiceJourneyId": {
"type": "string"
},
"serviceJourneyId": {
"type": "string"
}
},
"required": [
"datedServiceJourneyId",
"serviceJourneyId"
]
},
"TravellerMappingSummary": {
"type": "object",
"description": "A specification of which travellers can use an offer, along with limitations on the number of travellers that must be selected from the group for the OFFER to be valid.",
"properties": {
"travellerIds": {
"type": "array",
"description": "The ids of the travellers.",
"items": {
"type": "string"
}
},
"maxNumberOfTravellers": {
"type": "integer",
"format": "int32",
"description": "The maximum number of travellers that can be selected from the group."
},
"minNumberOfTravellers": {
"type": "integer",
"format": "int32",
"description": "The minimum number of travellers that can be selected from the group."
},
"userType": {
"type": "string",
"description": "A type of person. An offer for userType=CHILD, will naturally be different than an offer for userType=ADULT. Compatible with the current NeTEx implementation of UserTypeEnumeration at Entur. Related to but may include more than 'UserTypeEnum'."
}
},
"required": [
"maxNumberOfTravellers",
"minNumberOfTravellers",
"travellerIds",
"userType"
]
},
"TypeOfRecommendationEnum": {
"type": "string",
"default": "CHEAPEST",
"description": "Describes the degree of flexibility in a recommendation (refundable vs non-refundable, exchangeable vs non-exchangeable). Whether the recommendation is the CHEAPEST - regardless of flexibility, or whether the recommendation is for a specified product.",
"enum": [
"FLEXIBLE",
"SEMI_FLEXIBLE",
"NON_FLEXIBLE",
"CHEAPEST"
]
},
"UnavailableProduct": {
"type": "object",
"description": "Representation of a product that is unavailable, but would have been included in an offer if available.",
"properties": {
"id": {
"type": "string",
"description": "NeTEx ID of the unavailable product."
},
"name": {
"type": "string",
"description": "Human readable name for the product."
},
"unavailableStatus": {
"type": "string",
"description": "Status of why a product is unavailable.\n NOT_IN_PURCHASE_WINDOW - Product is outside of window where it can be purchased.\n NOT_YET_AVAILABLE - The product is not available yet, no further information is specified\n NO_QUOTAS_DEFINED - The product requires quotas to be purchased, but no quotas are defined yet.\nNO_LONGER_AVAILABLE - The product is no longer available for purchase, no further information is specified.\nSOLD_OUT - The product has no more seats or quotas available for sale.\nCLOSED - The product is closed for sale.\n"
},
"serviceJourney": {
"$ref": "#/$defs/ServiceJourneySummary"
},
"properties": {
"$ref": "#/$defs/UnavailableProductProperties"
}
},
"required": [
"id",
"unavailableStatus"
]
},
"UnavailableProductProperties": {
"type": "object",
"description": "Properties of an unavailable product.",
"properties": {
"accommodations": {
"type": "array",
"items": {
"type": "string",
"description": "Accommodation facility. Compatible with the current NeTEx implementation of AccommodationFacilityEnumeration at Entur. Related to but may include more than 'AccommodationFacilityEnum'."
}
},
"fareClasses": {
"type": "array",
"items": {
"type": "string",
"description": "A type of FareClass. Compatible with the current NeTEx implementation of FareClassEnumeration at Entur. Related to but may include more than 'FareClassEnum'."
}
},
"isExchangeable": {
"type": "boolean",
"description": "Whether the product would have been exchangeable."
},
"isRefundable": {
"type": "boolean",
"description": "Whether the product would have been refundable."
},
"organisation": {
"$ref": "#/$defs/OrganisationSummary"
}
}
},
"UserProfileInGroupSummary": {
"type": "object",
"description": "Reference to a group.",
"properties": {
"id": {
"type": "string"
},
"version": {
"type": "string"
},
"numberOfPeople": {
"type": "integer",
"description": "Number of travellers required for this user profile in the group."
}
},
"required": [
"id",
"numberOfPeople"
]
},
"UserProfileSummary": {
"type": "object",
"description": "id, version, name and user type of a user.",
"properties": {
"id": {
"type": "string"
},
"version": {
"type": "string"
},
"name": {
"type": "string"
},
"userType": {
"type": "string",
"description": "A type of person. An offer for userType=CHILD, will naturally be different than an offer for userType=ADULT. Compatible with the current NeTEx implementation of UserTypeEnumeration at Entur. Related to but may include more than 'UserTypeEnum'."
}
},
"required": [
"id",
"name",
"version"
]
},
"ZonalValidity": {
"type": "object
# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/entur/refs/heads/main/json-schema/entur-search-response-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/entur-search-response"
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.