How ZipAisle works
ZipAisle is not a store and not a price database. It is an errand-runner you send out: you give it a zip code and a shopping list, and it goes and reads the same public grocery-store pages you could open yourself, then brings the prices back in one place so you can decide where to shop.
What happens when you press go
- You set the errand. A zip code finds the stores near you. Your list says what to look for. A run starts only when you press the button. The one errand that repeats is your watch list, and it is yours too: ZipAisle checks its staples each Wednesday because you gave it that standing errand, never on its own initiative.
- You sign in to send it out. Pressing the button needs a ZipAisle account, which is an email address and a link we send you — no password, ever. Looking around, entering a zip code and building a list need no account. This is the only account involved anywhere in this: it is an account with us, and ZipAisle never signs in to a store.
- It opens each store’s public search page. One page per store, the same page anyone can open without signing in. ZipAisle opens it for you from our own servers or, at the two sites named under If you are a retailer, through internet addresses we rent from a network provider — never from your own connection or device. It reads what is displayed, and closes the page.
- Software reads the prices off the page. Machine-learning models pick which product on the page best matches each item on your list, and pull out its price and package size. No human checks this before you see it.
- You get a plan. Prices side by side, every package size reduced to the same unit, and the best value for each item in one stop or two. Each price says when it was read and links back to the page it came from, so you can check any of it yourself.
How the plan decides where the value is
There are two ways for a store to be “cheaper” on an item. The shelf price is what the store charges: per package, or per pound for things it weighs. The unit price is what you pay per ounce, per fluid ounce or per egg — and a bigger package usually costs more at the register while costing less per ounce. The plan ranks stores on unit price, so that package size doesn’t decide it, and shows the shelf prices separately as the estimated cart: what your list would actually cost there.
A fair question is why it doesn’t simply add up each store’s unit prices and compare the totals. Here is why, with made-up numbers. Three stores, three items, every price known:
| Store | Milk ($/gal) | Rice ($/lb) | Eggs ($/egg) | Added up |
|---|---|---|---|---|
| Store 1 | 4.00 | 1.00 | 0.30 | 5.30 |
| Store 2 | 3.00 | 2.00 | 0.20 | 5.20 ✓ |
| Store 3 | 6.00 | 1.00 | 0.10 | 7.10 |
Store 2 wins. Now write the same nine prices in other units that are just as correct — milk per fluid ounce, rice per ounce, eggs per dozen. Nothing on any shelf has changed.
| Store | Milk ($/fl oz) | Rice ($/oz) | Eggs ($/dozen) | Added up |
|---|---|---|---|---|
| Store 1 | 0.031 | 0.063 | 3.60 | 3.69 |
| Store 2 | 0.023 | 0.125 | 2.40 | 2.55 |
| Store 3 | 0.047 | 0.063 | 1.20 | 1.31 ✓ |
Now Store 3 wins and Store 1 is last. The order reversed because we changed how the eggs were written down, not what they cost. Dollars-per-gallon plus dollars-per-egg is a number the way “3 metres plus 2 kilograms” is a number: you can work it out, but it doesn’t measure anything, and whichever item happens to come in the biggest unit — milk by the gallon in the first table, eggs by the dozen in the second — ends up deciding the whole thing. A total like that is a fact about the units, not about the stores.
So instead, for each item, ZipAisle compares every store to the cheapest store for that item. Store 1’s milk is 1.33 times the cheapest milk whether you write it per gallon or per fluid ounce — the unit cancels out. Then each store’s multipliers are averaged into one number:
| Store | Milk | Rice | Eggs | On a typical item | On your plan |
|---|---|---|---|---|---|
| Store 1 | 1.33× | 1× | 3× | 1.59× | about 26% more expensive |
| Store 2 | 1× | 2× | 2× | 1.59× | about 26% more expensive |
| Store 3 | 2× | 1× | 1× | 1.26× ✓ | Best value |
That matches what you would say looking at the shelves: Store 3 is cheapest or tied on two of the three items and double on one; Store 2 is cheapest on one and double on the other two. It comes out the same in any units, so it is a fact about the stores.
Two details are worth knowing. The multipliers are averaged by multiplying rather than adding, the way percentages have to be, so that how far ahead the cheapest store is on any one item doesn’t distort how the other stores compare with each other. And “about 26% more expensive” on your plan means exactly this: item for item, that store’s unit prices run about 26% above the best-value store’s — here, 1.59 against Store 3’s 1.26. It is not what your cart costs there; the estimated cart is that, and it is shown beside it.
“6% more for your money” on a two-store plan is the same kind of number: item for item, the one-store plan’s unit prices run about 6% above the two-store plan’s, so each dollar buys about 6% more. It is not what the cart costs — a two-store plan that picks bigger packs can cost more at the register while getting more for each dollar.
What ZipAisle never does
These are the boundaries of what you are asking for, set out in full in Terms 3.3. ZipAisle will not:
- log in to any account of yours at any retailer, or use any credential of yours anywhere;
- buy anything, add anything to a cart, or place, change or cancel any order;
- enter into any contract, subscription or membership in your name;
- give any retailer your name, email address, phone number or payment details;
- reach member-only or loyalty pricing, or anything behind a login, paywall or subscription;
- negotiate for you, or hold itself out to a store as having authority beyond reading public pages;
- act for you in anything other than gathering the prices you asked for.
If you ever see it doing any of these, it is malfunctioning. Please tell us at hello@zipaisle.com.
The prices are read by software, and software can be wrong
Everything ZipAisle shows you is its best automated reading of what a store was publicly displaying at a particular moment. It is an estimate to help you choose where to shop — not an offer, not a quote, and not a price you are entitled to.
Concretely, and in more detail in Terms 5:
- It can match the wrong product. Organic when you meant conventional, a two-pack when you meant one, frozen when you meant fresh.
- A price can be up to about a week old. When ZipAisle reads a price it holds that reading until the start of the following week, and may show it to another shopper asking about the same item at the same store rather than visiting the retailer again. That means far fewer visits to a store’s site — and it means a price you see may have been read on an earlier day, for someone else or before anyone asked. Every price on your plan says when it was read.
- It leaves things out. Sales tax, bottle deposits, bag and delivery fees, loyalty and member pricing, digital coupons and in-store promotions are not reflected.
- It does not cover every store, and it does not claim that the cheapest thing it found is the cheapest thing that exists.
The price at the shelf and at the register is the real price. Treat a plan as a starting point for your trip, not as a bill.
If you are a retailer
ZipAisle visits your public search pages on behalf of an individual shopper who asked for a specific list — at the moment they asked, or, for the staples a shopper keeps on a watch list, once a week on Wednesday morning, as that shopper has instructed. It does not sign in to your site, does not use anyone’s account with you, does not reach member pricing, and does not seek out anything you have placed behind a login or a paywall. It reads the page and leaves. It does not resell your prices or build a database from them, and it holds a reading for up to a week precisely so that we visit you less than one-visit-per-shopper would require.
ZipAisle also reads, from time to time, the prices of a short list of everyday staples at the stores in the areas it covers, so that a shopper’s first check there is fast. No individual shopper asked for those visits: they are made for ZipAisle’s shoppers generally. Each is made the way a shopper’s run is — the same public search, one at a time on your site — though across all the areas it covers, one reading can take several days.
Every visit made for an individual shopper is made for one who was signed in to ZipAisle when they gave the instruction. That is worth saying to you rather than only to them: it means a run is attributable to one identified person rather than to an anonymous browser, that the limits we set on how much each person may ask for follow the person rather than a browser or a network address, and that if a request ever needs acting on we can find who made it. The account is with us, and nothing about it reaches you.
Those errands reach your site from our own servers, with one exception. Two sites, qfc.com and fredmeyer.com, refuse the requests our servers send them, so at those two sites only, ZipAisle carries each errand through a small pool of US internet addresses on consumer broadband networks that we rent from a network provider; the staples reads described above take the same route. The addresses belong to the provider and are shared with its other customers. They are not the shopper’s, and our visits do not identify themselves as ZipAisle, so an address alone will not tell you a visit was ours: write to us with the time of a visit and we will check it against our records of the runs we made. If one of those sites refuses a page through one of the addresses, we ask that site for nothing else in that run; a later run may ask again, from the same address or another. The provider carries an encrypted connection between our servers and the site: it can see which site, when and how much data, but not the pages or what was searched for, and it is given nothing about the shopper. A request under Terms 4.3, below, stops these visits as it stops all others.
If you would rather we did not, tell us and we will stop. Write to hello@zipaisle.com from an address at your domain, naming the domains you want excluded. We will remove them from the stores we cover, and shoppers will simply stop seeing that store in their results. We do not require a reason, we will not ask you to justify it, and there is nothing to opt back into afterwards unless you ask us to.
This is Terms 4.3, and it is a promise a retailer can rely on directly.
A written request is how you tell us to stop: ZipAisle does not read robots.txt files or similar robots directives. Where your site refuses a page we ask for, your store shows in results as not having answered. A page that comes back refused or empty may be loaded up to twice more, a few seconds apart, from the same address, before we treat it as refused; we do not ask for it from a different address in the same run.
We are not affiliated with, endorsed by, or connected to any retailer whose prices appear here. Store and product names are used only to identify where a price came from.
ZipAisle is owned and operated by Vykka LLC, a Washington limited liability company. Questions, from shoppers and retailers alike: hello@zipaisle.com. The full terms are in the Terms of Use, and what we do with your information is in the Privacy Policy.