Expedia Scraper - Hotels, Flights, Cars & Packages avatar

Expedia Scraper - Hotels, Flights, Cars & Packages

Pricing

from $2.20 / 1,000 results

Go to Apify Store
Expedia Scraper - Hotels, Flights, Cars & Packages

Expedia Scraper - Hotels, Flights, Cars & Packages

Extract Expedia hotel, flight, car rental, vacation package and activity offers from regional sites. Get prices, ratings and listing URLs. Pay per delivered row plus a start fee; cruises are unavailable.

Pricing

from $2.20 / 1,000 results

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

0

Bookmarked

14

Total users

8

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

Expedia Scraper

Extract Expedia hotel, flight, car rental, vacation package and activity offers from regional sites as rows you can export.

  • Listing names, URLs, prices and currencies.
  • Hotel ratings, review counts and available property details.
  • Flight times, airports and fare information.
  • Regional searches with destination, dates and traveler settings.
  • Pay for delivered rows: $3.00 per 1,000 rows on the Free plan, plus a small start fee.

What does Expedia Scraper do?

Expedia Scraper collects travel search offers for price comparisons, availability research and scheduled monitoring. Each row represents one offer or entity, identified by rowType and id. Choose one service and one destination or route per run.

  • Hotels: destination searches with stay dates and room counts.
  • Flights: one-way or round-trip searches with an origin and destination.
  • Cars: rental searches with pickup destination and dates.
  • Packages: flight-and-hotel offers with an origin and stay destination.
  • Activities: things to do at a destination.

Cruises are unavailable. Supported regional hosts are www.expedia.com, www.expedia.co.uk, www.expedia.ca, www.expedia.com.au, www.expedia.de, www.expedia.fr, www.expedia.it, www.expedia.es, www.expedia.nl, www.expedia.ie, www.expedia.co.jp, www.expedia.com.sg, www.expedia.com.hk, www.expedia.com.tw, www.expedia.com.my, www.expedia.co.th, www.expedia.co.id, www.expedia.co.in, www.expedia.com.mx, www.expedia.com.br and www.expedia.com.ar. Coverage varies by service and market; an accepted domain does not guarantee offers for every search.

What data can you extract from Expedia?

The shared fields apply across row types. Service-specific tables describe additional fields when Expedia provides them. Examples illustrate the format, not live quotes.

Shared fields

FieldDescriptionExample
rowTypeEntity typehotel
idEntity identifier, used with rowType12345678
listingIdListing identifier; flight identifiers are generated12345678
nameListing or offer nameExample Downtown Hotel
urlOffer page; flights use the search pagehttps://www.expedia.com/Hotel-Search
priceMain displayed price; meaning depends on service189
priceDisplayPrice text as displayed$189 nightly
currencyPrice currencyUSD
ratingGuest rating, generally out of ten8.8
reviewCountNumber of reviews shown1240
sponsoredWhether the offer is an advertisementfalse
domainRegional Expedia host searchedwww.expedia.com
destinationSearch destinationAustin
countryCountry explicitly supplied with details, not the search marketUS
scrapedAtCollection timestamp2026-10-24T08:00:00+00:00

Hotel rows: hotel

FieldDescriptionExample
priceNightlyExplicit nightly price, as a number or text189
totalPriceNumeric stay total when available420
starRatingProperty star rating4
addressAvailable city, postal code and country; not necessarily a street addressAustin, US
amenitiesUp to 40 amenity descriptions["Free WiFi"]
needToKnowAvailable hotel policy text["Check-in starts at 3 PM"]

Flight rows: flight

FieldDescriptionExample
airlineCarrier nameExample Airline
departTimeDisplayed local departure time8:00am
arriveTimeDisplayed local arrival time11:15am
originAirportDeparture airportJFK
destAirportArrival airportLAX
stopsDisplayed stop countNonstop
priceBasisExplicit one-way or round-trip fare basisoneway_per_traveler

Car rows: car

FieldDescriptionExample
supplierNameRental supplierExample Rentals
priceTotalRental total when shown$180 total

For cars, price is the displayed daily rate, not the rental total.

Package rows: package

FieldDescriptionExample
priceFlight-and-hotel package price per traveler650
totalPricePackage total for all travelers1300

Activity rows: activity

FieldDescriptionExample
supplierNameActivity operatorExample Tours
durationDisplayed activity duration2 hours
freeCancellationCancellation flag or text, when suppliedtrue
addressMeeting or redemption location, when availableVisitor center

Activity price is the displayed starting price. Optional values can be absent or empty.

How to scrape Expedia

  1. Open Expedia Scraper in Apify Console.
  2. Choose service, then enter destination; add origin for flights or packages.
  3. Set maxResults to 3 for a small first run and review your dates.
  4. Click Start and wait for completion.
  5. Download the dataset or retrieve its rows through the API.

An empty input starts the prefilled hotel example for Tulsa, OK, limited to three rows. Normal start and row charges apply. Entering only destination or regionId uses hotels; the Actor does not infer flights or packages from an origin. Select those services explicitly.

