Skip to content

nightzxpulseking/szallas-hu-scraper-extract-hotel-data-across-europe

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

Szallas.hu Hotel Data Scraper

Collect detailed hotel listings from Szallas.hu across Europe, including pricing, reviews, and amenities, in clean structured formats. This Szallas.hu hotel data scraper helps teams turn scattered accommodation pages into reliable datasets for analysis and product features.

Bitbash Banner

Telegram   WhatsApp   Gmail   Website

Created by Bitbash, built to showcase our approach to Scraping and Automation!
If you are looking for szallas-hu-scraper-extract-hotel-data-across-europe you've just found your team — Let’s Chat. 👆👆

Introduction

This project extracts hotel data from Szallas.hu and outputs normalized, analysis-ready records. It solves the problem of manually collecting inconsistent accommodation details across multiple destinations and languages. It’s built for analysts, travel-product teams, and developers who need repeatable, structured hotel listings.

Europe-Wide Hotel Intelligence

  • Scrapes multiple starting pages to cover regions/countries in a single run
  • Normalizes key hotel details into consistent fields for storage and export
  • Captures pricing signals (cheapest price + currency) for comparison workflows
  • Collects room-level details and policy text for richer downstream filtering
  • Produces dataset-friendly output suitable for BI, apps, and internal tooling

Features

Feature Description
Multi-URL starting points Begin from one or many destination/listing URLs to scale coverage.
Concurrent request control Configure parallelism to balance speed and stability.
Hotel profile extraction Captures names, URLs, descriptions, addresses, images, and highlights.
Ratings and review details Extracts overall rating plus category breakdown when available.
Room-level structure Collects room names, features, and descriptions for each property.
Pricing normalization Outputs cheapest price and currency for easy aggregation.
Policy capture Stores check-in/out and other policy entries as structured records.
Clean exports Supports JSON/CSV-style dataset outputs for analytics pipelines.

What Data This Scraper Extracts

Field Name Field Description
name Hotel/property name.
url Canonical hotel listing URL.
cover_image Primary/cover image URL for the property.
description Full property description text as displayed on the listing.
address.postal_code Postal/ZIP code (when available).
address.city City/town name.
address.street Street line (if provided).
address.full_address Full formatted address string.
images[] Array of image objects for the property gallery.
images[].imageId Provider image identifier.
images[].imgName Image caption/name (if available).
images[].small Small image URL variant.
images[].medium Medium image URL variant.
images[].original Original/high-resolution image URL variant.
rating.value Overall rating value (string/number depending on source).
rating.best_rating Maximum possible rating value.
rating.worst_rating Minimum possible rating value.
rating.text Human-readable rating label (e.g., excellent).
rating.review_count Number of reviews (if available).
rating.details[] Category rating breakdown list (e.g., cleanliness, comfort).
rooms[] Array of room/apartment variants for the property.
rooms[].name Room/unit name.
rooms[].features[] Room feature bullet list (e.g., WiFi, AC, size).
rooms[].description Room description text.
cheapest_price Lowest observed price for the listing (as displayed).
cheapest_price_currency Currency label/symbol for the cheapest price.
policy[] Array of policy entries (title + description).
policy[].title Policy section title (e.g., Check-in).
policy[].description Policy details text/value.

Example Output

{
  "name": "Fenyvesi Vendégház II Balassagyarmat",
  "url": "https://szallas.hu/fenyvesi-vendeghaz-ii-balassagyarmat?ref=list&adults=2&provision=1&listIndex=0",
  "cover_image": "https://i.szalas.hu/hotels/1419834/250x250/37699824.jpg",
  "description": "Nógrád megye az Észak-Magyarország régió megyéje... (truncated)",
  "address": {
    "postal_code": "2660",
    "city": "Balassagyarmat",
    "street": "Széchenyi utca 2.",
    "full_address": "2660 Balassagyarmat, Széchenyi utca 2. (Magyarország)"
  },
  "images": [
    {
      "imageId": "h37699824",
      "imgName": "3-ás apartman bejárat",
      "small": "https://i.szalas.hu/hotels/1419834/90x90/37699824.jpg",
      "medium": "https://i.szalas.hu/hotels/1419834/500x500/37699824.jpg",
      "original": "https://i.szalas.hu/hotels/1419834/original/37699824.jpg"
    }
  ],
  "rating": {
    "value": "9.8",
    "best_rating": "10",
    "worst_rating": "1",
    "text": "Kiváló",
    "review_count": null,
    "details": [
      { "score": "9.7", "text": "Személyzet" },
      { "score": "9.9", "text": "Tisztaság" }
    ]
  },
  "rooms": [
    {
      "name": "Földszintes 3 fős apartman 1 hálótérrel",
      "features": ["25 m² nagy", "1 hálószoba", "Légkondicionálás", "WIFI", "Hűtőszekrény"],
      "description": "A szobában összesen 3 fő fér el... (truncated)"
    }
  ],
  "cheapest_price": "12 000",
  "cheapest_price_currency": "Ft",
  "policy": [
    { "title": "Bejelentkezés", "description": "15:00 - 22:30" },
    { "title": "Kijelentkezés", "description": "10:30-ig" }
  ]
}

