230,000 Daily Rows Standardized Across 5 EU Property Sites
Monitoring of real estate listings on funda.nl, pararius.com, rentberry.com, rentola.com, and zimmo.be to support the growth of a European property portal.
Learn More
You describe the slice: an operation, a set of provincias or municipios, and any filter that matters, such as obra nueva only or particular only. We build the crawler, show you a sample, then run it at the cadence you choose - once, weekly, daily or several times a day.
Output is CSV, JSON, XLSX, a database load or an API endpoint, on a stable schema, so a Fotocasa file drops into the same table as habitaclia or Milanuncios rows. Reruns are diffed, so each delivery marks new, changed and withdrawn adverts rather than handing you a fresh dump to reconcile.
We maintain the parsers. When Fotocasa changes its markup, that is our repair, not your broken pipeline.
Everything below is read from the public advert. A Fotocasa detail URL looks like /es/comprar/vivienda/madrid-capital/calefaccion-terraza-ascensor-no-amueblado/190139046/d, where the slug before the id is built from features rather than the address.
Search URLs follow a fixed grammar: /es/{operation}/{property type}/{municipio}/{distrito}/l, with /l/2 and upward for pages. Geography occupies two slots, so /es/comprar/viviendas/madrid-capital/chamberi/l is a distrito query and /es/comprar/viviendas/andalucia/todas-las-zonas/l is a comunidad autonoma query. Slugs are exact: cataluna and madrid-provincia resolve, comunidad-de-madrid returns 404. Private-seller stock has its own path: particulares inserted ahead of the location and the path ending /pl instead of /l. Obra nueva is a segment appended before /l, and those adverts carry a promotionId as well as a listing id, because many units share one development.
Two behaviours break naive crawlers. Paging past the end of a result set does not fail. On 27 August 2026 a Madrid search reporting 11,259 results ran out at page 376, yet pages 400 and 1000 answered HTTP 200 and repeated page 376. And an expired advert does not return 404. It answers HTTP 302 to that municipality's search page with the parameter propertyNotFound appended, so a status check alone records a dead advert as live and parses a result grid as a property.
The robots.txt we read on 27 August 2026 disallows /buscar/, the sort and price filter parameters, and every paginated form from /l/2* to /l/39*. It names HTTrack, WebCopier, Teleport and wget among agents blocked outright. We respect what that file sets, throttle by design, and make no attempt to defeat any protection the site applies.
Fotocasa is a Spanish property portal at fotocasa.es. It splits inventory by operation: comprar (sale), alquiler (rental), compartir (room shares), alquiler-vacacional (holiday lets) and obra nueva (new build). Measured on 27 August 2026, the national sale grid reported 469,842 viviendas (homes), the rental grid 48,495 and the room-share grid 46,978. Andalucia showed 116,365 homes for sale and Cataluña 90,749.
Ownership matters before you plan a crawl. Fotocasa and habitaclia both came out of Adevinta Spain. EQT acquired Adevinta Spain, then sold the two property portals on to Scout24, which closed that purchase in March 2026. Milanuncios stayed behind with the rest of Adevinta Spain. The corporate split did not break the plumbing. The Fotocasa Pro back office still publishes an agency's stock to Fotocasa, habitaclia and Milanuncios from one place, so a single flat can surface on three portals under three unrelated identifiers.
Fotocasa also publishes an aggregate indice inmobiliario (property index) at /es/indice-precio-vivienda/, reporting average price per square metre by provincia. That page is summary statistics. It exposes no adverts, so listing-level work still means reading the public pages.
Get a QuoteDevelopers
Customers worldwide
Pages extracted
Hours saved for our clients
€199 / one-time
setup fee - included
€169 / mo
setup fee €499
€229 / mo
setup fee €499
€349 / mo
setup fee €499
€549 / mo
setup fee €799
The first reason is coverage. A Spanish market model built on one portal inherits that portal's blind spots, and Fotocasa stock is not the same set its competitors hold. Analysts pull Fotocasa data to widen a comparables pool, to price a provincia they do not trade in, and to watch what an asking price does between publication and withdrawal.
The second reason is duplication, and it is where a Fotocasa scraper earns its cost. Fotocasa itself flags the problem: a detail page can carry a block headed Varias inmobiliarias han publicado este anuncio, meaning several agencies have published the same advert. Because Fotocasa Pro pushes one agency's stock to habitaclia and Milanuncios too, the duplicate lives across portals as well as inside this one. Counting adverts instead of properties inflates apparent supply, drags price per square metre averages around, and makes an agency look larger than its real book.
We resolve it rather than ignore it. Matching runs on coordinates, superficie, room and bathroom counts, the advertiser Referencia and description fingerprints. Each delivery carries an advert-level row and a resolved property key, and you decide which one your model counts.
Monitoring of real estate listings on funda.nl, pararius.com, rentberry.com, rentola.com, and zimmo.be to support the growth of a European property portal.
Learn More
Daily detection of new private property listings in Switzerland on Homegate.ch and ImmoScout24.ch, giving the agency first access to high-value leads.
Learn More
Scraping residential listings from Immobilienscout24.de in Germany and Mallorca, including complete data and resized images.
Learn MoreLearn how to use web scraping to solve data problems for your organization
Real estate teams work in a fragmented data landscape. The sites that drive demand in Boston look nothing like the ones that matter in Berlin, São Paulo, Dubai, or Mumbai.
Real estate teams are operating in a data environment that is bigger, faster, and more fragmented than ever. Listings go live and disappear in hours, price cuts happen quietly, and the portals that matter most in each country are rarely the same global “top 5.”
Real estate web scraping: a powerful tool for data collection and analysis. Learn how to choose the right data collection method and benefit from real estate web scraping
ScrapeIt is a managed web scraping agency. We build, run and maintain the crawlers, and you receive data rather than code. Scoping, sample review, scheduled delivery and ongoing repair sit with us.
Output is limited to listing and commercial data. Property adverts can name private sellers and individual agents, so personal contact details can be excluded on request, and any personal data left in scope is handled under the GDPR. We work to written scope and sign NDAs.
No documented public data API. Fotocasa Pro is a publishing product that lets an agency post its own stock to Fotocasa, habitaclia and Milanuncios; it is not a read interface for third parties, and it returns your own listings rather than the market. Internal endpoints such as /mvc/api/locations are disallowed in robots.txt and are not a supported integration. Fotocasa does publish an aggregate indice inmobiliario at /es/indice-precio-vivienda/ with average price per square metre by provincia, but that is summary statistics, not adverts. Listing-level Fotocasa data therefore comes from the public pages.
Yes. Each advert carries a clientTypeId that distinguishes a particular, meaning a private seller, from an inmobiliaria, meaning an agency. Fotocasa also runs a dedicated private-seller path where particulares sits ahead of the location and the URL ends /pl rather than /l. Professional adverts link to an agency microsite carrying a clientId, so one agency's whole Fotocasa inventory can be pulled and compared between runs to see what rotated in and out. We ship the flag as a column.
By matching, not by guessing. There is no shared identifier: a Fotocasa advert is a numeric id inside a /{id}/d path, while habitaclia uses flat .htm slugs, so the id does not carry across even though one back office feeds both. We match on coordinates, superficie, room and bathroom counts, the advertiser Referencia code and description fingerprints, then emit a resolved property key alongside the per-portal advert rows. You can count adverts or properties, and the two numbers differ.
It stops resolving, but not with a 404. On 27 August 2026 a request for a listing id that no longer exists answered HTTP 302 to that municipality's search page with the parameter propertyNotFound appended. A crawler that trusts status codes will treat the advert as live and parse a search grid as if it were a property. Our runs follow the redirect, detect the parameter and mark the advert withdrawn with the date it stopped resolving.
Scope is set by geography and operation rather than one national sweep. On 27 August 2026 the national sale grid reported 469,842 homes, so we slice by provincia, municipio and distrito, and by price band where a slice is still deep. That keeps each query shallow, which matters because robots.txt disallows the paginated forms from /l/2* to /l/39*, and because page numbers past the end of a result set silently repeat the final page. Frequency is yours: a one-off snapshot, or daily runs where price changes and withdrawals are the point.
Step 1 - Make a Request
You share your needs, expectations, and desired timeframe. We’ll suggest the best solution based on your request and budget.
Step 2 - Configuring Custom Web Crawlers
Our specialists configure the crawlers and extract a sample dataset for your review before proceeding with the full-scale extraction.
Step 3 - Collect and Deliver
Once you approve the sample, we launch the project and start full data collection. We gather, filter, and structure the data for easy use, delivering it on time in your preferred format.
Step 4 - Maintain and Support
Our team manages ongoing processes, monitors website changes, and supports all data extraction cycles. We can also help integrate data into your systems or create dashboards to simplify analysis.
Scrapeit Sp. z o.o.
10/208 Legionowa str., 15-099, Bialystok, Poland
NIP: 5423457175
REGON: 523384582