# Expedia.com Flights Scraper - Low-cost💲🔥✈️🌍 (`delectable_incubator/expedia-com-flights-scraper-low-cost`) Actor

✈️🔎 Extract flight offers from Expedia.com with ease. Collect airlines, departure & arrival times, routes, airports, durations, stops, layovers, prices, discounts, cabin class, travelers, badges & offer details. Ideal for airfare research, price monitoring, route analytics & travel datasets 📊🚀

- **URL**: https://apify.com/delectable\_incubator/expedia-com-flights-scraper-low-cost.md
- **Developed by:** [Prime Scrape](https://apify.com/delectable_incubator) (community)
- **Categories:** Travel, E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.00005 / actor start

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

<p align="center">
  <img src="https://i.ibb.co/jkNS73wX/readme.png" alt="Expedia.com Flights Scraper" width="100%">
</p>

***

## ✈️🌍 Expedia.com Flights Scraper | Bulk Search URL Scraper | Flight Offers & Airfare Data | Apify Actor

### 🚀 Extract Expedia Flight Offers in Seconds (No Code)

The **Expedia.com Flights Scraper (Apify Actor)** is a powerful, scalable, and easy-to-use scraping solution designed to extract **public flight offers from Expedia.com** using **bulk flight search URLs**.

Scrape flight results from Expedia.com and collect structured data including airlines, departure and arrival times, routes, airports, flight duration, stops, layovers, prices, price qualifiers, badges, urgency messages, travel dates, cabin class, traveler information, and offer tokens.

Perfect for **flight price research, airfare monitoring, travel analytics, route analysis, airline research, fare comparison, travel intelligence, AI datasets, and automation.**

***

## 🔥 Why This Expedia Flights Scraper?

✔ Powerful Expedia Flight Scraper on Apify

✔ Supports Bulk Search URLs

✔ Scrape Multiple Flight Searches

✔ One-Way & Round-Trip Searches

✔ Airline Information

✔ Departure & Arrival Times

✔ Flight Routes

✔ Airports

✔ Flight Duration

✔ Stops & Layovers

✔ Flight Prices

✔ Price Qualifiers

✔ Fare Badges

✔ Urgency Messages

✔ Cabin Class

✔ Traveler Information

✔ Direct Flight Offer Tokens

✔ Fast & Scalable Extraction

✔ JSON / CSV / Excel Ready

✔ No Coding Required

***

## 🎯 What This Scraper Does

This Apify Actor extracts **public flight offers from Expedia.com flight search results**.

Simply provide one or multiple Expedia `/Flights-Search` URLs and specify the maximum number of offers to collect per URL.

The scraper automatically scrolls through the results and clicks **Show more** when available until **maxitems** is reached or several consecutive rounds return no new offers.

You can scrape flight searches for different:

- Origins
- Destinations
- Departure dates
- Return dates
- Airlines
- Trip types
- Cabin classes
- Traveler configurations

***

## 📌 Core Features

✅ Bulk Flight Search URL Scraping

✅ Flight Offers

✅ Multiple Routes

✅ One-Way Flights

✅ Round-Trip Flights

✅ Airline Names

✅ Operating Airlines

✅ Airline Logos

✅ Departure Times

✅ Arrival Times

✅ Departure Airports

✅ Arrival Airports

✅ Flight Routes

✅ Flight Duration

✅ Number of Stops

✅ Layover Information

✅ Total Prices

✅ Price Basis / Qualifier

✅ Urgency Messages

✅ Flight Badges

✅ Accessibility Labels

✅ Offer Tokens

✅ Origin & Destination

✅ Departure Dates

✅ Return Dates

✅ Traveler Information

✅ Trip Type

✅ Cabin Class

✅ Original Search URLs

✅ High-Speed Cloud Scraping

✅ Structured Output

***

## ⚡ Input Configuration (Simple & Powerful)

### 🔥 BULK URL MODE 🚀

```
{
  "urls": [
    "https://www.expedia.com/Flights-Search?flight-type=on&mode=search&trip=roundtrip&leg1=from:Amsterdam%20(AMS-Schiphol),to:Munich,%20Bavaria,%20Germany,departure:11/10/2026TANYT,fromType:AIRPORT,toType:U&leg2=from:Munich,%20Bavaria,%20Germany,to:Amsterdam%20(AMS-Schiphol),departure:11/21/2026TANYT,fromType:U,toType:AIRPORT&options=cabinclass:economy&fromDate=11/10/2026&toDate=11/21/2026&d1=2026-11-10&d2=2026-11-21&passengers=adults:1,infantinlap:N"
  ],
  "maxitems": 70,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

Simply add one or multiple Expedia.com `/Flights-Search` URLs.

Each URL is processed independently and returns up to **maxitems** flight offers.

⚠️ URLs must be from **expedia.com** and point to a `/Flights-Search` page.

**Residential proxies are strongly recommended for the best reliability.**

***

## 📊 Extracted Data

| Field             | Description                 |
| ----------------- | --------------------------- |
| id                | Unique flight offer key     |
| productType       | Product / offer type        |
| airline           | Airline name                |
| operatedBy        | Operating airline           |
| airlineLogo       | Airline logo URL            |
| departureTime     | Departure time              |
| arrivalTime       | Arrival time                |
| route             | Complete flight route       |
| departureAirport  | Departure airport           |
| arrivalAirport    | Arrival airport             |
| duration          | Total flight duration       |
| stops             | Number of stops             |
| layovers          | Layover information         |
| priceTotal        | Total flight price          |
| priceQualifier    | Price basis / qualifier     |
| urgencyMessage    | Expedia urgency message     |
| badges            | Offer badges                |
| accessibilityText | Full accessibility label    |
| offerToken        | Flight offer token          |
| origin            | Origin airport / location   |
| destinationCode   | Destination airport code    |
| departureDate     | Departure date              |
| returnDate        | Return date                 |
| travelers         | Number of travelers         |
| tripType          | Trip type                   |
| cabinClass        | Cabin class                 |
| searchUrl         | Original Expedia search URL |

***

## 💡 Use Cases

Perfect for:

✈️ Flight Price Research

💰 Airfare Price Monitoring

📊 Travel Market Analytics

🌍 Route Analysis

🏷️ Fare Comparison

🛫 Airline Research

📈 Flight Market Intelligence

🧳 Travel Planning Data

📅 Flight Availability Research

🤖 AI Training Datasets

📋 Flight Dataset Building

⚙️ Travel Automation

***

## 🚀 Key Features

⚡ Bulk Expedia Flight URLs

✈️ Flight Offers

🌍 Multi-Route Scraping

📅 Flexible Travel Dates

🛫 Departure & Arrival Airports

⏱️ Flight Duration

🔄 Stops & Layovers

🏢 Airline Information

💰 Flight Pricing

🏷️ Price Qualifiers & Badges

⚠️ Urgency Messages

👥 Traveler Information

💺 Cabin Class

🔑 Offer Tokens

📊 Structured Output

🔁 Reliable Cloud Execution

💾 Export-Ready Datasets

⚙️ Enterprise-Ready Apify Actor

***

## 📤 Export Formats

✔ JSON

✔ CSV

✔ Excel (XLSX)

✔ XML

✔ HTML

✔ RSS

***

## 📦 Example Output

```
{
  "id": "offer-123456",
  "productType": "Flight",
  "airline": "Example Airlines",
  "operatedBy": "Example Airlines",
  "airlineLogo": "https://...",
  "departureTime": "10:30 AM",
  "arrivalTime": "12:15 PM",
  "route": "AMS → MUC",
  "departureAirport": "AMS",
  "arrivalAirport": "MUC",
  "duration": "1h 45m",
  "stops": "Nonstop",
  "layovers": "None",
  "priceTotal": "$185",
  "priceQualifier": "round trip per traveler",
  "urgencyMessage": "Limited availability",
  "badges": "Best deal",
  "accessibilityText": "Example Airlines flight from Amsterdam to Munich",
  "offerToken": "example-offer-token",
  "origin": "AMS",
  "destinationCode": "MUC",
  "departureDate": "2026-11-10",
  "returnDate": "2026-11-21",
  "travelers": "1 adult",
  "tripType": "Round trip",
  "cabinClass": "Economy",
  "searchUrl": "https://www.expedia.com/Flights-Search?..."
}
```

***

## 🔥 Why This is the BEST Expedia Flights Scraper on Apify?

✔ Optimized for Apify Search Ranking

✔ Bulk Flight Search URL Support

✔ Multiple Routes & Destinations

✔ One-Way & Round-Trip Searches

✔ Flexible Travel Dates

✔ Airline & Operating Airline Data

✔ Flight Times & Routes

✔ Duration, Stops & Layovers

✔ Price & Fare Information

✔ Badges & Urgency Messages

✔ Cabin & Traveler Information

✔ Offer Tokens

✔ Structured Export-Ready Datasets

✔ Enterprise-Ready Scalability

***

## 💸 Pricing

This scraper runs on a **pay-per-result** pricing model.

You only pay for successfully extracted flight offers.

**💳 Price: $0.99 / 1,000 results**

***

## ❓ FAQ

#### Can I scrape multiple Expedia flight URLs?

Yes.

Bulk URL mode is fully supported. You can provide multiple Expedia `/Flights-Search` URLs in a single run.

***

#### Can I scrape different flight routes?

Yes.

Simply provide a search URL for each route you want to analyze.

***

#### Can I scrape one-way flights?

Yes.

The scraper supports Expedia flight search URLs for supported one-way searches.

***

#### Can I scrape round-trip flights?

Yes.

Round-trip Expedia flight searches are supported, including departure and return dates.

***

#### Can I collect flight prices?

Yes.

The scraper extracts the available total flight price and its corresponding price qualifier.

***

#### Can I collect airline information?

Yes.

The scraper extracts the airline, operating airline, and airline logo when available.

***

#### Can I collect stops and layovers?

Yes.

Flight duration, number of stops, and layover information are extracted when available.

***

#### Can I collect cabin class and traveler information?

Yes.

The scraper extracts the cabin class and traveler configuration associated with the search.

***

#### Does the scraper click "Show more"?

Yes.

The scraper automatically scrolls through the Expedia results and clicks the **Show more** button when available to discover additional flight offers.

***

#### Can I scrape thousands of flight offers?

Yes.

Increase **maxitems** and provide as many search URLs as required.

***

#### Are Residential proxies recommended?

Yes.

Residential proxies are strongly recommended for improved Expedia scraping reliability.

***

#### Is coding required?

No.

Everything runs directly on Apify.

***

#### Can I export the data?

Yes.

The extracted dataset can be exported in JSON, CSV, Excel, XML, HTML, and RSS formats through Apify.

***

## ⚠️ Disclaimer

This tool is an independent data extraction solution and is **not affiliated with Expedia.com**.

***

## 🔗 Related Actors

We are building the complete **PrimeScrape Travel & Hospitality Intelligence Suite**.

More premium flight, hotel, travel, airline, accommodation, tourism, and transportation data scrapers are coming soon.

🚀 Stay tuned.

***

## 🌍 PrimeScrape Ecosystem

Built for large-scale data extraction, automation, AI datasets, and business intelligence.

✈️ Flight Intelligence

🏨 Hotel Intelligence

💰 Travel Price Monitoring

🌍 Tourism Analytics

📊 Travel Market Research

🛫 Airline & Route Intelligence

🤖 AI Training Datasets

⚙️ Automation Pipelines

🌐 Public Data Extraction

***

## 📬 Support

⭐⭐⭐⭐⭐

If this scraper saves you time, please leave a review.

For enterprise scraping solutions, custom Apify Actors, or large-scale flight and travel scraping projects, feel free to contact **PrimeScrape**.

# Actor input Schema

## `urls` (type: `array`):

Bulk list of Expedia.com **flight** (`/Flights-Search`) URLs to scrape.

Flight example — AMS → MUC, 10–21 Nov 2026:
https://www.expedia.com/Flights-Search?flight-type=on\&mode=search\&trip=roundtrip\&leg1=from:Amsterdam%20(AMS-Schiphol),to:Munich,%20Bavaria,%20Germany,departure:11/10/2026TANYT,fromType:AIRPORT,toType:U\&leg2=from:Munich,%20Bavaria,%20Germany,to:Amsterdam%20(AMS-Schiphol),departure:11/21/2026TANYT,fromType:U,toType:AIRPORT\&options=cabinclass:economy\&fromDate=11/10/2026\&toDate=11/21/2026\&d1=2026-11-10\&d2=2026-11-21\&passengers=adults:1,infantinlap:N

The scraper scrolls and clicks **Show more** (`button[name="showMoreButton"]`) until `maxitems` is reached, or until several consecutive rounds bring nothing new.

⚠️ URLs must be from expedia.com and point to a `/Flights-Search` page.

## `maxitems` (type: `integer`):

Maximum number of flight offers to collect **per URL**.

## `proxyConfiguration` (type: `object`):

Proxies to use for the requests. Residential proxies are strongly recommended for Expedia.

## Actor input object example

```json
{
  "urls": [
    "https://www.expedia.com/Flights-Search?flight-type=on&mode=search&trip=roundtrip&leg1=from:Amsterdam%20(AMS-Schiphol),to:Munich,%20Bavaria,%20Germany,departure:11/10/2026TANYT,fromType:AIRPORT,toType:U&leg2=from:Munich,%20Bavaria,%20Germany,to:Amsterdam%20(AMS-Schiphol),departure:11/21/2026TANYT,fromType:U,toType:AIRPORT&options=cabinclass:economy&fromDate=11/10/2026&toDate=11/21/2026&d1=2026-11-10&d2=2026-11-21&passengers=adults:1,infantinlap:N"
  ],
  "maxitems": 70,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.expedia.com/Flights-Search?flight-type=on&mode=search&trip=roundtrip&leg1=from:Amsterdam%20(AMS-Schiphol),to:Munich,%20Bavaria,%20Germany,departure:11/10/2026TANYT,fromType:AIRPORT,toType:U&leg2=from:Munich,%20Bavaria,%20Germany,to:Amsterdam%20(AMS-Schiphol),departure:11/21/2026TANYT,fromType:U,toType:AIRPORT&options=cabinclass:economy&fromDate=11/10/2026&toDate=11/21/2026&d1=2026-11-10&d2=2026-11-21&passengers=adults:1,infantinlap:N"
    ],
    "maxitems": 70,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("delectable_incubator/expedia-com-flights-scraper-low-cost").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://www.expedia.com/Flights-Search?flight-type=on&mode=search&trip=roundtrip&leg1=from:Amsterdam%20(AMS-Schiphol),to:Munich,%20Bavaria,%20Germany,departure:11/10/2026TANYT,fromType:AIRPORT,toType:U&leg2=from:Munich,%20Bavaria,%20Germany,to:Amsterdam%20(AMS-Schiphol),departure:11/21/2026TANYT,fromType:U,toType:AIRPORT&options=cabinclass:economy&fromDate=11/10/2026&toDate=11/21/2026&d1=2026-11-10&d2=2026-11-21&passengers=adults:1,infantinlap:N"],
    "maxitems": 70,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("delectable_incubator/expedia-com-flights-scraper-low-cost").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.expedia.com/Flights-Search?flight-type=on&mode=search&trip=roundtrip&leg1=from:Amsterdam%20(AMS-Schiphol),to:Munich,%20Bavaria,%20Germany,departure:11/10/2026TANYT,fromType:AIRPORT,toType:U&leg2=from:Munich,%20Bavaria,%20Germany,to:Amsterdam%20(AMS-Schiphol),departure:11/21/2026TANYT,fromType:U,toType:AIRPORT&options=cabinclass:economy&fromDate=11/10/2026&toDate=11/21/2026&d1=2026-11-10&d2=2026-11-21&passengers=adults:1,infantinlap:N"
  ],
  "maxitems": 70,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call delectable_incubator/expedia-com-flights-scraper-low-cost --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,delectable_incubator/expedia-com-flights-scraper-low-cost"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/wUAfb5CHrKAvsymA0/builds/HciCKMxYQgzBCO22M/openapi.json
