Resource details
Données temps-réel du réseau L’va suivant la structure GTFS-RT au format Protocol Buffers.
This resource file is part of the dataset Réseau urbain L'va.
Download availability
Learn more
HEAD request with a timeout of 5 seconds. If we detect a downtime, we perform subsequent tests every 10 minutes, until the resource is back online.For SIRI and SIRI Lite feeds, we perform a
GET request: a 401 or 405 status code is considered successful. In case of HTTP 500, the feed will be considered unavailable, unless the body appears to contain SOAP.Validation details
❌1 error, 2 warnings
Validation carried out using the current GTFS file and the GTFS-RT the 2026-02-02 at 08:00 Europe/Paris using the MobilityData GTFS-RT validator.
Errors
Vehicle position far from trip shape E029 1 error
The vehicle position should be within a certain distance of the GTFS shapes.txt data for the current trip unless there is a Service Alert with the Effect of DETOUR for this trip_id.
Sample errors
- vehicle.id vienne_faure-7640 trip_id 1400000949 at (45.586594,4.9541235) is more than 200.0 meters (0.12 mile(s)) from the GTFS trip shape - vehicle should be near trip shape or on DETOUR
Warnings
vehicle_id not populated W002 1 error
vehicle_id should be populated for TripUpdates and VehiclePositions
Sample errors
- trip_id 1400000036 does not have a vehicle_id
ID in one feed missing from the other W003 1 error
a trip_id that is provided in the VehiclePositions feed should be provided in the TripUpdates feed, and a vehicle_id that is provided in the TripUpdates feed should be provided in the VehiclePositions feed
Sample errors
- trip_id 1400000036 is in TripUpdates but not in VehiclePositions feed
Previous validations
Here is a recap of all the error types encountered over the last 30 days.
| Error ID | Description | Errors count | Number of occurences |
|---|---|---|---|
| W003 | a trip_id that is provided in the VehiclePositions feed should be provided in the TripUpdates feed, and a vehicle_id that is provided in the TripUpdates feed should be provided in the VehiclePositions feed | 92 | 23 times (77 % of validations) |
| W002 | vehicle_id should be populated for TripUpdates and VehiclePositions | 56 | 21 times (70 % of validations) |
| E029 | The vehicle position should be within a certain distance of the GTFS shapes.txt data for the current trip unless there is a Service Alert with the Effect of DETOUR for this trip_id. | 36 | 16 times (53 % of validations) |
| E041 | Unless a trip's schedule_relationship is CANCELED, a trip must have at least one stop_time_update | 3 | 2 times (7 % of validations) |
| E003 | All trip_ids provided in the GTFS-rt feed must exist in the GTFS data, unless the schedule_relationship is ADDED | 39 | 1 times (3 % of validations) |
| E022 | stop_time_update arrival/departure times between sequential stops should always increase - they should never be the same or decrease. | 10 | 1 times (3 % of validations) |
GTFS-RT feed content
Entities
Entities present in this feed at 2026-02-02 at 20:37 Europe/Paris.
trip_updates (6) vehicle_positions (5) service_alerts (0)Entities seen in the last 7 days.
trip_updates vehicle_positionsDecoded GTFS-RT feed
See full payload
Here is the decoded GTFS-RT feed Protobuf at 2026-02-02 at 20:37 Europe/Paris. You can look at the GTFS-RT documentation.
{
"entity": [
{
"id": "trip-1400000939",
"tripUpdate": {
"delay": -19,
"stopTimeUpdate": [
{
"arrival": {
"delay": -19,
"time": "1770060969"
},
"departure": {
"delay": -19,
"time": "1770061000"
},
"stopId": "vieport",
"stopSequence": 29
},
{
"arrival": {
"delay": -19,
"time": "1770061016"
},
"departure": {
"delay": -19,
"time": "1770061060"
},
"stopId": "vieteur",
"stopSequence": 30
},
{
"arrival": {
"delay": -19
},
"departure": {
"delay": -19
},
"stopId": "vierey",
"stopSequence": 31
},
{
"arrival": {
"delay": -19
},
"departure": {
"delay": -19
},
"stopId": "vieprin",
"stopSequence": 32
},
{
"arrival": {
"delay": -19
},
"departure": {
"delay": -19
},
"stopId": "viegest",
"stopSequence": 33
},
{
"arrival": {
"delay": -19
},
"departure": {
"delay": -19
},
"stopId": "viecite",
"stopSequence": 34
},
{
"arrival": {
"delay": -19
},
"departure": {
"delay": -19
},
"stopId": "viecuri",
"stopSequence": 35
},
{
"arrival": {
"delay": -19
},
"departure": {
"delay": -19
},
"stopId": "viecent",
"stopSequence": 36
},
{
"arrival": {
"delay": -19
},
"departure": {
"delay": -19
},
"stopId": "viesavo",
"stopSequence": 37
},
{
"arrival": {
"delay": -19
},
"departure": {
"delay": -19
},
"stopId": "viebern",
"stopSequence": 38
},
{
"arrival": {
"delay": -19
},
"departure": {
"delay": -19
},
"stopId": "viezies",
"stopSequence": 39
},
{
"arrival": {
"delay": -19
},
"departure": {
"delay": -19
},
"stopId": "vieccom",
"stopSequence": 40
}
],
"timestamp": "1770061065",
"trip": {
"directionId": 0,
"routeId": "1",
"scheduleRelationship": "SCHEDULED",
"startTime": "20:03:00",
"tripId": "1400000939"
},
"vehicle": {
"id": "vienne-88",
"label": "88",
"licensePlate": ""
}
}
},
{
"id": "trip-1400001561",
"tripUpdate": {
"delay": 47,
"stopTimeUpdate": [
{
"arrival": {
"delay": 47,
"time": "1770061036"
},
"departure": {
"delay": 47,
"time": "1770061067"
},
"stopId": "ponvega2",
"stopSequence": 19
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "ponforg2",
"stopSequence": 20
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "ponbleu2",
"stopSequence": 21
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "poncent2",
"stopSequence": 22
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "ponmesa2",
"stopSequence": 23
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "pongent2",
"stopSequence": 24
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "ponplan2",
"stopSequence": 25
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "ponbras2",
"stopSequence": 26
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "poncour2",
"stopSequence": 27
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "ponzmon2",
"stopSequence": 28
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "ponfrer2",
"stopSequence": 29
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "ponabb2",
"stopSequence": 30
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "vierond2",
"stopSequence": 31
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "viecedr2",
"stopSequence": 32
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "viehorl2",
"stopSequence": 33
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "vieferm2",
"stopSequence": 34
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "viehame2",
"stopSequence": 35
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "viemali2",
"stopSequence": 36
},
{
"arrival": {
"delay": 47
},
"departure": {
"delay": 47
},
"stopId": "viesmal2",
"stopSequence": 37
}
],
"timestamp": "1770061069",
"trip": {
"directionId": 1,
"routeId": "1",
"scheduleRelationship": "SCHEDULED",
"startTime": "20:11:00",
"tripId": "1400001561"
},
"vehicle": {
"id": "vienne-71",
"label": "71",
"licensePlate": ""
}
}
},
{
"id": "trip-1400000498",
"tripUpdate": {
"delay": 0,
"stopTimeUpdate": [
{
"arrival": {
"delay": -188,
"time": "1770060951"
},
"departure": {
"delay": -188
},
"stopId": "viesncf3",
"stopSequence": 13
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viemars2",
"stopSequence": 14
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vieverd2",
"stopSequence": 15
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vieserv2",
"stopSequence": 16
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viepyra2",
"stopSequence": 17
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vieden1",
"stopSequence": 18
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vietren2",
"stopSequence": 19
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vieparm2",
"stopSequence": 20
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viemoul2",
"stopSequence": 21
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viegali2",
"stopSequence": 22
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vieavou2",
"stopSequence": 23
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vieparc3",
"stopSequence": 24
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viedame2",
"stopSequence": 25
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viecoll",
"stopSequence": 26
}
],
"timestamp": "1770061052",
"trip": {
"directionId": 1,
"routeId": "2",
"scheduleRelationship": "SCHEDULED",
"startTime": "20:21:00",
"tripId": "1400000498"
},
"vehicle": {
"id": "vienne-72",
"label": "72",
"licensePlate": ""
}
}
},
{
"id": "trip-1400001562",
"tripUpdate": {
"delay": 59,
"stopTimeUpdate": [
{
"arrival": {
"delay": 37
},
"departure": {
"delay": 37,
"time": "1770060997"
},
"stopId": "viecite2",
"stopSequence": 7
},
{
"arrival": {
"delay": 59,
"time": "1770061002"
},
"departure": {
"delay": 59,
"time": "1770061019"
},
"stopId": "viegest2",
"stopSequence": 8
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "vieprin2",
"stopSequence": 9
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "vierey2",
"stopSequence": 10
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "vieteur2",
"stopSequence": 11
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "viejeud2",
"stopSequence": 12
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "viesncf",
"stopSequence": 13
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "viecybe2",
"stopSequence": 14
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "viechor4",
"stopSequence": 15
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "vierava2",
"stopSequence": 16
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "viechar2",
"stopSequence": 17
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "vieceva2",
"stopSequence": 18
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "ponvega2",
"stopSequence": 19
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "ponforg2",
"stopSequence": 20
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "ponbleu2",
"stopSequence": 21
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "poncent2",
"stopSequence": 22
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "ponmesa2",
"stopSequence": 23
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "pongent2",
"stopSequence": 24
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "ponplan2",
"stopSequence": 25
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "ponbras2",
"stopSequence": 26
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "poncour2",
"stopSequence": 27
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "ponzmon2",
"stopSequence": 28
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "ponfrer2",
"stopSequence": 29
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "ponabb2",
"stopSequence": 30
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "vierond2",
"stopSequence": 31
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "viecedr2",
"stopSequence": 32
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "viehorl2",
"stopSequence": 33
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "vieferm2",
"stopSequence": 34
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "viehame2",
"stopSequence": 35
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "viemali2",
"stopSequence": 36
},
{
"arrival": {
"delay": 59
},
"departure": {
"delay": 59
},
"stopId": "viesmal2",
"stopSequence": 37
}
],
"timestamp": "1770061056",
"trip": {
"directionId": 1,
"routeId": "1",
"scheduleRelationship": "SCHEDULED",
"startTime": "20:31:00",
"tripId": "1400001562"
},
"vehicle": {
"id": "vienne-95",
"label": "95",
"licensePlate": ""
}
}
},
{
"id": "trip-1400001058",
"tripUpdate": {
"delay": 0,
"stopTimeUpdate": [
{
"arrival": {
"delay": 42,
"time": "1770060181"
},
"departure": {
"delay": 42,
"time": "1770061002"
},
"stopId": "viecoll",
"stopSequence": 1
},
{
"arrival": {
"delay": 0,
"time": "1770061006"
},
"departure": {
"delay": 0,
"time": "1770061020"
},
"stopId": "viedame",
"stopSequence": 2
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vieparc2",
"stopSequence": 3
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vieavou",
"stopSequence": 4
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viegali",
"stopSequence": 5
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viemoul",
"stopSequence": 6
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vieparm1",
"stopSequence": 7
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vietren",
"stopSequence": 8
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vieden",
"stopSequence": 9
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viepyra",
"stopSequence": 10
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vieserv",
"stopSequence": 11
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vieverd",
"stopSequence": 12
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viemars",
"stopSequence": 13
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viesncf",
"stopSequence": 14
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viemaur2",
"stopSequence": 15
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viejeud",
"stopSequence": 16
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viecuvi2",
"stopSequence": 17
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viedrap2",
"stopSequence": 18
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vieecol",
"stopSequence": 19
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viebmau",
"stopSequence": 20
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vieenfa",
"stopSequence": 21
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viehgui",
"stopSequence": 22
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vieguil",
"stopSequence": 23
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viesalo",
"stopSequence": 24
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "viehopi",
"stopSequence": 25
},
{
"arrival": {
"delay": 0
},
"departure": {
"delay": 0
},
"stopId": "vieurge",
"stopSequence": 26
}
],
"timestamp": "1770061045",
"trip": {
"directionId": 0,
"routeId": "2",
"scheduleRelationship": "SCHEDULED",
"startTime": "20:36:00",
"tripId": "1400001058"
},
"vehicle": {
"id": "vienne-96",
"label": "96",
"licensePlate": ""
}
}
},
{
"id": "vehicle-vienne-72",
"vehicle": {
"currentStatus": "STOPPED_AT",
"currentStopSequence": 13,
"position": {
"bearing": 151.0,
"latitude": 45.521324157714844,
"longitude": 4.874268054962158,
"speed": 0.0
},
"stopId": "viesncf3",
"timestamp": "1770061049",
"trip": {
"directionId": 1,
"routeId": "2",
"scheduleRelationship": "SCHEDULED",
"tripId": "1400000498"
},
"vehicle": {
"id": "vienne-72",
"label": "72",
"licensePlate": ""
}
}
},
{
"id": "vehicle-vienne-96",
"vehicle": {
"currentStopSequence": 3,
"position": {
"bearing": 173.0,
"latitude": 45.50175476074219,
"longitude": 4.8515214920043945,
"speed": 5.555555820465088
},
"stopId": "vieparc2",
"timestamp": "1770061043",
"trip": {
"directionId": 0,
"routeId": "2",
"scheduleRelationship": "SCHEDULED",
"tripId": "1400001058"
},
"vehicle": {
"id": "vienne-96",
"label": "96",
"licensePlate": ""
}
}
},
{
"id": "vehicle-vienne-71",
"vehicle": {
"currentStatus": "INCOMING_AT",
"currentStopSequence": 20,
"position": {
"bearing": 62.0,
"latitude": 45.53041076660156,
"longitude": 4.903785228729248,
"speed": 6.94444465637207
},
"stopId": "ponforg2",
"timestamp": "1770061067",
"trip": {
"directionId": 1,
"routeId": "1",
"scheduleRelationship": "SCHEDULED",
"tripId": "1400001561"
},
"vehicle": {
"id": "vienne-71",
"label": "71",
"licensePlate": ""
}
}
},
{
"id": "vehicle-vienne-95",
"vehicle": {
"currentStopSequence": 9,
"position": {
"bearing": 120.0,
"latitude": 45.539798736572266,
"longitude": 4.868463516235352,
"speed": 3.055555582046509
},
"stopId": "vieprin2",
"timestamp": "1770061055",
"trip": {
"directionId": 1,
"routeId": "1",
"scheduleRelationship": "SCHEDULED",
"tripId": "1400001562"
},
"vehicle": {
"id": "vienne-95",
"label": "95",
"licensePlate": ""
}
}
},
{
"id": "vehicle-vienne-88",
"vehicle": {
"currentStatus": "INCOMING_AT",
"currentStopSequence": 31,
"position": {
"bearing": 301.0,
"latitude": 45.5360107421875,
"longitude": 4.8704962730407715,
"speed": 8.88888931274414
},
"stopId": "vierey",
"timestamp": "1770061060",
"trip": {
"directionId": 0,
"routeId": "1",
"scheduleRelationship": "SCHEDULED",
"tripId": "1400000939"
},
"vehicle": {
"id": "vienne-88",
"label": "88",
"licensePlate": ""
}
}
},
{
"id": "trip-1400000627",
"tripUpdate": {
"delay": 1125,
"stopTimeUpdate": [
{
"scheduleRelationship": "NO_DATA",
"stopId": "chrcces",
"stopSequence": 1
}
],
"timestamp": "1770061065",
"trip": {
"directionId": 0,
"routeId": "5",
"scheduleRelationship": "SCHEDULED",
"startTime": "20:19:00",
"tripId": "1400000627"
}
}
}
],
"header": {
"gtfsRealtimeVersion": "2.0",
"timestamp": "1770061073"
}
}