Hotels

Use destination, optionally with a numeric Expedia regionId. Empty stay dates mean check-in 21 days ahead and checkout two days later.

Flights

Set service to flights with both origin and destination. Empty departure dates mean 28 days ahead. For tripType set to roundtrip, an empty return date means seven days after departure.

Cars

Set service to cars, enter the pickup destination and use checkin and checkout for rental dates. Empty dates use the same two-day window as hotels.

Packages

Set service to packages, supply origin and destination, and choose stay dates. Prices describe a flight-and-hotel package, not a hotel-only stay.

Activities

Set service to activities and enter a destination. This search does not use a stay-date window.

What to fill in

FieldWhat to enterDefault
destinationCity, region or arrival airportEmpty; example uses Tulsa, OK
regionIdNumeric Expedia region identifierEmpty
servicehotels, flights, cars, packages or activitieshotels
originDeparture city or airport for flights and packagesEmpty
domainSupported regional Expedia hostwww.expedia.com
checkinStay or pickup date, YYYY-MM-DD21 days ahead
checkoutLater stay or dropoff dateTwo days after check-in
departureDateFlight departure date, YYYY-MM-DD28 days ahead
returnDateLater return date for round tripsSeven days after departure
tripTypeoneway or roundtriponeway
adultsAdult count, 1–102
childrenChild count, 0–100
roomsHotel room count, 1–101
maxResultsRow limit, 1–50070; form prefill 3
currencyOptional currency override, such as GBPFrom domain
localeOptional locale override, such as en_GBFrom domain
sortHotel sort valueRECOMMENDED
includeSponsoredInclude advertisement rows on the HTML page lanes; the primary JSON channel serves no sponsored cardsfalse
proxyCountryLegacy compatibility field; choose the market with domainEmpty

Hotels:

{
"service": "hotels",
"destination": "Austin",
"maxResults": 3
}

Flights:

{
"service": "flights",
"origin": "JFK",
"destination": "LAX",
"tripType": "oneway",
"maxResults": 3
}

Cars:

{
"service": "cars",
"destination": "Los Angeles",
"maxResults": 3
}

Packages:

{
"service": "packages",
"origin": "Chicago (ORD)",
"destination": "Las Vegas",
"maxResults": 3
}

Activities:

{
"service": "activities",
"destination": "London",
"domain": "www.expedia.co.uk",
"maxResults": 3
}

maxItems and limit are aliases for maxResults. Destination aliases include location, city, query and searchTerm. Close field-name misspellings can be corrected; other unknown fields are ignored with a note. The INPUT_REPORT record in the default key-value store records how input was interpreted, including filled, corrected and ignored fields.

Invalid destinations, services or dates can stop the run with an INVALID_INPUT: message naming the problem and fix. Validation happens before row collection, so no rows are charged for these input failures; the start fee can still apply. Invalid optional filters can instead be ignored, so check INPUT_REPORT.

Use today or a later date, with checkout or return after the first date. Start dates cannot be more than 500 days ahead. Empty-date defaults move forward with each run; there is no automatic widening of a search window.

Output example

Illustrative hotel row:

{
"rowType": "hotel",
"id": "12345678",
"source": "expedia",
"service": "hotels",
"listingId": "12345678",
"name": "Example Downtown Hotel",
"url": "https://www.expedia.com/Austin-Hotels-Example.h12345678.Hotel-Information",
"destination": "Austin",
"domain": "www.expedia.com",
"price": 189,
"priceNightly": 189,
"priceDisplay": "$189 nightly",
"currency": "USD",
"rating": 8.8,
"reviewCount": 1240,
"sponsored": false,
"scrapedAt": "2026-10-24T08:00:00+00:00"
}

Export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table. Use JSON to preserve array fields such as amenities.

Why use this Expedia scraper?

  • Row-based billing: pay for rows written to the dataset, plus the start fee, rather than pages attempted.
  • Useful partial output: rows already delivered remain in the dataset if a run stops. Available partial results can also be delivered when collection ends early.
  • Clear limits: missing optional data stays empty rather than being invented; rows without a usable name, identifier or numeric price are skipped.
  • Repeatable comparisons: keep destination, dates, party size and currency consistent across scheduled runs.
  • No proxy setup: you do not need to set up proxies.

How much does it cost to scrape Expedia?

The Actor uses pay-per-event pricing. An Actor start event costs $0.005, with one event per GB of memory and a minimum of one event. At the default 256 MB, the start fee is $0.005. Platform usage is included in these prices.

Apify planStart fee at 256 MBPrice per rowPrice per 1,000 rows
Free$0.005$0.003$3.00
Starter$0.005$0.003$3.00
Scale$0.005$0.0026$2.60
Business$0.005$0.0022$2.20
Platinum$0.005$0.002$2.00
Diamond$0.005$0.0016$1.60

