{
  "title": "I Tried to Get AI to Do My Grocery Shopping",
  "subtitle": "The Ecosystem Isn't Ready Yet (But It's Getting There)",
  "description": "For about a year and a half, I've had this dream: Give my AI assistant a shopping list, have it programmatically add items to my grocery cart, review the cart myself, checkout manually, and pick up…",
  "lane": "notes",
  "slug": "ai-grocery-shopping-not-ready",
  "url": "https://ajvanbeest.com/notes/ai-grocery-shopping-not-ready/",
  "maturity": "seedling",
  "date": "2026-02-07",
  "updated": null,
  "tags": [
    "ai",
    "automation",
    "mcp",
    "grocery",
    "practical-ai"
  ],
  "wordCount": 700,
  "readingMinutes": 4,
  "markdown": "For about a year and a half, I've had this dream: Give my AI assistant a shopping list, have it programmatically add items to my grocery cart, review the cart myself, checkout manually, and pick up curbside. Simple, right?\n\nThis morning I finally sat down to make it happen. Here's what I learned.\n\n## The Dream Workflow\n\n1. Tell Claude: \"Add these 80 items to my cart\"\n2. AI uses API/MCP to add items programmatically\n3. I review the cart (catch substitutions, verify quantities)\n4. Manual checkout (I keep control of payment)\n5. Drive to store, pick up groceries\n\nNo delivery fees. No tipping. No stranger picking my produce. Just the cognitive load of list-making offloaded to AI.\n\n## Attempt #1: Browser Automation\n\nMy first thought: Use Claude's browser automation capabilities (via the Chrome MCP server) to literally click through the grocery website like a human would.\n\n**The test:** Add a gallon of milk and a quart of half & half to my Fresh Thyme cart.\n\n**The result:** 3 minutes and 14 seconds.\n\nFor two items.\n\nMy typical shopping list runs 80-100 items. At that rate, we're looking at 2+ hours of browser automation, burning through tokens, compute, and electricity. The environmental cost alone made me uncomfortable—this is not a sustainable approach.\n\nBrowser automation works. It's just obscenely expensive for this use case.\n\n## Attempt #2: Find an API\n\nOkay, so we need a real API. I spent the next hour surveying every grocery store within reasonable distance of my home in the Chicago suburbs:\n\n| Store | API Status |\n|-------|-----------|\n| **Kroger/Mariano's** | ✅ Full Cart API + existing MCP server |\n| Fresh Thyme | ❌ Instacart backend, B2B2C only |\n| Jewel-Osco | ❌ Albertsons family, no public API |\n| Whole Foods | ❌ Amazon backend, no third-party access |\n| Meijer | ❌ Reverse-engineered library exists but auth is broken |\n| Walmart | ❌ No official API (plus personal objections) |\n| Costco | ❌ No API access |\n\n**The discovery:** There's actually a mature MCP ecosystem for grocery shopping! The [kroger-mcp](https://github.com/CupOfOwls/kroger-mcp) server is production-ready, with full cart management, product search, and even shopping path optimization.\n\nBut here's my problem: I shop at Meijer.\n\n## The Economics Don't Work\n\nThe nearest Kroger-family store (Mariano's) is 12 miles away—through western Chicago suburbs, so 20-30 minutes each way.\n\nAnd according to [Chicago Consumers' Checkbook](https://www.checkbook.org/chicago-area/supermarkets/articles/Which-Grocery-Stores-Offer-the-Best-Prices-and-Quality-2055), Mariano's prices are about **18% higher** than Meijer.\n\nSo my options are:\n1. **Use the working API** but pay 18% more + an hour of driving\n2. **Use browser automation** but burn through compute and feel bad about it\n3. **Wait** for Meijer to open their API or someone to build a working integration\n\nI chose option 3.\n\n## What Exists Today\n\nIf you're luckier than me with store selection, here's what's available in the MCP ecosystem:\n\n- **[kroger-mcp](https://github.com/CupOfOwls/kroger-mcp)** - Kroger, Mariano's, Fred Meyer, Ralphs, etc.\n- **[groceries-mcp](https://github.com/o-b-one/groceries-mcp)** - Multi-vendor (currently Rami Levy, Keshet)\n- **[MCP Picnic](https://lobehub.com/mcp/ivo-toby-mcp-picnic)** - Picnic (EU grocery)\n- **[Shufersal MCP](https://skywork.ai/skypage/en/automate-groceries-ai-shufersal)** - Shufersal (Israel)\n- **[OurGroceries MCP](https://mcpmarket.com/server/ourgroceries)** - List management\n\nChatGPT also has full Instacart integration with embedded checkout—but that's delivery-only, not curbside pickup.\n\n## The Meijer Situation\n\nThere IS a [reverse-engineered Meijer Python library](https://github.com/dapperfu/python_Meijer) that supports cart management. But the login is currently broken due to Meijer's security measures. Getting it to work requires capturing auth tokens via MITM proxy—fragile, high-maintenance, and not something I want to babysit.\n\nMeijer has an [official developer portal](https://apiportal.meijer.com/), but it appears to be B2B-focused, not consumer cart access.\n\n## My Takeaway\n\nThis use case isn't ready for prime time—*for me*. If you shop at Kroger-family stores, you're golden. The infrastructure exists, it works, and it's exactly what I've been dreaming about.\n\nFor the rest of us, we wait. The MCP ecosystem is growing fast. Someone will build a Meijer integration eventually, or Meijer will open their API, or I'll move somewhere with a closer Kroger.\n\nUntil then, I'll keep making my shopping lists the old-fashioned way—with AI helping me think, but my own fingers doing the clicking.\n\n---\n\n## Resources\n\n- [kroger-mcp on GitHub](https://github.com/CupOfOwls/kroger-mcp)\n- [Kroger Developer Portal](https://developer.kroger.com/)\n- [MCP (Model Context Protocol) Overview](https://modelcontextprotocol.io/)\n- [Chicago Consumers' Checkbook Grocery Price Comparison](https://www.checkbook.org/chicago-area/supermarkets/articles/Which-Grocery-Stores-Offer-the-Best-Prices-and-Quality-2055)",
  "html": "<p>For about a year and a half, I’ve had this dream: Give my AI assistant a shopping list, have it programmatically add items to my grocery cart, review the cart myself, checkout manually, and pick up curbside. Simple, right?</p>\n<p>This morning I finally sat down to make it happen. Here’s what I learned.</p>\n<h2 id=\"the-dream-workflow\">The Dream Workflow</h2>\n<ol>\n<li>Tell Claude: “Add these 80 items to my cart”</li>\n<li>AI uses API/MCP to add items programmatically</li>\n<li>I review the cart (catch substitutions, verify quantities)</li>\n<li>Manual checkout (I keep control of payment)</li>\n<li>Drive to store, pick up groceries</li>\n</ol>\n<p>No delivery fees. No tipping. No stranger picking my produce. Just the cognitive load of list-making offloaded to AI.</p>\n<h2 id=\"attempt-1-browser-automation\">Attempt #1: Browser Automation</h2>\n<p>My first thought: Use Claude’s browser automation capabilities (via the Chrome MCP server) to literally click through the grocery website like a human would.</p>\n<p><strong>The test:</strong> Add a gallon of milk and a quart of half &amp; half to my Fresh Thyme cart.</p>\n<p><strong>The result:</strong> 3 minutes and 14 seconds.</p>\n<p>For two items.</p>\n<p>My typical shopping list runs 80-100 items. At that rate, we’re looking at 2+ hours of browser automation, burning through tokens, compute, and electricity. The environmental cost alone made me uncomfortable—this is not a sustainable approach.</p>\n<p>Browser automation works. It’s just obscenely expensive for this use case.</p>\n<h2 id=\"attempt-2-find-an-api\">Attempt #2: Find an API</h2>\n<p>Okay, so we need a real API. I spent the next hour surveying every grocery store within reasonable distance of my home in the Chicago suburbs:</p>\n<table>\n<thead>\n<tr>\n<th>Store</th>\n<th>API Status</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>Kroger/Mariano’s</strong></td>\n<td>✅ Full Cart API + existing MCP server</td>\n</tr>\n<tr>\n<td>Fresh Thyme</td>\n<td>❌ Instacart backend, B2B2C only</td>\n</tr>\n<tr>\n<td>Jewel-Osco</td>\n<td>❌ Albertsons family, no public API</td>\n</tr>\n<tr>\n<td>Whole Foods</td>\n<td>❌ Amazon backend, no third-party access</td>\n</tr>\n<tr>\n<td>Meijer</td>\n<td>❌ Reverse-engineered library exists but auth is broken</td>\n</tr>\n<tr>\n<td>Walmart</td>\n<td>❌ No official API (plus personal objections)</td>\n</tr>\n<tr>\n<td>Costco</td>\n<td>❌ No API access</td>\n</tr>\n</tbody>\n</table>\n<p><strong>The discovery:</strong> There’s actually a mature MCP ecosystem for grocery shopping! The <a href=\"https://github.com/CupOfOwls/kroger-mcp\">kroger-mcp</a> server is production-ready, with full cart management, product search, and even shopping path optimization.</p>\n<p>But here’s my problem: I shop at Meijer.</p>\n<h2 id=\"the-economics-dont-work\">The Economics Don’t Work</h2>\n<p>The nearest Kroger-family store (Mariano’s) is 12 miles away—through western Chicago suburbs, so 20-30 minutes each way.</p>\n<p>And according to <a href=\"https://www.checkbook.org/chicago-area/supermarkets/articles/Which-Grocery-Stores-Offer-the-Best-Prices-and-Quality-2055\">Chicago Consumers’ Checkbook</a>, Mariano’s prices are about <strong>18% higher</strong> than Meijer.</p>\n<p>So my options are:</p>\n<ol>\n<li><strong>Use the working API</strong> but pay 18% more + an hour of driving</li>\n<li><strong>Use browser automation</strong> but burn through compute and feel bad about it</li>\n<li><strong>Wait</strong> for Meijer to open their API or someone to build a working integration</li>\n</ol>\n<p>I chose option 3.</p>\n<h2 id=\"what-exists-today\">What Exists Today</h2>\n<p>If you’re luckier than me with store selection, here’s what’s available in the MCP ecosystem:</p>\n<ul>\n<li><strong><a href=\"https://github.com/CupOfOwls/kroger-mcp\">kroger-mcp</a></strong> - Kroger, Mariano’s, Fred Meyer, Ralphs, etc.</li>\n<li><strong><a href=\"https://github.com/o-b-one/groceries-mcp\">groceries-mcp</a></strong> - Multi-vendor (currently Rami Levy, Keshet)</li>\n<li><strong><a href=\"https://lobehub.com/mcp/ivo-toby-mcp-picnic\">MCP Picnic</a></strong> - Picnic (EU grocery)</li>\n<li><strong><a href=\"https://skywork.ai/skypage/en/automate-groceries-ai-shufersal\">Shufersal MCP</a></strong> - Shufersal (Israel)</li>\n<li><strong><a href=\"https://mcpmarket.com/server/ourgroceries\">OurGroceries MCP</a></strong> - List management</li>\n</ul>\n<p>ChatGPT also has full Instacart integration with embedded checkout—but that’s delivery-only, not curbside pickup.</p>\n<h2 id=\"the-meijer-situation\">The Meijer Situation</h2>\n<p>There IS a <a href=\"https://github.com/dapperfu/python_Meijer\">reverse-engineered Meijer Python library</a> that supports cart management. But the login is currently broken due to Meijer’s security measures. Getting it to work requires capturing auth tokens via MITM proxy—fragile, high-maintenance, and not something I want to babysit.</p>\n<p>Meijer has an <a href=\"https://apiportal.meijer.com/\">official developer portal</a>, but it appears to be B2B-focused, not consumer cart access.</p>\n<h2 id=\"my-takeaway\">My Takeaway</h2>\n<p>This use case isn’t ready for prime time—<em>for me</em>. If you shop at Kroger-family stores, you’re golden. The infrastructure exists, it works, and it’s exactly what I’ve been dreaming about.</p>\n<p>For the rest of us, we wait. The MCP ecosystem is growing fast. Someone will build a Meijer integration eventually, or Meijer will open their API, or I’ll move somewhere with a closer Kroger.</p>\n<p>Until then, I’ll keep making my shopping lists the old-fashioned way—with AI helping me think, but my own fingers doing the clicking.</p>\n<hr>\n<h2 id=\"resources\">Resources</h2>\n<ul>\n<li><a href=\"https://github.com/CupOfOwls/kroger-mcp\">kroger-mcp on GitHub</a></li>\n<li><a href=\"https://developer.kroger.com/\">Kroger Developer Portal</a></li>\n<li><a href=\"https://modelcontextprotocol.io/\">MCP (Model Context Protocol) Overview</a></li>\n<li><a href=\"https://www.checkbook.org/chicago-area/supermarkets/articles/Which-Grocery-Stores-Offer-the-Best-Prices-and-Quality-2055\">Chicago Consumers’ Checkbook Grocery Price Comparison</a></li>\n</ul>",
  "links": [
    "https://github.com/CupOfOwls/kroger-mcp",
    "https://www.checkbook.org/chicago-area/supermarkets/articles/Which-Grocery-Stores-Offer-the-Best-Prices-and-Quality-2055",
    "https://github.com/o-b-one/groceries-mcp",
    "https://lobehub.com/mcp/ivo-toby-mcp-picnic",
    "https://skywork.ai/skypage/en/automate-groceries-ai-shufersal",
    "https://mcpmarket.com/server/ourgroceries",
    "https://github.com/dapperfu/python_Meijer",
    "https://apiportal.meijer.com/",
    "https://developer.kroger.com/",
    "https://modelcontextprotocol.io/"
  ],
  "alternates": {
    "html": "https://ajvanbeest.com/notes/ai-grocery-shopping-not-ready/",
    "markdown": "https://ajvanbeest.com/notes/ai-grocery-shopping-not-ready.md",
    "json": "https://ajvanbeest.com/notes/ai-grocery-shopping-not-ready.json"
  }
}
