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.
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
Import the template
Open Booking.com Listing Scraper for Spain, download the JSON template, and import it into UScraper.
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.
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.
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.
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.
| Column | Source intent | Validation check |
|---|---|---|
alojamiento | Accommodation name from the listing-card title | Must match the visible card title. |
alojamiento_url | Booking.com listing URL from the title link | Should be usable for manual audit and reruns. |
foto | Listing-card image URL | Can change as Booking.com rotates photos. |
distancia_al_centro | Visible distance label | Compare against the card distance text. |
condicion | Room, unit, subtitle, benefits, and related condition text | Expect variation by dates and availability. |
puntuacion, comentarios | Review score and review count parsed from Spanish labels | Check locale text if either field turns blank. |
precio_sin_descuento, precio | Original and current visible prices | Only both appear when a discount is shown. |
localidad, descripcion | Visible location or inferred city plus description fallback | Useful for filtering and audit notes. |
booking-hotel-listados-scraper.csvColumn
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
| alojamiento | alojamiento_url | foto | distancia_al_centro | condicion | puntuacion | comentarios | precio_sin_descuento | precio | localidad | descripcion |
|---|---|---|---|---|---|---|---|---|---|---|
| Hotel Costasol | 650 m del centro | Habitacion doble | Cancelacion gratis | 8,4 | 2.145 | US$ 286 | US$ 241 | Almeria | Cerca del centro | Buen desayuno |
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.
| Symptom | Likely cause | Fix |
|---|---|---|
| Zero rows | Property cards never became visible | Handle prompts, extend the wait, and rerun one URL. |
Blank precio | No visible price, unavailable dates, hidden offer, or delayed price module | Reopen the same URL and preserve date, currency, room, and guest parameters. |
Blank puntuacion or comentarios | Locale text or review markup changed | Check the Spanish card text and update the JavaScript extraction pattern. |
| Repeated accommodations | Duplicate offset URLs or append-mode rerun | Clear the CSV or save to a new file before rerunning. |
| Strange locality | Search URL and card location disagree | Keep 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.
| Route | Best fit | Trade-off |
|---|---|---|
| Booking.com Demand or Connectivity APIs | Approved travel products, affiliates, inventory, availability, rates, reservations, and booking workflows. | Requires eligibility, credentials, implementation work, and API terms. |
| Hosted scraping tools and actors | Recurring 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 scrapers | Engineering teams that need parser ownership, tests, queues, retries, and custom storage. | Every layout change becomes code maintenance. |
| UScraper local desktop app template | Analyst-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.

