Limited Time — Lifetime Access for just $99. Lock in before prices rise.

UScraper
Tutorials

How to Scrape Booking.com Spain Listings to CSV

Scrape Booking.com Spain listings to CSV. Export names, URLs, photos, ratings, reviews, prices and locality with the UScraper local desktop app. No code.

UScraper
June 21, 2026
9 min read
#how to scrape booking.com#booking.com scraping tutorial#booking.com spain hotel scraper#scrape booking.com listings#booking.com listing scraper#booking.com scraper vs api#best booking.com scraper#booking.com to csv#local desktop app
How to Scrape Booking.com Spain Listings to CSV

This tutorial shows how to scrape Booking.com Spain search listings into CSV with the Booking.com Listing Scraper for Spain template for UScraper. You will import the workflow, set the export path, run one validation pass, and audit accommodation rows.

Before you start

Prerequisites, scope, and policy checks

You need UScraper installed, the free JSON template, a writable CSV folder, and Booking.com search-result URLs you are allowed to process. The bundled workflow targets Almeria, Spain, with four offsets: page 1, then offsets 25, 50, and 75. Keep them for the first test before changing destination, dates, guests, currency, or sort order.

This guide covers supervised collection from visible listing cards. It does not cover dashboards, partner portals, reservation flows, payment pages, CAPTCHA solving, or access-control bypassing. Before automation, review Booking.com's Terms and Conditions, live robots.txt, and official Demand API documentation.

Technical access is not permission. Keep early runs visible, stop on verification pages, and use official routes when you need contractual rights, live availability, or booking integration.

