Online Price Comparison of Swiggy and Zomato resaurants
Online Competitor Price Comparison is a Chrome extension that reads dish prices straight off Zomato and Swiggy restaurant pages, remembers them, and shows you exactly where your menu sits against the competition — dish by dish, in rupees and in percent.
It is not published on the Chrome Web Store. You install it unpacked from a zip, which takes about a minute. This guide covers installation, first run, how to read the dashboard, and what to do when a page refuses to scrape.
What you get
One-click scraping of any Zomato or Swiggy restaurant menu.
One saved restaurant as yours, and as many competitors as you want.
Fuzzy dish matching, so "Paneer Butter Masala" lines up with "Paneer Butter Masala (Full)".
A dashboard with your overall price position, per-competitor bars, biggest gaps, and a full comparison table.
Excel-ready CSV export.
Everything stays in your browser. There is no server, no account, and no network call the extension makes on its own.
Step 1 — Download and unzip
Grab the build:
Unzip it somewhere permanent — ~/extensions/price-comparison/, Documents, anywhere you will not clean out next week. Chrome loads an unpacked extension by folder path, so if you delete or move the folder, the extension disappears from Chrome on the next restart.
Do not point Chrome at the .zip itself. It has to be an unzipped folder, and the folder you pick must be the one containing manifest.json directly:
price-comparison/
├── manifest.json ← this must sit at the top level of the folder you select
├── popup.html
├── popup.js
├── scrape.js
├── compare.html
├── compare.js
├── lib.js
├── theme.css
├── fonts/
└── icons/A common slip: some unzip tools create a wrapper folder, so you end up with price-comparison/price-comparison/manifest.json. Select the inner folder.
Step 2 — Load it into Chrome
Open
chrome://extensionsin the address bar. (The Chrome menu route is ⋮ → Extensions → Manage Extensions.)Turn on Developer mode — the toggle in the top-right corner of that page.
Three buttons appear on the left. Click Load unpacked.
Select the unzipped folder (the one with
manifest.jsonin it) and confirm.The card appears: Online Competitor Price Comparison 1.0.0.
Pin it so it is one click away: click the puzzle-piece icon in the toolbar, find the extension in the list, and click the pin.
The same steps work in Edge (edge://extensions), Brave (brave://extensions) and any other Chromium browser.
What it asks for
The manifest requests only three permissions — storage, scripting and activeTab — plus host access limited to *.zomato.com and *.swiggy.com. It cannot read any other site. There is no background service worker, so nothing runs until you actually open the popup.
Step 3 Save your own restaurant
Open your restaurant's own page on Zomato or Swiggy — the menu page, the one customers order from — and click the extension icon.
The popup reads the page immediately. Within a second you should see the restaurant name and a dish count, and the pill in the top-right will say zomato or swiggy.

The popup after a page has been read: restaurant name, dish count, and everything saved so far. Sample data shown.
Click ★ My restaurant. That menu is now saved as your baseline. There is exactly one "mine" — saving another replaces it, and the button relabels itself to ★ Replace mine once one is set.
Step 4 — Add competitors
Now go competitor by competitor. Open each rival's Zomato or Swiggy page, click the extension icon, and hit + Competitor.
There is no limit. Five to eight nearby restaurants in your cuisine and price band gives a market average worth acting on. You can mix platforms freely — some competitors from Zomato, some from Swiggy — and the same restaurant on both platforms counts as two entries, which is actually useful if their prices differ across apps.
Everything saved shows up in the popup list, with a dish count and a coloured dot for the platform (red for Zomato, orange for Swiggy). The ✕ on any row removes it.
Step 5 — Open the comparison
Click Open price comparison →. A full tab opens with the dashboard. It needs your restaurant plus at least one competitor; until both exist it just tells you which one is missing.

The dashboard: summary tiles, one bar per competitor, and the biggest gaps in both directions. Sample data shown.
The four tiles
Overall position — the median gap between your prices and the market, across every dish that matched. This is the headline number. "4% below" means that on a typical dish you are 4% cheaper than the competitors you have loaded.
Cheaper than market — how many of your matched dishes undercut the average.
Pricier than market — how many sit above it.
Same basket — what your matched dishes cost as one order, next to what the same basket costs at market average. The most concrete number on the page for a customer-facing conversation.
Where I sit against each competitor
One bar per competitor, showing the median gap between your prices and theirs. Green and to the left means you are cheaper; red and to the right means you are pricier. The bar saturates at ±50%, so past that point read the number rather than the bar length.
Each row has a checkbox. Untick a competitor and everything on the page — tiles, gaps, table, export — recalculates without them. Useful for asking "where do I sit against just the two places on my street?"
Biggest gaps
Two lists of five: your most overpriced dishes versus market, and your most underpriced. Underpriced dishes are usually the faster money — raising a dish that sits 14% under the market rarely costs you orders.
The table
Every dish of yours, your price, the market average, the gap, then one column per competitor.

Every dish, every competitor, with the matched dish name and confidence under each price. Sample data shown.
Each competitor cell shows their price, the percentage gap, and — in small grey text — which dish it matched and how confident that match was. Always glance at that line before acting on a number. A 100% match is the same dish; a 62% match may be a different portion size.
Above the table: a search box, a sort selector (most overpriced, most underpriced, highest price, dish name), and an Only matched dishes toggle. Untick it to see the dishes nobody else sells — your genuinely unique items, which are the ones you can price freely.
Thanks to digital eatery team for building and making this available for everyone
Match strictness — the one setting worth understanding
Dish names never line up exactly across restaurants. The extension normalises each name (lowercases it, strips punctuation, drops filler words like with, and, half, plate, combo, gm) and then scores name pairs two ways — character bigram overlap and word overlap — keeping whichever score is kinder. The slider sets how high that score must be to count as the same dish:
Low (0.35) — catches loose renames, at the cost of more false pairs.
Medium (0.50) — balanced.
High (0.65) — the default. Only clearly the same dish.
Extreme (0.80) — near-identical names only.
Practical approach: start on High. If too few dishes matched, drop to Medium and check the match lines in the table. If you see nonsense pairs — a starter matched to a dessert — go back up.
Exporting to Excel
The ⬇ Excel button writes a CSV of whatever the table currently shows — same filter, same sort, same included competitors. Per competitor you get four columns: their price, the gap percentage, the dish name it matched, and the match confidence. The file is UTF-8 with a byte-order mark, so the ₹ symbol survives opening it in Excel on Windows, and it lands as price-comparison-<your-restaurant>-<date>.csv.
Troubleshooting
"No dishes found — scroll the menu once, then reopen."
The page hadn't rendered its menu yet when the popup read it. Scroll down the menu once so the dishes load, then click the extension icon again. This is the single most common issue and it fixes itself on the second try.
"Not a supported page"
You are not on a zomato.com or swiggy.com URL. Search results, city listing pages and the homepage will not scrape — you need an individual restaurant's menu page.
Prices look 100× too high
Swiggy quotes some prices in paise (25900 = ₹259). The extension detects this per menu and divides when it is confident, but a small or unusual menu can slip through. Sanity-check a couple of prices against the page before trusting a comparison.
A dish matched to the wrong dish
Raise the match strictness. If a specific pair is still wrong at Extreme, the two names are genuinely near-identical and it is worth reading the match line in the table rather than the number.
The extension vanished after restarting Chrome
The folder was moved, renamed, or deleted. Unzip it again to a permanent location and repeat Load unpacked.
Updating to a newer build
Download the new zip, replace the contents of the same folder, then click the Reload arrow on the extension card in chrome://extensions. Your saved restaurants survive the reload.
What it does not do
It does not refresh on its own. Prices are a snapshot from when you scraped — re-scrape competitors every few weeks to keep the picture honest.
It compares list prices only. Platform discounts, "20% off" banners and delivery fees are not in the numbers.
It ignores add-ons and modifiers, deliberately — extra raita and dips would drown out the actual menu.
Only Zomato and Swiggy are supported.
Where your data lives
In chrome.storage.local, in your browser, on your machine. Nothing is uploaded, and the dashboard is a local HTML page inside the extension. Removing the extension from chrome://extensions deletes the saved menus with it.
[ END_OF_POST ]