🏨 Skyscanner Hotels Scraper avatar

🏨 Skyscanner Hotels Scraper

Pricing

from $3.99 / 1,000 results

Go to Apify Store
🏨 Skyscanner Hotels Scraper

🏨 Skyscanner Hotels Scraper

Scrape Skyscanner hotel search at scale — prices, stars, reviews, amenities, partner offers, GPS and images — for any destination. Smart proxy auto-escalation (direct → datacenter → residential) and live streaming results.

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

ScrapeMesh

ScrapeMesh

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 days ago

Last modified

Share

Scrape Skyscanner Hotels for clean, structured hotel data — prices, stars, guest reviews, full amenity lists, partner offers, GPS coordinates and images — from any combination of Skyscanner URLs and free-text destinations, in bulk.

Streams results into the dataset as each hotel is parsed — no waiting until the end of the run for partial output.


✨ Why choose this scraper?

  • 🧠 Smart proxy auto-escalation — starts direct (cheapest), automatically falls back to datacenter then residential proxy if Skyscanner pushes back. Once on residential it stays there.
  • 🌐 URLs and free-text destinations — paste any Skyscanner URL with entity_id=… (no autosuggest hop) OR type a destination name like Alaska / Miami / Tokyo.
  • 🛎️ Full amenity list per hotel — the Skyscanner search endpoint only returns a couple of highlight amenities; we hydrate the rest from each hotel's detail page in parallel.
  • 💰 Every partner offer — Hotels.com, Expedia, Booking, Agoda, etc. with deep-links, per-night and total prices, room name and taxes.
  • 🧱 Browser TLS impersonation via curl_cffi (Chrome 124 / 131 fingerprints) defeats DataDome edges without the cost of a real browser.
  • 📊 Sectioned dataset tabs — Overview, Price, Reviews, Location, Amenities, Offers — switch tabs in the Console to focus on a section.
  • 💸 Pay per event — you only pay for hotels we successfully deliver.

🔑 Key Features

  • 🆔 Hotel name, Skyscanner ID, canonical detail URL
  • ⭐ Star rating and primary image
  • 💰 Cheapest per-night price + base price + taxes/fees breakdown
  • 🎫 Full list of partner offers (deep-links, room name, total price)
  • 📝 Guest review score, summary band, count, popular guest type
  • 🛎️ Full amenity list per hotel (from the detail page)
  • 📍 GPS coordinates, city name, distance to city centre
  • 🖼️ Image gallery URLs

📥 Input

FieldTypeRequiredDefaultDescription
urlsarraySkyscanner destination URLs (any URL with entity_id=… is consumed directly)
locationsarrayFree-text destinations (e.g. Alaska, Tokyo) — resolved via autosuggest
checkindatetomorrow+1ISO date YYYY-MM-DD
checkoutdatecheckin+5ISO date YYYY-MM-DD
adultsint2Adult travellers
childrenint0Children (priced as age 10)
roomsint1Number of rooms
market / currencystringUS / USDPricing locale and currency
limitint30Cap on hotels returned per destination
sortingstringbestResult order — best / price_low / price_high / rating / stars_high / stars_low / distance
min_price / max_priceintBound the cheapest per-night price (client-side)
hydrate_amenitiesbooltrueFetch full amenity lists from hotel detail pages
stars_* / rating_* / types_* / traveller_*togglesStar, guest-rating, accommodation-type and traveller-type filters
amenity_*toggles~170 amenity filters grouped into themed sections (results must match ALL ticked)
free_cancellation / breakfast_included / show_discountsboolfalseNative Skyscanner search filters
pay_on_arrival / non_refundable / meals_not_includedboolfalseBest-effort filters inferred from each partner offer's feature badges
proxyConfigurationobjectdirectOptional override of the starting proxy tier

Example input

{
"urls": [
"https://www.skyscanner.net/hotels/search?entity_id=27537542&checkin=2026-06-15&checkout=2026-06-20&adults=2&rooms=1"
],
"locations": ["Miami", "Tokyo"],
"checkin": "2026-06-15",
"checkout": "2026-06-20",
"adults": 2,
"rooms": 1,
"market": "US",
"currency": "USD",
"limit": 30,
"sorting": "price_low",
"max_price": 250,
"stars_4": true,
"stars_5": true,
"amenity_wifiservice": true,
"amenity_pool": true,
"proxyConfiguration": { "useApifyProxy": false }
}

