# 🚀 Skyscanner Hotels Scraper · 5,000 Free Hotels/Month (`omkar-cloud/skyscanner-hotels-scraper`) Actor

Skyscanner Hotels Scraper gets you Skyscanner hotels ⚡ fast, 🎯 100% accurate and 🔍 ridiculously detailed — stars, guest rating, photos, AI review digest & every partner's live rate. 💰 $1 per 1,000 hotels, no start fee. Scrape your first 5,000 hotels free every month 🚀

- **URL**: https://apify.com/omkar-cloud/skyscanner-hotels-scraper.md
- **Developed by:** [Chetan Jain](https://apify.com/omkar-cloud) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 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/actors/running/actors-in-store.md#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

## Skyscanner Hotels Scraper

Skyscanner Hotels Scraper by Omkar Cloud gets you 🎯 accurate, 🔍 detailed Skyscanner hotel data.

Skyscanner compares every booking site's rate for a hotel in one place, and every run searches it live — so you get today's stars, guest ratings, photos, AI review digest and each partner's live price, and can successfully complete your project.

**$1 per 1,000 hotels.** And with Apify's free plan you get $5 of credit every month, so your first **~5,000 hotels each month are free**.

This is an excellent Actor made by Omkar Cloud, which is Rated Excellent — [4.7 based on 30 reviews on Trustpilot](https://www.trustpilot.com/review/omkar.cloud).

👉 [**Try Skyscanner Hotels Scraper free**](https://apify.com/omkar-cloud/skyscanner-hotels-scraper) — your first ~5,000 hotels are Free.

### What can I get

- 🏨 **Any place, any stay** — search a city, district or hotel name (`New York`, `Shibuya Tokyo`), a Skyscanner entity id or a pasted skyscanner.net hotels URL; set check-in/check-out, adults, children and rooms, or leave the dates empty for tomorrow night
- ⭐ **Stars, guest rating & review count on every row** — plus address, coordinates, neighbourhood, distance description, photos and the Skyscanner link
- 🤖 **Skyscanner's AI review digest** — short review highlights (`Near landmarks`, `Quiet neighborhood`) and a per-category summary of what guests say about location, service, rooms, amenities and cleanliness
- 💸 **Every partner's live rate** — Booking.com, Expedia, Agoda, Hotels.com, Trip.com, Priceline, Vio.com and more, each with per-night and total prices, taxes and fees broken out, the room name and type, rate features (`Free cancellation`, `Breakfast included`) and a direct booking deeplink
- 🎚️ **Filters, order & localisation** — price range, minimum guest rating, star ratings, sort by best/price/rating/stars/distance, any market, locale and currency

### Why Skyscanner Hotels Scraper

Most other Skyscanner scrapers fail you in one of four ways:

- 🗄️ **Inaccurate, cached, stale data**
- 🧩 **Low-detail data** — a few fields per hotel, never the full picture
- 💸 **Pay more to get the same data**
- 🪦 **Works today, breaks next month** — nobody maintains it

Skyscanner Hotels Scraper is scraped live on every run, priced honestly, and actively maintained.

### Input

| Field | What it does |
|---|---|
| **Locations** | One or more places, each searched separately: free text, a Skyscanner entity id or a skyscanner.net hotels URL |
| **Check-in / Check-out Date** | `YYYY-MM-DD`. Both optional — leave empty and Skyscanner prices tomorrow night (check-in tomorrow, check-out one night later) |
| **Adults / Children Ages / Rooms** | The party: 1–8 adults (default 2), comma-separated child ages like `4,9`, 1–8 rooms (default 1) |
| **Sort By** | Best (default), price low to high, guest rating, star rating or distance from the centre |
| **Price per Night — Min / Max** | Nightly price bounds in the chosen currency |
| **Guest Rating — Min** | Minimum guest rating, 0–5 |
| **Star Ratings** | Comma-separated star ratings to keep, e.g. `4,5` |
| **Max Poll Seconds** | 0–60. How long Skyscanner's live search may keep polling partners before answering — higher is more complete, slower |
| **Market / Locale / Currency** | Point-of-sale country (`US`, `GB`, `IN`…), response language (`en-US`, `fr-FR`…) and pricing currency (`USD`, `EUR`, `INR`…). Market is not cosmetic: it changes which partners and prices Skyscanner offers |
| **Max Hotels per Location** | Cost control — 1,000 hotels ≈ $1. Skyscanner serves 30 hotels per page and stops at 30 pages, so one location yields at most 900 hotels |

### Example: A Full Skyscanner Hotel

```json
{
  "search_location": "New York",
  "location_name": "New York",
  "location_entity_id": "27537542",
  "nights": 1,
  "adults": 2,
  "rooms": 1,
  "currency": "USD",
  "id": "46945092",
  "name": "Hotel Beacon",
  "link": "https://www.skyscanner.com/hotels/united-states/new-york-hotels/hotel-beacon/ht-46945092",
  "type": "hotels_and_motels",
  "star_rating": 4,
  "rating": { "score": 4.6, "label": "Excellent", "review_count": 219, "source": "skyscanner" },
  "price": {
    "per_night": { "amount": 433, "amount_with_taxes": 437.36, "amount_before_discount": 433, "currency": "USD" },
    "total": { "amount": 433, "amount_with_taxes": 437.36, "amount_before_discount": 433, "currency": "USD" },
    "taxes_and_fees": { "amount": 63.36, "currency": "USD", "items": [{ "type": "unrecognized", "name": "Additional fees" }, { "type": "city", "name": "City Tax" }] }
  },
  "location": {
    "address": "2130 Broadway, New York, NY 10023, USA, Manhattan, New York, 10023, United States",
    "coordinates": { "latitude": 40.78071, "longitude": -73.98123 },
    "neighbourhood": "Manhattan",
    "distance_description": "Manhattan, New York",
    "city_entity_id": "27537542"
  },
  "images": [
    "https://content.skyscnr.com/available/2310755181/2310755181_WxH.jpg",
    "https://content.skyscnr.com/available/2627718338/2627718338_WxH.jpg"
  ],
  "review_highlights": ["Near landmarks", "Local dining", "Near the center", "On-site laundry"],
  "review_summaries": [
    { "category": "location", "title": "Excellent Upper West Side location", "summary": "For many travelers, the hotel's Upper West Side location is very convenient — close to the 72nd Street subway, Central Park, museums, restaurants and a large supermarket — while staying quieter than Midtown." },
    { "category": "rooms", "title": "Spacious rooms with kitchenettes, some wear", "summary": "Rooms are often praised as spacious, quiet, and comfortable with handy kitchenettes and good beds, though some guests report dated furnishings, occasional maintenance issues, and variable hot-water or heating performance." }
  ],
  "offers": [
    {
      "partner": { "id": "h_fd", "name": "Vio.com", "logo_link": "https://content.skyscnr.com/m/5cdf8da47d953702/original/h_fd.png", "is_official": false },
      "room_name": "Studio, King bed",
      "room_type": "suite_room",
      "price": {
        "per_night": { "amount": 433, "amount_with_taxes": 437.36, "amount_before_discount": 433, "currency": "USD" },
        "total": { "amount": 433, "amount_with_taxes": 437.36, "amount_before_discount": 433, "currency": "USD" },
        "taxes_and_fees": { "amount": 63.36, "currency": "USD", "items": [{ "type": "unrecognized", "name": "Additional fees" }, { "type": "city", "name": "City Tax" }] }
      },
      "features": ["Pay now", "Non-Refundable", "Meals not included"],
      "link": "https://www.skyscanner.com/hotel_deeplink/4.0/US/en-US/USD/h_fd/46945092/..."
    },
    {
      "partner": { "id": "h_pr", "name": "Priceline", "logo_link": "https://content.skyscnr.com/m/1218a98b0ec0408d/original/h_pr.png", "is_official": false },
      "room_name": "Studio, King bed",
      "room_type": "generic_room",
      "price": {
        "per_night": { "amount": 496, "amount_with_taxes": 573.4, "amount_before_discount": 496, "currency": "USD" },
        "total": { "amount": 496, "amount_with_taxes": 573.4, "amount_before_discount": 496, "currency": "USD" },
        "taxes_and_fees": { "amount": 96.4, "currency": "USD", "items": [{ "type": "other", "name": "Additional taxes" }, { "type": "service", "name": "Service Charge" }] }
      },
      "features": ["Non-Refundable", "Meals not included"],
      "link": "https://www.skyscanner.com/hotel_deeplink/4.0/US/en-US/USD/h_pr/46945092/..."
    }
  ]
}
```

*Trimmed for readability.* Every row also carries `checkin` and `checkout` — the stay the rates belong to — and the full `offers` list (this hotel had 10 partner offers). You can download the dataset as JSON, CSV, Excel or HTML.

### Get Started with 5,000 Free Hotels

1. [Hit **Try for Free Button**](https://apify.com/omkar-cloud/skyscanner-hotels-scraper) — the input is pre-filled with a "New York" and "Shibuya Tokyo" search for tomorrow night.
2. Enjoy your data 😎.

### Pricing

High value, Low price.

| What | Price | What you get |
|---|---|---|
| **Hotels** | **$1 per 1,000** | name, type, stars, guest rating with label & review count, per-night & total price with taxes and fees broken out, address, coordinates, neighbourhood, photos, review highlights, AI review digest, and every partner's live rate with room name, rate features & booking deeplink + the resolved place, stay dates, party & currency |

No start fee, no add-ons — one flat price for every plan, and you pay only for the rows you get. Control your spend with **Max Hotels per Location**: 1,000 hotels ≈ $1.

💡 Apify's free plan includes $5 of credit every month — about **5,000 free hotels, every month**.

👉 [**Scrape your first 5,000 hotels free**](https://apify.com/omkar-cloud/skyscanner-hotels-scraper)

### Run It from Code

Grab your API token from [Integrations Settings here](https://console.apify.com/settings/integrations) and replace `<YOUR_API_TOKEN>` below. Leave the dates out and Skyscanner prices tomorrow night.

**Python** (`pip install apify-client`)

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("omkar-cloud/skyscanner-hotels-scraper").call(run_input={
    "locations": ["New York"],
    "adults": 2,
    "stars": "4,5",
    "sort": "rating",
    "maxResults": 10,
})
for hotel in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(hotel["name"], hotel["star_rating"], hotel["price"]["per_night"]["amount"], hotel["currency"])
```

**Node.js** (`npm install apify-client`)

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('omkar-cloud/skyscanner-hotels-scraper').call({
    locations: ['Shibuya Tokyo'],
    market: 'JP',
    currency: 'JPY',
    maxResults: 30,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### FAQ

**Do I have to enter check-in and check-out dates?**
No. Leave both empty and Skyscanner prices tomorrow night — check-in tomorrow, check-out one night later. Set them when you need a specific stay; every row carries the `checkin` and `checkout` the rates belong to.

**How much does it cost to scrape Skyscanner hotels?**
$1 per 1,000 hotels, flat, with no start fee and no add-ons. Apify's free plan gives you $5 of credit every month, so your first ~5,000 hotels each month cost nothing. Cap a run with **Max Hotels per Location** or a maximum cost per run.

**How many hotels can I get per location?**
Up to 900 — Skyscanner serves 30 hotels per page and stops at 30 pages. To get more for a big city, search its districts separately (`Manhattan`, `Brooklyn`), or run it once per star band.

**Can I scrape several places in one run?**
Yes. Add as many entries to **Locations** as you like — each is searched separately with the same stay, party and filters, and every row carries `search_location` (as typed) plus the resolved `location_name` and `location_entity_id`. A hotel that shows up in two searches is scraped and billed only once per run.

**What is in `offers`?**
Every booking partner's live rate for the stay — partner name and logo, room name and type, per-night and total prices, the price with taxes and fees, the taxes and fees broken out by type, rate features such as `Free cancellation` or `Breakfast included`, and a booking deeplink. The row's top-level `price` is the cheapest of them.

**Why are the prices different from what I see on skyscanner.net?**
Skyscanner prices by point of sale. Set **Market** to your country, **Currency** to yours and, if you like, **Locale** to your language — the market changes which partners and rates Skyscanner offers, not just the formatting.

**Can I include children?**
Yes — put their ages in **Children Ages**, comma-separated (`4,9`, each 0–17, up to 8 children), together with **Adults** and **Rooms**.

**Is it legal to scrape Skyscanner?**
The Actor collects publicly available hotel listings and prices — no personal data. Please use the data responsibly and in line with Skyscanner's terms and the laws that apply to you.

### Related Actors

- 🏨 [**Booking Scraper**](https://apify.com/omkar-cloud/booking-scraper) — Booking.com hotels: prices, ratings, rooms & amenities
- ✍️ [**Booking Reviews Scraper**](https://apify.com/omkar-cloud/booking-reviews-scraper) — Booking.com guest reviews for any hotel

### Popular Actors by Omkar Cloud

- [**G2 Product Scraper**](https://apify.com/omkar-cloud/g2-product-scraper) — G2 product details, ratings & AI-found contacts
- [**Website Email Contact Scraper**](https://apify.com/omkar-cloud/website-email-contact-scraper) — emails, phones & socials from any website
- [**AliExpress Product Scraper**](https://apify.com/omkar-cloud/aliexpress-product-scraper) — live product details, SKU variants, stock & shipping
- [**Etsy Scraper**](https://apify.com/omkar-cloud/etsy-scraper) — Etsy products: prices, discounts, shops & variations
- [**IMDb Scraper**](https://apify.com/omkar-cloud/imdb-scraper) — IMDb titles: cast, ratings, box office & more
- [**Rightmove Scraper**](https://apify.com/omkar-cloud/rightmove-scraper) — UK homes for sale & to rent with agent phones

👉 [**Scrape your first 5,000 hotels free now**](https://apify.com/omkar-cloud/skyscanner-hotels-scraper)

### 💬 Have Questions? We Have Answers.

You're a business owner — we know how hard completing a project can be. So we offer full support: just message us and we'll reply ✅ with a solution within 1 working day.

[![Message Us on WhatsApp](https://raw.githubusercontent.com/omkarcloud/assets/master/images/whatsapp-us.png)](https://api.whatsapp.com/send?phone=918178804274\&text=I%20need%20help%20with%20using%20the%20Skyscanner%20Hotels%20Scraper%20Actor.)

[![Ask Us on Email](https://raw.githubusercontent.com/omkarcloud/assets/master/images/ask-on-email.png)](mailto:happy.to.help@omkar.cloud?subject=Help%20with%20Skyscanner%20Hotels%20Scraper%20Actor\&body=I%20need%20help%20with%20using%20the%20Skyscanner%20Hotels%20Scraper%20Actor.)

You are important to us — just message us and we will solve your problem ✅ within 1 working day. 🩷 Pinky Promise 🤙!

# Actor input Schema

## `locations` (type: `array`):

Places to stay: free text like `New York` or `Shibuya Tokyo`, a Skyscanner entity id like `27537542`, or a pasted skyscanner.net hotels URL like `https://www.skyscanner.net/hotels/search?entity_id=27537542` — the form is auto-detected. Each is searched separately. Rows carry a `search_location` field (as typed) plus the resolved `location_name` and `location_entity_id`, so you can tell locations apart.

## `checkin` (type: `string`):

Check-in date as `YYYY-MM-DD` (today or later). Leave empty for tomorrow.

## `checkout` (type: `string`):

Check-out date as `YYYY-MM-DD`, after check-in. Leave empty for one night after check-in.

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

Number of adults (1–8).

## `childrenAges` (type: `string`):

Comma-separated ages of the children in the party, each 0–17, at most 8 — e.g. `4,9`. Leave empty for no children.

## `rooms` (type: `integer`):

Number of rooms (1–8).

## `sort` (type: `string`):

Result order: Skyscanner's best match, lowest price first, guest rating, star rating or distance from the centre.

## `minPrice` (type: `number`):

Lowest nightly price to return, in the chosen currency.

## `maxPrice` (type: `number`):

Highest nightly price to return, in the chosen currency.

## `minRating` (type: `number`):

Minimum guest rating on Skyscanner's 0–5 scale — e.g. `4`.

## `stars` (type: `string`):

Comma-separated star ratings to keep, each 0–5 — e.g. `4,5` for four- and five-star hotels only. Leave empty for all.

## `maxPollSeconds` (type: `integer`):

How long Skyscanner's live search may keep polling partners for rates before returning what it has, 0–60. Higher = more complete offers, slower. Leave empty for the default.

## `market` (type: `string`):

Point-of-sale country as a 2-letter ISO 3166-1 code (`US`, `GB`, `IN`, `DE`, `FR`, `JP`, …). Not cosmetic: it changes which partners, rates and prices Skyscanner offers.

## `locale` (type: `string`):

Response language as a BCP-47 tag (`en-US`, `en-GB`, `fr-FR`, `de-DE`, `es-ES`, `ja-JP`, …).

## `currency` (type: `string`):

Pricing currency as a 3-letter ISO code (`USD`, `GBP`, `EUR`, `INR`, `JPY`, …). Every price on a row is in this currency.

## `maxResults` (type: `integer`):

Maximum number of hotels to scrape per location (up to 900 — Skyscanner's own ceiling of 30 pages × 30 hotels). Use this to control your cost (1,000 hotels ≈ $1).

## Actor input object example

```json
{
  "locations": [
    "New York",
    "Shibuya Tokyo"
  ],
  "adults": 2,
  "rooms": 1,
  "sort": "best",
  "market": "US",
  "locale": "en-US",
  "currency": "USD",
  "maxResults": 100
}
```

# 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 = {
    "locations": [
        "New York",
        "Shibuya Tokyo"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("omkar-cloud/skyscanner-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 = {
    "locations": [
        "New York",
        "Shibuya Tokyo",
    ],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("omkar-cloud/skyscanner-hotels-scraper").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 '{
  "locations": [
    "New York",
    "Shibuya Tokyo"
  ],
  "maxResults": 100
}' |
apify call omkar-cloud/skyscanner-hotels-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,omkar-cloud/skyscanner-hotels-scraper"
        }
    }
}

```

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/sF22e5u0UWGZFQxkD/builds/Z0DMxfbVE5xYTk39I/openapi.json
