E-commerce data pipeline · 2025

Reliable daily competitor pricing, without manual copying

ShippedIndependent engineer

Competitor prices lived in a morning ritual. Open several stores, copy figures, paste a sheet. A layout change on one site broke the day. There was no retry, no isolation per store, and no record of what failed.

The constraint

Multiple storefronts, different pagination, rate limits that are not documented. One broken parser must not take down the rest of the run.

Built with

  • Python
  • BeautifulSoup
  • Selenium

How it works

A scheduler starts the job. Each storefront is fetched and parsed on its own. Records are normalized into one table. A failed source is retried or logged, not allowed to abort the others.

  1. Scheduler
  2. Storefronts
  3. Parsers
  1. Normalize
  2. Morning table
  3. Source log
A scheduler starts the job. Each storefront is fetched and parsed on its own. Records are normalized into one table. A failed source is retried or logged, not allowed to abort the others.

The calls that shaped it

Each decision with the pressure that forced it and the price it keeps costing.

  1. One job, many sources

    A scheduled process pulls each storefront independently, so a selector change fails one source without taking down the rest of the run.

  2. BeautifulSoup where the HTML is stable, Selenium where it is not

    Not every page needs a browser. The ones that do are isolated so the rest stay cheap.

  3. Normalize, then write

    The morning artefact is a table the client can open. Raw markup stays in the job's output when a source needs a replay.

A job on a schedule, each storefront parsed on its own, a table in the morning, a log when a page changes. That is the shape of a pricing or product-data pipeline.

If you price against competitors, tell me how many storefronts you watch and how often the table needs to refresh.

Where it stands

Shipped. Competitor prices arrive as a clean table each morning, with each store isolated and failures logged.

What was handed over

  1. How the job is scheduled
  2. Per-source notes and what a selector change looks like
  3. The output table and who opens it
Next project Sales data analysis A sales review the client still opens