maxResults applies to each input: this Actor accepts one destination search or route per run. The default is 70 rows, with larger requests collected in parts of 70, up to the input maximum of 500. All row types count toward the same limit. Fewer rows may be available.

Free Apify plan runs are capped at 200 rows, and the free allowance permits 10 runs of this Actor. Set Maximum cost per run to control total spending (maxTotalChargeUsd in the API); the run stops delivering when its budget is exhausted.

Example: 100 delivered hotel rows on the Free plan at 256 MB cost 100 × $0.003 + $0.005 = $0.305. Requesting 100 but receiving 20 costs $0.065, including the same start fee.

What happens when the run timeout is too short

When a search needs more time than remains, the Actor can pause for automatic resumption rather than fail solely because of the short timeout. Its status message is "Queued on the collection backend; this run will resume automatically when results are ready (about Ns)." Here, N is the estimated number of seconds. The run temporarily shows ABORTED.

When results are ready, the same run resumes, reports "Resumed: delivering N rows.", writes to the same dataset and finishes as SUCCEEDED if delivery succeeds. Previously delivered rows are skipped rather than delivered or charged twice. No manual restart is needed for this pause.

  • Automatic pauses are limited to three per run. Keep the default 3,600-second timeout to reduce pauses.
  • The synchronous API endpoints run-sync and run-sync-get-dataset-items wait at most 300 seconds and can return an empty dataset while the run is paused.
  • For longer searches, start asynchronously and read the dataset after SUCCEEDED, or use a run-succeeded webhook. An unrelated collection failure is not a successful pause.

Use with AI agents and the API

Apify MCP server

Claude, ChatGPT, Cursor and VS Code can use this Actor through an MCP client supporting remote servers:

https://mcp.apify.com?tools=lentic_clockss/expedia-scraper

Sign in with Apify through OAuth when prompted, or send Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool returns run and dataset IDs; the agent reads rows with get-dataset-items. Clients without remote support can use npx @apify/actors-mcp-server --tools lentic_clockss/expedia-scraper with APIFY_TOKEN configured.

Example prompt: "Find three Expedia hotels in Austin using the default stay dates, and return their names, prices, currencies and URLs."

Apify API

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("lentic_clockss/expedia-scraper").call(
run_input={"service": "hotels", "destination": "Austin", "maxResults": 3}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('lentic_clockss/expedia-scraper').call({
service: 'hotels', destination: 'Austin', maxResults: 3
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Over HTTP, send the input JSON to POST https://api.apify.com/v2/acts/lentic_clockss~expedia-scraper/runs with an Authorization: Bearer <YOUR_APIFY_TOKEN> header. Retrieve rows through GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json after completion.

Integrations

Use the Integrations tab for workflows with Google Sheets, Make, Zapier, n8n, Slack, Airtable or webhooks. Apify Schedules can run recurring searches; leave dates empty for moving default dates rather than reusing expired dates.

FAQ

This unofficial Actor collects public travel data and is not affiliated with Expedia Group. You are responsible for Expedia's terms, applicable law and data-protection requirements. Any personal data requires a lawful basis for its use.

Why did my run end as ABORTED?

Check the status message. The automatic-resumption message above describes a temporary pause, not a completed failure. A manually aborted run or a different error should not be assumed to resume.

How many results can I get?

Request 1–500 rows for one search. The default is 70, while the form prefill is three. Free-plan and spending limits can lower delivery, and Expedia may have fewer matching offers.

Why are some fields empty?

Expedia does not show every optional field for every offer. Hotel details such as stars, amenities and addresses are best-effort additions, not guaranteed values. An empty country is not filled from the search market.

Does this Actor cover flights and cars too?

Yes. Select flights or cars explicitly. Flights require an origin and destination; car searches use a pickup destination. Cruises remain unavailable, and car quote coverage can be limited.

Why do two price fields disagree?

They may describe different units: nightly versus whole-stay cost, daily rental versus rental total, or per-traveler versus full-package cost. For flights, check priceBasis; an unknown basis is not guessed.

Can I search several destinations at once?

No. This input accepts one destination or route, not an array. Use separate runs or scheduled tasks for different destinations.

Does a zero-row run mean an error?

Not always. A confirmed no-match search or unrecognized destination can finish successfully with zero rows and a reason. Collection failures are reported separately. The start fee still applies even when there are no row charges.

Limitations

  • Cruises and unlisted regional domains are unsupported.
  • Service availability differs across markets; no search guarantees the requested row count.
  • Hotel detail additions cover up to 20 rows per collection part and may stop earlier. Hotel addresses need not include street details.
  • Amenity lists are capped at 40 entries; amenitiesTotal records the original count when truncated.
  • Flight identifiers are generated from offer details and may change with the price.
  • Prices are search-time offers, not booking guarantees. Compare equivalent dates, travelers, currencies and price units.

More travel, hotel and flight scrapers from the same publisher:

Browse all of our scrapers at apify.com/lentic_clockss.

Support

Report a problem or request a field through the Issues tab of this Actor's page. Include the run ID and the input you used.