← All sources
DailyLive-testedOfficial public-page backend

Mobility / National rail schedules and station reference

Official Georgian Railway schedule backend

The current official Georgian Railway schedule page uses an unauthenticated JSON backend that exposes a multilingual station directory, all rides operating on a requested date, and a complete ordered list of railway points for each ride. Calling points contain scheduled times while infrastructure/pass-through points contain null times. This is detailed first-party schedule data, not live train tracking: no GPS position, actual or predicted time, delay, platform, cancellation reason or occupancy field was found.

01

Provenance and access

How the data is reached

Unauthenticated JSON over HTTPS on the official gr.com.ge domain. The tested endpoints returned CORS Access-Control-Allow-Origin: *. The backend is undocumented, has no published rate limit and uses rideId—not the outer schedule record id or GUID—for ride details.

Reuse status

No explicit open-data license or API reuse terms were found; public technical access does not itself authorize republication

02

Field-level detail

What is actually returned

livereferencederivedhistoricalunknown

Station response wrapper

Pagination wrapper returned by /api/stations.

10 fields
Field / pathTypeNull?ExampleMeaningFreshness
statusstringNosuccessAPI result statusderived
data.data[]array<object>No10 recordsCurrent station pagereference
data.meta.itemsPerPageintegerNo10Effective page sizederived
data.meta.totalItemsintegerNo515Total station records including hidden and international pointsderived
data.meta.currentPageintegerNo1Current page numberderived
data.meta.totalPagesintegerNo52Total page countderived
data.meta.sortByarrayNo[["station_country_id","DESC"]]Applied backend sortderived
data.links.currentURL stringNostation page URLCurrent pagination URLReturned URLs used HTTP even though the request used HTTPSderived
data.links.nextURL stringYesnext station page URLNext-page URLderived
data.links.lastURL stringNolast station page URLFinal-page URLderived

Station

Multilingual directory record; may be hidden or outside Georgia.

14 fields
Field / pathTypeNull?ExampleMeaningFreshness
idintegerNo220Website database identifierDistinct from station_id and station_codereference
station_idnumeric stringNo3External or core station identifierreference
prioritynumberYesnullDisplay or search priorityreference
station_codestringNo54681Railway station codereference
station_countrystringNoაზერბაიჯანიCountry nameGeorgian in the samplereference
station_country_idstringNo6Country identifier serialized as a stringreference
namestringNoბაქანი 526 კმDefault station namereference
name_kastringNoბაქანი 526 კმGeorgian station namereference
name_enstringNoPlatform 526 kmEnglish station namereference
name_rustringNoПЛАТФОРМА 526 КМRussian station nameTrailing padding spaces were observedreference
hidebooleanNotrueWhether the official UI hides the stationreference
created_atISO datetimeNo2024-07-15T12:52:32.613ZDatabase-record creation timeNot service freshnesshistorical
updated_atISO datetimeNo2025-04-17T11:03:31.590ZLast station-record updatehistorical
deleted_atISO datetimeYesnullSoft-deletion timehistorical

Ride-summary response

Date-specific schedules returned by /api/schedules/core.

9 fields
Field / pathTypeNull?ExampleMeaningFreshness
list[]array<object>No34 recordsRides on the requested service datereference
paging.pageIndexintegerNo0Zero-based current pagederived
paging.pageSizeintegerNo99999Effective page sizederived
paging.pageSizeItems[]integer arrayNo[10,20,30,34]UI page-size choicesderived
paging.pageCountintegerNo1Page countderived
paging.rowCountintegerNo34Ride countderived
agregateValues[].aggregatenull or unknownYesnullAggregate grouping valueagregateValues is misspelled by the APIderived
agregateValues[].codestringNocountAggregate metric codederived
agregateValues[].valueintegerNo34Aggregate metric valuederived

Ride summary

One train service operating on the requested date.

