🏨 Booking.com
Booking.com API for hotels, flights, and destination search.
- Destination autocomplete and hotel search, including search by coordinates
- Hotel details, rooms, availability, reviews, nearby attractions, and FAQs
- Flight autocomplete, search, and details
- Car rental search
- Languages, currencies, and locations
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 City",
"language": "en-us",
"total": 10,
"timestamp": 1791644884000
},
"body": [
{
"id": "city/20103321",
"type": "CITY",
"name": "Oklahoma City",
"full_name": "Oklahoma City, Oklahoma, United States of America",
"subtitle": "Oklahoma, United States of America",
"country_code": "us",
"destination_id": "20103321",
"coordinates": {
"latitude": 35.4729881286621,
"longitude": -97.5170516967773
},
"image_url": "https://www.booking.com/xdata/images/city/square150/1013817.jpg?k=e752b3f36f49e441eb37b1e1860568906216e4e6f77afe51d409b991d32b6fa3&o=",
"label_components": [
{
"name": "Oklahoma City",
"type": "CITY"
},
{
"name": "Oklahoma",
"type": "REGION"
},
{
"name": "United States of America",
"type": "COUNTRY"
}
],
"metadata": {
"language_code": "xu",
"max_stay": 90,
"eligible_pages": [],
"is_ski_destination": false,
"source": "BRICK"
},
"city": "Oklahoma City"
},
{
"id": "airport/207",
"type": "AIRPORT",
"name": "Will Rogers World Airport",
"full_name": "Will Rogers World Airport, Oklahoma City, Oklahoma, United States",
"subtitle": "Oklahoma City, Oklahoma, United States",
"country_code": "us",
"destination_id": "207",
"coordinates": {
"latitude": 35.3953018188477,
"longitude": -97.5961990356445
},
"image_url": "https://www.booking.com/static/img/plane-100.jpg",
"label_components": [
{
"name": "Will Rogers World Airport",
"type": "AIRPORT"
},
{
"name": "Oklahoma City",
"type": "CITY"
},
{
"name": "Oklahoma",
"type": "REGION"
},
{
"name": "United States",
"type": "COUNTRY"
}
],
"metadata": {
"language_code": "en",
"max_stay": 90,
"eligible_pages": [],
"is_ski_destination": false,
"source": "BRICK"
},
"airport": "Will Rogers World Airport",
"airport_code": "207"
}
]
}
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
requires authentication
Search for hotels and properties in a destination using Booking.com API.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/booking/hotels/search'
params = {
'dest_id': '20103321',
'dest_type': 'CITY',
'checkin': '2027-01-24',
'checkout': '2027-01-27',
'children_ages': '5,8',
'language': 'en-us',
'currency': 'EUR',
'min_price': '40',
'max_price': '70',
'stars': '3,4',
'filters[0]': 'mealplan=1',
'filters[1]': 'price=USD-40-70-1',
}
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';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'dest_id' => '20103321',
'dest_type' => 'CITY',
'checkin' => '2027-01-24',
'checkout' => '2027-01-27',
'children_ages' => '5,8',
'language' => 'en-us',
'currency' => 'EUR',
'min_price' => '40',
'max_price' => '70',
'stars' => '3,4',
'filters[0]' => 'mealplan=1',
'filters[1]' => 'price=USD-40-70-1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/booking/hotels/search"
);
const params = {
"dest_id": "20103321",
"dest_type": "CITY",
"checkin": "2027-01-24",
"checkout": "2027-01-27",
"children_ages": "5,8",
"language": "en-us",
"currency": "EUR",
"min_price": "40",
"max_price": "70",
"stars": "3,4",
"filters[0]": "mealplan=1",
"filters[1]": "price=USD-40-70-1",
};
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?dest_id=20103321&dest_type=CITY&checkin=2027-01-24&checkout=2027-01-27&children_ages=5%2C8&language=en-us¤cy=EUR&min_price=40&max_price=70&stars=3%2C4&filters[]=mealplan%3D1&filters[]=price%3DUSD-40-70-1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"dest_id": "20014181",
"dest_type": "CITY",
"destination": "Los Angeles",
"country_code": "us",
"checkin": "2026-11-15",
"checkout": "2026-11-18",
"adults": "2",
"children": 0,
"rooms": "1",
"page": 1,
"per_page": "1",
"total_results": 1260,
"total_pages": 1260,
"sort": "popularity",
"filters_applied": 0,
"availability_info": {
"has_low_availability": false,
"unavailable_percent": 52,
"available_properties": 1260,
"autoextended_properties": 0
},
"breadcrumbs": [
{
"name": "United States",
"type": "COUNTRY",
"url_parts": [
"us"
]
},
{
"name": "California",
"type": "REGION",
"url_parts": [
"us",
"california"
]
},
{
"name": "Los Angeles",
"type": "CITY",
"url_parts": [
"us",
"los-angeles"
]
}
]
},
"body": [
{
"id": 56531,
"name": "The Hollywood Franklin Hotel near Universal Studios",
"description": null,
"type": 204,
"accommodation_type": 204,
"accommodation_type_name": "HOTEL",
"page_name": "best-western-hollywood-hills",
"booking_url": "https://www.booking.com/hotel/us/best-western-hollywood-hills.html?checkin=2026-11-15&checkout=2026-11-18&group_adults=2&group_children=0&no_rooms=1",
"facilities": [
{
"name": "Heated pool",
"group": "Highlights"
},
{
"name": "Beach chairs/Loungers",
"group": "Highlights"
}
],
"is_closed": false,
"is_test_property": false,
"location": {
"address": "6141 Franklin Avenue",
"city": "Los Angeles (California)",
"country_code": "us",
"coordinates": {
"latitude": 34.1053930909925,
"longitude": -118.323472738266
},
"display_location": "Hollywood, Los Angeles",
"distance_from_downtown": "5.9 miles from downtown"
},
"reviews": {
"score": 8.5,
"review_count": 5270,
"score_text": "Very Good",
"show_score": true,
"personalized_summary": "",
"personalized_reviews_count": 890
},
"photos": {
"high_res": "https://cf.bstatic.com/xdata/images/hotel/square600/714785849.webp?k=5149ab90aa3e353390542f8ea98a3e4046b872aa7894040ff5f9719ed05d2a09&o=",
"low_res": "https://cf.bstatic.com/xdata/images/hotel/square240/714785849.webp?k=5149ab90aa3e353390542f8ea98a3e4046b872aa7894040ff5f9719ed05d2a09&o=",
"high_res_jpeg": "https://cf.bstatic.com/xdata/images/hotel/square600/714785849.jpg?k=c6d73e1f0432ff7d8ec763e66dd100e06bd3d9a1428b5dd845af410b39f97690&o=",
"low_res_jpeg": "https://cf.bstatic.com/xdata/images/hotel/square240/714785849.jpg?k=c6d73e1f0432ff7d8ec763e66dd100e06bd3d9a1428b5dd845af410b39f97690&o=",
"gallery": [
"https://cf.bstatic.com/xdata/images/hotel/square600/714785849.jpg?k=c6d73e1f0432ff7d8ec763e66dd100e06bd3d9a1428b5dd845af410b39f97690&o=",
"https://cf.bstatic.com/xdata/images/hotel/square600/714785849.webp?k=5149ab90aa3e353390542f8ea98a3e4046b872aa7894040ff5f9719ed05d2a09&o=",
"https://cf.bstatic.com/xdata/images/hotel/square240/714785849.webp?k=5149ab90aa3e353390542f8ea98a3e4046b872aa7894040ff5f9719ed05d2a09&o="
]
},
"star_rating": 3,
"star_symbol": "NONE",
"pricing": {
"total_price": {
"amount": "$283.89",
"currency": "USD",
"amount_unformatted": 283.89,
"amount_rounded": "$284"
},
"average_price_per_night": {
"amount": "$94.03",
"currency": "USD",
"amount_unformatted": 94.0266666666667,
"amount_rounded": "$94"
},
"price_before_discount": {
"amount": "",
"currency": ""
},
"discounts": [],
"badges": [],
"taxes_and_fees": {
"amount": "$39.72",
"currency": "USD"
}
},
"policies": {
"free_cancellation": true,
"no_prepayment": false,
"pets_allowed_free": false
},
"meal_plan": {
"included": null,
"type": null
},
"genius_info": {
"available": false,
"show_badge": false
},
"blocks": [
{
"room_id": "5653108",
"room_name": "Queen Room with Two Queen Beds",
"final_price": {
"amount": 283.89,
"currency": "USD"
},
"original_price": {
"amount": 283.89,
"currency": "USD"
},
"occupancy": 2,
"meal_plan_id": 0,
"meal_plan": "No meal plan",
"free_cancellation_until": "2026-10-11T15:13:03Z",
"has_crib": false,
"only_x_left": null
}
],
"available_blocks_count": 1,
"metadata": {
"host_trader_label": "PROFESSIONAL",
"wishlist_count": 0,
"is_tpi_exclusive": false,
"sold_out": false,
"sustainability": 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/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': '2027-01-24',
'checkout': '2027-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' => '2027-01-24',
'checkout' => '2027-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": "2027-01-24",
"checkout": "2027-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=2027-01-24&checkout=2027-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': '2027-01-24',
'checkout': '2027-01-27',
'adults': '2',
'children': '0',
'rooms': '1',
'children_ages': '5,8',
'currency': 'EUR',
'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' => '2027-01-24',
'checkout' => '2027-01-27',
'adults' => '2',
'children' => '0',
'rooms' => '1',
'children_ages' => '5,8',
'currency' => 'EUR',
'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": "2027-01-24",
"checkout": "2027-01-27",
"adults": "2",
"children": "0",
"rooms": "1",
"children_ages": "5,8",
"currency": "EUR",
"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=2027-01-24&checkout=2027-01-27&adults=2&children=0&rooms=1&children_ages=5%2C8¤cy=EUR&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-11-15",
"checkout": "2026-11-18",
"adults": "2",
"children": 0,
"rooms": "1",
"language": "en-us",
"currency": "USD"
},
"body": {
"hotel_id": 2572691,
"name": "La Quinta by Wyndham Oklahoma City Airport",
"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.",
"accommodation_type": 204,
"accommodation_type_name": "HOTEL",
"ufi": 20103321,
"page_name": "la-quinta-inn-suites-oklahoma-city-airport",
"booking_url": "https://www.booking.com/hotel/us/la-quinta-inn-suites-oklahoma-city-airport.html?checkin=2026-11-15&checkout=2026-11-18&group_adults=2&group_children=0&no_rooms=1",
"facilities": [
{
"name": "Bath",
"group": "BATHROOM_PRIVATE"
},
{
"name": "Free toiletries",
"group": "BATHROOM_PRIVATE"
},
{
"name": "Shower",
"group": "BATHROOM_PRIVATE"
},
{
"name": "Toilet",
"group": "BATHROOM_PRIVATE"
},
{
"name": "Towels",
"group": "BATHROOM_PRIVATE"
},
{
"name": "Hairdryer",
"group": "BATHROOM_PRIVATE"
}
],
"checkin_time": null,
"checkout_time": null,
"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.5,
"location_formatted_score": "8.5",
"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=",
"gallery": [
"https://cf.bstatic.com/xdata/images/hotel/square600/226690967.webp?k=8288ed35831fb235a9a93b3042d933358718d9eee2ed99243ef3deef6ccefd92&o=",
"https://cf.bstatic.com/xdata/images/hotel/square240/226690967.webp?k=8288ed35831fb235a9a93b3042d933358718d9eee2ed99243ef3deef6ccefd92&o="
]
},
"ratings": {
"internal": {
"score": 8.2,
"count": 1001,
"total_score_text": "Very Good",
"secondary_score": 0,
"secondary_text": null,
"show_secondary_score": false
},
"external": {
"score": null,
"count": null,
"total_score_text": null
},
"star_rating": {
"value": 3,
"symbol": "NONE"
}
},
"availability": {
"is_sold_out": false,
"alternative_dates": [],
"is_newly_opened": false,
"is_tpi_exclusive": false
},
"policies": {
"free_cancellation": true,
"no_prepayment": true
},
"price_info": {
"display_price": {
"copy": "Total",
"amount_per_stay": {
"amount": "$240",
"amount_rounded": "$240",
"amount_unformatted": 240,
"currency": "USD"
}
},
"average_price_per_night": {
"amount": "$80",
"amount_rounded": "$80",
"amount_unformatted": 80.0000000000001,
"currency": "USD"
},
"price_before_discount": {
"copy": null,
"amount_per_stay": {
"amount": "",
"amount_rounded": "",
"amount_unformatted": 0,
"currency": ""
}
},
"discounts": [],
"badges": [],
"charges_info": null,
"excluded_charges": {
"aggregated": {
"copy": null,
"amount_per_stay": {
"amount": "$42.91",
"amount_rounded": "$43",
"amount_unformatted": 42.9120000000001,
"currency": "USD"
}
},
"list": [
{
"charge_type": 23,
"charge_mode": "PERCENTAGE",
"charge_inclusion": "EXCLUDED",
"amount_per_stay": {
"amount": "$42.91",
"amount_rounded": "$43",
"amount_unformatted": 42.9120000000001,
"currency": "USD"
}
}
]
},
"use_rounded_amount": false
},
"room_blocks": [
{
"room_name": "King Room",
"meal_plan": "Breakfast included",
"block_id": {
"room_id": "257269102",
"room_name": "King Room",
"occupancy": 3,
"policy_group_id": "246026267",
"package_id": "0",
"meal_plan_id": 1,
"meal_plan": "Breakfast included",
"bundle_id": 0
},
"final_price": {
"amount": 240,
"currency": "USD"
},
"original_price": {
"amount": 240,
"currency": "USD"
},
"only_x_left_message": {
"tag": null,
"translation": null,
"variables": []
},
"free_cancellation_until": "2026-11-14T06:00:00Z",
"has_crib": false,
"block_match_tags": {
"child_stays_for_free": false
},
"third_party_inventory": {
"is_tpi_block": false
}
}
],
"unit_configurations": {
"common": {
"name": null,
"unit_id": 0,
"bed_configurations": [
{
"beds": [
{
"count": 1,
"type": 3
}
],
"nb_all_beds": 1
}
],
"nb_all_beds": 1,
"nb_bathrooms": 0,
"nb_bedrooms": 0,
"nb_kitchens": 0,
"nb_livingrooms": 0,
"nb_units": 1,
"unit_type_names": [],
"localized_area": {
"area": null,
"unit": null
}
},
"units": []
},
"genius_info": {
"show_genius_rate_badge": false,
"genius_benefits": {
"hotel_card_has_free_room_upgrade": false
}
},
"persuasion_flags": {
"preferred": true,
"preferred_plus": false,
"highlighted": false,
"show_native_ad_label": false
},
"meal_plan": {
"type": "MEAL_PLAN",
"text": "Breakfast included"
},
"recommended_dates": {
"checkin": "",
"checkout": ""
}
}
}
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': '2027-02-02',
'return': '2027-02-05',
'type': 'ROUNDTRIP',
'adults': '1',
'infants': '1',
'cabinClass': 'ECONOMY',
'fromCountry': 'US',
'toCountry': 'US',
'currency': 'USD',
'language': 'en',
'stops': '0,1',
'airlines': 'WN,AA',
'max_price': '400',
}
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' => '2027-02-02',
'return' => '2027-02-05',
'type' => 'ROUNDTRIP',
'adults' => '1',
'infants' => '1',
'cabinClass' => 'ECONOMY',
'fromCountry' => 'US',
'toCountry' => 'US',
'currency' => 'USD',
'language' => 'en',
'stops' => '0,1',
'airlines' => 'WN,AA',
'max_price' => '400',
],
]
);
$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": "2027-02-02",
"return": "2027-02-05",
"type": "ROUNDTRIP",
"adults": "1",
"infants": "1",
"cabinClass": "ECONOMY",
"fromCountry": "US",
"toCountry": "US",
"currency": "USD",
"language": "en",
"stops": "0,1",
"airlines": "WN,AA",
"max_price": "400",
};
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=2027-02-02&return=2027-02-05&type=ROUNDTRIP&adults=1&infants=1&cabinClass=ECONOMY&fromCountry=US&toCountry=US¤cy=USD&language=en&stops=0%2C1&airlines=WN%2CAA&max_price=400" \
--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,
"total_count": 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",
"offer_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.
Cars
Car rental search, booking, and management capabilities.
GET /v1/cars/search
requires authentication
Search for car rentals based on location, dates, and filters.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/booking/cars/search'
params = {
'pick_up_location': 'CVG',
'drop_off_location': 'CVG',
'pick_up_date': '2027-01-29T10:00:00',
'drop_off_date': '2027-02-01T10:00:00',
'drivers_age': '30',
'location_type': 'IATA',
'car_category': 'suvs',
'price_bucket': 'BUCKET_2',
'mileage': 'UNLIMITED',
'language': 'us',
'affiliate_code': 'booking-cars',
'include_extras': '1',
}
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/cars/search';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'pick_up_location' => 'CVG',
'drop_off_location' => 'CVG',
'pick_up_date' => '2027-01-29T10:00:00',
'drop_off_date' => '2027-02-01T10:00:00',
'drivers_age' => '30',
'location_type' => 'IATA',
'car_category' => 'suvs',
'price_bucket' => 'BUCKET_2',
'mileage' => 'UNLIMITED',
'language' => 'us',
'affiliate_code' => 'booking-cars',
'include_extras' => '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/booking/cars/search"
);
const params = {
"pick_up_location": "CVG",
"drop_off_location": "CVG",
"pick_up_date": "2027-01-29T10:00:00",
"drop_off_date": "2027-02-01T10:00:00",
"drivers_age": "30",
"location_type": "IATA",
"car_category": "suvs",
"price_bucket": "BUCKET_2",
"mileage": "UNLIMITED",
"language": "us",
"affiliate_code": "booking-cars",
"include_extras": "1",
};
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/cars/search?pick_up_location=CVG&drop_off_location=CVG&pick_up_date=2027-01-29T10%3A00%3A00&drop_off_date=2027-02-01T10%3A00%3A00&drivers_age=30&location_type=IATA&car_category=suvs&price_bucket=BUCKET_2&mileage=UNLIMITED&language=us&affiliate_code=booking-cars&include_extras=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"search_criteria": {
"pick_up": {
"location": "CVG",
"type": "IATA",
"date": "2026-10-20T10:00:00"
},
"drop_off": {
"location": "CVG",
"type": "IATA",
"date": "2026-10-23T10:00:00"
},
"drivers_age": "30"
},
"filters_applied": [],
"total_cars": 341,
"price_range": {
"min": 273.22,
"max": 1560.24,
"currency": "USD"
},
"search_key": "eyJkcml2ZXJzQWdlIjozMCwiZHJvcE9mZkRhdGVUaW1lIjoiMjAyNi0xMC0yM1QxMDowMDowMCIsImRyb3BPZmZMb2NhdGlvbiI6IkNWRyIsImRyb3BPZmZMb2NhdGlvblR5cGUiOiJJQVRBIiwicGlja1VwRGF0ZVRpbWUiOiIyMDI2LTEwLTIwVDEwOjAwOjAwIiwicGlja1VwTG9jYXRpb24iOiJDVkciLCJwaWNrVXBMb2NhdGlvblR5cGUiOiJJQVRBIiwicmVudGFsRHVyYXRpb25JbkRheXMiOjMsInNlYXJjaE1ldGFkYXRhIjoie1wicGlja1VwTG9jYXRpb25OYW1lXCI6XCJDVkdcIixcImRyb3BPZmZMb2NhdGlvbk5hbWVcIjpcIkNWR1wifSIsInNlcnZpY2VGZWF0dXJlcyI6WyJJTkNMVURFX05VTUJFUl9PRl9TVUlUQ0FTRVMiLCJSRVRVUk5fRVhUUkFTX1dJVEhfUFJJQ0lOR19JTl9NVUxUSV9DQVJfUkVTUE9OU0UiLCJBUFBMRV9DQVJEX0VOQUJMRUQiXSwic2lnbmF0dXJlIjoiR0t4ZnZUNkdBVzNqMFdiamRUN0Q2R0grWGd6V3A5WlVPL3pPS2RqcExaWT0ifQ==",
"language": "us",
"affiliate_code": "booking-cars",
"timestamp": 1791669046
},
"body": {
"cars": [
{
"id": "824119931",
"supplier": {
"id": "428",
"name": "Sixt",
"rating": 10,
"reviews_count": 47,
"logo_url": "https://cdn2.rcstatic.com/sp/images/suppliers/428_logo_200.png"
},
"vehicle": {
"name": "Volkswagen Taos",
"category": "suvs",
"type": "CFARB",
"transmission": "AUTOMATIC",
"air_conditioning": true,
"fuel_policy": "N/A",
"seats": "5",
"doors": "4",
"bags": {
"large": 1,
"small": 1
}
},
"price": {
"total": 275.61,
"currency": "USD",
"per_day": 91.87,
"taxes_included": true,
"deposit_required": false,
"deposit_amount": 0
},
"location": {
"pick_up": "Cincinnati/Northern Kentucky International Airport",
"drop_off": "Cincinnati/Northern Kentucky International Airport",
"distance": null,
"pick_up_address": "3057 Terminal Drive, Hebron, US, 41048-7583",
"drop_off_address": "3057 Terminal Drive, Hebron, US, 41048-7583"
},
"features": {
"unlimited_mileage": true,
"free_cancellation": true,
"pay_at_location": true
},
"extras": [
{
"name": "MILEAGE",
"amount": null,
"currency": "USD",
"included": false,
"unlimited": true
}
],
"images": [
"https://cdn2.rcstatic.com/images/car_images/new_images/volkswagen/taos_lrg.jpg"
],
"deep_link": "https://cars.booking.com/package/deal/eyJkcml2ZXJzQWdlIjozMCwiZHJvcE9mZkRhdGVUaW1lIjoiMjAyNi0xMC0yM1QxMDowMDowMCIsImRyb3BPZmZMb2NhdGlvbiI6IkNWRyIsImRyb3BPZmZMb2NhdGlvblR5cGUiOiJJQVRBIiwicGlja1VwRGF0ZVRpbWUiOiIyMDI2LTEwLTIwVDEwOjAwOjAwIiwicGlja1VwTG9jYXRpb24iOiJDVkciLCJwaWNrVXBMb2NhdGlvblR5cGUiOiJJQVRBIiwicmVudGFsRHVyYXRpb25JbkRheXMiOjMsInNlYXJjaE1ldGFkYXRhIjoie1wicGlja1VwTG9jYXRpb25OYW1lXCI6XCJDVkdcIixcImRyb3BPZmZMb2NhdGlvbk5hbWVcIjpcIkNWR1wifSIsInNlcnZpY2VGZWF0dXJlcyI6WyJJTkNMVURFX05VTUJFUl9PRl9TVUlUQ0FTRVMiLCJSRVRVUk5fRVhUUkFTX1dJVEhfUFJJQ0lOR19JTl9NVUxUSV9DQVJfUkVTUE9OU0UiLCJBUFBMRV9DQVJEX0VOQUJMRUQiXSwic2lnbmF0dXJlIjoiR0t4ZnZUNkdBVzNqMFdiamRUN0Q2R0grWGd6V3A5WlVPL3pPS2RqcExaWT0ifQ==/824119931"
}
],
"total_cars": 341,
"price_range": {
"min": 273.22,
"max": 1560.24,
"currency": "USD"
},
"categories_available": [
"suvs",
"economy",
"pickups",
"standard",
"special",
"compact",
"full_size",
"intermediate",
"carriers_8",
"carriers_7",
"premium",
"carriers_6",
"carriers_12",
"luxury"
],
"suppliers_available": [
{
"name": "Sixt",
"rating": 10,
"car_count": 42
},
{
"name": "Payless",
"rating": 8.7,
"car_count": 24
},
{
"name": "Dollar",
"rating": 5.6,
"car_count": 33
}
],
"search_key": "eyJkcml2ZXJzQWdlIjozMCwiZHJvcE9mZkRhdGVUaW1lIjoiMjAyNi0xMC0yM1QxMDowMDowMCIsImRyb3BPZmZMb2NhdGlvbiI6IkNWRyIsImRyb3BPZmZMb2NhdGlvblR5cGUiOiJJQVRBIiwicGlja1VwRGF0ZVRpbWUiOiIyMDI2LTEwLTIwVDEwOjAwOjAwIiwicGlja1VwTG9jYXRpb24iOiJDVkciLCJwaWNrVXBMb2NhdGlvblR5cGUiOiJJQVRBIiwicmVudGFsRHVyYXRpb25JbkRheXMiOjMsInNlYXJjaE1ldGFkYXRhIjoie1wicGlja1VwTG9jYXRpb25OYW1lXCI6XCJDVkdcIixcImRyb3BPZmZMb2NhdGlvbk5hbWVcIjpcIkNWR1wifSIsInNlcnZpY2VGZWF0dXJlcyI6WyJJTkNMVURFX05VTUJFUl9PRl9TVUlUQ0FTRVMiLCJSRVRVUk5fRVhUUkFTX1dJVEhfUFJJQ0lOR19JTl9NVUxUSV9DQVJfUkVTUE9OU0UiLCJBUFBMRV9DQVJEX0VOQUJMRUQiXSwic2lnbmF0dXJlIjoiR0t4ZnZUNkdBVzNqMFdiamRUN0Q2R0grWGd6V3A5WlVPL3pPS2RqcExaWT0ifQ=="
}
}
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."
]
}
}
Example response (503, Upstream unavailable):
{
"success": false,
"message": "Car search is temporarily unavailable. Please try again."
}
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/cars/details
requires authentication
Price breakdown, pickup depot, and similar cars for one search result.
Example request:
import requests
import json
url = 'https://api.steadyapi.com/v1/booking/cars/details'
params = {
'vehicle_id': '',
'search_key': '',
}
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/cars/details';
$response = $client->get(
$url,
[
'headers' => [
'Authorization' => 'Bearer {YOUR_AUTH_KEY}',
],
'query' => [
'vehicle_id' => '',
'search_key' => '',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));const url = new URL(
"https://api.steadyapi.com/v1/booking/cars/details"
);
const params = {
"vehicle_id": "",
"search_key": "",
};
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/cars/details?vehicle_id=&search_key=" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"Example response (200, Success):
{
"meta": {
"version": "v1.0",
"status": 200,
"copywrite": "https://steadyapi.com",
"vehicle_id": "824119931",
"timestamp": 1791669237
},
"body": {
"id": "824119931",
"supplier": {
"id": "428",
"name": "Sixt",
"logo_url": "https://cdn2.rcstatic.com/sp/images/suppliers/428_logo_200.png"
},
"pick_up": {
"id": "4595299",
"name": "Cincinnati/Northern Kentucky International Airport",
"address": "3057 Terminal Drive, Hebron, US, 41048-7583",
"latitude": 39.055722,
"longitude": -84.656199,
"hours": [
{
"dayRange": "Mon - Sun",
"timeRange": "00:00 - 23:59"
}
],
"instructions": "Our counter is located on the first floor and is accessible by walking from baggage claim. Follow Terminal signage to Ground Transport West to the Rental Car Center inside the Terminal. Once inside, you will find the SIXT counter on your right."
},
"drop_off": {
"id": "4595299",
"name": "Cincinnati/Northern Kentucky International Airport",
"address": "3057 Terminal Drive, Hebron, US, 41048-7583",
"latitude": 39.055722,
"longitude": -84.656199,
"hours": [
{
"dayRange": "Mon - Sun",
"timeRange": "00:00 - 23:59"
}
],
"instructions": "Travel to Cincinnati International Airport and follow the signs for Cell Phone Lot/Hotel/Car Rental Return. Follow the signs to the Car Rental Returns garage and proceed to the fourth floor. Enter the SIXT vehicle return entrance and pull forward to the front of the Car Return lanes and our Customer Service Agent will be happy to assist you with your check in. If a Customer Service Agent is not available, please place the key in the SIXT key return drop box. A receipt will be e-mailed to you within 24 hours of you returning your vehicle"
},
"price": {
"total": "$275.61",
"label": "Total",
"pay_at_desk": 275.61,
"currency": "USD"
},
"sections": [
{
"title": "Pay at pick-up",
"total": null,
"items": [
{
"label": "Car rental charge",
"price": "$201.18"
},
{
"label": "Taxes and charges",
"price": "$74.43"
}
]
}
],
"alternatives": [
{
"id": "824119931",
"title": "SUV",
"subtitle": "Volkswagen Taos or similar",
"supplier": "Sixt",
"price": "$275.61",
"image": "https://cdn2.rcstatic.com/images/car_images_b/new_images/volkswagen/taos_lrg.jpg"
},
{
"id": "824136521",
"title": "SUV",
"subtitle": "Toyota RAV4 or similar",
"supplier": "Sixt",
"price": "$313.16",
"image": "https://cdn2.rcstatic.com/images/car_images_b/web/toyota/rav4_lrg.jpg"
},
{
"id": "824126531",
"title": "SUV",
"subtitle": "Chevrolet Blazer or similar",
"supplier": "Sixt",
"price": "$349.54",
"image": "https://cdn2.rcstatic.com/images/car_images_b/new_images/chevrolet/blazer_premier_lrg.jpg"
}
],
"deep_link": "https://cars.booking.com/package/deal/eyJkcml2ZXJzQWdlIjozMCwiZHJvcE9mZkRhdGVUaW1lIjoiMjAyNi0xMC0yM1QxMDowMDowMCIsImRyb3BPZmZMb2NhdGlvbiI6IkNWRyIsImRyb3BPZmZMb2NhdGlvblR5cGUiOiJJQVRBIiwicGlja1VwRGF0ZVRpbWUiOiIyMDI2LTEwLTIwVDEwOjAwOjAwIiwicGlja1VwTG9jYXRpb24iOiJDVkciLCJwaWNrVXBMb2NhdGlvblR5cGUiOiJJQVRBIiwicmVudGFsRHVyYXRpb25JbkRheXMiOjMsInNlYXJjaE1ldGFkYXRhIjoie1wicGlja1VwTG9jYXRpb25OYW1lXCI6XCJDVkdcIixcImRyb3BPZmZMb2NhdGlvbk5hbWVcIjpcIkNWR1wifSIsInNlcnZpY2VGZWF0dXJlcyI6WyJJTkNMVURFX05VTUJFUl9PRl9TVUlUQ0FTRVMiLCJSRVRVUk5fRVhUUkFTX1dJVEhfUFJJQ0lOR19JTl9NVUxUSV9DQVJfUkVTUE9OU0UiLCJBUFBMRV9DQVJEX0VOQUJMRUQiXSwic2lnbmF0dXJlIjoiR0t4ZnZUNkdBVzNqMFdiamRUN0Q2R0grWGd6V3A5WlVPL3pPS2RqcExaWT0ifQ==/824119931"
}
}
Example response (503, Expired or unavailable):
{
"success": false,
"message": "Car details unavailable. The search_key may have expired; run cars/search again."
}
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.