🏨 Booking.com
Access booking.com data including location discovery, hotel searches, metadata, and comprehensive travel information. Unified travel intelligence API with normalized data from booking.com for travel applications, booking platforms, and travel tools.
Hotels & Details
Search and autocomplete destinations, cities, and locations with fast, real-time results.
GET /v1/hotels/autocomplete
requires authentication
Destination autocomplete suggestions using Booking.com API.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/booking/hotels/autocomplete'
params = {
'search': 'oklah',
'language': 'en-us',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/booking/hotels/autocomplete';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'search' => 'oklah',
'language' => 'en-us',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/booking/hotels/autocomplete"
);
const params = {
"search": "oklah",
"language": "en-us",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/booking/hotels/autocomplete?search=oklah&language=en-us" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"query": "Oklahoma",
"language": "en-us",
"limit": 10,
"total": 10,
"timestamp": 1769201089000
},
"body": [
{
"id": "city/20014181",
"type": "CITY",
"name": "Los Angeles",
"full_name": "Los Angeles, United States",
"subtitle": "United States",
"country_code": "us",
"destination_id": "20014181",
"coordinates": {
"latitude": 0,
"longitude": 0
},
"image_url": "https://www.booking.comhttps://cf.bstatic.com/xdata/images/city/square250/977423.jpg?k=0193bafd576ab928da833eda51d335337b2852f314b1496c4874fccdaedf863f&o=",
"label_components": [],
"metadata": {
"language_code": "xu",
"max_stay": 90,
"eligible_pages": [],
"is_ski_destination": false,
"source": "RECP"
},
"city": "Los Angeles"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/hotels/search-by-coordinates
requires authentication
Search for hotels/properties by geographic coordinates.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/booking/hotels/search-by-coordinates'
params = {
'latitude': '35.458611',
'longitude': '-97.600556',
'radius': '10',
'checkin': '2026-01-24',
'checkout': '2026-01-27',
'adults': '2',
'children_ages': '5,8',
'language': 'en-us',
'min_price': '50',
'max_price': '300',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/booking/hotels/search-by-coordinates';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'latitude' => '35.458611',
'longitude' => '-97.600556',
'radius' => '10',
'checkin' => '2026-01-24',
'checkout' => '2026-01-27',
'adults' => '2',
'children_ages' => '5,8',
'language' => 'en-us',
'min_price' => '50',
'max_price' => '300',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/booking/hotels/search-by-coordinates"
);
const params = {
"latitude": "35.458611",
"longitude": "-97.600556",
"radius": "10",
"checkin": "2026-01-24",
"checkout": "2026-01-27",
"adults": "2",
"children_ages": "5,8",
"language": "en-us",
"min_price": "50",
"max_price": "300",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/booking/hotels/search-by-coordinates?latitude=35.458611&longitude=-97.600556&radius=10&checkin=2026-01-24&checkout=2026-01-27&adults=2&children_ages=5%2C8&language=en-us&min_price=50&max_price=300" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"latitude": "35.458611",
"longitude": "-97",
"radius_km": "10",
"checkin": "2026-01-24",
"checkout": "2026-01-30",
"adults": 2,
"children": 0,
"rooms": 1,
"language": "en-us",
"map_markers": [
{
"id": 20103163,
"name": "Meeker",
"coordinates": {
"latitude": 35.5032997131348,
"longitude": -96.9024963378906
}
}
]
},
"body": [
{
"hotel_id": 521256,
"name": "Super 8 by Wyndham Shawnee",
"accommodation_type": 204,
"ufi": 20103613,
"page_name": "super-8-shawnee",
"location": {
"address": "4900 North Harrison Street",
"formatted_address": "4900 North Harrison Street, Shawnee, OK",
"country_code": "us",
"coordinates": {
"latitude": 35.385774,
"longitude": -96.91233
},
"beach_distance": null,
"main_distance": null,
"nearby_beach_names": [],
"location_score": 7.4,
"location_formatted_score": "7.4",
"location_text": "Location"
},
"photos": {
"low_res": "https://cf.bstatic.com/xdata/images/hotel/square240/156624265.webp?k=b39c258f54277e16e2f7681049c62e3853ea5957219da119a6e09d34029781e7&o=",
"high_res": "https://cf.bstatic.com/xdata/images/hotel/square600/156624265.webp?k=b39c258f54277e16e2f7681049c62e3853ea5957219da119a6e09d34029781e7&o="
},
"ratings": { ... },
"availability": { ... },
"policies": { ... },
"price_info": {
"display_price": {
"copy": "Total",
"amount_per_stay": {
"amount": "$309.60",
"amount_rounded": "$310",
"amount_unformatted": 309.6,
"currency": "USD"
}
},
"average_price_per_night": {
"amount": "$51.60",
"amount_rounded": "$52",
"amount_unformatted": 51.6000000000001,
"currency": "USD"
},
"price_before_discount": {
"copy": "Original price",
"amount_per_stay": {
"amount": "$387",
"amount_rounded": "$387",
"amount_unformatted": 387,
"currency": "USD"
}
},
"discounts": [
{
"name": "Early 2026 Deal",
"description": "This property is offering a discount on stays between Jan 1 and Apr 1 2026.",
"item_type": "rate",
"product_id": "campaign_37_rate_plan",
"amount": {
"amount": "$77.40",
"amount_rounded": "$77",
"amount_unformatted": 77.4000000000001,
"currency": "USD"
}
}
],
"badges": [
{
"name": "Early 2026 Deal",
"tooltip": "This property is offering a discount on stays between Jan 1 and Apr 1 2026.",
"style": "constructive",
"identifier": "Early Year Deals"
}
],
"charges_info": null,
"excluded_charges": {
"aggregated": {
"copy": null,
"amount_per_stay": {
"amount": "$46.44",
"amount_rounded": "$46",
"amount_unformatted": 46.4400000000001,
"currency": "USD"
}
},
"list": [
{
"charge_type": 23,
"charge_mode": "PERCENTAGE",
"charge_inclusion": "EXCLUDED",
"amount_per_stay": {
"amount": "$46.44",
"amount_rounded": "$46",
"amount_unformatted": 46.4400000000001,
"currency": "USD"
}
}
]
},
"use_rounded_amount": false
},
"room_blocks": 1,
"meal_plan": {
"type": "MEAL_PLAN",
"text": "Breakfast included"
},
"genius_info": { ... },
"persuasion_flags": { ... },
"recommended_dates": { ... }
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/hotels/details
requires authentication
Get comprehensive details for a specific hotel/property.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/booking/hotels/details'
params = {
'hotel_id': '2572691',
'checkin': '2026-01-24',
'checkout': '2026-01-27',
'adults': '2',
'children': '0',
'rooms': '1',
'children_ages': '5,8',
'language': 'en-us',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/booking/hotels/details';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'hotel_id' => '2572691',
'checkin' => '2026-01-24',
'checkout' => '2026-01-27',
'adults' => '2',
'children' => '0',
'rooms' => '1',
'children_ages' => '5,8',
'language' => 'en-us',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/booking/hotels/details"
);
const params = {
"hotel_id": "2572691",
"checkin": "2026-01-24",
"checkout": "2026-01-27",
"adults": "2",
"children": "0",
"rooms": "1",
"children_ages": "5,8",
"language": "en-us",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/booking/hotels/details?hotel_id=2572691&checkin=2026-01-24&checkout=2026-01-27&adults=2&children=0&rooms=1&children_ages=5%2C8&language=en-us" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"hotel_id": "2572691",
"checkin": "2026-01-25",
"checkout": "2026-01-28",
"adults": 2,
"children": 0,
"rooms": 1,
"language": "en-us",
"currency": "USD"
},
"body": {
"hotel_id": 2572691,
"name": "La Quinta by Wyndham Oklahoma City Airport",
"accommodation_type": 204,
"ufi": 20103321,
"page_name": "la-quinta-inn-suites-oklahoma-city-airport",
"location": {
"address": "808 S Meridian Ave",
"formatted_address": "808 S Meridian Ave, Oklahoma City, OK",
"country_code": "us",
"coordinates": {
"latitude": 35.458611,
"longitude": -97.600556
},
"beach_distance": null,
"main_distance": null,
"nearby_beach_names": [],
"location_score": 8.7,
"location_formatted_score": "8.7",
"location_text": "Location"
},
"photos": {
"low_res": "https://cf.bstatic.com/xdata/images/hotel/square240/226690967.webp?k=8288ed35831fb235a9a93b3042d933358718d9eee2ed99243ef3deef6ccefd92&o=",
"high_res": "https://cf.bstatic.com/xdata/images/hotel/square600/226690967.webp?k=8288ed35831fb235a9a93b3042d933358718d9eee2ed99243ef3deef6ccefd92&o="
},
"ratings": {
"internal": {
"score": 8.2,
"count": 753,
"total_score_text": "Very Good",
"secondary_score": 0,
"secondary_text": null,
"show_secondary_score": false
},
"external": { ... },
"star_rating": { ... }
},
"availability": {
"is_sold_out": false,
"alternative_dates": [],
"is_newly_opened": false,
"is_tpi_exclusive": false
},
"policies": {
"free_cancellation": false,
"no_prepayment": true
},
"price_info": {
"display_price": {
"copy": "Total",
"amount_per_stay": {
"amount": "$196.80",
"amount_rounded": "$197",
"amount_unformatted": 196.8,
"currency": "USD"
}
},
"average_price_per_night": {
"amount": "$65.60",
"amount_rounded": "$66",
"amount_unformatted": 65.6000000000001,
"currency": "USD"
},
"price_before_discount": {
"copy": "Original price",
"amount_per_stay": {
"amount": "$246",
"amount_rounded": "$246",
"amount_unformatted": 246,
"currency": "USD"
}
},
"discounts": [ ... ],
"badges": [ ... ],
"charges_info": null,
"excluded_charges": { ... },
"use_rounded_amount": false
},
"room_blocks": [ ... ],
"unit_configurations": { ... },
"genius_info": { ... },
"persuasion_flags": {
"preferred": true,
"preferred_plus": false,
"highlighted": false,
"show_native_ad_label": false
},
"meal_plan": {
"type": "MEAL_PLAN",
"text": "Breakfast included"
},
"recommended_dates": { ... }
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/hotels/rooms
requires authentication
Get detailed room information including photos, bed configurations, facilities, privacy levels, and room-specific review scores.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/booking/hotels/rooms'
params = {
'hotel_id': '2572691',
'language': 'en-us',
'rooms': '1',
'adults': '2',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/booking/hotels/rooms';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'hotel_id' => '2572691',
'language' => 'en-us',
'rooms' => '1',
'adults' => '2',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/booking/hotels/rooms"
);
const params = {
"hotel_id": "2572691",
"language": "en-us",
"rooms": "1",
"adults": "2",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/booking/hotels/rooms?hotel_id=2572691&language=en-us&rooms=1&adults=2" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"hotel_id": "2572691",
"language": "en-us",
"total_rooms": 8,
"search_config": {
"rooms": 1,
"adults": 2,
"children": 0,
"children_ages": [],
"travel_reason": "LEISURE"
},
"has_review_scores": true,
"timestamp": 1769321456000
},
"body": {
"property": {
"id": 2572691,
"name": "La Quinta by Wyndham Oklahoma City Airport",
"accommodation_type": {
"type": "HOTEL",
"__typename": "PropertyType",
"id": 204
},
"has_designated_smoking_area": false,
"area_measurement_unit": "SQUARE_FEET",
"has_rooms_with_different_privacy_levels": false
},
"rooms": [
{
"id": 257269101,
"hotel_id": "2572691",
"room_type_id": 13,
"name": "Queen Room with Two Queen Beds",
"description": "Providing free toiletries, this family room includes a private bathroom with a bath, a shower and a hairdryer. This family room is air-conditioned and features a flat-screen TV, a tea and coffee maker, a wardrobe and a tiled floor. The unit offers 2 beds.",
"size": {
"square_meters": 27.87,
"is_bigger_than_average": false
},
"privacy_level": 1,
"occupancy": {
"max_guests": 5,
"max_persons": 5,
"max_children": 4
},
"bed_configurations": [
{
"id": 1,
"beds": [
{
"type": "LARGE_DOUBLE_BED",
"count": 2,
"translation": "Queen bed(s)"
}
]
}
],
"apartment_rooms": [],
"bathrooms": {
"count": 0,
"facilities": {
"is_ensuite_bathroom": false,
"is_external_bathroom": false
}
},
"smoking_policy": {
"is_smoking": false,
"has_designated_area": null
},
"photos": [
{
"id": 264839682,
"url": "https://cf.bstatic.com/xdata/images/hotel/max1024x768/264839682.jpg?k=846be3ceef43d15efddf71f8c24167eea96127b3a2a0e31860e61899e557505e&o=",
"thumbnail_url": "https://cf.bstatic.com/xdata/images/hotel/square60/264839682.jpg?k=846be3ceef43d15efddf71f8c24167eea96127b3a2a0e31860e61899e557505e&o="
},
{ ... }
],
"facilities": [
{
"category": "BATHROOM_PRIVATE",
"facilities": [
{
"id": 5,
"name": "Bathtub"
},
{
"id": 27,
"name": "Free toiletries"
},
{ ... }
]
},
{
"category": "OTHER",
"facilities": [
{
"id": 11,
"name": "Air conditioning"
},
{
"id": 125,
"name": "Linens"
},
{ ... }
]
}
],
"highlights": {
"privacy": "PRIVACY_LEVEL_1",
"size": 300,
"room_facilities": [
{
"id": 5,
"name": "Bathtub"
},
{ ... }
],
"hotel_facilities": [ ... ]
},
"cribs": {
"available_for_free": true
},
"metadata": {
"total_photos": 8,
"has_multiple_bed_configs": false,
"has_apartment_layout": false,
"privacy_type": "unknown"
}
},
{ ... }
],
"facilities_summary": { ... },
"review_scores": [ ... ]
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/hotels/availability
requires authentication
Get availability and pricing calendar for a hotel showing available dates, prices, and minimum stay requirements over a specified period.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/booking/hotels/availability'
params = {
'hotel_id': '2572691',
'start_date': '',
'days': '7',
'language': 'en-us',
'children_ages': '5,8',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/booking/hotels/availability';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'hotel_id' => '2572691',
'start_date' => '',
'days' => '7',
'language' => 'en-us',
'children_ages' => '5,8',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/booking/hotels/availability"
);
const params = {
"hotel_id": "2572691",
"start_date": "",
"days": "7",
"language": "en-us",
"children_ages": "5,8",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/booking/hotels/availability?hotel_id=2572691&start_date=&days=7&language=en-us&children_ages=5%2C8" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"hotel_id": "2572691",
"hotel_name": "la-quinta-inn-suites-oklahoma-city-airport",
"language": "en-us",
"country_code": "us",
"has_availability": true,
"period": {
"start_date": "2026-01-01",
"end_date": "2026-03-02",
"days_requested": 60
},
"search_config": {
"adults": 2,
"rooms": 1,
"children": 0,
"travel_purpose": 2
},
"timestamp": 1769326227000
},
"body": {
"calendar": [
{
"date": "2026-01-01",
"available": true,
"checkin": "2026-02-10",
"price_formatted": "$74",
"min_stay": 1,
"is_past_date": true
},
{ ... }
],
"summary": {
"total_days": 60,
"available_days": 60,
"available_percentage": 100
}
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/hotels/reviews
requires authentication
Retrieve hotel reviews with filtering, sorting, and pagination using Booking.com API.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/booking/hotels/reviews'
params = {
'hotel_id': '2572691',
'language': 'en-us',
'sort': 'NEWEST_FIRST',
'score': '4',
'topic': 'clean',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/booking/hotels/reviews';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'hotel_id' => '2572691',
'language' => 'en-us',
'sort' => 'NEWEST_FIRST',
'score' => '4',
'topic' => 'clean',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/booking/hotels/reviews"
);
const params = {
"hotel_id": "2572691",
"language": "en-us",
"sort": "NEWEST_FIRST",
"score": "4",
"topic": "clean",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/booking/hotels/reviews?hotel_id=2572691&language=en-us&sort=NEWEST_FIRST&score=4&topic=clean" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"hotel_id": "2572691",
"language": "en-us",
"total_reviews": 755,
"has_reviews": true,
"pagination": {
"skip": "10",
"limit": 10,
"total": 755,
"has_more": true,
"next_skip": 20
},
"sort_options": [
{
"value": "MOST_RELEVANT",
"name": "Most relevant"
},
{
"value": "NEWEST_FIRST",
"name": "Newest first"
},
{
"value": "OLDEST_FIRST",
"name": "Oldest first"
},
{
"value": "SCORE_DESC",
"name": "Highest scores"
},
{
"value": "SCORE_ASC",
"name": "Lowest scores"
}
],
"current_sort": "NEWEST_FIRST",
"score": "ALL",
"timestamp": 1769301171000
},
"body": {
"reviews": [
{
"id": "134cd3fee145284f85950605d23d39db",
"hotel_id": "2572691",
"review_url": "7a7956e20eca73cd",
"guest": {
"username": "Scott",
"is_anonymous": false,
"country": {
"code": "us",
"name": "United States",
"show_flag": true
},
"avatar": {
"url": "https://graph.facebook.com/v2.9/10207316841399212/picture?type=square&height=64&width=64",
"color": null
},
"guest_type": "Solo traveler"
},
"booking": {
"customer_type": "SOLO_TRAVELLERS",
"room": {
"id": 257269102,
"type": "King Room"
},
"stay_dates": {
"checkin": "2025-11-08",
"checkout": "2025-11-09"
},
"nights": 1,
"status": "stayed"
},
"text": {
"title": null,
"positive": "An Amazing bed, great shower, great bathroom, plenty of room, great room. The breakfast was excellent.",
"negative": "The landscape needs a little help, and please dump the outdoor trash cans.",
"language": "xu",
"is_translatable": false
},
"score": {
"overall": 9,
"breakdown": null
},
"dates": {
"reviewed": 1767242551,
"stay": {
"month": null,
"year": null
}
},
"metrics": {
"helpful_votes": 0,
"is_approved": true
},
"photos": [],
"partner_reply": {
"reply": "Thank you for taking the time to share your feedback. We’re delighted to hear that you enjoyed the bed, room, bathroom, shower, and our breakfast—your kind words mean a lot to our team.\n\nWe also appreciate you bringing the landscaping and outdoor trash cans to our attention. Your comments have been noted, and we will address these areas to ensure an improved experience for future guests. We hope to have the opportunity to welcome you back again."
},
"highlights": {
"positive": [],
"negative": []
}
},
{ ... }
],
"summary": [
{
"category": "hotel_staff",
"translation": "Staff",
"score": 8.39221096038818,
"average_range": {
"ufiScoreHigherBound": 9.43247509002686,
"ufiScoreLowerBound": 7.39169979095459
}
},
{ ... }
],
"filters": { ... },
"stats": {
"average_score": null,
"distribution": [
{
"score": "ALL",
"name": "All (755)",
"count": 755
},
{
"score": "REVIEW_ADJ_SUPERB",
"name": "Wonderful: 9+ (436)",
"count": 436
},
{ ... }
]
}
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/hotels/nearby-attractions
requires authentication
Get detailed information about what's nearby a hotel including airports, landmarks, restaurants, beaches, public transport, and natural attractions.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/booking/hotels/nearby-attractions'
params = {
'hotel_id': '2572691',
'language': 'en-us',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/booking/hotels/nearby-attractions';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'hotel_id' => '2572691',
'language' => 'en-us',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/booking/hotels/nearby-attractions"
);
const params = {
"hotel_id": "2572691",
"language": "en-us",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/booking/hotels/nearby-attractions?hotel_id=2572691&language=en-us" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"hotel_id": "2572691",
"language": "en-us",
"has_surroundings": true,
"categories_found": [
"airports",
"dining",
"landmarks",
"public_transport",
"natural_beauty"
],
"category_counts": {
"airports": 1,
"dining": 2,
"landmarks": 2,
"public_transport": 3,
"natural_beauty": 5
},
"include_ski": false,
"include_commute": false,
"timestamp": 1769319132000
},
"body": {
"attractions": {
"airports": [
{
"id": "67559",
"legacy_id": 207,
"name": "Will Rogers World Airport",
"type": "airport",
"geo_class": "Airports",
"location": {
"latitude": 35.3953,
"longitude": -97.5962
},
"distance": {
"raw": 5.238,
"localized": "3.3 mi"
},
"real_distance": {
"isIsolated": false,
"commuteTime": {
"byCarLocalized": "7 min",
"byFootLocalized": "1 hr 17 min"
},
"commuteDistance": {
"byCarLocalized": "4.7 mi",
"byCarMeters": 7512,
"byFootMeters": 6472,
"byFootLocalized": "4 mi"
}
},
"commute": null,
"metadata": {
"has_commute_info": true,
"is_isolated": false
}
}
],
"dining": { ... },
"landmarks": { ... },
"public_transport": { ... },
"natural_beauty": { ... }
},
"summary": {
"total_categories": 5,
"total_items": 17,
"closest_item": {
"id": "8348708",
"name": "Maple Korean BBQ",
"type": "restaurant",
"geo_class": "Restaurants",
"cuisine_type": null,
"location": {
"latitude": 35.45921,
"longitude": -97.59996
},
"distance": {
"raw": 0.085,
"localized": "250 ft"
},
"real_distance": {
"commuteDistance": {
"byFootLocalized": "600 ft",
"byCarLocalized": "650 ft",
"byCarMeters": 207,
"byFootMeters": 193
},
"commuteTime": {
"byFootLocalized": "2 min",
"byCarLocalized": "1 min"
},
"isIsolated": false
},
"commute": null,
"metadata": {
"has_commute_info": true,
"is_isolated": false
}
}
}
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/hotels/faq
requires authentication
Get frequently asked questions for a specific hotel from Booking.com.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/booking/hotels/faq'
params = {
'hotel_id': '2572691',
'language': 'en-us',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/booking/hotels/faq';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'hotel_id' => '2572691',
'language' => 'en-us',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/booking/hotels/faq"
);
const params = {
"hotel_id": "2572691",
"language": "en-us",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/booking/hotels/faq?hotel_id=2572691&language=en-us" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"hotel_id": "2572691",
"language": "en-us",
"country_code": "us",
"has_faq": true,
"faq_title": "FAQs about La Quinta by Wyndham Oklahoma City Airport",
"total_questions": 8,
"timestamp": 1769327086000
},
"body": [
{
"id": 1,
"question": "What kind of breakfast is served at La Quinta by Wyndham Oklahoma City Airport?",
"answer": "Guests staying at La Quinta by Wyndham Oklahoma City Airport can enjoy a highly-rated breakfast during their stay (guest review score: 8.2).\n\nBreakfast option(s) include: [ITEM_LIST]Continental;American;Buffet[/ITEM_LIST]"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Flights & Details
Flight search, availability, and booking functionality.
GET /v1/flights/autocomplete
requires authentication
Flight destination autocomplete for airports, cities, and regions. Used for flight search input fields.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/booking/flights/autocomplete'
params = {
'search': 'okc',
'language': 'en',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/booking/flights/autocomplete';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'search' => 'okc',
'language' => 'en',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/booking/flights/autocomplete"
);
const params = {
"search": "okc",
"language": "en",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/booking/flights/autocomplete?search=okc&language=en" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"query": "cvg",
"language": "en",
"total_results": 1
},
"body": [
{
"type": "AIRPORT",
"name": "Cincinnati/Northern Kentucky International Airport",
"code": "CVG",
"city": "Cincinnati",
"region": "Ohio",
"country": "United States",
"photo_uri": "https://q-xx.bstatic.com/xdata/images/city/square150/648134.jpg?k=f6570e159ef41c78e7b17192aa3cbdbc538da0ba2e06d325fd400140f3b20b91&o=",
"distance_to_city": {
"value": 14.1991694153932,
"unit": "km"
}
}
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/flights/search
requires authentication
Search for flight options between two locations with specified dates and passengers. Returns flight options with pricing, schedules, and filtering aggregations.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/booking/flights/search'
params = {
'from': 'CVG.AIRPORT',
'to': 'OKC.AIRPORT',
'depart': '2026-02-02',
'return': '2026-02-05',
'type': 'ROUNDTRIP',
'adults': '1',
'infants': '1',
'cabinClass': 'ECONOMY',
'fromCountry': 'US',
'toCountry': 'US',
'currency': 'USD',
'language': 'en',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/booking/flights/search';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'from' => 'CVG.AIRPORT',
'to' => 'OKC.AIRPORT',
'depart' => '2026-02-02',
'return' => '2026-02-05',
'type' => 'ROUNDTRIP',
'adults' => '1',
'infants' => '1',
'cabinClass' => 'ECONOMY',
'fromCountry' => 'US',
'toCountry' => 'US',
'currency' => 'USD',
'language' => 'en',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/booking/flights/search"
);
const params = {
"from": "CVG.AIRPORT",
"to": "OKC.AIRPORT",
"depart": "2026-02-02",
"return": "2026-02-05",
"type": "ROUNDTRIP",
"adults": "1",
"infants": "1",
"cabinClass": "ECONOMY",
"fromCountry": "US",
"toCountry": "US",
"currency": "USD",
"language": "en",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/booking/flights/search?from=CVG.AIRPORT&to=OKC.AIRPORT&depart=2026-02-02&return=2026-02-05&type=ROUNDTRIP&adults=1&infants=1&cabinClass=ECONOMY&fromCountry=US&toCountry=US¤cy=USD&language=en" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"search_id": "B5E03A22839B15A1CF169A86EDF15633",
"total_results": 15,
"total_pages": 2,
"current_page": 1,
"page_size": 10
},
"body": {
"aggregation": {
"totalCount": 441,
"filteredTotalCount": 441,
"stops": [
{
"numberOfStops": 1,
"count": 208,
"minPrice": {
"currencyCode": "USD",
"units": 1969,
"nanos": 200000000,
"amount": 1969.2
},
"minPriceRound": {
"currencyCode": "USD",
"units": 1970,
"nanos": 0,
"amount": 1970
},
"minPricePerAdult": {
"currencyCode": "USD",
"units": 657,
"nanos": 0,
"amount": 657
},
"cheapestAirline": {
"name": "Southwest Airlines",
"code": "WN",
"logo": "https://r-xx.bstatic.com/data/airlines_logo/WN.png"
}
},
{
"numberOfStops": 2,
"count": 441,
"minPrice": {
"currencyCode": "USD",
"units": 1969,
"nanos": 200000000,
"amount": 1969.2
},
"minPriceRound": {
"currencyCode": "USD",
"units": 1970,
"nanos": 0,
"amount": 1970
},
"minPricePerAdult": {
"currencyCode": "USD",
"units": 657,
"nanos": 0,
"amount": 657
},
"cheapestAirline": {
"name": "Southwest Airlines",
"code": "WN",
"logo": "https://r-xx.bstatic.com/data/airlines_logo/WN.png"
}
}
],
"airlines": [
{
"name": "American Airlines",
"logoUrl": "https://r-xx.bstatic.com/data/airlines_logo/AA.png",
"iataCode": "AA",
"count": 209,
"minPrice": {
"currencyCode": "USD",
"units": 1974,
"nanos": 580000000,
"amount": 1974.58
},
"minPricePerAdult": {
"currencyCode": "USD",
"units": 659,
"nanos": 0,
"amount": 659
}
},
{
"name": "Southwest Airlines",
"logoUrl": "https://r-xx.bstatic.com/data/airlines_logo/WN.png",
"iataCode": "WN",
"count": 134,
"minPrice": {
"currencyCode": "USD",
"units": 1969,
"nanos": 200000000,
"amount": 1969.2
},
"minPricePerAdult": {
"currencyCode": "USD",
"units": 657,
"nanos": 0,
"amount": 657
}
},
{
"name": "United Airlines",
"logoUrl": "https://r-xx.bstatic.com/data/airlines_logo/UA.png",
"iataCode": "UA",
"count": 98,
"minPrice": {
"currencyCode": "USD",
"units": 1998,
"nanos": 10000000,
"amount": 1998.01
},
"minPricePerAdult": {
"currencyCode": "USD",
"units": 667,
"nanos": 0,
"amount": 667
}
}
],
"departureIntervals": [
{
"start": "05:55",
"end": "17:55"
},
{
"start": "05:00",
"end": "17:00"
}
],
"flightTimes": [
{
"arrival": [
{
"start": "00:00",
"end": "05:59",
"count": 0
},
{
"start": "06:00",
"end": "11:59",
"count": 61
},
{
"start": "12:00",
"end": "17:59",
"count": 106
},
{
"start": "18:00",
"end": "23:59",
"count": 274
}
],
"departure": [
{
"start": "00:00",
"end": "05:59",
"count": 21
},
{
"start": "06:00",
"end": "11:59",
"count": 159
},
{
"start": "12:00",
"end": "17:59",
"count": 261
},
{
"start": "18:00",
"end": "23:59",
"count": 0
}
]
},
{
"arrival": [
{
"start": "00:00",
"end": "05:59",
"count": 0
},
{
"start": "06:00",
"end": "11:59",
"count": 10
},
{
"start": "12:00",
"end": "17:59",
"count": 254
},
{
"start": "18:00",
"end": "23:59",
"count": 177
}
],
"departure": [
{
"start": "00:00",
"end": "05:59",
"count": 73
},
{
"start": "06:00",
"end": "11:59",
"count": 250
},
{
"start": "12:00",
"end": "17:59",
"count": 118
},
{
"start": "18:00",
"end": "23:59",
"count": 0
}
]
}
],
"shortLayoverConnection": {
"count": 142
},
"durationMin": 5,
"durationMax": 16,
"minPrice": {
"currencyCode": "USD",
"units": 1969,
"nanos": 200000000,
"amount": 1969.2
},
"minRoundPrice": {
"currencyCode": "USD",
"units": 1970,
"nanos": 0,
"amount": 1970
},
"minPricePerAdult": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000,
"amount": 656.4
},
"minPriceFiltered": {
"currencyCode": "USD",
"units": 1969,
"nanos": 200000000,
"amount": 1969.2
},
"baggage": [
{
"paramName": "includedBaggage",
"count": 441,
"enabled": true,
"baggageType": "CABIN"
},
{
"paramName": "includedBaggage",
"count": 0,
"enabled": false,
"baggageType": "CHECKIN"
}
],
"budget": {
"paramName": "maxBudget",
"min": {
"currencyCode": "USD",
"units": 1969,
"nanos": 200000000,
"amount": 1969.2
},
"max": {
"currencyCode": "USD",
"units": 4311,
"nanos": 780000000,
"amount": 4311.78
}
},
"budgetPerAdult": {
"paramName": "maxBudgetPerAdult",
"min": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000,
"amount": 656.4
},
"max": {
"currencyCode": "USD",
"units": 1437,
"nanos": 260000000,
"amount": 1437.26
}
},
"duration": [
{
"min": 5,
"max": 16,
"durationType": "JOURNEY",
"enabled": true,
"paramName": "maxDuration"
},
{
"min": 1,
"max": 11,
"durationType": "LAYOVER",
"enabled": true,
"paramName": "maxLayoverDuration"
}
],
"flexibleTicket": {
"count": 209
},
"filtersOrder": []
},
"flightOffers": [
{
"token": "c8e49_528902410ab36854e72a5245e09bd5ecd8217dee997c8f87a3a8c2c815bfb874dfda29f96a5fab84a452565361dafd1b94d86d312c76b53a01edd4bd9f4f1107da8ec2bb191083d1797e353b371196875c0de0aafc1af993098962dfa6151e4ed77ae992768063948ee481eb1f661217594971aff9027b714e206ca6969b5ccd336e9187fd6f8679e292a211214bd7e553f849b3459f6fbc71029939a8adfa9b224f148e06f81576182cb080304e2399586e435319635befe70fcb9a74fe2ab56b4bcb364f1e1d1360244e97057250885fed255617543a26ca887c0147ceaaf5c9814edaf04eb7952e438475737cb7599c583360cd2f7d00c2f5b0f3bf99451153301dade6947cce9284e7b2",
"segments": [
{
"departureAirport": {
"type": "AIRPORT",
"code": "CVG",
"name": "Cincinnati/Northern Kentucky International Airport",
"city": "CVG",
"cityName": "Cincinnati",
"country": "US",
"countryName": "United States",
"province": "Ohio",
"provinceCode": "OH"
},
"arrivalAirport": {
"type": "AIRPORT",
"code": "OKC",
"name": "Will Rogers World Airport",
"city": "OKC",
"cityName": "Oklahoma City",
"country": "US",
"countryName": "United States",
"province": "Oklahoma",
"provinceCode": "OK"
},
"departureTime": "2026-02-02T07:00:00",
"arrivalTime": "2026-02-02T10:35:00",
"legs": [
{
"departureTime": "2026-02-02T07:00:00",
"arrivalTime": "2026-02-02T07:25:00",
"departureAirport": {
"type": "AIRPORT",
"code": "CVG",
"name": "Cincinnati/Northern Kentucky International Airport",
"city": "CVG",
"cityName": "Cincinnati",
"country": "US",
"countryName": "United States",
"province": "Ohio",
"provinceCode": "OH"
},
"arrivalAirport": {
"type": "AIRPORT",
"code": "MDW",
"name": "Midway International Airport",
"city": "CHI",
"cityName": "Chicago",
"country": "US",
"countryName": "United States",
"province": "Illinois",
"provinceCode": "IL"
},
"cabinClass": "ECONOMY",
"flightInfo": {
"facilities": [],
"flightNumber": 4926,
"planeType": "7S7",
"carrierInfo": {
"operatingCarrier": "WN",
"marketingCarrier": "WN",
"operatingCarrierDisclosureText": ""
}
},
"carriers": [
"WN",
"WN"
],
"carriersData": [
{
"name": "Southwest Airlines",
"code": "WN",
"logo": "https://r-xx.bstatic.com/data/airlines_logo/WN.png"
},
{
"name": "Southwest Airlines",
"code": "WN",
"logo": "https://r-xx.bstatic.com/data/airlines_logo/WN.png"
}
],
"totalTime": 5100,
"flightStops": [],
"amenities": [],
"departureTimeTz": "2026-02-02T07:00:00-05:00",
"arrivalTimeTz": "2026-02-02T07:25:00-06:00"
},
{
"departureTime": "2026-02-02T08:15:00",
"arrivalTime": "2026-02-02T10:35:00",
"departureAirport": {
"type": "AIRPORT",
"code": "MDW",
"name": "Midway International Airport",
"city": "CHI",
"cityName": "Chicago",
"country": "US",
"countryName": "United States",
"province": "Illinois",
"provinceCode": "IL"
},
"arrivalAirport": {
"type": "AIRPORT",
"code": "OKC",
"name": "Will Rogers World Airport",
"city": "OKC",
"cityName": "Oklahoma City",
"country": "US",
"countryName": "United States",
"province": "Oklahoma",
"provinceCode": "OK"
},
"cabinClass": "ECONOMY",
"flightInfo": {
"facilities": [],
"flightNumber": 4893,
"planeType": "7S7",
"carrierInfo": {
"operatingCarrier": "WN",
"marketingCarrier": "WN",
"operatingCarrierDisclosureText": ""
}
},
"carriers": [
"WN",
"WN"
],
"carriersData": [
{
"name": "Southwest Airlines",
"code": "WN",
"logo": "https://r-xx.bstatic.com/data/airlines_logo/WN.png"
},
{
"name": "Southwest Airlines",
"code": "WN",
"logo": "https://r-xx.bstatic.com/data/airlines_logo/WN.png"
}
],
"totalTime": 8400,
"flightStops": [],
"amenities": [],
"departureTimeTz": "2026-02-02T08:15:00-06:00",
"arrivalTimeTz": "2026-02-02T10:35:00-06:00"
}
],
"totalTime": 16500,
"travellerCheckedLuggage": [],
"travellerCabinLuggage": [
{
"travellerReference": "1",
"luggageAllowance": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
},
"personalItem": true
},
{
"travellerReference": "2",
"luggageAllowance": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
},
"personalItem": true
},
{
"travellerReference": "3",
"luggageAllowance": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
},
"personalItem": true
}
],
"isAtolProtected": false,
"departureTimeTz": "2026-02-02T07:00:00-05:00",
"arrivalTimeTz": "2026-02-02T10:35:00-06:00",
"showWarningDestinationAirport": false,
"showWarningOriginAirport": false
},
{
"departureAirport": {
"type": "AIRPORT",
"code": "OKC",
"name": "Will Rogers World Airport",
"city": "OKC",
"cityName": "Oklahoma City",
"country": "US",
"countryName": "United States",
"province": "Oklahoma",
"provinceCode": "OK"
},
"arrivalAirport": {
"type": "AIRPORT",
"code": "CVG",
"name": "Cincinnati/Northern Kentucky International Airport",
"city": "CVG",
"cityName": "Cincinnati",
"country": "US",
"countryName": "United States",
"province": "Ohio",
"provinceCode": "OH"
},
"departureTime": "2026-02-05T15:10:00",
"arrivalTime": "2026-02-05T20:15:00",
"legs": [
{
"departureTime": "2026-02-05T15:10:00",
"arrivalTime": "2026-02-05T17:15:00",
"departureAirport": {
"type": "AIRPORT",
"code": "OKC",
"name": "Will Rogers World Airport",
"city": "OKC",
"cityName": "Oklahoma City",
"country": "US",
"countryName": "United States",
"province": "Oklahoma",
"provinceCode": "OK"
},
"arrivalAirport": {
"type": "AIRPORT",
"code": "MDW",
"name": "Midway International Airport",
"city": "CHI",
"cityName": "Chicago",
"country": "US",
"countryName": "United States",
"province": "Illinois",
"provinceCode": "IL"
},
"cabinClass": "ECONOMY",
"flightInfo": {
"facilities": [],
"flightNumber": 2991,
"planeType": "7S7",
"carrierInfo": {
"operatingCarrier": "WN",
"marketingCarrier": "WN",
"operatingCarrierDisclosureText": ""
}
},
"carriers": [
"WN",
"WN"
],
"carriersData": [
{
"name": "Southwest Airlines",
"code": "WN",
"logo": "https://r-xx.bstatic.com/data/airlines_logo/WN.png"
},
{
"name": "Southwest Airlines",
"code": "WN",
"logo": "https://r-xx.bstatic.com/data/airlines_logo/WN.png"
}
],
"totalTime": 7500,
"flightStops": [],
"amenities": [],
"departureTimeTz": "2026-02-05T15:10:00-06:00",
"arrivalTimeTz": "2026-02-05T17:15:00-06:00"
},
{
"departureTime": "2026-02-05T18:05:00",
"arrivalTime": "2026-02-05T20:15:00",
"departureAirport": {
"type": "AIRPORT",
"code": "MDW",
"name": "Midway International Airport",
"city": "CHI",
"cityName": "Chicago",
"country": "US",
"countryName": "United States",
"province": "Illinois",
"provinceCode": "IL"
},
"arrivalAirport": {
"type": "AIRPORT",
"code": "CVG",
"name": "Cincinnati/Northern Kentucky International Airport",
"city": "CVG",
"cityName": "Cincinnati",
"country": "US",
"countryName": "United States",
"province": "Ohio",
"provinceCode": "OH"
},
"cabinClass": "ECONOMY",
"flightInfo": {
"facilities": [],
"flightNumber": 1659,
"planeType": "7S7",
"carrierInfo": {
"operatingCarrier": "WN",
"marketingCarrier": "WN",
"operatingCarrierDisclosureText": ""
}
},
"carriers": [
"WN",
"WN"
],
"carriersData": [
{
"name": "Southwest Airlines",
"code": "WN",
"logo": "https://r-xx.bstatic.com/data/airlines_logo/WN.png"
},
{
"name": "Southwest Airlines",
"code": "WN",
"logo": "https://r-xx.bstatic.com/data/airlines_logo/WN.png"
}
],
"totalTime": 4200,
"flightStops": [],
"amenities": [],
"departureTimeTz": "2026-02-05T18:05:00-06:00",
"arrivalTimeTz": "2026-02-05T20:15:00-05:00"
}
],
"totalTime": 14700,
"travellerCheckedLuggage": [],
"travellerCabinLuggage": [
{
"travellerReference": "1",
"luggageAllowance": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
},
"personalItem": true
},
{
"travellerReference": "2",
"luggageAllowance": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
},
"personalItem": true
},
{
"travellerReference": "3",
"luggageAllowance": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
},
"personalItem": true
}
],
"isAtolProtected": false,
"departureTimeTz": "2026-02-05T15:10:00-06:00",
"arrivalTimeTz": "2026-02-05T20:15:00-05:00",
"showWarningDestinationAirport": false,
"showWarningOriginAirport": false
}
],
"priceBreakdown": {
"total": {
"currencyCode": "USD",
"units": 1969,
"nanos": 200000000,
"amount": 1969.2
},
"baseFare": {
"currencyCode": "USD",
"units": 1691,
"nanos": 160000000,
"amount": 1691.16
},
"fee": {
"currencyCode": "USD",
"units": 0,
"nanos": 0,
"amount": 0
},
"tax": {
"currencyCode": "USD",
"units": 278,
"nanos": 40000000,
"amount": 278.04
},
"totalRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 1970,
"amount": 1970
},
"discount": {
"currencyCode": "USD",
"units": 0,
"nanos": 0,
"amount": 0
},
"totalWithoutDiscount": {
"currencyCode": "USD",
"units": 1969,
"nanos": 200000000,
"amount": 1969.2
},
"totalWithoutDiscountRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 1970,
"amount": 1970
},
"showPriceStrikethrough": false
},
"travellerPrices": [
{
"travellerPriceBreakdown": {
"total": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000,
"amount": 656.4
},
"baseFare": {
"currencyCode": "USD",
"units": 563,
"nanos": 720000000,
"amount": 563.72
},
"fee": {
"currencyCode": "USD",
"units": 0,
"nanos": 0,
"amount": 0
},
"tax": {
"currencyCode": "USD",
"units": 92,
"nanos": 680000000,
"amount": 92.68
},
"totalRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 657,
"amount": 657
},
"discount": {
"currencyCode": "USD",
"units": 0,
"nanos": 0,
"amount": 0
},
"totalWithoutDiscount": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000,
"amount": 656.4
},
"totalWithoutDiscountRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 657,
"amount": 657
},
"showPriceStrikethrough": false
},
"travellerReference": "1",
"travellerType": "ADULT"
},
{
"travellerPriceBreakdown": {
"total": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000,
"amount": 656.4
},
"baseFare": {
"currencyCode": "USD",
"units": 563,
"nanos": 720000000,
"amount": 563.72
},
"fee": {
"currencyCode": "USD",
"units": 0,
"nanos": 0,
"amount": 0
},
"tax": {
"currencyCode": "USD",
"units": 92,
"nanos": 680000000,
"amount": 92.68
},
"totalRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 657,
"amount": 657
},
"discount": {
"currencyCode": "USD",
"units": 0,
"nanos": 0,
"amount": 0
},
"totalWithoutDiscount": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000,
"amount": 656.4
},
"totalWithoutDiscountRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 657,
"amount": 657
},
"showPriceStrikethrough": false
},
"travellerReference": "2",
"travellerType": "KID"
},
{
"travellerPriceBreakdown": {
"total": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000,
"amount": 656.4
},
"baseFare": {
"currencyCode": "USD",
"units": 563,
"nanos": 720000000,
"amount": 563.72
},
"fee": {
"currencyCode": "USD",
"units": 0,
"nanos": 0,
"amount": 0
},
"tax": {
"currencyCode": "USD",
"units": 92,
"nanos": 680000000,
"amount": 92.68
},
"totalRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 657,
"amount": 657
},
"discount": {
"currencyCode": "USD",
"units": 0,
"nanos": 0,
"amount": 0
},
"totalWithoutDiscount": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000,
"amount": 656.4
},
"totalWithoutDiscountRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 657,
"amount": 657
},
"showPriceStrikethrough": false
},
"travellerReference": "3",
"travellerType": "KID"
}
],
"priceDisplayRequirements": [],
"pointOfSale": "us",
"tripType": "ROUNDTRIP",
"travellerDataRequirements": [
"DATE_OF_BIRTH"
],
"travellers": [
{
"travellerReference": "1",
"type": "ADULT"
},
{
"travellerReference": "2",
"type": "KID",
"age": 0
},
{
"travellerReference": "3",
"type": "KID",
"age": 0
}
],
"posMismatch": {
"detectedPointOfSale": "us",
"isPOSMismatch": false,
"offerSalesCountry": "us"
},
"includedProductsBySegment": [
[
{
"travellerReference": "1",
"travellerProducts": [
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
},
{ ... }
],
[
{
"travellerReference": "1",
"travellerProducts": [
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
},
{ ... }
]
],
"includedProducts": {
"areAllSegmentsIdentical": true,
"segments": [
[
{
"luggageType": "PERSONAL_ITEM",
"maxPiece": 3,
"piecePerPax": 1
},
{
"luggageType": "HAND",
"maxPiece": 3,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
},
"piecePerPax": 1
}
]
]
},
"ancillaries": [],
"brandedFareInfo": {
"fareName": "Choice",
"cabinClass": "ECONOMY",
"features": [
{
"featureName": "PERSONAL_BAGGAGE",
"category": "BAGGAGE",
"code": "BK03",
"label": "3 personal items",
"availability": "INCLUDED",
"priority": 0,
"content": [],
"sectionCategory": {
"groupingKey": "BAGGAGE",
"heading": "Baggage",
"priority": 1
}
},
{ ... }
],
"fareAttributes": [],
"nonIncludedFeaturesRequired": false,
"nonIncludedFeatures": [],
"featuresList": [],
"checkinBaggageExcluded": true,
"cabinBaggageExcluded": false
},
"appliedDiscounts": [],
"offerKeyToHighlight": "1_WN4926_WN4893_2_WN2991_WN1659.CVG20260202.OKC20260205",
"flightKey": "1_WN4926_WN4893_2_WN2991_WN1659.CVG20260202.OKC20260205",
"extraProductDisplayRequirements": [],
"brandedFareOffers": [
{
"brandedFareInfo": {
"fareName": "Choice",
"cabinClass": "ECONOMY",
"features": [
{
"featureName": "PERSONAL_BAGGAGE",
"category": "BAGGAGE",
"code": "BK03",
"label": "3 personal items",
"availability": "INCLUDED",
"priority": 0,
"content": [],
"sectionCategory": {
"groupingKey": "BAGGAGE",
"heading": "Baggage",
"priority": 1
}
},
{
"featureName": "CABIN_BAGGAGE",
"category": "BAGGAGE",
"code": "BK02",
"label": "3 cabin bags",
"availability": "INCLUDED",
"priority": 2,
"content": [],
"sectionCategory": {
"groupingKey": "BAGGAGE",
"heading": "Baggage",
"priority": 1
}
},
{
"featureName": "BASIC_SEAT",
"availability": "INCLUDED",
"category": "SEATS",
"code": "STS",
"priority": 7,
"content": [],
"sectionCategory": {
"groupingKey": "TRAVEL_EXPERIENCE",
"heading": "Travel experience",
"priority": 3
},
"label": "Choice of basic seating"
},
{
"featureName": "CHANGEABLE_TICKET",
"availability": "INCLUDED",
"category": "CHANGE",
"code": "08R",
"priority": 9,
"content": [],
"sectionCategory": {
"groupingKey": "FLEXIBILITY",
"heading": "Flexibility",
"priority": 2
},
"label": "Flight change allowed"
},
{
"featureName": "REFUND_WITH_TRANSFERABLE_CREDIT_12_MONTHS",
"availability": "INCLUDED",
"category": "CANCEL",
"code": "",
"priority": 32,
"content": [],
"sectionCategory": {
"groupingKey": "FLEXIBILITY",
"heading": "Flexibility",
"priority": 2
},
"label": "Refund as transferable airline credit if you cancel, valid for 12 months"
}
],
"fareAttributes": [],
"nonIncludedFeaturesRequired": false,
"nonIncludedFeatures": [],
"featuresList": [],
"checkinBaggageExcluded": true,
"cabinBaggageExcluded": false
},
"ancillaries": [],
"token": "c8e49_3904B@528902410ab36854e72a520fd0ec3b23d1e968dc739c5493a15ad993e16201f4505e8de137ddb3e8e3e47ff4e719ae2358fc983b966b492b1415ffb6a8d749ab4d22f516e965b61af7e66ae8200db535b57734f90d5eb6de74982cc04c8b101fb2c4cc358b93845027d3eac40b1fad948c006dcba5da8657ef399df3a5d30e50b161ffa4b0a78873c049c95ccca8ab6e7aaf82326f3df2c5c8bc0fbf3e6b1d2898e1e3479bff8c53095b528e20ed70f958cc0bcda103e5a430b7aba731c4ea916a84db83b35e89a8ea0bd48ce105d1814b55b3177b9e8221f974eaf84e5571c8565fb0f2ef34171147ea4fb7abf649c4a7214f52004e19b493380036e83e6eca4318fd18e8aaa864a55690c1",
"offerReference": "c8e49_3904B@528902410ab36854e72a520fd0ec3b23d1e968dc739c5493a15ad993e16201f4505e8de137ddb3e8e3e47ff4e719ae2358fc983b966b492b1415ffb6a8d749ab4d22f516e965b61af7e66ae8200db535b57734f90d5eb6de74982cc04c8b101fb2c4cc358b93845027d3eac40b1fad948c006dcba5da8657ef399df3a5d30e50b161ffa4b0a78873c049c95ccca8ab6e7aaf82326f3df2c5c8bc0fbf3e6b1d2898e1e3479bff8c53095b528e20ed70f958cc0bcda103e5a430b7aba731c4ea916a84db83b35e89a8ea0bd48ce105d1814b55b3177b9e8221f974eaf84e5571c8565fb0f2ef34171147ea4fb7abf649c4a7214f52004e19b493380036e83e6eca4318fd18e8aaa864a55690c1",
"priceBreakdown": {
"total": {
"currencyCode": "USD",
"units": 1969,
"nanos": 200000000,
"amount": 1969.2
},
"baseFare": {
"currencyCode": "USD",
"units": 1691,
"nanos": 160000000,
"amount": 1691.16
},
"fee": {
"currencyCode": "USD",
"units": 0,
"nanos": 0,
"amount": 0
},
"tax": {
"currencyCode": "USD",
"units": 278,
"nanos": 40000000,
"amount": 278.04
},
"totalRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 1970,
"amount": 1970
},
"discount": {
"currencyCode": "USD",
"units": 0,
"nanos": 0,
"amount": 0
},
"totalWithoutDiscount": {
"currencyCode": "USD",
"units": 1969,
"nanos": 200000000,
"amount": 1969.2
},
"totalWithoutDiscountRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 1970,
"amount": 1970
},
"showPriceStrikethrough": false,
"farePriceDifference": {
"currencyCode": "USD",
"units": 0,
"nanos": 0,
"amount": 0
},
"travellerFarePriceDifference": {
"currencyCode": "USD",
"units": 0,
"nanos": 0,
"amount": 0
},
"travellerPrice": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000
}
},
"travellerPrices": [
{
"travellerPriceBreakdown": {
"total": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000
},
"baseFare": {
"currencyCode": "USD",
"units": 563,
"nanos": 720000000
},
"fee": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"tax": {
"currencyCode": "USD",
"units": 92,
"nanos": 680000000
},
"totalRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 657
},
"discount": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"totalWithoutDiscount": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000
},
"totalWithoutDiscountRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 657
},
"showPriceStrikethrough": false
},
"travellerReference": "1",
"travellerType": "ADULT"
},
{
"travellerPriceBreakdown": {
"total": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000
},
"baseFare": {
"currencyCode": "USD",
"units": 563,
"nanos": 720000000
},
"fee": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"tax": {
"currencyCode": "USD",
"units": 92,
"nanos": 680000000
},
"totalRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 657
},
"discount": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"totalWithoutDiscount": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000
},
"totalWithoutDiscountRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 657
},
"showPriceStrikethrough": false
},
"travellerReference": "2",
"travellerType": "KID"
},
{
"travellerPriceBreakdown": {
"total": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000
},
"baseFare": {
"currencyCode": "USD",
"units": 563,
"nanos": 720000000
},
"fee": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"tax": {
"currencyCode": "USD",
"units": 92,
"nanos": 680000000
},
"totalRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 657
},
"discount": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"totalWithoutDiscount": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000
},
"totalWithoutDiscountRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 657
},
"showPriceStrikethrough": false
},
"travellerReference": "3",
"travellerType": "KID"
}
],
"includedProductsBySegment": [
[
{
"travellerReference": "1",
"travellerProducts": [
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
},
{
"travellerReference": "2",
"travellerProducts": [
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
},
{
"travellerReference": "3",
"travellerProducts": [
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
}
],
[
{
"travellerReference": "1",
"travellerProducts": [
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
},
{
"travellerReference": "2",
"travellerProducts": [
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
},
{
"travellerReference": "3",
"travellerProducts": [
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
}
]
],
"includedProducts": {
"areAllSegmentsIdentical": true,
"segments": [
[
{
"luggageType": "PERSONAL_ITEM",
"maxPiece": 3,
"piecePerPax": 1
},
{
"luggageType": "HAND",
"maxPiece": 3,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
},
"piecePerPax": 1
}
]
]
},
"unifiedPriceBreakdown": {
"id": "WN4926.CVG2026-02-02T07:00:00.MDW2026-02-02T07:25:00.ECONOMY,WN4893.MDW2026-02-02T08:15:00.OKC2026-02-02T10:35:00.ECONOMY,WN2991.OKC2026-02-05T15:10:00.MDW2026-02-05T17:15:00.ECONOMY,WN1659.MDW2026-02-05T18:05:00.CVG2026-02-05T20:15:00.ECONOMY_0_1ADULT.2INFANT_DIRECT_FIREFLY",
"price": {
"currencyCode": "USD",
"units": 1969,
"nanos": 200000000
},
"items": [
{
"scope": "FLIGHT_ADULT",
"quantity": 1,
"id": "flight_adult",
"title": "Adult (1)",
"price": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000
},
"items": [
{
"id": "flight_adult-basefare",
"title": "Flight fare",
"price": {
"currencyCode": "USD",
"units": 563,
"nanos": 720000000
},
"items": []
},
{
"id": "flight_adult-tax",
"title": "Taxes and airline fees",
"price": {
"currencyCode": "USD",
"units": 92,
"nanos": 680000000
},
"items": []
}
]
},
{
"scope": "FLIGHT_INFANT",
"quantity": 2,
"id": "flight_infant",
"title": "Infants (2)",
"price": {
"currencyCode": "USD",
"units": 1312,
"nanos": 800000000
},
"items": [
{
"id": "flight_infant-basefare",
"title": "Flight fare",
"price": {
"currencyCode": "USD",
"units": 1127,
"nanos": 440000000
},
"items": []
},
{
"id": "flight_infant-tax",
"title": "Taxes and airline fees",
"price": {
"currencyCode": "USD",
"units": 185,
"nanos": 360000000
},
"items": []
}
]
}
],
"addedItems": []
}
},
{
"brandedFareInfo": {
"fareName": "Choice Preferred",
"cabinClass": "ECONOMY",
"features": [
{
"featureName": "PERSONAL_BAGGAGE",
"category": "BAGGAGE",
"code": "BK03",
"label": "3 personal items",
"availability": "INCLUDED",
"priority": 0,
"content": [],
"sectionCategory": {
"groupingKey": "BAGGAGE",
"heading": "Baggage",
"priority": 1
}
},
{
"featureName": "CABIN_BAGGAGE",
"category": "BAGGAGE",
"code": "BK02",
"label": "3 cabin bags",
"availability": "INCLUDED",
"priority": 2,
"content": [],
"sectionCategory": {
"groupingKey": "BAGGAGE",
"heading": "Baggage",
"priority": 1
}
},
{
"featureName": "REFUNDABLE_TICKET",
"availability": "INCLUDED",
"category": "CANCEL",
"code": "056",
"priority": 11,
"content": [],
"sectionCategory": {
"groupingKey": "FLEXIBILITY",
"heading": "Flexibility",
"priority": 2
},
"label": "Refund if you cancel "
},
{
"featureName": "CHANGEABLE_TICKET",
"availability": "INCLUDED",
"category": "CHANGE",
"code": "08R",
"priority": 9,
"content": [],
"sectionCategory": {
"groupingKey": "FLEXIBILITY",
"heading": "Flexibility",
"priority": 2
},
"label": "Flight change allowed"
},
{
"featureName": "PRE_RESERVED_SEAT_ASSIGNMENT",
"availability": "INCLUDED",
"category": "SEATS",
"code": "0B5",
"priority": 8,
"content": [],
"sectionCategory": {
"groupingKey": "TRAVEL_EXPERIENCE",
"heading": "Travel experience",
"priority": 3
},
"label": "Choose your own seats"
}
],
"fareAttributes": [],
"nonIncludedFeaturesRequired": false,
"nonIncludedFeatures": [],
"featuresList": [],
"checkinBaggageExcluded": true,
"cabinBaggageExcluded": false,
"fareTag": "REFUNDABLE"
},
"ancillaries": [],
"token": "c8e49_3904B@528902410ab36854e72a52d26092a851893f47f209e80868012f7d2a7d21181bcb8a4b9efa0f82681a507b1a1e12d268ff52c04a1f8ae21ee66aef68614a9ec5d10791b030d5522bc4239a3bb84be1f76aa1864809f3d767f7df3647a06417dbb23e617d027050112080a1c2918b0d6fe99a97bf3a6977507803993285754a5f6207a19d63bdca4efb68ea3110688934fb8a0f64e247b3b94add4ea9878745b87b1af1763d963e7decb1f7e780544d717e2aac684e579618fad7873e661f3a6c6d198417c7236488cb6f21c654d7de1c3dae8aebc6d1043280ad4a39550b9296cf873d599cc2076a64abe25fb836db51648bc7139da015a98f780a2c9f92de9c7ae609aa0f29bf81a88e3fb2",
"offerReference": "c8e49_3904B@528902410ab36854e72a52d26092a851893f47f209e80868012f7d2a7d21181bcb8a4b9efa0f82681a507b1a1e12d268ff52c04a1f8ae21ee66aef68614a9ec5d10791b030d5522bc4239a3bb84be1f76aa1864809f3d767f7df3647a06417dbb23e617d027050112080a1c2918b0d6fe99a97bf3a6977507803993285754a5f6207a19d63bdca4efb68ea3110688934fb8a0f64e247b3b94add4ea9878745b87b1af1763d963e7decb1f7e780544d717e2aac684e579618fad7873e661f3a6c6d198417c7236488cb6f21c654d7de1c3dae8aebc6d1043280ad4a39550b9296cf873d599cc2076a64abe25fb836db51648bc7139da015a98f780a2c9f92de9c7ae609aa0f29bf81a88e3fb2",
"priceBreakdown": {
"total": {
"currencyCode": "USD",
"units": 2389,
"nanos": 230000000,
"amount": 2389.23
},
"baseFare": {
"currencyCode": "USD",
"units": 2081,
"nanos": 880000000,
"amount": 2081.88
},
"fee": {
"currencyCode": "USD",
"units": 0,
"nanos": 0,
"amount": 0
},
"tax": {
"currencyCode": "USD",
"units": 307,
"nanos": 350000000,
"amount": 307.35
},
"totalRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 2390,
"amount": 2390
},
"discount": {
"currencyCode": "USD",
"units": 0,
"nanos": 0,
"amount": 0
},
"totalWithoutDiscount": {
"currencyCode": "USD",
"units": 2389,
"nanos": 230000000,
"amount": 2389.23
},
"totalWithoutDiscountRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 2390,
"amount": 2390
},
"showPriceStrikethrough": false,
"farePriceDifference": {
"currencyCode": "USD",
"units": 420,
"nanos": 30000000,
"amount": 420.03
},
"travellerFarePriceDifference": {
"currencyCode": "USD",
"units": 140,
"nanos": 10000000,
"amount": 140.01
},
"travellerPrice": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000
}
},
"travellerPrices": [
{
"travellerPriceBreakdown": {
"total": {
"currencyCode": "USD",
"units": 796,
"nanos": 410000000
},
"baseFare": {
"currencyCode": "USD",
"units": 693,
"nanos": 960000000
},
"fee": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"tax": {
"currencyCode": "USD",
"units": 102,
"nanos": 450000000
},
"totalRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 797
},
"discount": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"totalWithoutDiscount": {
"currencyCode": "USD",
"units": 796,
"nanos": 410000000
},
"totalWithoutDiscountRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 797
},
"showPriceStrikethrough": false
},
"travellerReference": "1",
"travellerType": "ADULT"
},
{
"travellerPriceBreakdown": {
"total": {
"currencyCode": "USD",
"units": 796,
"nanos": 410000000
},
"baseFare": {
"currencyCode": "USD",
"units": 693,
"nanos": 960000000
},
"fee": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"tax": {
"currencyCode": "USD",
"units": 102,
"nanos": 450000000
},
"totalRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 797
},
"discount": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"totalWithoutDiscount": {
"currencyCode": "USD",
"units": 796,
"nanos": 410000000
},
"totalWithoutDiscountRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 797
},
"showPriceStrikethrough": false
},
"travellerReference": "2",
"travellerType": "KID"
},
{
"travellerPriceBreakdown": {
"total": {
"currencyCode": "USD",
"units": 796,
"nanos": 410000000
},
"baseFare": {
"currencyCode": "USD",
"units": 693,
"nanos": 960000000
},
"fee": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"tax": {
"currencyCode": "USD",
"units": 102,
"nanos": 450000000
},
"totalRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 797
},
"discount": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"totalWithoutDiscount": {
"currencyCode": "USD",
"units": 796,
"nanos": 410000000
},
"totalWithoutDiscountRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 797
},
"showPriceStrikethrough": false
},
"travellerReference": "3",
"travellerType": "KID"
}
],
"includedProductsBySegment": [
[
{
"travellerReference": "1",
"travellerProducts": [
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
},
{
"travellerReference": "2",
"travellerProducts": [
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
},
{
"travellerReference": "3",
"travellerProducts": [
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
}
],
[
{
"travellerReference": "1",
"travellerProducts": [
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
},
{
"travellerReference": "2",
"travellerProducts": [
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
},
{
"travellerReference": "3",
"travellerProducts": [
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
}
]
],
"includedProducts": {
"areAllSegmentsIdentical": true,
"segments": [
[
{
"luggageType": "PERSONAL_ITEM",
"maxPiece": 3,
"piecePerPax": 1
},
{
"luggageType": "HAND",
"maxPiece": 3,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
},
"piecePerPax": 1
}
]
]
},
"unifiedPriceBreakdown": {
"id": "WN4926.CVG2026-02-02T07:00:00.MDW2026-02-02T07:25:00.ECONOMY,WN4893.MDW2026-02-02T08:15:00.OKC2026-02-02T10:35:00.ECONOMY,WN2991.OKC2026-02-05T15:10:00.MDW2026-02-05T17:15:00.ECONOMY,WN1659.MDW2026-02-05T18:05:00.CVG2026-02-05T20:15:00.ECONOMY_0_1ADULT.2INFANT_DIRECT_FIREFLY",
"price": {
"currencyCode": "USD",
"units": 2389,
"nanos": 230000000
},
"items": [
{
"scope": "FLIGHT_ADULT",
"quantity": 1,
"id": "flight_adult",
"title": "Adult (1)",
"price": {
"currencyCode": "USD",
"units": 796,
"nanos": 410000000
},
"items": [
{
"id": "flight_adult-basefare",
"title": "Flight fare",
"price": {
"currencyCode": "USD",
"units": 693,
"nanos": 960000000
},
"items": []
},
{
"id": "flight_adult-tax",
"title": "Taxes and airline fees",
"price": {
"currencyCode": "USD",
"units": 102,
"nanos": 450000000
},
"items": []
}
]
},
{
"scope": "FLIGHT_INFANT",
"quantity": 2,
"id": "flight_infant",
"title": "Infants (2)",
"price": {
"currencyCode": "USD",
"units": 1592,
"nanos": 820000000
},
"items": [
{
"id": "flight_infant-basefare",
"title": "Flight fare",
"price": {
"currencyCode": "USD",
"units": 1387,
"nanos": 920000000
},
"items": []
},
{
"id": "flight_infant-tax",
"title": "Taxes and airline fees",
"price": {
"currencyCode": "USD",
"units": 204,
"nanos": 900000000
},
"items": []
}
]
}
],
"addedItems": []
}
},
{
"brandedFareInfo": {
"fareName": "Choice Extra",
"cabinClass": "ECONOMY",
"features": [
{
"featureName": "PERSONAL_BAGGAGE",
"category": "BAGGAGE",
"code": "BK03",
"label": "3 personal items",
"availability": "INCLUDED",
"priority": 0,
"content": [],
"sectionCategory": {
"groupingKey": "BAGGAGE",
"heading": "Baggage",
"priority": 1
}
},
{
"featureName": "CABIN_BAGGAGE",
"category": "BAGGAGE",
"code": "BK02",
"label": "3 cabin bags",
"availability": "INCLUDED",
"priority": 2,
"content": [],
"sectionCategory": {
"groupingKey": "BAGGAGE",
"heading": "Baggage",
"priority": 1
}
},
{
"featureName": "CHECK_BAGGAGE",
"category": "BAGGAGE",
"code": "BK01",
"label": "6 checked bags",
"availability": "INCLUDED",
"priority": 4,
"content": [],
"sectionCategory": {
"groupingKey": "BAGGAGE",
"heading": "Baggage",
"priority": 1
}
},
{
"featureName": "REFUNDABLE_TICKET",
"availability": "INCLUDED",
"category": "CANCEL",
"code": "056",
"priority": 11,
"content": [],
"sectionCategory": {
"groupingKey": "FLEXIBILITY",
"heading": "Flexibility",
"priority": 2
},
"label": "Refund if you cancel "
},
{
"featureName": "CHANGEABLE_TICKET",
"availability": "INCLUDED",
"category": "CHANGE",
"code": "08R",
"priority": 9,
"content": [],
"sectionCategory": {
"groupingKey": "FLEXIBILITY",
"heading": "Flexibility",
"priority": 2
},
"label": "Flight change allowed"
},
{
"featureName": "PRIORITY_BOARDING",
"availability": "INCLUDED",
"category": "CHECK_IN",
"code": "0G6",
"priority": 14,
"content": [],
"sectionCategory": {
"groupingKey": "TRAVEL_EXPERIENCE",
"heading": "Travel experience",
"priority": 3
},
"label": "Priority boarding"
},
{
"featureName": "PREMIUM_SEAT",
"availability": "INCLUDED",
"category": "SEATS",
"code": "05Z",
"priority": 6,
"content": [],
"sectionCategory": {
"groupingKey": "TRAVEL_EXPERIENCE",
"heading": "Travel experience",
"priority": 3
},
"label": "Choice of premium seating"
}
],
"fareAttributes": [],
"nonIncludedFeaturesRequired": false,
"nonIncludedFeatures": [],
"featuresList": [],
"checkinBaggageExcluded": false,
"cabinBaggageExcluded": false,
"fareTag": "BAGGAGE"
},
"ancillaries": [],
"token": "c8e49_3904B@528902410ab36854e72a527ee1009e2ec77764bd43bdfefc922388eab4634975d9754dceae8b4c4571d14b1c60f7d3c5d4e03ee9eaf33bdae51c06fc9583cc2328b3bc10ec4245c3de883c079decfa4435338d1c84ca5b09e0913117d483c2720907e666e296dbd185baad69c5ae68aa5afc872259d28f3349c2ccc79fbdadcc1105878cc24ab1255ff82055a2a32e5d8cce7ad5d8c88fef7894f6633a9f52511b4aa005d00cbfc12d711f53d111e6fec503a4e73ba56041966913095064584139a1aefd65ba23d40b89f2f638907a8295b74b823895b0319783f5d830dcbb021f75f42a4d2c64ba4fdf784076832f1823f0238389120b09d5dcd0369cd8ea69a5e0a1b7a6b36b0dba02e1d1",
"offerReference": "c8e49_3904B@528902410ab36854e72a527ee1009e2ec77764bd43bdfefc922388eab4634975d9754dceae8b4c4571d14b1c60f7d3c5d4e03ee9eaf33bdae51c06fc9583cc2328b3bc10ec4245c3de883c079decfa4435338d1c84ca5b09e0913117d483c2720907e666e296dbd185baad69c5ae68aa5afc872259d28f3349c2ccc79fbdadcc1105878cc24ab1255ff82055a2a32e5d8cce7ad5d8c88fef7894f6633a9f52511b4aa005d00cbfc12d711f53d111e6fec503a4e73ba56041966913095064584139a1aefd65ba23d40b89f2f638907a8295b74b823895b0319783f5d830dcbb021f75f42a4d2c64ba4fdf784076832f1823f0238389120b09d5dcd0369cd8ea69a5e0a1b7a6b36b0dba02e1d1",
"priceBreakdown": {
"total": {
"currencyCode": "USD",
"units": 2659,
"nanos": 230000000,
"amount": 2659.23
},
"baseFare": {
"currencyCode": "USD",
"units": 2333,
"nanos": 40000000,
"amount": 2333.04
},
"fee": {
"currencyCode": "USD",
"units": 0,
"nanos": 0,
"amount": 0
},
"tax": {
"currencyCode": "USD",
"units": 326,
"nanos": 190000000,
"amount": 326.19
},
"totalRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 2660,
"amount": 2660
},
"discount": {
"currencyCode": "USD",
"units": 0,
"nanos": 0,
"amount": 0
},
"totalWithoutDiscount": {
"currencyCode": "USD",
"units": 2659,
"nanos": 230000000,
"amount": 2659.23
},
"totalWithoutDiscountRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 2660,
"amount": 2660
},
"showPriceStrikethrough": false,
"farePriceDifference": {
"currencyCode": "USD",
"units": 690,
"nanos": 30000000,
"amount": 690.03
},
"travellerFarePriceDifference": {
"currencyCode": "USD",
"units": 230,
"nanos": 10000000,
"amount": 230.01
},
"travellerPrice": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000
}
},
"travellerPrices": [
{
"travellerPriceBreakdown": {
"total": {
"currencyCode": "USD",
"units": 886,
"nanos": 410000000
},
"baseFare": {
"currencyCode": "USD",
"units": 777,
"nanos": 680000000
},
"fee": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"tax": {
"currencyCode": "USD",
"units": 108,
"nanos": 730000000
},
"totalRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 887
},
"discount": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"totalWithoutDiscount": {
"currencyCode": "USD",
"units": 886,
"nanos": 410000000
},
"totalWithoutDiscountRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 887
},
"showPriceStrikethrough": false
},
"travellerReference": "1",
"travellerType": "ADULT"
},
{
"travellerPriceBreakdown": {
"total": {
"currencyCode": "USD",
"units": 886,
"nanos": 410000000
},
"baseFare": {
"currencyCode": "USD",
"units": 777,
"nanos": 680000000
},
"fee": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"tax": {
"currencyCode": "USD",
"units": 108,
"nanos": 730000000
},
"totalRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 887
},
"discount": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"totalWithoutDiscount": {
"currencyCode": "USD",
"units": 886,
"nanos": 410000000
},
"totalWithoutDiscountRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 887
},
"showPriceStrikethrough": false
},
"travellerReference": "2",
"travellerType": "KID"
},
{
"travellerPriceBreakdown": {
"total": {
"currencyCode": "USD",
"units": 886,
"nanos": 410000000
},
"baseFare": {
"currencyCode": "USD",
"units": 777,
"nanos": 680000000
},
"fee": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"tax": {
"currencyCode": "USD",
"units": 108,
"nanos": 730000000
},
"totalRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 887
},
"discount": {
"currencyCode": "USD",
"units": 0,
"nanos": 0
},
"totalWithoutDiscount": {
"currencyCode": "USD",
"units": 886,
"nanos": 410000000
},
"totalWithoutDiscountRounded": {
"currencyCode": "USD",
"nanos": 0,
"units": 887
},
"showPriceStrikethrough": false
},
"travellerReference": "3",
"travellerType": "KID"
}
],
"includedProductsBySegment": [
[
{
"travellerReference": "1",
"travellerProducts": [
{
"type": "checkedInBaggage",
"product": {
"luggageType": "CHECKED_IN",
"ruleType": "PIECE_BASED",
"maxPiece": 2
}
},
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
},
{
"travellerReference": "2",
"travellerProducts": [
{
"type": "checkedInBaggage",
"product": {
"luggageType": "CHECKED_IN",
"ruleType": "PIECE_BASED",
"maxPiece": 2
}
},
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
},
{
"travellerReference": "3",
"travellerProducts": [
{
"type": "checkedInBaggage",
"product": {
"luggageType": "CHECKED_IN",
"ruleType": "PIECE_BASED",
"maxPiece": 2
}
},
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
}
],
[
{
"travellerReference": "1",
"travellerProducts": [
{
"type": "checkedInBaggage",
"product": {
"luggageType": "CHECKED_IN",
"ruleType": "PIECE_BASED",
"maxPiece": 2
}
},
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
},
{
"travellerReference": "2",
"travellerProducts": [
{
"type": "checkedInBaggage",
"product": {
"luggageType": "CHECKED_IN",
"ruleType": "PIECE_BASED",
"maxPiece": 2
}
},
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
},
{
"travellerReference": "3",
"travellerProducts": [
{
"type": "checkedInBaggage",
"product": {
"luggageType": "CHECKED_IN",
"ruleType": "PIECE_BASED",
"maxPiece": 2
}
},
{
"type": "cabinBaggage",
"product": {
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
}
}
},
{
"type": "personalItem"
}
]
}
]
],
"includedProducts": {
"areAllSegmentsIdentical": true,
"segments": [
[
{
"luggageType": "PERSONAL_ITEM",
"maxPiece": 3,
"piecePerPax": 1
},
{
"luggageType": "HAND",
"maxPiece": 3,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
},
"piecePerPax": 1
},
{
"luggageType": "CHECKED_IN",
"ruleType": "PIECE_BASED",
"maxPiece": 6,
"piecePerPax": 2
}
]
]
},
"unifiedPriceBreakdown": {
"id": "WN4926.CVG2026-02-02T07:00:00.MDW2026-02-02T07:25:00.ECONOMY,WN4893.MDW2026-02-02T08:15:00.OKC2026-02-02T10:35:00.ECONOMY,WN2991.OKC2026-02-05T15:10:00.MDW2026-02-05T17:15:00.ECONOMY,WN1659.MDW2026-02-05T18:05:00.CVG2026-02-05T20:15:00.ECONOMY_0_1ADULT.2INFANT_DIRECT_FIREFLY",
"price": {
"currencyCode": "USD",
"units": 2659,
"nanos": 230000000
},
"items": [
{
"scope": "FLIGHT_ADULT",
"quantity": 1,
"id": "flight_adult",
"title": "Adult (1)",
"price": {
"currencyCode": "USD",
"units": 886,
"nanos": 410000000
},
"items": [
{
"id": "flight_adult-basefare",
"title": "Flight fare",
"price": {
"currencyCode": "USD",
"units": 777,
"nanos": 680000000
},
"items": []
},
{
"id": "flight_adult-tax",
"title": "Taxes and airline fees",
"price": {
"currencyCode": "USD",
"units": 108,
"nanos": 730000000
},
"items": []
}
]
},
{
"scope": "FLIGHT_INFANT",
"quantity": 2,
"id": "flight_infant",
"title": "Infants (2)",
"price": {
"currencyCode": "USD",
"units": 1772,
"nanos": 820000000
},
"items": [
{
"id": "flight_infant-basefare",
"title": "Flight fare",
"price": {
"currencyCode": "USD",
"units": 1555,
"nanos": 360000000
},
"items": []
},
{
"id": "flight_infant-tax",
"title": "Taxes and airline fees",
"price": {
"currencyCode": "USD",
"units": 217,
"nanos": 460000000
},
"items": []
}
]
}
],
"addedItems": []
}
}
],
"unifiedPriceBreakdown": {
"id": "WN4926.CVG2026-02-02T07:00:00.MDW2026-02-02T07:25:00.ECONOMY,WN4893.MDW2026-02-02T08:15:00.OKC2026-02-02T10:35:00.ECONOMY,WN2991.OKC2026-02-05T15:10:00.MDW2026-02-05T17:15:00.ECONOMY,WN1659.MDW2026-02-05T18:05:00.CVG2026-02-05T20:15:00.ECONOMY_0_1ADULT.2INFANT_DIRECT_FIREFLY",
"price": {
"currencyCode": "USD",
"units": 1969,
"nanos": 200000000,
"amount": 1969.2
},
"items": [
{
"scope": "FLIGHT_ADULT",
"quantity": 1,
"id": "flight_adult",
"title": "Adult (1)",
"price": {
"currencyCode": "USD",
"units": 656,
"nanos": 400000000,
"amount": 656.4
},
"items": [
{
"id": "flight_adult-basefare",
"title": "Flight fare",
"price": {
"currencyCode": "USD",
"units": 563,
"nanos": 720000000,
"amount": 563.72
},
"items": []
},
{
"id": "flight_adult-tax",
"title": "Taxes and airline fees",
"price": {
"currencyCode": "USD",
"units": 92,
"nanos": 680000000,
"amount": 92.68
},
"items": []
}
]
},
{
"scope": "FLIGHT_INFANT",
"quantity": 2,
"id": "flight_infant",
"title": "Infants (2)",
"price": {
"currencyCode": "USD",
"units": 1312,
"nanos": 800000000,
"amount": 1312.8
},
"items": [
{
"id": "flight_infant-basefare",
"title": "Flight fare",
"price": {
"currencyCode": "USD",
"units": 1127,
"nanos": 440000000,
"amount": 1127.44
},
"items": []
},
{
"id": "flight_infant-tax",
"title": "Taxes and airline fees",
"price": {
"currencyCode": "USD",
"units": 185,
"nanos": 360000000,
"amount": 185.36
},
"items": []
}
]
}
],
"addedItems": []
},
"perTravellerPriceDifferences": []
},
{ ... }
],
"atolProtectedStatus": "NONE",
"displayOptions": {
"brandedFaresShownByDefault": true,
"directFlightsOnlyFilterIgnored": false,
"hideFlexiblePricesBanner": true
},
"searchCriteria": {
"cabinClass": "ECONOMY"
},
"baggagePolicies": [
{
"code": "AA",
"name": "American Airlines",
"url": "https://aa.com/i18n/travel-info/baggage/checked-baggage-policy.jsp"
},
{ ... }
],
"personalisationSegments": [
"INTERNATIONAL_FAMILY_VACATIONERS",
"SHORT_HAUL_TRIP",
"FAMILY_TRAVELLERS"
]
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/flights/details
requires authentication
Retrieve detailed flight offer information including segments, pricing, baggage policies, and fare features. This endpoint uses a flight token from search results.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/booking/flights/details'
params = {
'token': '',
'skip_branded_fares': '1',
'language': 'en-us',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/booking/flights/details';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'token' => '',
'skip_branded_fares' => '1',
'language' => 'en-us',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/booking/flights/details"
);
const params = {
"token": "",
"skip_branded_fares": "1",
"language": "en-us",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/booking/flights/details?token=&skip_branded_fares=1&language=en-us" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"token": "c8e49_528902410ab36854e72a...",
"language": "en-us",
"include_branded_fares": true,
"skip_branded_fares": 1,
"timestamp": 1769393844000
},
"body": {
"token": "c8e49_528902410ab36854e72a...",
"trip_type": "ROUNDTRIP",
"point_of_sale": "us",
"offer_reference": "c8e49_CgJ2MRIkZDE2NmM1ZWMtMGE4N...",
"flight_key": "1_WN4926_WN4893_2_WN2991_WN1659.CVG20260202.OKC20260205",
"segments": [
{
"segment_number": 1,
"direction": "outbound",
"departure": {
"airport": {
"code": "CVG",
"name": "Cincinnati/Northern Kentucky International Airport",
"city": "CVG",
"city_name": "Cincinnati",
"country": "US",
"country_name": "United States",
"province": "Ohio",
"province_code": "OH"
},
"time": "2026-02-02T07:00:00",
"time_tz": "2026-02-02T07:00:00-05:00"
},
"arrival": {
"airport": {
"code": "OKC",
"name": "Will Rogers World Airport",
"city": "OKC",
"city_name": "Oklahoma City",
"country": "US",
"country_name": "United States",
"province": "Oklahoma",
"province_code": "OK"
},
"time": "2026-02-02T10:35:00",
"time_tz": "2026-02-02T10:35:00-06:00"
},
"total_duration_minutes": 275,
"legs": [
{
"leg_number": 1,
"departure": {
"airport": {
"code": "CVG",
"name": "Cincinnati/Northern Kentucky International Airport",
"city": "CVG"
},
"time": "2026-02-02T07:00:00",
"time_tz": "2026-02-02T07:00:00-05:00"
},
"arrival": {
"airport": {
"code": "MDW",
"name": "Midway International Airport",
"city": "CHI"
},
"time": "2026-02-02T07:25:00",
"time_tz": "2026-02-02T07:25:00-06:00"
},
"duration_minutes": 85,
"flight_info": {
"number": 4926,
"plane_type": "7S7",
"carrier": {
"operating": "WN",
"marketing": "WN",
"disclosure_text": ""
},
"facilities": []
},
"carriers": [
{
"code": "WN",
"name": "Southwest Airlines",
"logo": "https://r-xx.bstatic.com/data/airlines_logo/WN.png"
}
],
"cabin_class": "ECONOMY",
"stops": 0,
"amenities": []
},
{
"leg_number": 2,
"departure": {
"airport": {
"code": "MDW",
"name": "Midway International Airport",
"city": "CHI"
},
"time": "2026-02-02T08:15:00",
"time_tz": "2026-02-02T08:15:00-06:00"
},
"arrival": {
"airport": {
"code": "OKC",
"name": "Will Rogers World Airport",
"city": "OKC"
},
"time": "2026-02-02T10:35:00",
"time_tz": "2026-02-02T10:35:00-06:00"
},
"duration_minutes": 140,
"flight_info": {
"number": 4893,
"plane_type": "7S7",
"carrier": {
"operating": "WN",
"marketing": "WN",
"disclosure_text": ""
},
"facilities": []
},
"carriers": [
{
"code": "WN",
"name": "Southwest Airlines",
"logo": "https://r-xx.bstatic.com/data/airlines_logo/WN.png"
}
],
"cabin_class": "ECONOMY",
"stops": 0,
"amenities": []
}
],
"baggage": {
"cabin": [
{
"type": "HAND",
"max_pieces": 1,
"size_restrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
},
"personal_item": true
},
{
"type": "HAND",
"max_pieces": 1,
"size_restrictions": {
"sizeUnit": "INCH"
},
"personal_item": true
},
{
"type": "HAND",
"max_pieces": 1,
"size_restrictions": {
"sizeUnit": "INCH"
},
"personal_item": true
}
],
"checked": []
},
"protection": {
"atol_protected": false,
"warnings": {
"origin_airport": false,
"destination_airport": false
}
}
},
{
"segment_number": 2,
"direction": "return",
"departure": {
"airport": {
"code": "OKC",
"name": "Will Rogers World Airport",
"city": "OKC",
"city_name": "Oklahoma City",
"country": "US",
"country_name": "United States",
"province": "Oklahoma",
"province_code": "OK"
},
"time": "2026-02-05T15:10:00",
"time_tz": "2026-02-05T15:10:00-06:00"
},
"arrival": {
"airport": {
"code": "CVG",
"name": "Cincinnati/Northern Kentucky International Airport",
"city": "CVG",
"city_name": "Cincinnati",
"country": "US",
"country_name": "United States",
"province": "Ohio",
"province_code": "OH"
},
"time": "2026-02-05T20:15:00",
"time_tz": "2026-02-05T20:15:00-05:00"
},
"total_duration_minutes": 245,
"legs": [
{
"leg_number": 1,
"departure": {
"airport": {
"code": "OKC",
"name": "Will Rogers World Airport",
"city": "OKC"
},
"time": "2026-02-05T15:10:00",
"time_tz": "2026-02-05T15:10:00-06:00"
},
"arrival": {
"airport": {
"code": "MDW",
"name": "Midway International Airport",
"city": "CHI"
},
"time": "2026-02-05T17:15:00",
"time_tz": "2026-02-05T17:15:00-06:00"
},
"duration_minutes": 125,
"flight_info": {
"number": 2991,
"plane_type": "7S7",
"carrier": {
"operating": "WN",
"marketing": "WN",
"disclosure_text": ""
},
"facilities": []
},
"carriers": [
{
"code": "WN",
"name": "Southwest Airlines",
"logo": "https://r-xx.bstatic.com/data/airlines_logo/WN.png"
}
],
"cabin_class": "ECONOMY",
"stops": 0,
"amenities": []
},
{
"leg_number": 2,
"departure": {
"airport": {
"code": "MDW",
"name": "Midway International Airport",
"city": "CHI"
},
"time": "2026-02-05T18:05:00",
"time_tz": "2026-02-05T18:05:00-06:00"
},
"arrival": {
"airport": {
"code": "CVG",
"name": "Cincinnati/Northern Kentucky International Airport",
"city": "CVG"
},
"time": "2026-02-05T20:15:00",
"time_tz": "2026-02-05T20:15:00-05:00"
},
"duration_minutes": 70,
"flight_info": {
"number": 1659,
"plane_type": "7S7",
"carrier": {
"operating": "WN",
"marketing": "WN",
"disclosure_text": ""
},
"facilities": []
},
"carriers": [
{
"code": "WN",
"name": "Southwest Airlines",
"logo": "https://r-xx.bstatic.com/data/airlines_logo/WN.png"
}
],
"cabin_class": "ECONOMY",
"stops": 0,
"amenities": []
}
],
"baggage": {
"cabin": [
{
"type": "HAND",
"max_pieces": 1,
"size_restrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
},
"personal_item": true
},
{
"type": "HAND",
"max_pieces": 1,
"size_restrictions": {
"sizeUnit": "INCH"
},
"personal_item": true
},
{
"type": "HAND",
"max_pieces": 1,
"size_restrictions": {
"sizeUnit": "INCH"
},
"personal_item": true
}
],
"checked": []
},
"protection": {
"atol_protected": false,
"warnings": {
"origin_airport": false,
"destination_airport": false
}
}
}
],
"pricing": {
"total": {
"currency": "USD",
"amount": 1969.2,
"units": 1969,
"nanos": 200000000,
"formatted": "1,969.20"
},
"breakdown": {
"base_fare": {
"currency": "USD",
"amount": 1691.16,
"units": 1691,
"nanos": 160000000,
"formatted": "1,691.16"
},
"taxes": {
"currency": "USD",
"amount": 278.04,
"units": 278,
"nanos": 40000000,
"formatted": "278.04"
},
"fees": {
"currency": "USD",
"amount": 0,
"units": 0,
"nanos": 0,
"formatted": "0.00"
},
"discount": {
"currency": "USD",
"amount": 0,
"units": 0,
"nanos": 0,
"formatted": "0.00"
}
},
"display": {
"total_rounded": {
"currency": "USD",
"amount": 1970,
"units": 1970,
"nanos": 0,
"formatted": "1,970.00"
},
"total_without_discount": {
"currency": "USD",
"amount": 1969.2,
"units": 1969,
"nanos": 200000000,
"formatted": "1,969.20"
},
"total_without_discount_rounded": {
"currency": "USD",
"amount": 1970,
"units": 1970,
"nanos": 0,
"formatted": "1,970.00"
},
"show_strikethrough": false
}
},
"traveller_prices": [
{
"traveller_reference": "1",
"traveller_type": "ADULT",
"price_breakdown": {
"total": {
"amount": 656.4,
"currency": "USD"
}
}
},
{
"traveller_reference": "2",
"traveller_type": "KID",
"price_breakdown": {
"total": {
"amount": 656.4,
"currency": "USD"
}
}
},
{
"traveller_reference": "3",
"traveller_type": "KID",
"price_breakdown": {
"total": {
"amount": 656.4,
"currency": "USD"
}
}
}
],
"travellers": [
{
"travellerReference": "1",
"type": "ADULT"
},
{
"travellerReference": "2",
"type": "KID",
"age": 4
},
{
"travellerReference": "3",
"type": "KID",
"age": 2
}
],
"included_products": {
"all_segments_identical": true,
"segments": [
[
{
"luggageType": "PERSONAL_ITEM",
"maxPiece": 3,
"piecePerPax": 1
},
{
"luggageType": "HAND",
"maxPiece": 1,
"sizeRestrictions": {
"maxLength": 23.6,
"maxWidth": 15.8,
"maxHeight": 9.8,
"sizeUnit": "INCH"
},
"piecePerPax": 1
},
{
"luggageType": "HAND",
"maxPiece": 2,
"sizeRestrictions": {
"sizeUnit": "INCH"
},
"piecePerPax": 1
}
]
]
},
"baggage_policies": [
{
"airline_code": "WN",
"airline_name": "Southwest Airlines",
"policy_url": "https://www.southwest.com/html/customer-service/baggage/index.html?clk=GFOOTER-CUSTOMER-BAGS"
}
],
"branded_fare": {
"name": "Choice",
"cabin_class": "ECONOMY",
"features_by_category": {
"BAGGAGE": [
{
"name": "PERSONAL_BAGGAGE",
"label": "3 personal items",
"code": "BK03",
"availability": "INCLUDED",
"priority": 0,
"category_info": {
"groupingKey": "BAGGAGE",
"heading": "Baggage",
"priority": 1
}
},
{
"name": "CABIN_BAGGAGE",
"label": "1 carry-on bag",
"code": "BK02",
"availability": "INCLUDED",
"priority": 2,
"category_info": {
"groupingKey": "BAGGAGE",
"heading": "Baggage",
"priority": 1
}
},
{
"name": "CABIN_BAGGAGE",
"label": "2 carry-on bags",
"code": "BK02",
"availability": "INCLUDED",
"priority": 2,
"category_info": {
"groupingKey": "BAGGAGE",
"heading": "Baggage",
"priority": 1
}
}
],
"CANCEL": [
{
"name": "REFUND_WITH_TRANSFERABLE_CREDIT_12_MONTHS",
"label": "Refund as transferable airline credit if you cancel – valid for 12 months",
"code": "",
"availability": "INCLUDED",
"priority": 32,
"category_info": {
"groupingKey": "FLEXIBILITY",
"heading": "Flexibility",
"priority": 2
}
}
],
"CHANGE": [
{
"name": "CHANGEABLE_TICKET",
"label": "Flight change allowed",
"code": "08R",
"availability": "INCLUDED",
"priority": 9,
"category_info": {
"groupingKey": "FLEXIBILITY",
"heading": "Flexibility",
"priority": 2
}
}
]
},
"baggage_exclusions": {
"checkin": true,
"cabin": false
}
},
"requirements": {
"traveller_data": [
"DATE_OF_BIRTH"
],
"booker_data": [
"EMAIL",
"PHONE"
]
},
"point_of_sale_info": {
"detected_point_of_sale": "us",
"is_mismatch": false,
"offer_sales_country": "us"
},
"summary": {
"total_segments": 2,
"total_legs": 4,
"total_duration_minutes": 520,
"airlines": [
{
"code": "WN",
"name": "Southwest Airlines",
"logo": "https://r-xx.bstatic.com/data/airlines_logo/WN.png"
}
],
"airports": [
"CVG",
"MDW",
"OKC"
]
}
}
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Metadata & Utility
Search and autocomplete destinations, cities, and locations with fast, real-time results.
GET /v1/languages
requires authentication
Get all supported languages with their codes and country flags.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/booking/languages'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/booking/languages';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/booking/languages"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/booking/languages" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"timestamp": 1769394978,
"total_languages": 45
},
"body": [
{
"name": "English (UK)",
"code": "en-gb",
"country_flag": "gb"
},
{
"name": "English (US)",
"code": "en-us",
"country_flag": "us"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/currencies
requires authentication
Get all supported currencies with their codes and symbols.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/booking/currencies'
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/booking/currencies';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/booking/currencies"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/booking/currencies" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"timestamp": 1769400274,
"total_currencies": 52
},
"body": [
{
"name": "Argentine Peso",
"code": "ARS",
"encoded_symbol": "AR$",
"symbol": "AR$"
},
{
"name": "Australian Dollar",
"code": "AUD",
"encoded_symbol": "AUD",
"symbol": "AUD"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (404, Not Found):
{
"success": false,
"message": "Resource Not Found"
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
GET /v1/location
requires authentication
Get location suggestions based on search term (airports, cities, districts, landmarks).
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/booking/locations'
params = {
'search': 'Cincinnati',
'language': 'us',
'country': 'us',
}
headers = {
'Authorization': 'Bearer {YOUR_AUTH_KEY}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()$client = new \GuzzleHttp\Client();
$url = 'https://api.steadyapi.com/v1/booking/locations';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'search' => 'Cincinnati',
'language' => 'us',
'country' => 'us',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/booking/locations"
);
const params = {
"search": "Cincinnati",
"language": "us",
"country": "us",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());curl --request GET \
--get "https://api.steadyapi.com/v1/booking/locations?search=Cincinnati&language=us&country=us" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"query": "cincinnati",
"language": "us",
"country": "us",
"affiliate_code": "booking-cars",
"total_results": 5,
"timestamp": 1769397368
},
"body": [
{
"name": "Cincinnati/Northern Kentucky International Airport",
"type": "airport",
"type_code": "A",
"country": {
"code": "us",
"name": "United States"
},
"region": "Ohio",
"city": "Cincinnati",
"coordinates": {
"latitude": 39.0449981689453,
"longitude": -84.6600036621094
},
"airport_code": "CVG"
},
{ ... }
]
}
Example response (401, Unauthenticated):
{
"message": "Unauthenticated."
}
Example response (422, Error Validations):
{
"message": "The ticker field is required.",
"errors": {
"ticker": [
"The ticker field is required."
]
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.