# Edreams Hotels Scraper (`rainminer/edreams-hotels-scraper`) Actor

Search eDreams hotel offers by destination and travel dates, then extract prices, hotel details, reviews, facilities, cancellation, and location data. No API key required.

- **URL**: https://apify.com/rainminer/edreams-hotels-scraper.md
- **Developed by:** [rainminer](https://apify.com/rainminer) (community)
- **Categories:** Travel, Automation, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 hotel results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## eDreams Hotels Scraper

The eDreams Hotels Scraper extracts hotel offer data from [eDreams](https://www.edreams.com/) for a selected destination, check-in date, check-out date, and guest count. It returns structured accommodation data that can be exported from Apify in JSON, CSV, Excel, HTML, or XML.

Use this Actor to monitor hotel prices, compare accommodation options, collect review and facility data, or feed eDreams hotel search results into your own workflows.

### What Can eDreams Hotels Scraper Do?

- Search eDreams hotel offers by destination and dates.
- Resolve destination names such as `Barcelona` through eDreams accommodation autocomplete.
- Extract hotel names, prices, per-night prices, discounts, ratings, reviews, facilities, room availability, addresses, coordinates, and images.
- Accept direct eDreams hotel result URLs in `startUrls`.
- Run with Apify scheduling, API access, dataset exports, webhooks, and proxy configuration.

### What eDreams Hotel Data Can You Extract?

| Field | Description |
| --- | --- |
| `name` | Hotel or accommodation name |
| `cityName` | City returned by eDreams |
| `address` | Accommodation address |
| `price` | Total displayed price |
| `pricePerNight` | Displayed price per night |
| `priceWithoutDiscount` | Price before discounts when returned |
| `discountPercentage` | Discount percentage when returned |
| `rating` | User review rating |
| `totalReviews` | Number of reviews |
| `roomsLeft` | Rooms-left value when returned |
| `facilities` | Facility codes such as `FREE_WIFI` |
| `category` | Accommodation category or star class |
| `coordinates` | Latitude and longitude |
| `imageUrl` | Main accommodation image URL |
| `resultUrl` | eDreams hotel results URL used for the scrape |

### How to Scrape eDreams Hotels

1. Open the Actor input tab.
2. Enter a destination, for example `Barcelona`.
3. Choose check-in and check-out dates.
4. Set adult guests, optional children ages, and `maxItems`.
5. Run the Actor and download the dataset in your preferred format.

If you already have an eDreams hotel result URL, add it to `startUrls`. The Actor will parse dates, geo ID, geo type, and guest count from the URL where possible.

### Input Example

```json
{
  "destination": "Barcelona",
  "checkInDate": "2026-07-08",
  "checkOutDate": "2026-07-10",
  "adults": 2,
  "childrenAges": [],
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
````

### Output Example

```json
{
  "destination": "Barcelona",
  "geoId": "513",
  "geoType": "REGION",
  "checkInDate": "2026-07-08",
  "checkOutDate": "2026-07-10",
  "name": "Hotel Monegal",
  "cityName": "Barcelona",
  "address": "Pelayo 62",
  "price": 444.69,
  "currency": "EUR",
  "pricePerNight": 222.34,
  "priceWithoutDiscount": 589,
  "discountPercentage": 24,
  "rating": 3.3,
  "totalReviews": 650,
  "roomsLeft": 99,
  "facilities": ["FREE_WIFI"],
  "imageUrl": "https://i.travelapi.com/...",
  "scrapedAt": "2026-06-08T08:30:00.000Z"
}
```

### How Much Does It Cost to Scrape eDreams Hotels?

This Actor uses HTTP requests for the eDreams hotel search flow, so it is lightweight compared with browser-based scraping. Cost depends on the number of destination searches, selected proxy configuration, and how many results you save. Start with a small `maxItems` value for monitoring runs.

### Notes and Limitations

Hotel availability and pricing can change quickly. Treat scraped prices as snapshots from the time of the run and verify final rates on eDreams before booking.

If eDreams returns no availability, blocks a market, or changes its search API, the Actor may return fewer fields or no items for that run. Using proxies can improve reliability in markets where traffic is restricted.

### Is It Legal to Scrape eDreams Hotels?

This Actor extracts publicly visible hotel offer information. You should use it responsibly, respect eDreams' terms, and ensure your use case complies with applicable laws and regulations. If you are unsure whether your use case is allowed, consult a legal professional.

# Actor input Schema

## `startUrls` (type: `array`):

Optional eDreams hotel result URLs. If provided, these are scraped directly and destination/date fields are used only as defaults for missing metadata.

## `destination` (type: `string`):

Hotel destination to search for, for example Barcelona, Madrid, Paris, or London.

## `geoId` (type: `string`):

Optional eDreams accommodation geo ID. If provided, destination autocomplete is skipped.

## `geoType` (type: `string`):

eDreams accommodation geo type for Geo ID.

## `checkInDate` (type: `string`):

Check-in date in YYYY-MM-DD format.

## `checkOutDate` (type: `string`):

Check-out date in YYYY-MM-DD format.

## `adults` (type: `integer`):

Number of adult guests in the first room.

## `childrenAges` (type: `array`):

Ages of child guests in the first room.

## `maxItems` (type: `integer`):

Maximum number of hotel offers to save per start URL.

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

Proxy settings. eDreams can return HTML block/error pages from cloud datacenter IPs, so residential proxies are used by default.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.edreams.com/travel/accommodation/hotel_results/checkIn=2026-07-08;checkOut=2026-07-10;geoId=513+REGION;room0Adults=2;buyPath=HSA_HOME;internalSearch=true"
    }
  ],
  "destination": "Barcelona",
  "geoType": "REGION",
  "checkInDate": "2026-07-08",
  "checkOutDate": "2026-07-10",
  "adults": 2,
  "childrenAges": [],
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "startUrls": [
        {
            "url": "https://www.edreams.com/travel/accommodation/hotel_results/checkIn=2026-07-08;checkOut=2026-07-10;geoId=513+REGION;room0Adults=2;buyPath=HSA_HOME;internalSearch=true"
        }
    ],
    "destination": "Barcelona",
    "geoType": "REGION",
    "checkInDate": "2026-07-08",
    "checkOutDate": "2026-07-10",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rainminer/edreams-hotels-scraper").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 = {
    "startUrls": [{ "url": "https://www.edreams.com/travel/accommodation/hotel_results/checkIn=2026-07-08;checkOut=2026-07-10;geoId=513+REGION;room0Adults=2;buyPath=HSA_HOME;internalSearch=true" }],
    "destination": "Barcelona",
    "geoType": "REGION",
    "checkInDate": "2026-07-08",
    "checkOutDate": "2026-07-10",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("rainminer/edreams-hotels-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.edreams.com/travel/accommodation/hotel_results/checkIn=2026-07-08;checkOut=2026-07-10;geoId=513+REGION;room0Adults=2;buyPath=HSA_HOME;internalSearch=true"
    }
  ],
  "destination": "Barcelona",
  "geoType": "REGION",
  "checkInDate": "2026-07-08",
  "checkOutDate": "2026-07-10",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call rainminer/edreams-hotels-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=rainminer/edreams-hotels-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Edreams Hotels Scraper",
        "description": "Search eDreams hotel offers by destination and travel dates, then extract prices, hotel details, reviews, facilities, cancellation, and location data. No API key required.",
        "version": "1.0",
        "x-build-id": "8vuhNaVxBUexsQsvS"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/rainminer~edreams-hotels-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-rainminer-edreams-hotels-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/rainminer~edreams-hotels-scraper/runs": {
            "post": {
                "operationId": "runs-sync-rainminer-edreams-hotels-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/rainminer~edreams-hotels-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-rainminer-edreams-hotels-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Optional eDreams hotel result URLs. If provided, these are scraped directly and destination/date fields are used only as defaults for missing metadata.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "destination": {
                        "title": "Destination",
                        "type": "string",
                        "description": "Hotel destination to search for, for example Barcelona, Madrid, Paris, or London.",
                        "default": "Barcelona"
                    },
                    "geoId": {
                        "title": "Geo ID",
                        "type": "string",
                        "description": "Optional eDreams accommodation geo ID. If provided, destination autocomplete is skipped."
                    },
                    "geoType": {
                        "title": "Geo type",
                        "enum": [
                            "REGION",
                            "ACCOMMODATION"
                        ],
                        "type": "string",
                        "description": "eDreams accommodation geo type for Geo ID.",
                        "default": "REGION"
                    },
                    "checkInDate": {
                        "title": "Check-in date",
                        "type": "string",
                        "description": "Check-in date in YYYY-MM-DD format.",
                        "default": "2026-07-08"
                    },
                    "checkOutDate": {
                        "title": "Check-out date",
                        "type": "string",
                        "description": "Check-out date in YYYY-MM-DD format.",
                        "default": "2026-07-10"
                    },
                    "adults": {
                        "title": "Adults",
                        "minimum": 1,
                        "maximum": 9,
                        "type": "integer",
                        "description": "Number of adult guests in the first room.",
                        "default": 2
                    },
                    "childrenAges": {
                        "title": "Children ages",
                        "type": "array",
                        "description": "Ages of child guests in the first room.",
                        "default": []
                    },
                    "maxItems": {
                        "title": "Maximum items",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of hotel offers to save per start URL.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. eDreams can return HTML block/error pages from cloud datacenter IPs, so residential proxies are used by default.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
