get_free_seats Search for available seat numbers for buses and trains, including wagon selection for train travel.
Endpoint: https://test-api.bussystem.eu/server/curl/get_free_seats.php
Method: POST Type: Conditional function
Description This function provides detailed seat availability information for routes that support it. You can only use this request if the get_routes
response contains request_get_free_seats = 1
.
For routes where this parameter is 0
, use the seat numbers provided directly in the get_routes
response for booking.
Parameters Authentication Parameter Type Required Description login
string ✓ Your API login password
string ✓ Your API password session
string Your session (recommended for additional routes)
Parameter Type Required Description interval_id
string ✓ Interval ID from get_routes
response
Train-Specific Parameters Parameter Type Required Description train_id
string For trains Train number from get_routes
response vagon_id
string For train seats Wagon ID from wagon search response
Response Options Parameter Type Description currency
enum Response currency: EUR
, RON
, PLN
, MDL
, RUB
, UAH
, CZK
lang
enum Response language: en
, ru
, ua
, de
, pl
, cz
Request Examples Bus Seat Search $url = 'https://test-api.bussystem.eu/server/curl/get_free_seats.php' ;
$post_data = [
"login" => "your_login" ,
"password" => "your_password" ,
"interval_id" => "90|gh340|d29-96" ,
"currency" => "EUR"
];
$curl = curl_init ();
curl_setopt_array ( $curl , [
CURLOPT_URL => $url ,
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_POST => true ,
CURLOPT_POSTFIELDS => $post_data
]);
$response = curl_exec ( $curl );
curl_close ( $curl );
echo $response ;
Train Wagon Search $post_data = [
"login" => "your_login" ,
"password" => "your_password" ,
"interval_id" => "train|141Ш КИЕВ-ПАССАЖИРСКИЙ - ЛЬВОВ|2200001|2218000|19.11.2022|141Ш|12:53|2022-11-19|2022-11-20|15:45:00|04:38:00" ,
"train_id" => "141Ш" ,
"lang" => "en" ,
"currency" => "EUR"
];
Train Seat Search $post_data = [
"login" => "your_login" ,
"password" => "your_password" ,
"interval_id" => "train|141Ш КИЕВ-ПАССАЖИРСКИЙ - ЛЬВОВ|2200001|2218000|19.11.2022|141Ш|12:53|2022-11-19|2022-11-20|15:45:00|04:38:00" ,
"vagon_id" => "14БЛБ" ,
"currency" => "EUR"
];
Response Examples Bus Seats Response [
{
"bustype_id" : "12" ,
"has_plan" : "1" ,
"free_seat" : [
{
"seat_number" : "31" ,
"seat_free" : "1" ,
"seat_price" : "16" ,
"seat_provision" : "1.6" ,
"seat_curency" : "EUR"
},
{
"seat_number" : "32" ,
"seat_free" : "1" ,
"seat_price" : "16" ,
"seat_provision" : "1.6" ,
"seat_curency" : "EUR"
},
{
"seat_number" : "47" ,
"seat_free" : "1" ,
"seat_price" : "15" ,
"seat_provision" : "1.5" ,
"seat_curency" : "EUR"
}
]
}
]
Train Wagons Response [
{
"train" : "141Ш KYIV-PASAZHYRSKY - LVIV" ,
"date_from" : "2022-11-19" ,
"date_to" : "2022-11-20" ,
"time_from" : "15:45:00" ,
"time_to" : "04:38:00" ,
"point_from" : "КИЕВ-ПАССАЖИРСКИЙ" ,
"point_to" : "ЛЬВОВ" ,
"free_seats" : "21" ,
"vagon" : [
{
"vagon_id" : "14БЛБ" ,
"vagon_number" : "14" ,
"vagon_gender" : "0" ,
"has_plan" : "1" ,
"vagon_type" : "L" ,
"vagon_class" : "Б" ,
"price" : "695.12" ,
"provision" : "6.95" ,
"currency" : "UAH" ,
"Up" : "0" ,
"Down" : "14" ,
"SideUp" : "0" ,
"SideDown" : "0" ,
"free_seats" : "14"
},
{
"vagon_id" : "13БКБ" ,
"vagon_number" : "13" ,
"vagon_gender" : "0" ,
"has_plan" : "1" ,
"vagon_type" : "K" ,
"vagon_class" : "Б" ,
"price" : "298.84" ,
"provision" : "2.98" ,
"currency" : "UAH" ,
"Up" : "4" ,
"Down" : "3" ,
"SideUp" : "0" ,
"SideDown" : "0" ,
"free_seats" : "7"
}
]
}
]
Train Seats Response [
{
"coupe_number" : "1" ,
"free_seat" : [
{
"seat_number" : "1" ,
"seat_free" : "1" ,
"seat_type" : "V" ,
"seat_price" : "20" ,
"seat_provision" : "2" ,
"seat_curency" : "EUR"
},
{
"seat_number" : "2" ,
"seat_free" : "1" ,
"seat_type" : "N" ,
"seat_price" : "20" ,
"seat_provision" : "2" ,
"seat_curency" : "EUR"
},
{
"seat_number" : "53" ,
"seat_free" : "0" ,
"seat_type" : "VB" ,
"seat_price" : "20" ,
"seat_provision" : "2" ,
"seat_curency" : "EUR"
}
]
}
]
Response Fields Reference Field Type Description bustype_id
string Bus type identifier for plan lookup has_plan
string 1
=seat plan available, 0
=no plan
Field Type Description train
string Train name and route date_from
, date_to
string Departure and arrival dates time_from
, time_to
string Departure and arrival times point_from
, point_to
string Departure and arrival stations free_seats
string Total available seats on train
Field Type Description vagon_id
string Critical: Wagon ID (required for seat search) vagon_number
string Wagon number vagon_gender
string 0
=mixed, 1
=gender-separated has_plan
string 1
=layout available, 0
=no layout vagon_type
string L=Luxe, M=Soft, K=Coupe, P=Standard, S=Seat, O=General vagon_class
string Service class description price
string Price per seat in this wagon provision
string Agency fee currency
string Price currency free_seats
string Available seats in this wagon
Seat Position Counts (Train) Field Type Description Up
string Upper berth seats available Down
string Lower berth seats available SideUp
string Upper side berth seats available SideDown
string Lower side berth seats available
Field Type Description seat_number
string Seat identifier seat_free
string 1
=available, 0
=occupied seat_price
string Price for this specific seat seat_provision
string Agency fee for this seat seat_curency
string Price currency
Train Seat Types Field Type Description seat_type
string V=Upper, N=Lower, VB=Side Upper, NB=Side Lower, S=Sitting seat_type_descr
string Localized seat type description seat_gender
string M=Male, F=Female (for gender-separated wagons) coupe_number
string Compartment number (for compartment cars)
Workflow Examples Bus Seat Selection Call get_free_seats
with interval_id
Display available seats with pricing Allow user to select preferred seats Use selected seat numbers in booking Train Seat Selection Call get_free_seats
with interval_id
and train_id
to get wagons Display wagon options with types and pricing Call get_free_seats
with vagon_id
to get seats in selected wagon Display seat layout (optionally with get_plan
) Allow user to select specific seats Use wagon and seat information in booking Error Responses Dealer Not Active {
"error" : "dealer_no_activ" ,
"detal" : "Dealer not active"
}
Route Not Active {
"error" : "route_no_activ"
}
Routes Not Found {
"error" : "interval_no_found"
}
No Seats Available {
"error" : "no_seat" ,
"detal" : "No seats"
}
{
"error" : "no_inforamtion" ,
"detal" : "No information about seats"
}
Note: The “no_inforamtion” error can be temporary - the request can be repeated.
Important Notes Prerequisites Only available when request_get_free_seats = 1
in get_routes
response For routes where this flag is 0
, use seat numbers from get_routes
directly Train Specifics Requires two-step process: first get wagons, then get seats Wagon types determine comfort level and pricing Gender-separated wagons available on some routes Compartment numbers help with seat organization Seat prices may vary within the same vehicle Prices shown are informational - use new_order
for final pricing Provision fees may apply per seat Integration Use bustype_id
or vagon_id
with get_plan
for visual layouts Combine with get_plan
for complete seat selection interfaces Essential for routes requiring specific seat assignments