15 fields
Field / pathTypeNull?ExampleMeaningFreshness
idintegerNo24011Schedule-instance database IDNot valid for ride-detailsreference
guidUUID stringNo36170945-…Schedule-instance GUIDNot valid for ride-detailsreference
rideIdintegerNo21278Ride identifier required by the details endpointreference
routeTypeobjectNo{id:2,code:"local",name:"local",cultureName:null}Service categoryObserved codes: local, district and internationalreference
directionIdintegerNo1Internal railway direction IDSemantics undocumentedreference
rideNumberintegerNo802Public train numberreference
trainUidintegerNo164Internal train UIDreference
scheduleobjectNoTbilisi–Batumi code/name objectSchedule templateContains id, code, name and cultureNamereference
isActivebooleanNotrueWhether the schedule record is enabledNot proof that the train is currently movingreference
isApprovedbooleanNotrueTimetable approval flagreference
startDateISO datetimeNo2026-07-22T04:00:00ZScheduled origin departurereference
endDateISO datetimeNo2026-07-22T09:12:00ZScheduled destination arrivalreference
startStationcode/name objectNo{id:98,code:"56014",name:"TBILISI(pass)",cultureName:null}Origin stationreference
endStationcode/name objectNo{id:309,code:"57151",name:"BATUMI(pass)",cultureName:null}Destination stationreference
numberOfStandinStationintegerNo5Number of scheduled calling or standing stationsField name is misspelled in the APIreference

Shared code/name object

Shape shared by route types, schedules and core station references.

4 fields
Field / pathTypeNull?ExampleMeaningFreshness
idintegerNo98Internal entity IDreference
codestringNo56014Entity code; meaning depends on parent objectreference
namestringNoTBILISI(pass)Core display namereference
cultureNamestringYesnullLocalized name overridereference

Ride detail point

One ordered passenger or infrastructure railway point in /ride-details/{rideId}.

16 fields
Field / pathTypeNull?ExampleMeaningFreshness
idintegerNo1277076Detail-row database IDreference
guidUUID stringNoda7ea5d0-…Detail-row GUIDreference
indexintegerNo72One-based order along the ridereference
stationIdintegerNo385Internal station foreign keyreference
stationcode/name objectNoKutaisi International Airport pointRailway point identityreference
distanceValuenumberNo2Distance increment or segment valueUnit undocumented; values behave like kilometresreference
distanceCountryIdintegerYes4Country associated with the distance segmentreference
arrivalTimeHourintegerYes11Local scheduled arrival hourNull at non-calling pointsreference
arrivalTimeMinuteintegerYes18Local scheduled arrival minutereference
arrivalDateTimeISO datetimeYes2026-07-22T07:18:00ZScheduled arrival instantreference
departureTimeHourintegerYes11Local scheduled departure hourreference
departureTimeMinuteintegerYes22Local scheduled departure minutereference
departureDateTimeISO datetimeYes2026-07-22T07:22:00ZScheduled departure instantreference
dayNumberintegerYes0Day offset from ride startreference
isStandingStationbooleanYestrueWhether the train calls at this pointNull for pass-through pointsreference
standingTimenumberNo4Scheduled dwell time in minutesZero at non-stops and the originreference
03

Representative evidence

Sample records

Train 802 ride summary

Retrieved 2026-07-22 13:42 Asia/Tbilisi

JSON
{"rideId":21278,"routeType":{"id":2,"code":"local","name":"local","cultureName":null},"rideNumber":802,"startDate":"2026-07-22T04:00:00Z","endDate":"2026-07-22T09:12:00Z","startStation":{"id":98,"code":"56014","name":"TBILISI(pass)","cultureName":null},"endStation":{"id":309,"code":"57151","name":"BATUMI(pass)","cultureName":null},"numberOfStandinStation":5}

Calling point and pass-through point

Retrieved 2026-07-22 13:43 Asia/Tbilisi

JSON
[{"index":72,"station":{"id":385,"code":"57450","name":"qutaisis saertashoriso aeroporti","cultureName":null},"arrivalDateTime":"2026-07-22T07:18:00Z","departureDateTime":"2026-07-22T07:22:00Z","isStandingStation":true,"standingTime":4},{"index":2,"station":{"id":101,"code":"56020","name":"tbilisi-satv","cultureName":null},"arrivalDateTime":null,"departureDateTime":null,"isStandingStation":null,"standingTime":0}]
04

Boundaries

Reliability, caveats, and privacy

What held up

  • All endpoints returned current JSON from the official domain
  • The tested ride-details parameter was independently verified as rideId
  • Complete route-point ordering makes passenger calls distinguishable from pass-through infrastructure points

What can go wrong

  • Undocumented public-page backend with no version or rate-limit guarantee
  • No open-data/reuse license found
  • Scheduled times are not actual or predicted times
  • No GPS, delay, platform, cancellation reason, seat availability or occupancy fields
  • Station directory includes hidden and foreign records and mixed-quality transliterations
  • isActive is configuration state, not live movement

Privacy boundary

  • Contains schedules and public infrastructure records, not traveler bookings or passenger identities