← Back to projects PERSONAL PROJECT / PYTHON + DATA

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.

View source Python · requests · BeautifulSoup · SQLite · Telegram
PAGE→COLLECT→PRICES→TELEGRAM
01 / THE PROBLEM

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.

02 / HOW IT WORKS

From store to conversation.

01

Collect

I use requests and BeautifulSoup to read HTML and extract the fields needed for a query, such as product and price.

02

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.

03

Query

The Telegram bot turns a search into a short answer using the collected data.

TRY THE FLOW

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.

SAMPLE DATA
OBSERVED PRICER$ 359R$ 40 below the first observation
History4 observations
↗ TELEGRAM RESPONSE

Headphones: R$ 359 now. Lowest observed price: R$ 349.

03 / DECISIONS

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.

04 / RESULT

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.

Want to talk about the next project?

Send email