Build a Python Web Crawler for comparis.ch Real Estate Listings (Config-Driven, Full Data Extraction) -- 2
Budget: €8 – €30 EUR
Build a Python Web Crawler for comparis.ch Real Estate Listings (Config-Driven, Full Data Extraction)
________________________________________
Project Description
I am looking for an experienced Python developer to build a robust, production-ready web crawler for the Swiss real estate platform comparis.ch.
The crawler must reliably extract all real estate listings from comparis.ch based on configurable search parameters, including all detail information from each individual listing page, and export the results into Excel.
This is not a theoretical exercise – the solution must work in practice and handle the technical constraints of comparis.ch.
________________________________________
Core Requirements
1. Input Configuration (Mandatory)
The crawler must read all search parameters from a JSON configuration file, for example:
• Location (e.g. ZIP codes like 5722)
• Radius (km)
• Deal type (rent / buy)
• Property type(s)
• Rooms (from / to)
• Price (from / to)
• Sorting
• Page size
• Maximum pages
The configuration file must be easy to modify without touching the Python code.
________________________________________
2. Crawling Logic
The crawler must:
• Open comparis.ch with the given search parameters
• Iterate through all result pages (page 1, page 2, page 3, … until no more listings)
• Extract all listings shown on each page
• For each listing, open the detail page and extract full information
Important:
• comparis.ch uses client-side rendering / JavaScript
• A browser-based solution (Playwright, Selenium, or equivalent) is required
• Simple requests + BeautifulSoup solutions are not sufficient
________________________________________
3. Data to Extract (Minimum)
For each listing, extract as many of the following as available:
• Listing ID (if available)
• Title
• Price
• Rooms
• Living space (sqm)
• Address / location
• ZIP code
• Canton / city
• Property type
• Floor (if available)
• Availability date
• Description text
• Features / equipment
• Images (URLs only, no downloads required)
• Listing URL
• Provider / agency name
• Provider profile URL (if available)
________________________________________
4. Output
• Export results to Excel (.xlsx)
• One row per listing
• Clear column headers
• UTF-8 clean (no broken characters)
• File name should include the date (e.g. comparis_real_estate_YYYY-MM-DD.xlsx)
If no listings are found, the script must log a clear message explaining why.
________________________________________
5. Reliability & Stability
The solution must:
• Handle pagination correctly
• Avoid duplicate listings
• Be resilient against minor HTML changes
• Include basic logging (console output is sufficient)
• Fail gracefully (clear error messages instead of silent failure)
________________________________________
6. Technical Requirements
• Python 3.10+
• Clean, well-structured code
• No hard-coded search parameters inside the code
• All dependencies clearly documented
• Must run on Windows
• Preferably runnable via a .bat file
________________________________________
7. Deliverables
1. Fully working Python crawler
2. Example config.json
3. Requirements file (requirements.txt)
4. Short README explaining:
o How to start the crawler
o How to change search parameters
o Expected output
________________________________________
What I Will Provide
• Example comparis.ch search URLs
• Expected structure of the configuration file
• Sample output expectations
________________________________________
What I Will NOT Accept
• Partial solutions
• API-only approaches that do not work in practice
• “Works on my machine” code without documentation
• Scrapers that stop after page 1
• Solutions without detail page extraction
________________________________________
Preferred Skills
• Strong Python experience
• Proven experience with Playwright / Selenium
• Experience scraping JavaScript-heavy websites
• Experience exporting structured data to Excel
________________________________________
Project Goal (Summary)
A stable, configurable, browser-based Python crawler that extracts all real estate listings and their details from comparis.ch into Excel, based on a JSON input configuration.
________________________________________
Project Description
I am looking for an experienced Python developer to build a robust, production-ready web crawler for the Swiss real estate platform comparis.ch.
The crawler must reliably extract all real estate listings from comparis.ch based on configurable search parameters, including all detail information from each individual listing page, and export the results into Excel.
This is not a theoretical exercise – the solution must work in practice and handle the technical constraints of comparis.ch.
________________________________________
Core Requirements
1. Input Configuration (Mandatory)
The crawler must read all search parameters from a JSON configuration file, for example:
• Location (e.g. ZIP codes like 5722)
• Radius (km)
• Deal type (rent / buy)
• Property type(s)
• Rooms (from / to)
• Price (from / to)
• Sorting
• Page size
• Maximum pages
The configuration file must be easy to modify without touching the Python code.
________________________________________
2. Crawling Logic
The crawler must:
• Open comparis.ch with the given search parameters
• Iterate through all result pages (page 1, page 2, page 3, … until no more listings)
• Extract all listings shown on each page
• For each listing, open the detail page and extract full information
Important:
• comparis.ch uses client-side rendering / JavaScript
• A browser-based solution (Playwright, Selenium, or equivalent) is required
• Simple requests + BeautifulSoup solutions are not sufficient
________________________________________
3. Data to Extract (Minimum)
For each listing, extract as many of the following as available:
• Listing ID (if available)
• Title
• Price
• Rooms
• Living space (sqm)
• Address / location
• ZIP code
• Canton / city
• Property type
• Floor (if available)
• Availability date
• Description text
• Features / equipment
• Images (URLs only, no downloads required)
• Listing URL
• Provider / agency name
• Provider profile URL (if available)
________________________________________
4. Output
• Export results to Excel (.xlsx)
• One row per listing
• Clear column headers
• UTF-8 clean (no broken characters)
• File name should include the date (e.g. comparis_real_estate_YYYY-MM-DD.xlsx)
If no listings are found, the script must log a clear message explaining why.
________________________________________
5. Reliability & Stability
The solution must:
• Handle pagination correctly
• Avoid duplicate listings
• Be resilient against minor HTML changes
• Include basic logging (console output is sufficient)
• Fail gracefully (clear error messages instead of silent failure)
________________________________________
6. Technical Requirements
• Python 3.10+
• Clean, well-structured code
• No hard-coded search parameters inside the code
• All dependencies clearly documented
• Must run on Windows
• Preferably runnable via a .bat file
________________________________________
7. Deliverables
1. Fully working Python crawler
2. Example config.json
3. Requirements file (requirements.txt)
4. Short README explaining:
o How to start the crawler
o How to change search parameters
o Expected output
________________________________________
What I Will Provide
• Example comparis.ch search URLs
• Expected structure of the configuration file
• Sample output expectations
________________________________________
What I Will NOT Accept
• Partial solutions
• API-only approaches that do not work in practice
• “Works on my machine” code without documentation
• Scrapers that stop after page 1
• Solutions without detail page extraction
________________________________________
Preferred Skills
• Strong Python experience
• Proven experience with Playwright / Selenium
• Experience scraping JavaScript-heavy websites
• Experience exporting structured data to Excel
________________________________________
Project Goal (Summary)
A stable, configurable, browser-based Python crawler that extracts all real estate listings and their details from comparis.ch into Excel, based on a JSON input configuration.