Med detta API kan du ladda ner filer med planerad kollektivtrafik i Sverige. Informationen som publiceras genom APIet kommer från Samtrafiken i Sverige AB. Samtrafiken har ansvar för att samla in information om planerad kollektivtrafik (tidtabeller) för all kollektivtrafik som bedrivs i Sverige. Detta samlas i ett gemensamt trafikinformationssystem kallat GTI. Uppdraget regleras i en föreskrift från Transportstyrelsen och är en konsekvens av den lagstiftning som trädde i kraft i början av 2012 för kollektivtrafik i Sverige.

Vad är GTFS?

GTFS står för General Transit Feed Specification och är en standard som är framtagen av Google, och för hjälp med formatet så hänvisar vi till deras dokumentation som du finner här.
Detta API innehåller filer enligt detta format. 

I dagsläget har specifikationen inte stöd för multipla bytestider på ett stopställe. Detta gör att vi i GTFS-filerna endast har med en bytestid per stopställe, till skillnad från i till exempel ResRobot där det kan vara olika bytestider mellan olika operatörer eller linjer.  

Metoder

Innehåll

Sweden.zip innehåller ett antal filer som ingår i GTFS-formatet.
Flera delar i GTFS är inte obligatoriska och all information som omnäms i specifikationen finns inte med i Samtrafikens export (till exempel realtid och prisinformation).
Länkarna nedan går till Googles dokumentation. 

FilBeskrivning från Google
agency.txtOne or more transit agencies that provide the data in this feed.
stops.txtIndividual locations where vehicles pick up or drop off passengers.
routes.txtTransit routes. A route is a group of trips that are displayed to riders as a single service.
trips.txtTrips for each route. A trip is a sequence of two or more stops that occurs at specific time.
stop_times.txtTimes that a vehicle arrives at and departs from individual stops for each trip.
calendar.txtDates for service IDs using a weekly schedule. Specify when service starts and ends, as well as days of the week where service is available.
calendar_dates.txtExceptions for the service IDs defined in the calendar.txt file. If calendar_dates.txt includes ALL dates of service, this file may be specified instead of calendar.txt.
transfers.txtRules for making connections at transfer points between routes.
feed_info.txt
(Även i separat API-metod)
Additional information about the feed itself, including publisher, version, and expiration information.

Uppdateringar

Filen med all planerad information är förhållandevis stor (ca 40 Mb komprimerad) och kan kräva relativt stor kapacitet för att hantera. Det går därför att se när den version av sweden.zip som finns tillgänglig just nu, är skapad. Detta finns i filen feed_info.txt. Vi rekommenderar att du i dina tillämpningar kontrollerar om någon uppdatering skett och enbart laddar ner hela filen när den är uppdaterad. Filen uppdateras max en gång per dag, men oftast ungefär en gång i veckan. 

API-Nyckel

Det krävs en giltig API-nyckel som skickas med som parametern "key" i sweden.zip-metodanropet. En API-nyckel får du genom att skapa ett projekt som använder detta API. Mer om hur du skapar och använder API nycklar hittar du här. För att få en API-nyckel så måste du godkänna de licensvillkor som finns för detta API.

Det finns vissa begränsningar på antalet anrop per minut och per månad. Se vidare under Uppdateringar för hur du minimerar ditt behov av att ladda ner hela filen. 

NivåMax anrop/månadMax anrop/minut
Brons501

FAQ

Fråga 1: Alla olika fält i filerna är märkta med antingen Required eller Optional enligt Googles protokollspecifikation, men finns det några fält som Samtrafiken kräver inrapportering på som inte protokollet gör (dvs fält märkta Optional som man alltid kan räkna med innehåller information)?

Ja det finns flera fält som är markerade som optional men som alltid innehåller något data:

Agency.txt: agency_lang samt agency_id förstås eftersom vi alltid har flera trafikbolag.

Stops.txt: stop_url

Routes.txt: route_url

Fälten route_desc, route_color, route_text_color är alltid tomma i nuläget.

Trips.txt: trip_headsign  - det fältet är i praktiken den sista hållplatsen på turen vilket i sällsynta fall inte överensstämmer med  hur turen skyltas i trafiken.

Fälten direction_id, block_id, shape_id är alltid tomma i nuläget.

Stop_times.txt:  Inga av optional fälten innehåller alltid data.

Fälten stop_headsign, shape_dist_traveled är alltid tomma i nuläget.

Calendar.txt: Allt är required

Calendar_dates.txt:  Allt är required

Transfers.txt: Optional fältet min_transfer_time innehåller inte alltid data.

Fråga 2: Är det något av fälten i de angivna filerna som trafikbolagen inte har möjlighet att rapportera in även om de skulle vilja (dvs fält som man alltid kan räkna med att de INTE innehåller någon information)?

De fält som finns i våra filer idag (vilka de är framgår ifall du studerar rubrikerna i filerna) är de som kommer att gälla för överskådlig framtid. Inga nya fält tillkommer hux-flux även om något/några trafikbolag skulle ha data som passar in i något ytterligare fält.  Orsaken till det är bland annat att filerna skapas utifrån data som har bearbetats och ”homogeniserats” först i våra interna trafiksystem på Samtrafiken.

Se för övrigt beskrivningen i fråga 1 på en del av fälten som alltid är tomma i nuläget.

Fråga 3: Hur sker tilldelningen av id:n (route_id, service_id, trip_id etc)? Har de någonting med att göra hur trafikbolagen själva id-sätter internt (i t.ex. REBUS eller liknande) eller är det helt nya id:n?

Stop_id är Samtrafikens rikshållplatsnummer. De flesta trafikbolag har egna/annorlunda idn på hållplatserna. Tågoperatörer som t.ex SJ använder sig dock av samma nummer.

Service_id (i trips.txt): Det är bara en ”pekare” till calendar filerna. Skapas av Samtrafikens trafiksystem.

Trip_id är ett nummer som genereras i Samtrafikens trafiksystem och alltså inte har någon koppling till trafikbolagens nummer.

Route_id  skapas/sätts ihop av flera fält från trafikbolagen för att passa Googles definition av en ”route”. I princip sätter vi ihop producentnummer med trafikbolagets linjenummer samt med trafikslaget (tåg,buss etc).   Många tågföretag och expressbussbolag har dock unika nummer på varje avgång istället för ett ”linjenummer” (t.ex SJs tåg). Dessa får då en och samma route_id, t.ex ”74_J” eftersom Google inte accepterar att varje avgång har ett unikt nummer.