Search Hostelworld by city and get structured rows for every listed hostel — ratings breakdown, review count, shared/private pricing, city-center distance, badges, geo, and a direct detail-page link. No page-scraping guesswork, just clean JSON per city.
nested RatingBreakdown/Price), src/parser.py (window.__NUXT__
Nuxt IIFE extraction via quickjs, getCityProperties* selection,
per-property mapping + geo-splash currency check), src/scraper.py
(curl-cffi fetch/retry/orchestration, no-retry-on-404), and
src/main.py (PPE-charged push loop, fail-loud only if every
requested city failed) are all real — no placeholder rows. 54 tests
green against real captured fixtures (barcelona.REAL.html,
bangkok.REAL.html, not_found.REAL.html); a live local apify run
against tests/fixtures/input.qa.json (Barcelona + Bangkok) scraped
10 real rows, 0 failures.