Marriott Hotel Price Checker

Overview

A price-monitoring tool built for a travel agency, tracking Marriott rates for the hotels and dates its staff care about. The agency's team — around six users — manage their own targets through a small Flask dashboard, adding and removing hotels and travel dates as bookings come up, with user management so each person works against the same shared list. Targets and results live in MongoDB, updated on every run.

Marriott's site was the hard part: it carries real anti-bot protection, so collection needed several mechanisms working together to get through reliably rather than a single scraping approach. Each run builds a price comparison table for the hotels nearby and emails it to the team as a formatted HTML report.

Outcome

A travel agency's team of six keeps its own hotel and date list current in a dashboard, and gets a comparison table by email on schedule — from a site whose anti-bot protection made reliable collection the real work.

Architecture & Pipeline

  1. 01

    Flask Dashboard

    Hotels + dates · ~6 users

    • Flask
  2. 02

    MongoDB

    Targets + collected pricing

    • MongoDB
  3. 03

    Scheduler

    Configurable times

  4. 04

    Anti-Bot Bypass

    Several mechanisms combined

  5. 05

    Marriott.com

    Selenium scrape

    • Selenium
  6. 06

    Price Table Builder

    Per-location grid

  7. 07

    HTML Email Report

    Delivered to the team

    • HTML

End-to-end flow, in order. Scroll sideways on a narrow screen.

Key Features

  • Flask dashboard for adding and removing target hotels and travel dates
  • User management for the agency's team of around six people
  • Multiple anti-bot bypass mechanisms working together against Marriott's protections
  • MongoDB store for targets and collected pricing, updated on every run
  • Scheduled scraping at configurable times of day
  • HTML-formatted email reports with price comparison tables
  • Deployed on an Ubuntu server