Appearance
About LCBO.dev
LCBO.dev is a GraphQL API for LCBO product, store, and inventory data. This page explains why it exists, how it's built, and the design decisions that make it work.
Why I Built This
Years ago when I was learning to code, I found Carsten Nielsen's LCBO API. I used it to build my first real project, an app to find the cheapest beer in stock nearby. It worked, people used it, and I was hooked on building stuff.
For over a decade, Carsten maintained the API, enabling countless developers to build hackathon projects and learning experiments. Sadly, he passed away in 2019 after a battle with cancer.
His work showed us what's possible when someone takes the time to make public data accessible. LCBO.dev is my way of honoring that legacy and making sure this resource stays available for the next generation of developers learning to build things.
Design Philosophy
Free and Available
I'm using Cloudflare Workers and D1 to keep this running at basically zero cost, so it can stay free indefinitely. Whether you're learning to code or building something serious, I want this to just work and be available.
Why GraphQL
I chose GraphQL for the richness of its ecosystem and the strict contract it provides:
Rich Ecosystem
- Mature tooling and client libraries
- Type generation for any language
- Built-in documentation through introspection
Strict Contract
- Schema defines exactly what's available
- More predictable usage for clients
- Breaking changes are explicit
Edge Network
Running on Cloudflare's edge network means low latency (~150ms), no single point of failure, and consistent performance globally.
No Authentication
No API keys, no OAuth. Just send queries and get data. Rate limits are enforced per unique client (60 requests per minute).
Data Sources
LCBO.dev sources data from publicly available LCBO information:
- Product catalog (names, prices, descriptions, ...)
- Store locations and hours
- Inventory levels
- Category hierarchy
Data Freshness:
- Products: Updated daily
- Stores: Updated monthly
- Inventories: Updated daily
- Historical: Available from Dec 2025 (⚠️ EXPERIMENTAL - schema subject to change)
Important Notice
LCBO.dev is not affiliated with, endorsed by, or connected to the Liquor Control Board of Ontario (LCBO) or the Government of Ontario in any way.
This is an independent, third-party API service providing access to publicly available LCBO data. LCBO.dev operates independently and is not an official LCBO service.
Future Plans
Short Term
- Stabilize historical data API (currently experimental)
- Add product images
- Improve search relevance
Long Term
- Price alert webhooks
- Advanced analytics
Support
LCBO.dev is provided free of charge with no warranty. It's a side project maintained in my spare time.
If you find it useful:
- Build something cool with it
- Share it with other developers
Credits
- Carsten Nielsen - Original LCBO API creator (2009-2019)
- Cloudflare - Generous free tier that makes this possible
- GraphQL Community - Tools and libraries
- You - For building things with this API
Next Steps
Ready to build something?
- Tutorial: Build a Product Finder - Learn by building
- How-to Guides: Solve specific problems with products, stores, inventory
- Explanation: GraphQL Concepts to understand GraphQL better
Whether you're learning to code or building something serious, I want this to just work and be available. Go build something 🙂