PriceScraper.
I wanted to know whether a price was actually good. I built a path from a store page to stored current and lowest prices and a quick answer in Telegram.
One number tells a small story.
An isolated offer does not show how a price has changed. PriceScraper brings product data, current prices and recorded minimums together so a query has context, without opening several pages and recording values by hand.
From store to conversation.
Collect
I use requests and BeautifulSoup to read HTML and extract the fields needed for a query, such as product and price.
Store
SQLite stores each product’s current price, lowest recorded price and timestamps. The current schema does not retain a separate row for every observation.
Query
The Telegram bot turns a search into a short answer using the collected data.
A price gains context.
Choose a product and move through four synthetic observations. This illustration explains the comparison; the repository stores current/minimum values, not a complete time series.
A tool sized to the problem.
I chose SQLite because the project needed price records and queries, but did not need the infrastructure of a database service. It is simple to run locally and fits this scope.
Store HTML is the fragile part: selectors can change. Keeping extraction clear and separate from storage makes it easier to spot when a page changed and the parser needs adjustment.
More than 3,000 items organized.
In the original project run, the collector gathered data for more than 3,000 products. The bot is a personal prototype with no continuous uptime promised. The bot offers a quick way to search an item and compare its current and lowest recorded prices. It was a project where collection, data modeling, and interface had to work as one flow.