Expedia Scraper API
Extract structured accommodation data from public Expedia pages as JSON. Send a accommodation URL and receive the fields exposed by the target page.
Decide before you build
- Endpoint
- POST /scrape/booking
- Scrapers
- Expedia accommodation pages
- Cost
- from 1 credit / call
- Free plan
- 500 credits / month
- Call pattern
- sync, POST
- On failure
- credits refunded
- Response format
- JSON
- Concurrency
- by plan tier
Booking & Travel requests are synchronous. Cost depends on the options selected for the request.
Try the Expedia scraper on your own targetRun a request against a public accommodation page and inspect the JSON before you integrate.
Open the live testWhat you get back
accommodation dataExpedia data in JSON
Retrieve the accommodation information exposed by the public Expedia page.
- Accommodation name, description and images
- Rates, currency and availability when available
- Location, facilities and room information
- Ratings and booking details exposed publicly
Request optionsControl how the page is collected
Use rendering or proxy options only when the target requires them.
- JavaScript rendering with useChrome
- Premium proxy and country targeting
- Public URL input; no account login required
- Structured JSON in the same response
Call the Expedia scraper
Send a public accommodation URL to the Booking & Travel endpoint. The API returns the result in the same response.
# POST - scrape a public accommodation page
curl -X POST "https://api.scraping-bot.io/scrape/booking" \
-u "yourUsername:yourApiKey" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/hotel/example",
"options": {
"useChrome": false,
"premiumProxy": false
}
}'Code example
Authenticate with your ScrapingBot username and API key, then read the returned JSON.
const auth = "Basic " + Buffer.from("yourUsername:yourApiKey").toString("base64");
const response = await fetch("https://api.scraping-bot.io/scrape/booking", {
method: "POST",
headers: { "Content-Type": "application/json", Authorization: auth },
body: JSON.stringify({ url: "https://example.com/hotel/example", options: { useChrome: false, premiumProxy: false } }),
});
const result = await response.json();Run this call in two minutesCreate an account, copy your API key, then use the example above.
Get your API keyRequest parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
url | string | — | Full public page URL, including https://. |
options.useChrome | boolean | false | Render JavaScript when the target page requires a browser. |
options.premiumProxy | boolean | false | Use a premium proxy for targets that require it. |
options.proxyCountry | string | — | Country targeting with a premium proxy. |
Response example
Example of the structured data returned for a public Expedia accommodation page. Available fields vary with the target page.
{
"data": {
"image": "https://a.travel-assets.com/egds/marks/flags/us.svg",
"images": [
"https://a.travel-assets.com/egds/marks/flags/us.svg"
],
"title": "Maisons du Monde Htel Suites La Rochelle Vieux Port",
"price": null,
"currency": "EUR",
"siteURL": "https://www.expedia.com/La-Rochelle-Hotels-Maisons-Du-Monde-Hotel-Suites-La-Rochelle-Vieux-Port.h1527121.Hotel-Information?chkin=2024-11-14&chkout=2024-11-19&x_pwa=1&rfrr=HSR&pwa_ts=1726473781218&useRewards=false&rm1=a1®ionId=2133&destination=La+Rochelle,+Charente-Maritime,+France&destType=MARKET&neighborhoodId=553248633938962084&latLong=46.159851,-1.15161&sort=RECOMMENDED&top_dp=90&top_cur=USD&userIntent=&selectedRoomType=201710862&selectedRatePlan=395175278&searchId=22c6636e-e5a3-4aa9-b370-41e6673f73e4&propertyName=Maisons+du+Monde+H%C3%B4tel+%26+Suites+-+La+Rochelle+Vieux+Port",
"siteHtml": null,
"statusCode": 200,
"htmlLength": 1708698,
"captchaFound": false,
"isHtmlPage": true,
"host": "www.expedia.com",
"destination": "La Rochelle, Charente-Maritime, France",
"domain": "HOTEL",
"geo": {
"country": "fr",
"city": "lesmureaux",
"latitude": 48.9909,
"state": "idf",
"longitude": 1.9049
},
"id": 1527121,
"date": {
"start": "2024-11-14",
"end": "2024-11-19"
},
"offerSearchData": {
"startDate": "2024-11-14",
"endDate": "2024-11-19",
"adults": "1",
"petsIncluded": false
},
"amenities": [
"Breakfast available",
"24/7 front desk",
"Housekeeping",
"Laundry",
"Air conditioning",
"Pet friendly"
],
"description": "Hotel with a 24-hour front desk, a short walk to Vieux Port",
"globalReviews": {
"stars": 4,
"rating": "8.8",
"text": "Excellent",
"numberReviews": 241
},
"location": {
"text": "3 rue St Jean du Perot, La Rochelle, Charente-Maritime, 17000",
"image": "https://maps.googleapis.com/maps/api/staticmap?&size=375x250&map_id=3b266eb50d2997c6&zoom=13&markers=icon:https%3A%2F%2Fa.travel-assets.com%2Ftravel-assets-manager%2Feg-maps%2Fproperty.png%7C46.15651%2C-1.15469&channel=expedia-HotelInformation&maptype=roadmap&scale=1&key=AIzaSyCYjQus5kCufOpSj932jFoR_AJiL9yiwOw&signature=pjjU9k6Qe94r081iUUYo2yVf4Kk="
},
"locationSummary": [
{
"title": "Tour de la Chaine",
"duration": "1 min walk"
},
{
"title": "Tour de la Lanterne",
"duration": "4 min walk"
},
{
"title": "Vieux Port",
"duration": "4 min walk"
},
{
"title": "La Rochelle (LRH-La Rochelle - Île de Ré)",
"duration": "18 min drive"
}
],
"media": [],
"rooms": []
}
}Credits, failures and limits
| Case | Credits | Notes |
|---|---|---|
| Standard request | from 1 credit / call | Current plans start at this rate. |
| JavaScript rendering | Additional credits | Enable only when the target requires it. |
| Premium proxy | Additional credits | Use for targets that require a premium proxy. |
| Unsuccessful request | Not deducted | Only successful requests count towards the monthly limit. |
Booking & Travel API or Raw HTML scraper?
| Booking & Travel API | Raw HTML scraper | |
|---|---|---|
| Endpoint | /scrape/booking | /scrape/raw-html |
| Returns | Structured accommodation JSON | Rendered page HTML |
| Flow | One synchronous request | One synchronous request |
| Starting cost | from 1 credit / call | from 1 credit / call |
| Use it when | You need parsed accommodation fields | You need your own extraction logic |
Questions about the Expedia API
- Does the Expedia scraper access private data?
- No. This guide covers public accommodation pages and does not require signing in to a Expedia account.
- Are all fields always available?
- No. Returned data depends on what the public Expedia page exposes and what the extractor supports.
- Can I collect multiple pages at once?
- Each request takes one public URL. Submit one request per page you need to collect.
- When should I use a premium proxy?
- Use it only when a target requires it or when you need country targeting for a public page.
Source: ScrapingBot API documentation.
Other booking & travel scrapers
Browse the Booking & Travel category for the complete list of guides. Visit the ScrapingBot blog for implementation guides.
Trusted by developers using Booking & Travel data.
Customer reviews apply to ScrapingBot's service overall, not specifically to this scraper.
Start scraping Expedia today
500 free credits every month. No card required, cancel anytime.