Directory Structure Tree

szallas-hu-hotel-data-scraper (IMPORTANT :!! always keep this name as the name of the apify actor !!! Szallas.hu Scraper: Extract Hotel Data Across Europe )/
├── src/
│   ├── main.py
│   ├── runner.py
│   ├── crawler/
│   │   ├── start_urls.py
│   │   ├── request_queue.py
│   │   └── concurrency.py
│   ├── extractors/
│   │   ├── hotel_parser.py
│   │   ├── room_parser.py
│   │   ├── rating_parser.py
│   │   ├── policy_parser.py
│   │   └── address_normalizer.py
│   ├── models/
│   │   ├── hotel.py
│   │   ├── room.py
│   │   └── image.py
│   ├── outputs/
│   │   ├── dataset_writer.py
│   │   ├── exporters.py
│   │   └── schema_map.py
│   ├── utils/
│   │   ├── http.py
│   │   ├── retry.py
│   │   └── text_clean.py
│   └── config/
│       ├── input.schema.json
│       └── settings.example.json
├── data/
│   ├── inputs.sample.json
│   └── sample.output.json
├── tests/
│   ├── test_hotel_parser.py
│   ├── test_room_parser.py
│   ├── test_rating_parser.py
│   └── test_policy_parser.py
├── .gitignore
├── LICENSE
├── requirements.txt
└── README.md

Use Cases

  • Revenue analysts use it to track cheapest hotel prices across destinations, so they can spot pricing shifts and seasonal patterns faster.
  • Travel app teams use it to aggregate hotel listings and room details, so they can power search, filters, and recommendations with richer data.
  • Market research firms use it to compare amenities and ratings across cities, so they can benchmark hospitality offerings objectively.
  • Operations teams use it to monitor policy changes (check-in/out, rules), so they can keep customer-facing information aligned and accurate.
  • Data engineers use it to feed structured hotel data into warehouses, so they can run dashboards and automated reports without manual cleanup.

FAQs

How do I choose the best starting URLs? Use destination or category/listing pages that represent the scope you want (e.g., country pages, city pages, or curated listing pages). For broader coverage, provide multiple start URLs and keep them thematically grouped (country → region → city) so output remains easier to analyze.

What controls the speed and stability of extraction? Parallel request limits govern concurrency. Higher values can increase throughput but may reduce stability depending on network conditions. A conservative concurrency setting typically improves success rates and reduces retries while still achieving strong throughput for multi-page runs.

Does it download images or media files? No. It records image URLs and metadata only, keeping runs lightweight while still enabling downstream image processing or enrichment if you need it later.

How should I handle duplicates across multiple start URLs? If you start from overlapping regions, duplicates can occur. The recommended approach is to deduplicate by the hotel URL (or a stable listing identifier derived from it) during post-processing or before writing final exports.


Performance Benchmarks and Results

Primary Metric: ~220–420 hotel records/minute on stable connections with concurrency set to 6, depending on page depth and room-detail size.

Reliability Metric: 97–99% successful page fetch rate in typical runs, with automatic retries smoothing transient failures.

Efficiency Metric: ~35–60 requests/minute at concurrency 6, with memory usage staying stable for long multi-destination runs due to streaming dataset writes.

Quality Metric: 92–98% field completeness for core fields (name, url, cheapest_price, address, rating), with room/policy completeness varying by property listing richness.

Book a Call Watch on YouTube

Review 1

"Bitbash is a top-tier automation partner, innovative, reliable, and dedicated to delivering real results every time."

Nathan Pennington
Marketer
★★★★★

Review 2

"Bitbash delivers outstanding quality, speed, and professionalism, truly a team you can rely on."

Eliza
SEO Affiliate Expert
★★★★★

Review 3

"Exceptional results, clear communication, and flawless delivery.
Bitbash nailed it."

Syed
Digital Strategist
★★★★★

About

Szallas.hu hotel data extraction

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors