Expedia API
- Data from Expedia
Expedia API for hotel rates, rooms and reviews
Look a hotel up by name, then read what Expedia shows a guest for one stay: every room type and rate plan with its total, nightly price and cancellation terms, and the guest reviews with the property’s replies.
1,000 free credits a month · Failed requests are free · Free during the beta
Endpoints and prices checked against the API on
Revenue teams check Expedia to see how a hotel sells through Expedia Group: which room types are open, how each rate plan is priced, whether it is refundable, and whether the guest pays now or at the property. Expedia Group’s own APIs are for approved partners that sell or link to its inventory. This API reads the same answer an Expedia.com visitor gets: send a property id and a stay, and get back every room type and rate plan, or only the headline price.
Expedia shows two prices for each offer, and which one leads depends on the market: the US site leads with the stay total including taxes and fees, the Canadian site with the nightly price. The API returns both figures for every offer, plus the taxes and fees between them, marked as derived. Prices come from expedia.com in USD or expedia.ca in CAD. There is no price calendar, so each call prices one stay of up to 28 nights, and a stay Expedia will not sell comes back with Expedia’s reason, such as a minimum stay.
What you get
recommended_match.property_id— Expedia’s numeric hotel id from a name and city search, with a confidence levelproperty.total, price_per_night— the headline stay total and nightly price for the stay you asked forrooms[].offers[]— one row per rate plan and payment model, with total, nightly and taxes_and_feesrefundable, cancellation_text— whether the plan can be cancelled for free, and Expedia’s wordingpayment_model, hotel_collect— pay now or pay later, and whether the property collects the paymentstrikeout_price— the crossed-out price when Expedia shows a discountavailability— available, sold out or a minimum stay, so an empty answer is never a silent gapreviews[]— rating out of 10, text, date, length of stay, labels such as Verified review, and the property’s reply
One call, structured JSON
POST /v1/ota/expedia — 8 credits per successful call.
curl -X POST "https://api.scrapercompany.com/v1/ota/expedia" \
-H "x-api-key: $SCRAPERCOMPANY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"property_id": "12570",
"check_in": "2026-12-10",
"nights": 1,
"adults": 2,
"market": "US"
}'{
"search_parameters": {
"engine": "expedia_property",
"property_id": "12570",
"check_in_date": "2029-04-23",
"check_out_date": "2029-04-24",
"adults": 2,
"market": "US",
"currency": "USD",
"rooms": true
},
"property": {
"property_id": "12570",
"total": 475,
"price_per_night": 374,
"basis": "sticky_bar",
"total_text": "$475",
"nightly_text": "$374 nightly",
"currency": "USD",
"currency_verified": true,
"available": true,
"availability": "available",
"is_soldout": false,
"cheapest_total": 475,
"provenance": {
"schema_version": 1,
"observation_id": "rateobs_0123456789abcdef0123456789abcdef",
"collection_id": "ratecol_0123456789abcdef0123456789abcdef",
"observed_at": "2026-08-07T01:23:45.678Z",
"source": "expedia_com",
"source_kind": "ota_offer",
"collector": "scrapingme.ota.expedia",
"source_property_id": "12570",
"requested_market": "US",
"requested_currency": "USD",
"returned_currency": "USD",
"egress_mode": "direct",
"price_basis": "stay_headline",
"derivation": "upstream"
}
},
"rooms": [
{
"unit_id": "403873",
"name": "Room, 1 King Bed",
"cheapest_total": 635,
"offers": [
{
"plan_id": "266071241",
"room_type_id": "403873",
"total": 635,
"nightly": 509,
"taxes_and_fees": 126,
"currency": "USD",
"total_text": "$635 total",
"nightly_text": "$509 nightly",
"taxes_and_fees_included": true,
"payment_model": "PAY_NOW",
"hotel_collect": false,
"member_only": false,
"refundable": false,
"cancellation_text": "Non-Refundable",
"extras_text": "No extras",
"strikeout_text": "$745 total",
"strikeout_price": 745,
"strikeout_basis": "stay_total",
"inventory_type": "MERCHANT",
"business_model": "EXPEDIA_COLLECT",
"messages": [],
"provenance": {
"schema_version": 1,
"observation_id": "rateobs_0123456789abcdef0123456789abcdef",
"collection_id": "ratecol_0123456789abcdef0123456789abcdef",
"observed_at": "2026-08-07T01:23:45.678Z",
"source": "expedia_com",
"source_kind": "ota_rate_plan",
"collector": "scrapingme.ota.expedia",
"source_property_id": "12570",
"requested_market": "US",
"requested_currency": "USD",
"returned_currency": "USD",
"egress_mode": "direct",
"price_basis": "stay_total_including_taxes_and_fees",
"derivation": "upstream",
"upstream_rate_id": "266071241"
},
"taxes_and_fees_provenance": {
"schema_version": 1,
"observation_id": "rateobs_0123456789abcdef0123456789abcdef",
"collection_id": "ratecol_0123456789abcdef0123456789abcdef",
"observed_at": "2026-08-07T01:23:45.678Z",
"source": "expedia_com",
"source_kind": "ota_rate_plan",
"collector": "scrapingme.ota.expedia",
"source_property_id": "12570",
"requested_market": "US",
"requested_currency": "USD",
"returned_currency": "USD",
"egress_mode": "direct",
"price_basis": "taxes_and_fees_combined",
"derivation": "total_minus_nightly_times_nights",
"upstream_rate_id": "266071241"
}
},
{
"plan_id": "266071239",
"room_type_id": "403873",
"total": 742,
"nightly": 599,
"taxes_and_fees": 143,
"currency": "USD",
"total_text": "$742 total",
"nightly_text": "$599 nightly",
"taxes_and_fees_included": true,
"payment_model": "PAY_LATER",
"hotel_collect": true,
"member_only": false,
"refundable": true,
"cancellation_text": "Fully refundable before Nov 14",
"extras_text": "No extras",
"strikeout_text": "",
"inventory_type": "DIRECT_AGENCY",
"business_model": "HOTEL_COLLECT",
"messages": [],
"provenance": {
"schema_version": 1,
"observation_id": "rateobs_0123456789abcdef0123456789abcdef",
"collection_id": "ratecol_0123456789abcdef0123456789abcdef",
"observed_at": "2026-08-07T01:23:45.678Z",
"source": "expedia_com",
"source_kind": "ota_rate_plan",
"collector": "scrapingme.ota.expedia",
"source_property_id": "12570",
"requested_market": "US",
"requested_currency": "USD",
"returned_currency": "USD",
"egress_mode": "direct",
"price_basis": "stay_total_including_taxes_and_fees",
"derivation": "upstream",
"upstream_rate_id": "266071239"
}
}
]
}
],
"meta": {
"source": "expedia",
"nights": 1,
"wire_bytes": 181597,
"elapsed_s": 0.62,
"room_types": 37,
"offers": 149,
"egress_mode": "direct",
"comparable_across_markets": false,
"collection_id": "ratecol_0123456789abcdef0123456789abcdef",
"observed_at": "2026-08-07T01:23:45.678Z"
}
}Endpoints and price per call
Credits per successful call, and what one call costs on the Starter, Growth, Scale plans. Failed requests cost nothing. See all plans.
| Endpoint | What it returns | Credits | Starter · Growth · Scale |
|---|---|---|---|
| Hotel search POST /v1/ota/expedia/search | Expedia property id for a hotel name and city, with match confidence | 2 credits | $0.0020 · $0.0012 · $0.0008 |
| Rooms and rates POST /v1/ota/expedia | Every room type and rate plan for one stay, or the headline price only | 8 credits | $0.0078 · $0.0048 · $0.0032 |
| Reviews POST /v1/ota/expedia/reviews | Guest reviews, newest first, up to 25 per page | 2 credits | $0.0020 · $0.0012 · $0.0008 |
Does Expedia have a public API?
Expedia Group has partner APIs, but access is by application. Rapid and the Travel Redirect API are for businesses that sell or advertise its travel inventory, and its connectivity APIs are for properties and their technology providers. ScraperCompany is independent of Expedia Group: this API reads the prices, rooms and reviews the public Expedia site shows.
How do I find a hotel’s Expedia property id?
Send the hotel name and city to the hotel search endpoint and store recommended_match.property_id. You can also read it from the hotel’s Expedia URL: for expedia.com/Chicago-Hotels-Hilton-Chicago.h12570.Hotel-Information it is 12570. Older properties have a different id on Hotels.com, so do not reuse one brand’s id for the other.
Which Expedia markets and currencies can I price?
The US site (expedia.com, USD) and the Canadian site (expedia.ca, CAD), chosen with market. The market sets the currency; there is no separate currency field. The two sites lead with different figures, so compare prices within one market.
Are taxes and fees included in Expedia prices?
Each offer returns Expedia’s stay total with taxes and fees and its nightly price before taxes. The API also returns taxes_and_fees, worked out as the total minus the nightly price times the nights, and its provenance says it is derived. Expedia does not split taxes from fees on these pages, so they come back as one figure.
What happens when a stay cannot be booked on Expedia?
The response says available: false, and availability says why: sold out, or a minimum stay with the number of nights required. Set retry_min_stay to price that minimum stay as well; it comes back as min_stay_quote and never replaces the stay you asked for.
Do failed requests cost credits?
No. A failed or blocked call (any 4xx or 5xx response) costs 0 credits, and so does a search page that comes back empty. You pay only for successful results.
How do I get an API key?
Create an account on the sign-up page. Public sign-up is invite-only during the beta, so join the waitlist there and we will email you when your account is ready. The Free plan includes 1,000 credits a month, and the API is free while it is in beta. You create and rotate keys yourself in the dashboard.
More APIs on the same key
All APIsBooking.com API
Look a hotel up by name, then read what Booking.com shows a guest: a nightly price calendar, each room type with its rate plans, and the reviews with the property’s replies. Structured JSON, priced per call.
Hotels.com API
Find a hotel’s Hotels.com id by name, then read what a guest on the Hotels.com site for their country sees: the headline price for a stay, every room type and rate plan, and the guest reviews.
Agoda API
Look a hotel up by name, then read every room type and rate plan Agoda shows a guest for one stay, with the stay total, discounts, meal plan and cancellation terms, in any of 23 currencies.
Tripadvisor API
Send a hotel’s Tripadvisor id and a stay, and get the offers Tripadvisor lists from Booking.com, Expedia, Hotels.com and other sites, each with what its price means. Read the hotel’s guest reviews and management replies from the same id.
Airbnb API
Search Airbnb by destination or map area and get each listing with its trip price and breakdown. Then read a listing’s calendar: availability, stay rules and the price Airbnb itself quotes for the nights you choose. Structured JSON, priced per call.
Vrbo API
Search Vrbo for a destination and stay, then quote any rental for exact dates: Vrbo’s nightly figure, its fee-inclusive total, the payment model and whether the dates can be booked. Structured JSON, priced per call.
Start with 1,000 free credits a month
Join the waitlist and we will email you when your account is ready: your own API keys, 1,000 free credits a month, and the API is free during the beta.