
Aleksandr Kobtsev
Data engineer for travel. 100+ integrations with operator price and availability feeds. I build scrapers on the same assumption: sources lie.
Joined September 2026
ACTOR STATS
1 public Actor
2 total users
1 monthly user
>99% runs succeeded
I have spent my career on price and availability data: over a hundred integrations with travel-operator APIs, where a number off by one is a booking that does not exist. Scraping is the same job with a hostile source, so I build scrapers the way I built those feeds. Assume the source is lying until it proves otherwise.
The expensive failure in scraping is not a crash. It is a run that succeeds and hands you something wrong: a bot-detection page counted as "no rooms left", prices quietly returned in the property's local currency instead of yours, a field that stopped parsing three weeks ago and nobody noticed.
So my Actors:
- verify before they bill. Currency, language and the dates the page echoes back are checked on every response.
- never charge for a page they could not read. Blocked, challenged, wrong-currency and unparseable pages are rejected, not sold to you as data.
- fail loudly instead of quietly. A run that collected nothing ends as failed, not as a green run with an empty dataset.
- are watched. A scheduled job re-parses live pages against a recorded baseline, so a markup change shows up in hours instead of in your Issues tab a week later.
- Booking.com Hotel Price Calendar Scraper. Nightly rate, stay total, pre-discount price, taxes, room type, cancellation and prepayment policy, rooms left. One row per check-in date. Sold-out dates are flagged as data, not as errors.
Found something broken? Open an issue on the Actor. I read them.