Pre-run validation
0%

    Workflow shape

    What the Booking.com Spain listing scraper does

    The Booking.com Listing Scraper for Spain template is a search-result workflow, not a hotel-detail crawler. It opens each configured URL, waits for property-card rows, exports every visible card, sleeps briefly, and loops to the next offset.

    The JSON export is the authoritative workflow definition. In plain English, the path is:

    {
      "market": "Booking.com Spain search results",
      "sampleDestination": "Almeria, Andalucia, Spain",
      "offsets": [0, 25, 50, 75],
      "rowSelector": "[data-testid=\"property-card\"]",
      "fileName": "booking-hotel-listados-scraper.csv",
      "fileMode": "append",
      "waitForElement": "[data-testid=\"property-card\"]",
      "output": "one CSV row per visible accommodation card"
    }
    

    Runbook

    How to scrape Booking.com listings to CSV

    1

    Import the template

    Open Booking.com Listing Scraper for Spain, download the JSON template, and import it into UScraper.

    2

    Review the search URLs

    Open Navigate and inspect the four Booking.com Spain URLs. Keep the bundled Almeria URLs first, then change destination, dates, adults, rooms, currency, sort order, or offsets when the brief changes.

    3

    Keep the waits

    The workflow waits up to 45 seconds for page load and visible property cards so dynamic price, review, condition, and image modules can render before export.

    4

    Set the CSV path

    In Structured Export, confirm booking-hotel-listados-scraper.csv, headers, append mode, and a project-specific save folder on your machine.

    5

    Run one validation pass

    Run the first offset, open the CSV, and compare rows against the browser. Continue only after the fields match.

    After the first pass, sort by alojamiento_url. Duplicate URLs usually mean the same offset was supplied twice or a run resumed after rows were appended. Blank cells are not always failures: Booking.com may not show a discount, review count, room condition, or description for that session.


    Output

    What the Booking.com CSV export includes

    The bundled JSON defines 11 columns. Some are direct selectors, such as title, link, image, and distance. Others use JavaScript extraction because Booking.com cards can combine price, review, condition, and locality text in nested modules.

    ColumnSource intentValidation check
    alojamientoAccommodation name from the listing-card titleMust match the visible card title.
    alojamiento_urlBooking.com listing URL from the title linkShould be usable for manual audit and reruns.
    fotoListing-card image URLCan change as Booking.com rotates photos.
    distancia_al_centroVisible distance labelCompare against the card distance text.
    condicionRoom, unit, subtitle, benefits, and related condition textExpect variation by dates and availability.
    puntuacion, comentariosReview score and review count parsed from Spanish labelsCheck locale text if either field turns blank.
    precio_sin_descuento, precioOriginal and current visible pricesOnly both appear when a discount is shown.
    localidad, descripcionVisible location or inferred city plus description fallbackUseful for filtering and audit notes.
    booking-hotel-listados-scraper.csv
    CSV - UTF-8 - append

    Column

    alojamiento

    Accommodation name from the Booking.com result-card title.

    Column

    alojamiento_url

    Source listing URL from the title link.

    Column

    foto

    Current image URL shown on the result card.

    Column

    distancia_al_centro

    Visible distance label, such as distance to the city center.

    Column

    condicion

    Room type, unit configuration, subtitle, benefits, and related card text.

    Column

    puntuacion

    Review score parsed from Spanish Booking.com card text.

    Column

    comentarios

    Visible review or comment count when present.

    Column

    precio_sin_descuento

    Original price when Booking.com shows an old and current price.

    Column

    precio

    Current displayed price from the result-card price area.

    Column

    localidad

    Visible locality or the city inferred from the search URL.

    Column

    descripcion

    Description text or a fallback combination of location, distance, and benefit labels.

    Sample rows

    1 of many

    alojamientoalojamiento_urlfotodistancia_al_centrocondicionpuntuacioncomentariosprecio_sin_descuentopreciolocalidaddescripcion
    Hotel Costasol650 m del centroHabitacion doble | Cancelacion gratis8,42.145US$ 286US$ 241AlmeriaCerca del centro | Buen desayuno
    Headers included - each configured Booking.com offset appends visible listing-card rows

    Validation

    Validate rows before using the data

    Treat validation as part of the scrape. Booking.com listings can vary by region, language, cookies, currency, dates, guests, availability, and promotions. Keep the browser open beside the CSV and compare rows from the first, middle, and final offset.

    SymptomLikely causeFix
    Zero rowsProperty cards never became visibleHandle prompts, extend the wait, and rerun one URL.
    Blank precioNo visible price, unavailable dates, hidden offer, or delayed price moduleReopen the same URL and preserve date, currency, room, and guest parameters.
    Blank puntuacion or comentariosLocale text or review markup changedCheck the Spanish card text and update the JavaScript extraction pattern.
    Repeated accommodationsDuplicate offset URLs or append-mode rerunClear the CSV or save to a new file before rerunning.
    Strange localitySearch URL and card location disagreeKeep the source URL and note the destination assumptions in your audit log.

    Alternatives

    Booking.com scraper vs API vs hosted tools

    Searches for booking.com scraper vs api, best Booking.com scraper, and booking.com scraping tutorial often mix three different jobs.

    RouteBest fitTrade-off
    Booking.com Demand or Connectivity APIsApproved travel products, affiliates, inventory, availability, rates, reservations, and booking workflows.Requires eligibility, credentials, implementation work, and API terms.
    Hosted scraping tools and actorsRecurring cloud runs, scheduling, managed infrastructure, datasets, and API delivery.URLs and output pass through vendor systems, and billing can depend on pages, records, credits, tasks, or compute.
    Python scrapersEngineering teams that need parser ownership, tests, queues, retries, and custom storage.Every layout change becomes code maintenance.
    UScraper local desktop app templateAnalyst-led CSV exports from a controlled set of Booking.com Spain search-result URLs.Best for inspectable local research batches, not broad unattended crawling or access-control bypassing.

    UScraper fits narrow research jobs: a defined Spain search, a reviewable CSV, and a workflow you can inspect without writing code. For production travel products, official API routes or licensed providers are usually more durable.


    FAQ

    Booking.com Spain listing scraper FAQ

    Booking.com search pages may be publicly visible, but automated collection can still be limited by Booking.com terms, robots directives, access controls, copyright, database rights, privacy rules, and local law. Review current rules, do not bypass CAPTCHA or access controls, keep runs modest, and get legal review before commercial reuse.


    Next step

    Download the Booking.com Spain listing scraper template

    When you are ready to run the tutorial, download the free JSON from Booking.com Listing Scraper for Spain and keep this article open for QA. For adjacent workflows, browse all UScraper templates or the UScraper blog.

    FAQ

    Frequently asked questions

    Here are some of our most common questions. Can't find what you're looking for?

    View All FAQs

    Stop writing scripts. Start scraping visually.

    Download UScraper and build your first web scraper in under 10 minutes. No subscriptions, no code, no limits.

    Available on Windows 10+ and macOS 12+ · Need help? [email protected]