After years of helping Canadian shoppers find the best grocery prices, PriceAlerts.org is transitioning to a new chapter. We are open-sourcing the entire platform so that developers, businesses, and communities anywhere in the world can build on what we created together.
A production-ready grocery price comparison engine, built and battle-tested over years of real-world use.
See prices from multiple stores displayed side-by-side on a single product page. No more checking store by store.
Interactive line charts showing how a product's price has changed over time, so shoppers know when to buy.
Find stores near you using browser geolocation with latitude/longitude distance calculations via Geolib.
Full-text search across product names, brands, categories, and UPC barcodes with instant results.
Powered by Google Analytics 4 — shows what products are being viewed most right now, updated hourly.
Deals and price drops organized by city, so shoppers see what's on sale near them, not on the other side of the country.
Built mobile-first. Looks great on phones, tablets, and desktops without any separate mobile site.
Automatically follows the user's system preference, with a manual toggle. All components themed consistently.
Full hierarchical category tree and brand pages so users can browse by what they're looking for, not just search.
A comprehensive control panel to manage products, stores, prices, integrations, ad blocks, meta tags, and blog content — all in one place.
Schedule automatic syncs from Google Sheets (via JSONSheets.com), Clover POS, or any REST API. Prices stay current without manual updates.
Use a simple Google Sheet as your product and pricing database. JSONSheets.com turns it into a live JSON API — no code needed.
Connect directly to Clover point-of-sale systems via OAuth for real-time inventory and pricing data from retail stores.
A full content management system for publishing SEO-optimized articles, grocery tips, and promotional content without a separate CMS tool.
17 configurable ad placement locations across the site. Ads are styled natively to match your theme for a seamless user experience.
Highlight specific products on the homepage or category pages, with geographic targeting to show different products to users in different cities.
Automatic product image upload, optimization, and delivery via Bunny CDN. Weekly image sync job keeps images fresh and properly sized.
Server-side rendering is triggered for verified search engine bots and social media crawlers, delivering pre-rendered HTML with full semantic content and meta tags.
Auto-generated XML sitemaps split into index files for products, stores, categories, cities, and blog posts. Handles hundreds of thousands of URLs.
Every page has unique title tags, meta descriptions, Open Graph images, breadcrumb structured data (JSON-LD), canonical URLs, and Twitter Cards.
LRU cache with TTL, cursor-based pagination, bulk database operations, optimized single-JOIN SQL queries, and controlled parallel batch processing.
Express rate limiting, Zod input validation, bcrypt authentication, OAuth state protection with expiration and one-time-use enforcement, and bot blocking.
Built for the Canadian market (CAD default) but supports USD, EUR, GBP, and other currencies. Geographic data (lat/lng) supports international expansion.
Auto-generated XML product feeds and Google Merchant Center feeds for retailer partnerships and comparison shopping engine submissions.
A full public API covering products, stores, categories, cities, deals, price history, trending products, blog posts, and SEO metadata — all returning JSON.
Type-safe database layer using Drizzle ORM on Neon serverless PostgreSQL. Schema-first design with shared types between frontend and backend via TypeScript.
We're releasing the complete, production-ready codebase under the MIT License — free to use, fork, modify, and build on.
To every shopper who used PriceAlerts to save money on groceries, every store owner who trusted us with their data, and every developer who reached out with ideas —
thank you.
This project started as a simple idea: make grocery prices transparent for everyday people. That idea lives on in the open-source code. We hope it helps someone, somewhere, build something even better.
— The PriceAlerts Team • contactus@pricealerts.org