Grocerzilla  – Helping You Save on Groceries in Canada

·

·

Don’t overpay at the checkout—visit Grocerzilla at grocerzilla.ca and unlock instant price comparisons, personalized deal alerts, and clear insights on everything from fresh produce to pantry items. Your wallet will thank you!

Grocerzilla – in Cantonese, “zilla” (師奶) describes someone smart with money who always finds the best deals. Grocerzilla does the same for you: we hunt down discounts, watch price changes at top stores, and give you clear insights to help you save. Shop smarter and spend less with Grocerzilla.

Web interface of Grocerzilla

Why I Built Grocerzilla?

Vancouver has earned a reputation as one of Canada’s most expensive cities. Between rents and rising inflation, many of us feel the pinch in our wallets every time we step into a grocery store. Unlike luxury items, groceries are a daily necessity. You can’t skip buying essentials like milk, bread, or fresh produce. Yet it’s nearly impossible to remember every price, promotion, and discount across different retailers. That’s why I built Grocerzilla, a grocery price tracker and database designed to help you make smart shopping decisions, save money, and spend less time comparing prices.

Every paycheque seems to disappear faster than ever. Housing costs take the lion’s share, and groceries aren’t far behind. I found myself spending hours hopping between retailer websites just to compare prices. Even then, I worried I miss a sale or forget to check my favorite store’s weekly flyer. If I were spending too much time and money, surely there had to be a better way.

That realization sparked the idea for Grocerzilla:

  • Daily Necessity: Groceries are non-negotiable. We all need to eat, and we all need to save.
  • Time Drain: Manually comparing prices on multiple websites takes hours every week.
  • Memory Challenge: It’s humanly impossible to memorize the price trend over time.
  • Smart Decision: Automate the process so everyone can shop smart, not hard.

Technology Stack

Simplified Architecture of Grocerzilla
Simplified Architecture of Grocerzilla
  • Azure Function Apps: Serverless Python functions that scrape retailer websites nightly.
  • Azure Data Lake Storage (Gen2): Landing zone for raw JSON/HTML stored as Parquet – cost‑effective, scalable storage.
  • Azure Data Factory (ADF): Orchestrates ETL pipelines for cleansing, transformation, and data movement.
  • Azure SQL Database: Stores both historical price records and current snapshots; designed for high concurrency and analytics.
  • Python & PySpark: Core languages/frameworks for data processing, leveraging Pandas and Spark for large Parquet datasets.

Key Challenges and How I Tackled Them

Ingestion & Transformation

One of the challenging parts of Grocerzilla was dealing with wildly different website structures and promotion formats across retailers. To handle this, I wrote Python scripts that run nightly as Azure Function Apps, each one tuned to a specific store’s HTML or API. These functions extract raw JSON payloads of every product’s price and metadata, then save them as Parquet files in Azure Data Lake Storage. From there, an Azure Data Factory pipeline picks up each file and applies a two‑stage process — first, flatten nested fields and standardize column names, and then running custom transformation routines to normalize prices, units, and promotion details into a single, consistent schema. By breaking the work into discrete steps (scraping, landing raw data, cleansing, normalization), I ensured each component could be tested and maintained independently, making it far easier to add new retailers or adjust to site layout changes.

Storage & Performance

With 10K+ SKUs per retailer and roughly 60K+ price records ingested every day, Grocerzilla’s data volume balloons by over 20M+ rows per year. Simply throwing more resources at the database wasn’t an option — both for cost reasons and to keep the system responsive. Instead, I optimized the data model itself: historical price records are partitioned by date for efficient analytics queries, while a separate “current snapshot” table holds only the latest price per SKU, trimmed down to just the fields needed for real‑time lookups. In Azure SQL Database, I implemented composite indexes for lookups.

Roadmap: Scaling Grocerzilla Across Canada

I began Grocerzilla as a British Columbia pilot, focusing on the province’s the most popular grocery chains to validate the end‑to‑end scraping, ETL, and pipelines. With that foundation solid, the next step is to expand the network in other provinces when resources allow. Ultimately, the goal is tracking prices at every key grocery chain from coast to coast.

Business Model & Community Support

Grocerzilla is a passion project rather than a revenue‑driven venture, built simply to help people spend less time and money on groceries. There’s no paywall or subscription. My focus is on maximizing value for every user. That said, covering hosting costs and continued development relies on community goodwill. If you find Grocerzilla useful, please spread the word, send feedback on features or new retailers you’d like to see, or consider a small donation. Even modest support helps keep the servers running and fuels the next round of enhancements.

Ready to start saving on your groceries? Head over to Grocerzilla now at https://grocerzilla.ca to compare today’s best deals across all your favourite stores.