📤 Output

Each item in the dataset looks like this:

{
"id": "129270865",
"name": "Qupqugiaq Inn",
"numberOfStars": 2,
"priceInfo": {
"price": 84.72,
"basePrice": 83.72,
"taxesAndFees": [
{ "total": 63, "key": "other_taxes" },
{ "total": 7.28, "key": "service_fee" }
],
"partnerId": "h_h1",
"funnelType": "meta",
"partnerRanking": 1,
"numberOfOffers": 7,
"isLowest": true
},
"amenities": ["WiFi", "Non-smoking", "Bar", "Lobby bar", "Lounge", "..."],
"reviews": {
"score": 3.6,
"summary": "rating_good",
"numberOfReviews": 166,
"mostPopularWith": "",
"taRating": 4,
"reviewSummaryScore": 4,
"reviewSummaryScoreImageUrl": "https://www.tripadvisor.com/img/cdsi/img2/ratings/traveler/4.5-64600-4.png",
"reviewSummaryScoreDesc": "Good",
"reviewSummaryCount": 166
},
"distanceInfo": {
"distanceMeters": 0,
"referenceEntityType": "FirstLevelNationAdministrativeDivision",
"referenceEntityName": "Alaska",
"cityName": "Anchorage"
},
"position": { "longitude": -149.89471, "latitude": 61.18792 },
"allPricesInfo": {
"prices": [
{
"partnerId": "h_h1",
"name": "Hotels.com",
"price": 84.72,
"numberOfOffers": 7,
"deepLink": "https://...",
"roomName": "Double room",
"partnerType": "OTA",
"isLowest": true,
"basePrice": 83.72,
"secondaryPrice": 593,
"partnerRanking": 1
}
]
},
"images": ["https://...", "..."],
"image": "https://...",
"url": "https://www.skyscanner.net/..."
}

🚀 How to use (Apify Console)

  1. Log in at console.apify.comActors.
  2. Open 🏨 Skyscanner Hotels Scraper.
  3. Paste your URLs / type destinations in the input.
  4. Pick check-in / check-out, adults, rooms, market and currency.
  5. (Optional) Tick filter toggles: stars, ratings, accommodation types, amenities.
  6. Click ▶ Start.
  7. Watch logs stream live — every hotel is pushed to the dataset the moment it's scraped.
  8. Open the Output tab → switch between Overview / Price / Reviews / Location / Amenities / Offers views.

🤖 Use via API

curl -X POST "https://api.apify.com/v2/acts/skyscanner-hotels-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"locations": ["Miami"],
"checkin": "2026-06-15",
"checkout": "2026-06-20",
"adults": 2,
"limit": 30
}'

💸 Pricing

Pay-per-event. You're billed:

  • Actor start — Apify-managed startup event (small flat fee, first 5s of compute on us).
  • result-item — one event per hotel successfully delivered to the dataset.

You don't pay for failed/blocked requests, retries, or proxy escalations.


❓ FAQ

Q: Why does the first request take a few seconds? Skyscanner runs hotel search asynchronously — the first POST returns a partial result with a sessionToken, and we re-poll until the search reaches 100 % completion (typically 1–4 polls).

Q: Will it work for non-US markets? Yes — pick a market / currency in the input. Skyscanner returns localised prices and partner availability per market.

Q: Why does the amenity list look short for some hotels? The search endpoint only returns 2–3 highlight amenities. With Hydrate per-hotel amenities ON (default), we fetch each hotel's detail page in parallel and parse the full list — usually 15–40 amenities. Turn it OFF to save requests if you only need price/review data.

Q: My destination is blocked. Leave the proxy at default — the actor will auto-escalate to datacenter then residential proxy. If residential still 403s after 3 retries, the run stops cleanly with a partial result.


📬 Support & feedback

Issues, feature requests or custom scrapers → dev.scraperengine@gmail.com.


  • Data is collected from publicly available Skyscanner search pages.
  • The end user is responsible for legal compliance (GDPR, CCPA, target site ToS, etc.).
  • Honour robots.txt and reasonable rate limits — leave the default delay in place.