The challenge
Each of 8 sites returns different fields (bedrooms vs habitaciones, area in m² vs ft², currencies DOP/CLP/MXN/EUR) - unifying them is fragile.
The solution
A portfolio of 8 Python scrapers, one per site, all producing data that slots into two shared JSON schemas. Scrapers are split between pure-HTTP (curl_cffi + httpx), Playwright for Angular-rendered sites, and session-based browser flows for auth-gated ones, with 2Captcha wired in where needed and resumable progress checkpoints on every scraper.
Results
4
Countries
8
Sites
Real estate + vehicles
Categories
Resumable
Recovery
