We tested four product databases for Canadian grocery coverage. Only one was usable.
If you build a barcode scanning app, the first question is where the product data comes from. If you build one for Canada, the answer is harder than it looks.
We spent a week testing four candidate sources against real Canadian grocery barcodes. Three of them were unusable, and the reasons were not what we expected. This is what we found, including the numbers, the method, and the parts that reflect badly on our own product.
The assumption we started with, and why it was wrong
We began with a belief that turned out to be false: that Open Food Facts — the open, community-maintained food database — had poor Canadian coverage, and that we would need a commercial source to fill the gap.
That assumption came from scanning a handful of Canadian products in a supermarket and getting nothing back. It felt like evidence. It wasn't. Some of the barcodes we were testing against weren't real products, and a few genuine misses became, in our minds, a pattern.
The lesson is uninteresting but worth stating plainly: measure before you conclude. We nearly spent money solving a problem we hadn't verified.
What Open Food Facts actually holds for Canada
Open Food Facts exposes a public search API that reports a total count for any filtered query. Filtering on products tagged with Canada as a market country returns a definitive figure.
Then the more important question — how many are actually complete enough to be useful? Open Food Facts tracks per-product completion states, including whether the ingredient list has been filled in. Filtering the same Canadian set on that state gives the answer.
That second number is the one that matters, and it's uncomfortable. Roughly 82% of Canadian products in Open Food Facts have incomplete ingredient information. They exist as entries — a name, a brand, sometimes a photo — but without the ingredient list that any allergen check or nutritional assessment depends on.
So the Canadian problem is real. It just isn't the problem we assumed. The gap is incompleteness, not absence.
That distinction changes what you build. A missing product needs a new record. An incomplete product needs one field filled — a much smaller task, and one a user standing in front of the package can do in thirty seconds.
UPCitemdb: no incremental coverage, no nutrition
UPCitemdb advertises over 700 million UPC and EAN records — by volume, the largest lookup database available. We tested it as a fallback for products Open Food Facts missed.
Against our test barcodes it returned exactly one product: Barilla Farfalle. Open Food Facts already had that one, with full nutrition. It missed both the Canadian artisan product we tested and Nutella — one of the most widely distributed food products in the world.
More fundamentally: UPCitemdb does not return ingredients or nutrition facts. It returns a product name, a brand, a category and an image. That is useful for identifying an object. It is not sufficient to assess one.
For a wellness or allergen application, a source that tells you what a product is but not what's in it cannot serve as a fallback. It can only tell the user that the product exists and you can't help them with it.
USDA FoodData Central: two million records, 0.12% Canadian
FoodData Central is a genuinely excellent resource — free, government-maintained, and substantial. We downloaded the full April 2026 bulk export and analysed the branded foods file, which contains a market country field and a GTIN/UPC field for every record.
Total records: 1,999,950 market_country = United States: 1,986,471 (99.3%) market_country = US: 12,362 ( 0.6%) market_country = New Zealand: 1,117 ( 0.1%) UPCs carrying the Canadian 006 prefix: 2,319 ( 0.12%)
Two thousand Canadian-registered barcodes out of two million records. That is not a Canadian dataset with gaps; it is a US dataset with incidental cross-border spillover.
This isn't a criticism. USDA's mandate is the American food supply. But it means the largest free nutrition database in North America is effectively unavailable to a Canadian application.
Against our test barcodes it returned the same single hit as UPCitemdb — Barilla Farfalle, which we already had.
Nutritionix: priced out of reach
Nutritionix has strong North American branded-food coverage and would likely have helped. It is also no longer accessible to small developers.
The company discontinued its public free tier, citing misuse of trial accounts. Commercial access now starts at approximately US$1,850 per month for around 600,000 UPCs.
For an enterprise that is reasonable. For a pre-revenue application it is roughly the entire annual marketing budget, spent on one data source. We did not test it. We could not afford to.
Summary
| Source | Canadian coverage | Ingredients | Nutrition | Cost |
|---|---|---|---|---|
| Open Food Facts | 124,088 products (21,918 complete) | Yes | Yes | Free |
| UPCitemdb | No incremental coverage in testing | No | No | ~US$42–140/mo |
| USDA FoodData Central | 2,319 of 2,000,000 (0.12%) | Yes | Yes | Free |
| Nutritionix | Not tested | Yes | Yes | ~US$1,850/mo |
The finding we didn't expect
Partway through testing, our requests to Open Food Facts began returning an HTML interstitial rather than data. We had hit their rate limit for anonymous traffic.
This matters more than it sounds. If you query their API synchronously on every scan, a modest number of concurrent users will trip that limit — and your users will see "product not found" for products that are sitting in the database.
Two consequences we've acted on. Authenticate — registered accounts are not subject to the same anonymous request limits, and we should have done this from the start. And don't query per-scan in production — Open Food Facts publishes complete database exports, including country-filtered extracts. Importing a Canadian subset into your own database means scans resolve locally in milliseconds, with no external dependency and no rate limit. Their API becomes a periodic refresh rather than a runtime requirement.
What we concluded
Canadian grocery product data cannot currently be bought at small-company scale. The authoritative sources — GS1 Canada's verified data pool, and the content syndication networks that supply major retailers — are enterprise-priced. Everything accessible below that is either American or incomplete.
Open Food Facts is the only viable foundation, and it covers about a fifth of Canadian products completely. That leaves one path: fill the gaps yourself, from the people standing in front of the products.
We're building toward a flow where a scan that returns nothing — or returns a product with no ingredient list — becomes an invitation rather than a dead end. Photograph the ingredient panel, and the extracted data goes into a review queue. It gets validated, published, and the next person who scans that product gets an answer.
That is slow, unglamorous, and compounds. Every product added serves every future user who scans it. It is also, as far as we can tell, the only approach available at this scale.
Instacart appears to have reached a similar conclusion at much larger scale — their catalogue work now uses vision-language models to extract nutrition and allergen data from packaging imagery, with human validation in the loop. The difference is that our users are physically holding the product.
Method and limitations
The Open Food Facts figures come from their public search API, filtered on Canada as a market country and, for the second figure, on the ingredients-completed state the project maintains per product. Both are single queries returning a total count, taken in August 2026. The database grows continuously, so these figures will drift.
The USDA analysis used the April 2026 bulk CSV export, filtering the branded foods file on
its market country field and on the GS1 006 prefix in the GTIN/UPC field,
across all 1,999,950 records.
Our barcode-level testing used a small sample — three genuine products across four sources. That is enough to establish that the commercial alternatives added nothing over our primary source in those cases. It is not enough to characterise their coverage generally, and we're not claiming it does.
If you have a larger Canadian barcode set and want to run the same comparison, we'd be glad to see the results — including if they contradict ours.
Why we published this
We build WellValet, a Canadian grocery barcode scanner. This research determined our architecture, and the 82% incompleteness figure is a limitation of our own product, not just of the database behind it. We'd rather state that than have users discover it.
If you're building something similar, or you know of a Canadian product data source we've missed, we'd genuinely like to hear from you: support@wellvalet.com
WellValet
Scan any Canadian grocery barcode for allergen alerts and a wellness score matched to your profile. Free to start.
See how it works