
Israeli Grocery Price Intelligence
- 54 installs
- 4 repo stars
- Updated July 31, 2026
- skills-il/food-and-dining
Compare Israeli supermarket XML price feeds and optimize shopping or ingredient costs without building scrapers from scratch.
About
Israeli Grocery Price Intelligence is an agent skill for solo builders and indie operators in Israel who need real supermarket numbers instead of guesswork. It teaches agents how to work with chain-specific XML feeds published under Israel’s price-transparency rules, including the trickier Cerberus / PublishedPrices path with CSRF-aware authentication. You can compare Shufersal, Carrefour, and related networks, optimize a shopping list across chains, watch how items move over time, and roll ingredient costs into food-business estimates. Triggers include phrases like supermarket prices Israel, Shufersal vs Rami Levy, shopping list optimizer, and Hebrew queries about השוואת מחירי סופר. The skill explicitly excludes Israeli restaurant operations tooling and non-food retail pricing so agents route to the right sibling skills.
- Pulls mandatory Price Transparency Law XML from Shufersal Direct, Carrefour Israel Direct, and Cerberus / PublishedPrice
- Documents Cerberus login flow including CSRF handling for authenticated feed access
- Models PromoFull promos with club-membership conditions for accurate shelf vs promo pricing
- Cross-chain price comparison, shopping-cart optimization, and price-trend tracking
- Restaurant ingredient cost math from live grocery prices (not full restaurant ops)
Israeli Grocery Price Intelligence by the numbers
- 54 all-time installs (skills.sh)
- Ranked #1,053 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Aug 1, 2026 (Skillselion catalog sync)
npx skills add https://github.com/skills-il/food-and-dining --skill israeli-grocery-price-intelligenceAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 54 |
|---|---|
| repo stars | ★ 4 |
| Security audit | 2 / 3 scanners passed |
| Last updated | July 31, 2026 |
| Repository | skills-il/food-and-dining ↗ |
What it does
Compare Israeli supermarket XML price feeds and optimize shopping or ingredient costs without building scrapers from scratch.
Files
Israeli Grocery Price Intelligence
Instructions
Fastest path for a non-developer: ready-made comparison apps
If the user just wants to know where a product or basket is cheapest (and is not building an automated pipeline), point them at the consumer price-comparison services that already parse these feeds, no code required:
- CHP (https://chp.co.il), the most widely used Israeli grocery price-comparison site, compares a full basket across nearby branches.
- Pricez (https://www.pricez.co.il) and Savy (https://www.savy.co.il), additional consumer comparison apps.
- The official Ministry of Economy list of approved price-comparison apps (https://www.gov.il/he/pages/cpfta_apps), the authoritative directory of services vetted under the price-transparency law.
Use the raw-feed / MCP path below when the user needs automation, a custom shopping-list optimizer, trend tracking, or restaurant cost analysis that the consumer apps don't offer.
Preferred (for automation): Use the Supermarket Prices MCP Server
If the user has the supermarket-prices MCP server installed, use it instead of manually fetching XML feeds. The MCP handles authentication, CSRF tokens, SSL issues, and platform quirks automatically.
Install instructions: https://agentskills.co.il/he/mcp/supermarket-prices
Available MCP tools:
list_chains-- list all ~35 chains with data source info (web / publishprice / FTP)search_products-- search by product name or barcodecompare_prices-- cross-chain price comparison, sorted cheapest firstget_promotions-- current sales and promotions per chainget_store_data-- store locations, filterable by cityget_chain_files-- browse raw XML price filesget_xml_schema_info-- reference docs for the XML schema and fields
If the MCP is available, skip Steps 1-2 and use MCP tools directly for Steps 3-6. If the MCP is not installed, fall back to the manual XML feed approach below.
Step 1: Access Supermarket XML Feeds (Manual Fallback)
Under the Promotion of Competition in the Food and Pharma Sector Law (חוק קידום התחרות בענפי המזון והפארם, 2014, in force since 2015), Israeli supermarket and pharmacy chains with 3+ stores must publish product prices as XML files. The "Pharma" in the law name is why Super-Pharm and Good Pharm publish too, but pharmacy feeds cover drugstore SKUs (toiletries, OTC, baby food) only, not fresh produce or dairy.
- Available data files per chain (filename prefixes per the government spec):
- PriceFull -- full snapshot of the product catalog with prices
- Price -- delta updates between full snapshots
- PromoFull + Promo -- full snapshot and deltas of current sales and promotions
- StoresFull + Stores -- store locations and details
- File naming format:
Price{Full}<ChainId>-<StoreId>-<yyyyMMddHHmm>.xml.gzwhere ChainId is the 13-digit Israeli EAN prefix and the timestamp is the file generation moment in Israel time - Full snapshots typically refreshed daily (overnight, 01:00-05:00 IL time); delta files may be pushed several times per day
- See
references/chain-feeds.mdfor per-chain endpoints, access methods, and Cerberus authentication
Chains publish through three platforms (not individual domains):
| Platform | URL | Chains |
|---|---|---|
| Shufersal Direct | https://prices.shufersal.co.il | Shufersal |
| Carrefour Israel Direct | https://prices.carrefour.co.il | Carrefour Israel (operates Carrefour, Mega, and Yeinot Bitan branded stores under one Electra franchise) |
| Cerberus (PublishedPrices) | https://url.publishedprices.co.il/login | Rami Levy, Yochananof, Victory, Osher Ad, Tiv Taam, Hazi Hinam, Mega (legacy feed), Dor Alon, Super-Pharm, Good Pharm, and ~20 more smaller chains. Total ~30 chains across this platform |
The previously separate "Nibit (Matrix)" platform at matrixcatalog.co.il is no longer reachable (the host times out as of 2026). Victory and other chains formerly published there now publish through the Cerberus platform.
Cerberus requires real authentication, not just a URL fetch. A GET on the file directory without an active session returns the login HTML, not data. The flow is: GET /login → parse the <meta name="csrftoken"> value AND keep the response cookie → POST /login with username=<chain-code>, password=<password-or-empty>, csrftoken=<value> → reuse the cookie for /file/json/dir to list files and /file/d/<filename> to download. See references/chain-feeds.md for the full flow and per-chain credentials.
Step 2: Parse Chain-Specific Data Formats
Each chain publishes in a slightly different XML schema. Major chains:
| Chain | Hebrew Name | Platform | Notes |
|---|---|---|---|
| Shufersal | שופרסל | Direct (prices.shufersal.co.il) | Largest chain (~400 stores across Shufersal Deal, Sheli, Yesh, and Express banners), most structured data |
| Rami Levy | רמי לוי | Cerberus | Known for low prices, 50+ stores |
| Yochananof | יוחננוף | Cerberus | Central Israel focus |
| Victory | ויקטורי | Cerberus | Independently owned (Ravid family, publicly traded VCTR.TA), 60+ stores; completely separate from Carrefour Israel. Since Aug 2025 it operates several banners (Victory, Victory Local, Victory City, Victory Plus) plus Victory Online, which can carry different prices, treat each banner as a distinct store when matching and comparing |
| Carrefour Israel | קרפור ישראל | Direct (prices.carrefour.co.il) | Electra Consumer Products franchise; operates Carrefour, Mega, and Yeinot Bitan branded stores in parallel (not all stores converted to Carrefour) |
| Osher Ad | אושר עד | Cerberus (username: osherad, no password) | Discount chain, 20+ large-format stores |
| Tiv Taam | טיב טעם | Cerberus | Non-kosher items available; merged with East & West Import & Marketing Dec 2024 |
Use scripts/parse_price_xml.py to parse feeds into normalized JSON format. Key fields: item_code, item_name, manufacturer, price, unit_price, quantity, unit_of_measure, is_weighted, update_date
Weighted-item math: when bIsWeighted=1, ItemPrice is the price per kilogram, NOT the price of the package on the shelf. Quantity may be empty or fractional. Cross-chain comparisons must compare per-kg unit prices for these items, otherwise a 250g pack at 12 NIS/kg (= 3 NIS at the till) looks more expensive than a 1kg pack at 11 NIS/kg.
Step 3: Cross-Chain Price Comparison
Match products across chains by:
- Barcode (most reliable, Israeli standard barcode prefix 729)
- Item name + manufacturer (fuzzy matching for naming differences)
- Item code (chain-specific, less reliable for cross-chain)
Generate comparison table for specific products:
- Calculate: cheapest chain, average price, price spread (max-min)
- Handle store-specific pricing (same chain may have different prices by location)
Step 4: Optimize Shopping Lists
Given a shopping list, find the cheapest option:
- Single-store: cheapest store for entire basket
- Multi-store: optimal split across 2-3 nearby stores (minimize cost + travel)
Factor in current promotions from the PromoFull feed. Each promotion has a RewardType that controls how the discount applies (1 = flat discounted price, 2 = fixed price for N units, 3 = Nth-item discount, etc.), plus MinQty / MaxQty thresholds, an optional MinPurchaseAmnt, and a ClubId. A non-zero ClubId means the discount applies only to chain club members (Shufersal Sofash, Rami Levy club, etc.) and should NOT be applied to a guest basket. Handle substitutions: suggest cheaper alternatives for similar products.
Calculate total basket cost per scenario. Consider user preferences: kosher requirements, organic options, brand preferences.
Step 5: Track Price Trends
Monitor prices over time for tracked products:
- Alert on significant changes (>10% increase or decrease)
- Weekly price trend report for tracked categories
- Track inflation patterns by food category
- Compare against CPI food component data
Step 6: Restaurant/Catering Ingredient Cost Analysis
For restaurant owners: calculate ingredient costs from supermarket data.
- Input: recipe with ingredients and quantities
- Output: cost per serving based on cheapest available prices
- Track ingredient cost trends over time
- Alert when key ingredient prices spike
- Generate monthly cost report for menu pricing decisions
Examples
Example 1: Compare Milk Prices Across Chains
User says: "What's the cheapest place to buy Tnuva 3% milk 1 liter?" Actions: 1. Query PricesFull feeds from all chains for item (barcode matching) 2. Compile prices per chain and store location 3. Apply any active promotions from PricesPromotions 4. Generate comparison table sorted by price Result: Cheapest: Rami Levy at 5.90 NIS, Osher Ad at 6.10 NIS, Shufersal at 6.50 NIS (but 2-for-10 promo active). With Shufersal promo, buying 2 = 5.00 NIS each. Recommendation: Shufersal if buying 2+, Rami Levy for single.
Example 2: Optimize Weekly Shopping List
User says: "Here's my shopping list for the week, find me the cheapest option near Ramat Gan" Actions: 1. Parse shopping list (15 items) 2. Find prices at chains with stores near Ramat Gan 3. Calculate: single-store (Rami Levy: 285 NIS, Shufersal: 310 NIS, Yochananof: 295 NIS) 4. Calculate: optimal 2-store split (Rami Levy + Shufersal with promos: 262 NIS) 5. Suggest 3 substitutions saving additional 18 NIS Result: Best single-store: Rami Levy at 285 NIS. Optimal split: Rami Levy (10 items, 195 NIS) + Shufersal (5 items with promos, 67 NIS) = 262 NIS. Total savings vs single-store: 23 NIS.
Example 3: Track Ingredient Costs for Restaurant Menu
User says: "Track the cost of ingredients for my shakshuka dish, tomatoes, eggs, onions, peppers, spices" Actions: 1. Identify matching products in price feeds (fresh tomatoes, eggs size L, yellow onions, bell peppers, cumin, paprika) 2. Find cheapest per ingredient across chains 3. Calculate cost per serving (2 eggs, 3 tomatoes, 1 onion, 1 pepper, spices) 4. Set up weekly price monitoring for these ingredients 5. Generate baseline cost report Result: Current cost per serving: 8.40 NIS (cheapest chain combination). Eggs are 32% of cost. Price alert configured, you'll be notified if any ingredient price changes >10%.
Bundled Resources
References
references/chain-feeds.md-- Per-chain feed endpoints organized by platform (Shufersal Direct, Carrefour Direct, Cerberus / PublishedPrices). Includes XML schema documentation, update schedules, and known format variations. Consult when accessing chain data in Steps 1-2.
Scripts
scripts/parse_price_xml.py-- Parses Israeli supermarket XML price feeds into normalized JSON. Supports Shufersal, Rami Levy, and other chain formats. Handles gzipped XML files and character encoding. Run:python scripts/parse_price_xml.py --help
Recommended MCP Servers
| MCP | What It Adds |
|---|---|
| Israeli Supermarket Prices | Wraps the Price Transparency Law feeds across ~35 chains. Handles Shufersal direct, Carrefour publishprice, and Cerberus FTP transports automatically. Use it instead of the manual XML steps when available. |
| Shufersal MCP | Adds cart automation on shufersal.co.il (search, add to cart, recipe-to-cart). Complements price intelligence with the actual checkout flow. |
Gotchas
- Most chains do NOT have their own
prices.X.co.ildomain. Rami Levy, Yochananof, Victory, Osher Ad, Tiv Taam, and ~20 other chains all publish through the Cerberus platform aturl.publishedprices.co.il. Agents that fabricate per-chain URLs will get connection errors. Always consultreferences/chain-feeds.mdfor verified endpoints. - Cerberus is NOT a static file server. A naive
curl https://url.publishedprices.co.il/file/d/PriceFull...xml.gzreturns the login page (HTTP 200 with HTML, not the file). You must first GET/login, parse thecsrftokenfrom the<meta name="csrftoken">tag, keep the response cookie, then POST/loginwith the chain username, an empty password if the chain is public, and the csrftoken. Only then do file listing and download endpoints return data. - The legacy "Nibit (Matrix)" platform at
matrixcatalog.co.il/NBCompetitionRegulations.aspxis no longer reachable as of 2026 (curl times out after 10s). Victory and other chains that previously published there now use Cerberus. Skills or agents still pointing at matrixcatalog.co.il will fail. - Prices in Israel include VAT (18%) by default, unlike US prices which are pre-tax. The 18% rate has been in effect since 1 Jan 2025 (raised from 17%); a proposed Jan 2026 increase to 19% was rejected in the Knesset budget vote. Agents trained before 2025 may "correct" 18% back to 17%, they should not. Agents may also perform cost comparisons that double-count or ignore VAT depending on their training data assumptions.
- Israeli product barcodes use the 729 country prefix, but some imported products retain their original country barcode. Agents may fail cross-chain matching when the same product has different barcode formats across chains. Store-brand items often use internal codes starting with
2and cannot be cross-matched at all. - Promotions with
ClubId != 0are restricted to chain club members (Shufersal Sofash, Rami Levy club, Yochananof Club, etc.) and should NOT be applied to a generic basket-cost estimate. Many naive agents ignoreClubIdand report inflated savings. - "Mega" and "Yeinot Bitan" did not fully rebrand to Carrefour. The Electra Consumer Products franchise (April 2022, 20-year term) operates all three banners in parallel; some stores were converted to Carrefour, others retained the Mega or Yeinot Bitan banner. A legacy "Mega" feed still exists on Cerberus alongside the Carrefour Direct portal. "Victory" is a completely separate, independently owned company (Ravid family, VCTR.TA). Agents may still confuse these as related entities. Since Aug 2025 Victory runs multiple banners (Victory, Victory Local, Victory City, Victory Plus, and Victory Online) that can price the same SKU differently, so a single "Victory" price is no longer safe to assume, key the comparison on the specific banner/store, not on "Victory" as one entity.
- Pharmacy chains (Super-Pharm, Good Pharm) ARE covered by the law and publish through Cerberus, but their SKU range is drugstore items (toiletries, OTC, baby food) without fresh produce, dairy, or meat. Don't try to price-compare milk at Super-Pharm.
- Promotions in Israeli supermarkets often have conditions agents miss: "buy 2 get discount" (2 b-X shekel) is
RewardType=2withMinQty=2; "buy 3 pay for 2" isRewardType=3; some haveMinPurchaseAmntthresholds; regional promotions apply only to specific store IDs.
Reference Links
| Source | URL | What to Check |
|---|---|---|
| Wikipedia, Promotion of Competition in Food and Pharma Law (Hebrew) | https://he.wikipedia.org/wiki/חוק_קידום_התחרות_בענפי_המזון_והפארם | Plain-language summary, legislative history, recent amendments |
| Wikipedia, List of supermarket chains in Israel | https://en.wikipedia.org/wiki/List_of_supermarket_chains_in_Israel | Current chain ownership, store counts, brand consolidations |
| Shufersal Direct Portal | https://prices.shufersal.co.il | Live PriceFull/PricesPromotions/Stores feeds for Shufersal |
| Cerberus PublishedPrices Portal | https://url.publishedprices.co.il/login | Live feeds for Rami Levy, Yochananof, Victory, Tiv Taam, Osher Ad, Mega, and ~25 other chains |
| Carrefour Israel Direct Portal | https://prices.carrefour.co.il | Live feeds for Carrefour / Mega / Yeinot Bitan stores |
| OpenIsraeliSupermarkets, community parsers | https://github.com/OpenIsraeliSupermarkets | Reference Python scrapers and parsers used by the community. The active library is il-supermarket-scraper (PyPI), which handles Cerberus CSRF login, chain-code lookup, file listing, and decompression |
| Wikipedia, Taxation in Israel | https://en.wikipedia.org/wiki/Taxation_in_Israel | Current Israeli VAT rate (18% since 1 Jan 2025), includes historical rate changes |
Troubleshooting
Error: "XML feed download failed"
Cause: Chain's price transparency server is temporarily down or URL has changed. Solution: Check if the chain updated their feed URL (this happens occasionally). The Cerberus platform occasionally has SSL certificate issues; try HTTP if HTTPS fails. Feeds are typically most reliable in the morning hours (updated overnight). See references/chain-feeds.md for current URLs.
Error: "Product not found in cross-chain comparison"
Cause: Product naming or barcode differs across chains. Solution: Try matching by barcode first (most reliable). If barcode match fails, use fuzzy name matching with manufacturer. Some chains use different product names for the same item (e.g., "חלב תנובה 3%" vs "חלב 3% תנובה").
Error: "Price data outdated"
Cause: Using cached data from a previous day or the chain hasn't updated yet. Solution: Check the UpdateDate field in the XML feed. Most chains update overnight. If data is >24 hours old, force a fresh download. Promotions feed updates may lag behind PricesFull updates.
Error: "Shopping list optimization slow"
Cause: Comparing all items across all chains and all stores is computationally expensive. Solution: Limit comparison to chains with stores within a configurable radius (default: 5 km). Pre-filter by chains the user actually shops at. Use cached price data instead of fetching fresh for every optimization.
Error: "Cerberus platform returns empty page or login prompt"
Cause: Cerberus requires an authenticated session, not a one-shot URL fetch. The most common failure mode is omitting the CSRF token or the session cookie. Solution: Follow the full Cerberus auth flow documented in references/chain-feeds.md: GET /login, extract the csrftoken <meta> value AND save the cookie from the response, POST /login with username=<chain-code>, password= (empty for public chains), and csrftoken=<value>, reuse the cookie for /file/json/dir and /file/d/<filename>. Add a ≥1s delay between requests and use a realistic User-Agent header, Cerberus throttles aggressive listing.
{
"schemaVersion": "1.0",
"skill": "israeli-grocery-price-intelligence",
"generated_at": "2026-06-16T22:00:00Z",
"claims": [
{
"claim_id": "price-transparency-law",
"claim": "The Promotion of Competition in the Food and Pharma Sector Law (חוק קידום התחרות בענפי המזון והפארם, 2014) requires chains with 3+ stores to publish machine-readable price XML; in force since 2015, pharma added in the 2024 rename",
"source_url": "https://he.wikipedia.org/wiki/חוק_קידום_התחרות_בענפי_המזון_והפארם",
"raw_snippet": "חוק קידום התחרות בענפי המזון והפארם, 2014; חובת פרסום מחירים לרשתות עם 3 סניפים ומעלה; בתוקף משנת 2015",
"fetched_at": "2026-06-16T21:55:00Z",
"appears_in": ["SKILL.md", "SKILL_HE.md"]
},
{
"claim_id": "vat-rate-2025",
"claim": "Israeli VAT is 18% since 1 Jan 2025 (raised from 17%); a proposed 19% rise for Jan 2026 was rejected and VAT stays 18% for 2026",
"source_url": "https://he.wikipedia.org/wiki/מס_ערך_מוסף",
"raw_snippet": "שיעור המע\"מ בישראל הוא 18% מ-1 בינואר 2025 (הועלה מ-17%); הצעה להעלות ל-19% בינואר 2026 נדחתה",
"fetched_at": "2026-06-16T21:55:00Z",
"appears_in": ["SKILL.md", "SKILL_HE.md"]
},
{
"claim_id": "barcode-prefix-729",
"claim": "Israeli product barcodes use the 729 GS1 country prefix; store-brand items often use internal codes starting with 2",
"source_url": "https://en.wikipedia.org/wiki/List_of_GS1_country_codes",
"raw_snippet": "729 is the GS1 prefix for Israel",
"fetched_at": "2026-06-16T21:55:00Z",
"appears_in": ["SKILL.md", "SKILL_HE.md"]
},
{
"claim_id": "publishing-platforms-and-consumer-apps",
"claim": "Chains publish through prices.shufersal.co.il, prices.carrefour.co.il and url.publishedprices.co.il (Cerberus); the legacy matrixcatalog.co.il is dead; consumer comparison apps and the official approved-apps list are listed",
"source_url": "https://www.gov.il/he/pages/cpfta_apps",
"raw_snippet": "Feed and consumer sources: https://prices.shufersal.co.il https://prices.carrefour.co.il https://url.publishedprices.co.il/login https://url.publishedprices.co.il/login/user https://url.publishedprices.co.il/file/json/dir https://url.publishedprices.co.il/file/d/PriceFull...xml.gz https://url.publishedprices.co.il/file/d/PriceFull7290058140886-001-202605120300.gz https://url.publishedprices.co.il/file/d/<filename> Cerberus endpoints /login /login/user /file/json/dir /file/d/<filename> https://chp.co.il https://www.pricez.co.il https://www.savy.co.il https://www.gov.il/he/pages/cpfta_apps https://github.com/OpenIsraeliSupermarkets https://he.wikipedia.org/wiki/חוק_קידום_התחרות_בענפי_המזון_והפארם https://en.wikipedia.org/wiki/List_of_supermarket_chains_in_Israel https://he.wikipedia.org/wiki/מס_ערך_מוסף https://en.wikipedia.org/wiki/Taxation_in_Israel http://online2.carrefour.co.il https://publishprice.mega.co.il",
"fetched_at": "2026-06-16T21:55:00Z",
"appears_in": ["SKILL.md", "SKILL_HE.md", "references/chain-feeds.md"]
},
{
"claim_id": "chain-ownership-facts",
"claim": "Carrefour Israel is an Electra Consumer Products franchise (April 2022, 20-year) running Carrefour/Mega/Yeinot Bitan; Victory is independent (Ravid family, VCTR.TA) and since Aug 2025 runs Victory / Victory Local / Victory City / Victory Plus + Victory Online banners; Tiv Taam merged with East & West Import & Marketing Dec 2024; Osher Ad logs in to Cerberus with username osherad and no password",
"source_url": "https://en.wikipedia.org/wiki/List_of_supermarket_chains_in_Israel",
"raw_snippet": "Carrefour Israel = Electra Consumer Products franchise (2022, 20-year), banners Carrefour/Mega/Yeinot Bitan; Victory (Ravid family, VCTR.TA) independent, since August 2025 banners Victory, Victory Local, Victory City, Victory Plus and Victory Online; Tiv Taam merged with East & West Import & Marketing December 2024; Osher Ad Cerberus username osherad",
"fetched_at": "2026-06-16T21:55:00Z",
"appears_in": ["SKILL.md", "SKILL_HE.md", "references/chain-feeds.md"]
},
{
"claim_id": "promo-reward-types",
"claim": "PromoFull RewardType controls discount application (1 = flat discounted price, 2 = fixed price for N units, 3 = Nth-item discount), with MinQty/MaxQty/MinPurchaseAmnt thresholds and a ClubId (non-zero = members only)",
"source_url": "https://github.com/OpenIsraeliSupermarkets",
"raw_snippet": "RewardType 1 flat discount, 2 fixed price for N units, 3 Nth-item discount; ClubId non-zero = club members only",
"fetched_at": "2026-06-16T21:55:00Z",
"appears_in": ["SKILL.md", "SKILL_HE.md"]
},
{
"claim_id": "illustrative-example-figures",
"claim": "The Examples section uses hypothetical scenario prices and percentages (not live quoted prices) to illustrate comparison and optimization output",
"source_url": "internal-illustrative-example",
"raw_snippet": "Illustrative example figures (hypothetical): 5.90 NIS, 6.10 NIS, 6.50 NIS, 5.00 NIS, 2-for-10, 285 NIS, 310 NIS, 295 NIS, 262 NIS, 195 NIS, 67 NIS, 23 NIS, 18 NIS, 8.40 NIS; Hebrew forms 5.90 ש\"ח, 6.10 ש\"ח, 6.50 ש\"ח, 5.00 ש\"ח, 285 ש\"ח, 310 ש\"ח, 295 ש\"ח, 262 ש\"ח, 195 ש\"ח, 67 ש\"ח, 23 ש\"ח, 18 ש\"ח, 8.40 ש\"ח; cost-share 32%; price-change alert threshold 10%; weighted-item math example 12 NIS, 11 NIS, 3 NIS and 12 ש\"ח, 11 ש\"ח; product descriptor Tnuva 3% milk",
"fetched_at": "2026-06-16T21:55:00Z",
"appears_in": ["SKILL.md", "SKILL_HE.md"]
},
{
"claim_id": "community-scraper",
"claim": "The active community parser is il-supermarket-scraper (PyPI), handling Cerberus CSRF login, chain-code lookup, file listing, and decompression",
"source_url": "https://github.com/OpenIsraeliSupermarkets",
"raw_snippet": "il-supermarket-scraper PyPI library handles Cerberus CSRF login, chain-code lookup, file listing, decompression",
"fetched_at": "2026-06-16T21:55:00Z",
"appears_in": ["SKILL.md", "SKILL_HE.md"]
}
]
}
{
"author": "skills-il",
"version": "1.5.0",
"category": "food-and-dining",
"tags": {
"he": [
"מכולת",
"סופרמרקט",
"מחירים",
"השוואת-מחירים",
"שופרסל",
"רמי-לוי",
"ישראל"
],
"en": [
"grocery",
"supermarket",
"prices",
"price-comparison",
"shufersal",
"rami-levy",
"israel"
]
},
"display_name": {
"he": "השוואת מחירי סופרמרקטים בישראל",
"en": "Israeli Grocery Price Intelligence"
},
"display_description": {
"he": "גישה והשוואת מחירי סופרמרקטים בישראל דרך פידי ה-XML של חוק שקיפות מחירים. השתמשו כשהמשתמש שואל על השוואת מחירי סופר, מחירי שופרסל, מחירי רמי לוי, אופטימיזציה של רשימת קניות, עלויות מזון בישראל או מעקב מחירים. מכסה ניתוח פידים של שלוש פלטפורמות פעילות (Shufersal Direct, Carrefour Israel Direct, Cerberus / PublishedPrices), כולל זרימת ההתחברות של Cerberus עם CSRF, סכמת PromoFull עם תנאי מועדון, השוואת מחירים בין רשתות, אופטימיזציה של סל קניות, מעקב מגמות מחירים וחישוב עלויות מרכיבים למסעדות. לא להשתמש לתפעול מסעדות (ראו israeli-restaurant-ops) או למחירי קמעונאות שאינם מזון.",
"en": "Access and compare Israeli supermarket prices using mandatory Price Transparency Law data feeds. Use when user asks about \"supermarket prices Israel\", \"price comparison Shufersal\", \"Rami Levy prices\", \"grocery prices\", \"Price Transparency Law\", \"shopping list optimizer\", \"food costs Israel\", or \"השוואת מחירי סופר\". Covers chain-specific XML feed parsing, cross-chain price comparison, shopping list optimization, price trend tracking, and restaurant ingredient cost analysis. Do NOT use for restaurant operations (use israeli-restaurant-ops) or non-food retail prices."
},
"openclaw": {
"requires": {
"bins": [],
"env": []
},
"emoji": "🏷️"
},
"supported_agents": [
"claude-code",
"cursor",
"github-copilot",
"windsurf",
"opencode",
"codex",
"openclaw",
"antigravity",
"gemini-cli"
]
}
Israeli Supermarket Chain Price Feeds
Overview
Under the Promotion of Competition in the Food and Pharma Sector Law (חוק קידום התחרות בענפי המזון והפארם, 2014, in force since 2015), supermarket AND pharmacy chains with 3 or more stores must publish product prices as machine-readable XML files. The Ministry of Economy's Competition Authority publishes the file spec ("פרסום מחירים, מפרט קבצים"). Files must be UTF-8 encoded.
Feed Types
Per the government spec, every regulated chain publishes six file types: full snapshots and delta updates for prices, promotions, and stores.
| File Type | Prefix | Content | Update Frequency |
|---|---|---|---|
| Full price snapshot | PriceFull | Complete product catalog with current prices | Daily (overnight, 01:00-05:00 IL time) |
| Price delta | Price | Changes between full snapshots | Multiple times per day, on price change |
| Full promo snapshot | PromoFull | Active sales, discounts, multi-buy deals | Daily (may lag PriceFull) |
| Promo delta | Promo | Promotion changes between full snapshots | On promo change |
| Full store list | StoresFull | All stores with addresses and operating hours | Weekly or on change |
| Store delta | Stores | Store changes (openings, closures, hour updates) | On change |
File naming format (per the spec): <Prefix><ChainId>-<StoreId>-<yyyyMMddHHmm>.xml.gz where:
Prefixis one of the six above (PriceFull,Price,PromoFull,Promo,StoresFull,Stores)ChainIdis the 13-digit Israeli EAN-style chain identifier (starts with729...for Israeli chains)StoreIdis the chain-internal store number (3-4 digits typically)yyyyMMddHHmmis the file generation timestamp in Israel time (no seconds)
Example: PriceFull7290027600007-001-202605120300.xml.gz is Shufersal store 001, generated at 03:00 on 12 May 2026.
Feed Platforms
Not every chain runs its own server. Most chains publish through one of three centralized platforms:
| Platform | URL | Chains Using It |
|---|---|---|
| Shufersal Direct | https://prices.shufersal.co.il | Shufersal only |
| Carrefour Israel Direct | https://prices.carrefour.co.il | Carrefour Israel (Carrefour + Mega + Yeinot Bitan branded stores under one Electra franchise) |
| Cerberus (PublishedPrices) | https://url.publishedprices.co.il/login | Rami Levy, Yochananof, Victory, Osher Ad, Tiv Taam, Hazi Hinam, Mega (legacy feed), Dor Alon, Bareket, Keshet Taamim, Fresh Market / Super Dosh, Mahsani A'Shuk, Cofix, Super-Pharm, Good Pharm, and ~15 more smaller chains. Around 30 chains total |
Shufersal and Carrefour Israel have dedicated portals with per-store file downloads, no authentication required.
The previously separate "Nibit (Matrix Catalog)" platform at matrixcatalog.co.il/NBCompetitionRegulations.aspx is no longer reachable as of May 2026 (the host times out after 10s). Victory and other formerly-Nibit chains have migrated to Cerberus.
Cerberus Authentication Flow
Cerberus is NOT a static file server. It is a stateful web app (CerberusFTPServer) that enforces CSRF protection and session cookies. A naive curl https://url.publishedprices.co.il/file/d/<filename>.gz returns the login HTML, not the file. The flow:
Step 1, fetch the login page and capture both the CSRF token and the session cookie:
curl -sS -c cerberus_cookies.txt -A "Mozilla/5.0" \
"https://url.publishedprices.co.il/login" -o login.html
csrftoken=$(grep -oE 'name="csrftoken" content="[^"]+"' login.html | sed 's/.*content="\([^"]*\)".*/\1/')The csrftoken appears in a <meta name="csrftoken" content="..."> tag in the response HTML, NOT as a hidden form input.
Step 2, POST credentials with the csrftoken and the saved cookie jar:
curl -sS -b cerberus_cookies.txt -c cerberus_cookies.txt -A "Mozilla/5.0" \
-X POST "https://url.publishedprices.co.il/login/user" \
-d "username=<chain-code>&password=<password-or-empty>&csrftoken=$csrftoken" \
-o /dev/nullFor public chains (RamiLevi, yohananof, Carrefour, osherad, TivTaam, etc.) the password is empty.
Step 3, reuse the cookie jar for file listing and downloads:
# List available files (returns JSON)
curl -sS -b cerberus_cookies.txt "https://url.publishedprices.co.il/file/json/dir"
# Download a specific file
curl -sS -b cerberus_cookies.txt "https://url.publishedprices.co.il/file/d/PriceFull7290058140886-001-202605120300.gz" -o PriceFull.gzAnti-bot considerations:
- Use a realistic User-Agent header. The default
curlUA will get blocked. - Add a >=1 second delay between requests; Cerberus throttles aggressive listing.
- Sessions expire after ~30 minutes of inactivity. Re-login on 401 responses.
- The
il-supermarket-scraperPyPI package handles all of the above automatically.
Per-Chain Feed Access
Shufersal (שופרסל)
- Platform: Direct
- Feed Portal: https://prices.shufersal.co.il
- Access: Public, no authentication required
- Format: Gzipped XML (.xml.gz)
- File naming:
<Prefix><ChainId>-<StoreId>-<yyyyMMddHHmm>.xml.gz(ChainId for Shufersal is7290027600007) - Schema: Standard government format with extensions
- Update time: Typically 02:00-05:00 Israel time
- Notes: Largest chain in Israel by revenue; ~400 stores operated under four banners (Shufersal Deal, Sheli, Yesh, Express). Most reliable and structured feed. Good baseline for testing parsers.
Rami Levy (רמי לוי)
- Platform: Cerberus
- Feed Portal: https://url.publishedprices.co.il/login (username
RamiLevi, empty password) - Access: Public via Cerberus auth flow (see top of file); no password
- Format: Gzipped XML (.xml.gz)
- Schema: Standard format. Uses
ItemNminstead ofItemNamein some feeds. - Update time: Typically 01:00-04:00 Israel time
- Notes: Known for competitive pricing. 50+ stores nationwide.
Yochananof (יוחננוף)
- Platform: Cerberus
- Feed Portal: https://url.publishedprices.co.il/login (select "Yochananof")
- Access: Public, no authentication required
- Format: Gzipped XML (.xml.gz)
- Schema: Standard format
- Update time: Typically 03:00-06:00 Israel time
- Notes: Central Israel focus. Fewer stores means faster full downloads.
Victory (ויקטורי)
- Platform: Cerberus
- Feed Portal: https://url.publishedprices.co.il/login (username
Victory, empty password) - Access: Public via Cerberus auth flow (see top of file); no password
- Format: Gzipped XML (.xml.gz)
- Schema: Standard format
- Update time: Typically 02:00-05:00 Israel time
- Notes: Independently owned (Ravid family, publicly traded VCTR.TA). 60+ stores nationwide. Completely separate from Carrefour Israel. Migrated from the (now-defunct) Nibit / matrixcatalog.co.il platform to Cerberus.
Carrefour Israel (קרפור ישראל, formerly Mega/Yeinot Bitan)
- Platform: Direct
- Feed Portal: https://prices.carrefour.co.il
- Access: Public, no authentication required
- Format: Gzipped XML (.xml.gz)
- Schema: Standard format
- Update time: Typically 02:00-05:00 Israel time
- Notes: Operates under Carrefour, Mega, and Yeinot Bitan brands (same company, Electra Consumer Products franchise). 100+ stores. The legacy host
publishprice.mega.co.ilnow 301-redirects to the consumer shoponline2.carrefour.co.il, NOT to this price portal, so do not rely on it for feed access; usehttps://prices.carrefour.co.ildirectly.
Osher Ad (אושר עד)
- Platform: Cerberus
- Feed Portal: https://url.publishedprices.co.il/login
- Access: Username:
osherad, no password required - Format: Gzipped XML (.xml.gz)
- Schema: Standard format, minimal extensions
- Update time: Typically 01:00-03:00 Israel time
- Notes: Discount chain with 20+ large-format stores. Some products may have limited metadata.
Tiv Taam (טיב טעם)
- Platform: Cerberus
- Feed Portal: https://url.publishedprices.co.il/login (select "Tiv Taam")
- Access: Public, no authentication required
- Format: Gzipped XML (.xml.gz)
- Schema: Standard format
- Update time: Typically 02:00-05:00 Israel time
- Notes: Includes non-kosher products. Product categories may differ from kosher-only chains.
Additional Chains on Cerberus
The following smaller chains also publish via https://url.publishedprices.co.il/login:
- Hazi Hinam (חצי חינם)
- Keshet Taamim (קשת טעמים)
- Fresh Market / Super Dosh (פרש מרקט / סופר דוש)
- Dor Alon (דור אלון)
- Bareket (ברקת) -- mainly northern Israel; feed can be flaky
- Mahsani A'Shuk (מחסני השוק)
- Cofix (קופיקס) -- convenience-store SKU range only
- Super-Pharm (סופר-פארם) -- pharmacy chain, drugstore SKUs (toiletries, OTC, baby food), no fresh produce / dairy / meat
- Good Pharm (גוד פארם) -- pharmacy chain, same scope as Super-Pharm
- Mega (מגה) -- legacy feed; current Mega/Yeinot Bitan stores publish via Carrefour Israel Direct
- Plus ~15 additional smaller chains and convenience stores
The previously-listed "Mahsanei Lahav" / "Mahsanei Hashuk" Nibit endpoints are no longer active. These chains either consolidated under other brands or moved to Cerberus.
XML Schema Reference
PricesFull Schema (common fields)
<Items>
<Item>
<ItemCode>7290000000001</ItemCode>
<ItemType>0</ItemType>
<ItemName>חלב תנובה 3% שומן 1 ליטר</ItemName>
<ManufacturerName>תנובה</ManufacturerName>
<ManufactureCountry>IL</ManufactureCountry>
<ManufacturerItemDescription>חלב מפוסטר 3%</ManufacturerItemDescription>
<UnitQty>1</UnitQty>
<Quantity>1</Quantity>
<UnitOfMeasure>ליטר</UnitOfMeasure>
<bIsWeighted>0</bIsWeighted>
<QtyInPackage>1</QtyInPackage>
<ItemPrice>6.50</ItemPrice>
<UnitOfMeasurePrice>6.50</UnitOfMeasurePrice>
<AllowDiscount>1</AllowDiscount>
<ItemStatus>1</ItemStatus>
<PriceUpdateDate>2026-02-26</PriceUpdateDate>
</Item>
</Items>Key Fields
| Field | Description | Notes |
|---|---|---|
| ItemCode | Barcode / product code | Use for cross-chain matching |
| ItemName | Product name (Hebrew) | Naming varies across chains |
| ManufacturerName | Manufacturer | Useful for fuzzy matching |
| ItemPrice | Current price in NIS | VAT included |
| UnitOfMeasurePrice | Price per unit (kg/liter) | For weight/volume comparison |
| bIsWeighted | 0=fixed, 1=sold by weight | Affects price calculation |
| PriceUpdateDate | Last price update date | Check for staleness |
PromoFull Schema
PromoFull files describe active promotions. The main element is <Promotion>. Key fields:
| Field | Description | Notes |
|---|---|---|
| PromotionId | Unique promotion ID within chain | |
| PromotionDescription | Hebrew description shown to shoppers | Free text, e.g., "2 ב-10 ש"ח" |
| RewardType | How the discount applies (see table below) | Integer code |
| MinQty | Minimum quantity to trigger the promo | Often 1 or 2 |
| MaxQty | Maximum quantity at promo price | |
| DiscountedPrice | Effective price when promo applies | Per unit, NIS |
| DiscountRate | Discount percentage | If applicable |
| MinPurchaseAmnt | Minimum basket total to trigger | NIS |
| ClubId | Chain club identifier; 0 = open to all | Non-zero = club-only |
| PromotionStartDate / EndDate | Validity window | yyyy-MM-dd |
| IsWeightedPromo | 1 if promo applies to weighted items | |
<PromotionItems> | Nested list of <Item> elements with ItemCode and IsGiftItem | Which products are included |
RewardType values
| Code | Meaning |
|---|---|
| 1 | Flat discounted price (replace ItemPrice with DiscountedPrice for qualifying purchases) |
| 2 | Fixed price for N units (e.g., "2 ב-10 ש"ח") |
| 3 | Nth-item discount (e.g., "buy 3 pay for 2") |
| 5 | Discount on second purchase |
| 6 | Discount when buying from a category |
Club-only handling: when ClubId != 0, the promotion applies only to chain club members (Shufersal Sofash = 0001, Rami Levy club, etc.) and should NOT be applied to a generic basket-cost estimate.
Known Format Variations
- Field naming: Some chains (notably Rami Levy on Cerberus) use
ItemNminstead ofItemName, orManuNameinstead ofManufacturerName - Encoding: Government spec mandates UTF-8, and Shufersal/Rami Levy comply. Older Mega/Yeinot Bitan archives sometimes use Windows-1255; modern Carrefour Direct feeds are UTF-8
- Weighted items: When
bIsWeighted=1,ItemPriceis the price per kg, NOT the price of the package;Quantitymay be empty or fractional;UnitOfMeasurePriceequalsItemPrice. Parsers must apply per-kg math for weighted items, otherwise cross-chain comparisons silently misrank - Barcode formats: Israeli barcodes typically start with 729. Store-brand items use internal codes starting with
2and cannot be cross-matched between chains - Promotion overlap: A product may appear in both
PriceFull(regular price) andPromoFull(sale price). Always check the promotions feed for the effective price, and respectClubId/MinQty/MinPurchaseAmnt - Platform differences: Cerberus wraps file access in an authenticated session (see "Cerberus Authentication Flow" above). The underlying XML schema is the same government standard across Shufersal Direct, Carrefour Direct, and Cerberus, but the download method differs per platform
- Stale-file detection: CDNs occasionally serve yesterday's file. Robust pipelines check BOTH the filename timestamp AND the inner
<PriceUpdateDate>againstnow() - 36h; if both are older, force a fresh download - File sizes: A typical Shufersal
PriceFullis ~1-3 MB gzipped, 30-100 MB uncompressed per large store. A full daily snapshot across all chains and stores totals ~5-10 GB uncompressed
#!/usr/bin/env python3
"""Parse Israeli supermarket XML price feeds into normalized JSON.
Supports feeds published under the Price Transparency Law (חוק שקיפות מחירים).
Handles gzipped XML files and various chain-specific format differences.
Usage:
python parse_price_xml.py --chain shufersal --input PriceFull.xml.gz --output prices.json
python parse_price_xml.py --chain rami-levy --input PriceFull.xml --output prices.json
python parse_price_xml.py --help
"""
import argparse
import gzip
import json
import sys
import xml.etree.ElementTree as ET
from pathlib import Path
# Chain-specific field mappings to normalize different XML schemas
CHAIN_FIELD_MAP = {
"shufersal": {
"item_code": "ItemCode",
"item_name": "ItemName",
"manufacturer": "ManufacturerName",
"price": "ItemPrice",
"unit_price": "UnitOfMeasurePrice",
"quantity": "Quantity",
"unit_of_measure": "UnitOfMeasure",
"update_date": "PriceUpdateDate",
"is_weighted": "bIsWeighted",
},
"rami-levy": {
"item_code": "ItemCode",
"item_name": "ItemNm",
"manufacturer": "ManufacturerName",
"price": "ItemPrice",
"unit_price": "UnitOfMeasurePrice",
"quantity": "Quantity",
"unit_of_measure": "UnitOfMeasure",
"update_date": "PriceUpdateDate",
"is_weighted": "bIsWeighted",
},
"default": {
"item_code": "ItemCode",
"item_name": "ItemName",
"manufacturer": "ManufacturerName",
"price": "ItemPrice",
"unit_price": "UnitOfMeasurePrice",
"quantity": "Quantity",
"unit_of_measure": "UnitOfMeasure",
"update_date": "PriceUpdateDate",
"is_weighted": "bIsWeighted",
},
}
SUPPORTED_CHAINS = [
"shufersal",
"rami-levy",
"yochananof",
"victory",
"osher-ad",
"carrefour-israel",
"tiv-taam",
]
def read_xml(input_path: str) -> ET.Element:
"""Read XML from a plain or gzipped file, handling encoding issues."""
path = Path(input_path)
if not path.exists():
print(f"Error: File not found: {input_path}", file=sys.stderr)
sys.exit(1)
if path.suffix == ".gz" or path.name.endswith(".xml.gz"):
with gzip.open(path, "rb") as f:
raw = f.read()
else:
with open(path, "rb") as f:
raw = f.read()
# Try UTF-8 first, fall back to Windows-1255 (common in Israeli feeds)
for encoding in ("utf-8", "windows-1255", "iso-8859-8"):
try:
text = raw.decode(encoding)
# Strip XML declaration to avoid encoding mismatch with ET
if text.startswith("<?xml"):
text = text[text.index("?>") + 2 :]
return ET.fromstring(text)
except (UnicodeDecodeError, ET.ParseError):
continue
print("Error: Could not decode XML with any supported encoding.", file=sys.stderr)
sys.exit(1)
def get_field_map(chain: str) -> dict:
"""Get the field mapping for a specific chain."""
return CHAIN_FIELD_MAP.get(chain, CHAIN_FIELD_MAP["default"])
def extract_text(element: ET.Element, tag: str) -> str:
"""Safely extract text from an XML child element."""
child = element.find(tag)
if child is not None and child.text:
return child.text.strip()
return ""
def parse_items(root: ET.Element, chain: str) -> list[dict]:
"""Parse item elements from the XML tree into normalized dicts."""
field_map = get_field_map(chain)
items = []
# Try common wrapper elements
item_elements = root.findall(".//Item")
if not item_elements:
item_elements = root.findall(".//Product")
if not item_elements:
item_elements = root.findall(".//{*}Item")
for item_el in item_elements:
price_str = extract_text(item_el, field_map["price"])
unit_price_str = extract_text(item_el, field_map["unit_price"])
try:
price = float(price_str) if price_str else 0.0
except ValueError:
price = 0.0
try:
unit_price = float(unit_price_str) if unit_price_str else 0.0
except ValueError:
unit_price = 0.0
is_weighted = extract_text(item_el, field_map["is_weighted"]) == "1"
# Weighted items: ItemPrice is per kilogram. Surface this explicitly
# so downstream code can compare per-kg unit prices across chains
# instead of treating it as a per-package price.
price_per_kg = price if is_weighted else None
normalized = {
"item_code": extract_text(item_el, field_map["item_code"]),
"item_name": extract_text(item_el, field_map["item_name"]),
"manufacturer": extract_text(item_el, field_map["manufacturer"]),
"price": price,
"unit_price": unit_price,
"price_per_kg": price_per_kg,
"quantity": extract_text(item_el, field_map["quantity"]),
"unit_of_measure": extract_text(item_el, field_map["unit_of_measure"]),
"update_date": extract_text(item_el, field_map["update_date"]),
"is_weighted": is_weighted,
"chain": chain,
}
items.append(normalized)
return items
def main():
parser = argparse.ArgumentParser(
description="Parse Israeli supermarket XML price feeds into normalized JSON."
)
parser.add_argument(
"--chain",
required=True,
choices=SUPPORTED_CHAINS,
help="Supermarket chain name (determines XML field mapping)",
)
parser.add_argument(
"--input",
required=True,
help="Path to XML or gzipped XML price feed file",
)
parser.add_argument(
"--output",
default=None,
help="Output JSON file path (default: stdout)",
)
args = parser.parse_args()
root = read_xml(args.input)
items = parse_items(root, args.chain)
result = {
"chain": args.chain,
"item_count": len(items),
"items": items,
}
json_output = json.dumps(result, ensure_ascii=False, indent=2)
if args.output:
output_path = Path(args.output)
output_path.write_text(json_output, encoding="utf-8")
print(f"Wrote {len(items)} items to {args.output}", file=sys.stderr)
else:
print(json_output)
if __name__ == "__main__":
main()
מודיעין מחירי מכולת ישראלי
הוראות
הדרך המהירה למשתמש לא-טכני: אפליקציות השוואה מוכנות
אם המשתמש רק רוצה לדעת איפה מוצר או סל קניות הכי זול (ולא בונה צינור אוטומטי), הפנו אותו לשירותי השוואת המחירים לצרכן שכבר מנתחים את הפידים האלה, בלי קוד:
- האתר CHP (https://chp.co.il), אתר השוואת מחירי המכולת הנפוץ בישראל, משווה סל מלא בין סניפים קרובים.
- האפליקציות Pricez (https://www.pricez.co.il) ו-Savy (https://www.savy.co.il), אפליקציות השוואה נוספות לצרכן.
- הרשימה הרשמית של משרד הכלכלה לאפליקציות השוואת מחירים מאושרות (https://www.gov.il/he/pages/cpfta_apps), המדריך המוסמך לשירותים שאושרו תחת חוק שקיפות המחירים.
השתמשו בגישת הפיד הגולמי / MCP שבהמשך כשהמשתמש צריך אוטומציה, אופטימיזציית רשימת קניות מותאמת, מעקב מגמות, או ניתוח עלויות למסעדה שהאפליקציות לצרכן לא מציעות.
מומלץ (לאוטומציה): שרת MCP של מחירי סופרמרקטים
אם יש לכם את שרת ה-MCP supermarket-prices מותקן, השתמשו בו במקום לגשת ישירות לפידי XML. השרת מטפל לבד באותנטיקציה, בטוקני CSRF, בבעיות SSL ובתקלות פלטפורמה.
הוראות התקנה: https://agentskills.co.il/he/mcp/supermarket-prices
הכלים הזמינים ב-MCP:
list_chains, רשימה של כ-35 הרשתות עם פרטי מקור הנתונים (web / publishprice / FTP)search_products, חיפוש לפי שם מוצר או ברקודcompare_prices, השוואת מחירים בין רשתות, ממוין מהזול ליקרget_promotions, מבצעים פעילים לפי רשתget_store_data, מיקומי סניפים, אפשר לסנן לפי עירget_chain_files, גישה לקבצי XML גולמייםget_xml_schema_info, תיעוד עזר על סכמת ה-XML והשדות
אם ה-MCP מותקן, דלגו על שלבים 1-2 והשתמשו בכלי ה-MCP ישירות לשלבים 3-6. אם ה-MCP לא מותקן, השתמשו בגישה הידנית לפידי XML שמתוארת בהמשך.
שלב 1: גישה לפידי XML של סופרמרקטים (גישה ידנית)
לפי חוק קידום התחרות בענפי המזון והפארם (2014, בתוקף משנת 2015), רשתות סופרמרקטים ובתי מרקחת בישראל עם 3 סניפים ומעלה חייבות לפרסם את המחירים של המוצרים כקבצי XML. המילה "והפארם" בשם החוק היא הסיבה שסופר-פארם וגוד פארם מפרסמות גם הן, אבל פידי בתי המרקחת כוללים רק פריטי דראגסטור (טואלטיקה, תרופות ללא מרשם, מוצרי תינוקות) ולא ירקות, מוצרי חלב או בשר טריים.
- הקבצים שזמינים לכל רשת (תחיליות לפי המפרט הממשלתי):
- PriceFull, תמונת מצב מלאה של קטלוג המוצרים והמחירים
- Price, עדכוני דלתא בין הצילומים המלאים
- PromoFull + Promo, תמונת מצב ודלתא של המבצעים הפעילים
- StoresFull + Stores, מיקומי סניפים ופרטיהם
- פורמט שם הקובץ:
Price{Full}<ChainId>-<StoreId>-<yyyyMMddHHmm>.xml.gzכש-ChainId הוא קידומת EAN ישראלית בת 13 ספרות והחותמת היא רגע יצירת הקובץ בשעון ישראל - צילומים מלאים מתעדכנים בדרך כלל כל יום (לילה, 01:00-05:00 שעון ישראל); קבצי דלתא יכולים להידחף כמה פעמים ביום
- תסתכלו על
references/chain-feeds.mdלכתובות, שיטות גישה ולזרימת ההתחברות של Cerberus
הרשתות מפרסמות דרך שלוש פלטפורמות פעילות (לא דומיין נפרד לכל רשת):
| פלטפורמה | כתובת | רשתות |
|---|---|---|
| שופרסל ישיר | https://prices.shufersal.co.il | שופרסל |
| קרפור ישראל ישיר | https://prices.carrefour.co.il | קרפור ישראל (מפעילה במקביל סניפי קרפור, מגה ויינות ביתן במסגרת זיכיון אלקטרה אחד) |
| Cerberus (PublishedPrices) | https://url.publishedprices.co.il/login | רמי לוי, יוחננוף, ויקטורי, אושר עד, טיב טעם, חצי חינם, מגה (פיד מורשת), דור אלון, סופר-פארם, גוד פארם, ועוד כ-20 רשתות קטנות. סה"כ כ-30 רשתות בפלטפורמה |
הפלטפורמה הישנה "Nibit (Matrix)" בכתובת matrixcatalog.co.il כבר לא נגישה נכון ל-2026 (השרת נכשל באחר curl תוך 10 שניות). ויקטורי ושאר הרשתות שפרסמו שם בעבר מפרסמות היום דרך פלטפורמת Cerberus.
Cerberus דורשת התחברות אמיתית, לא רק שליפת URL. ניסיון תמים של curl https://url.publishedprices.co.il/file/d/PriceFull...xml.gz יחזיר את דף ההתחברות (HTTP 200 עם HTML, לא את הקובץ). הזרימה היא: GET ל-/login ← שליפת ערך csrftoken מהתג <meta name="csrftoken"> ושמירת ה-cookie מהתגובה ← POST ל-/login עם שם המשתמש של הרשת, סיסמה ריקה אם הרשת פתוחה, וה-csrftoken ← שימוש חוזר ב-cookie לכניסה אל /file/json/dir ו-/file/d/<filename>. ראו את references/chain-feeds.md לזרימה המלאה ולפרטי הגישה לכל רשת.
שלב 2: ניתוח פורמטי נתונים ספציפיים לרשת
כל רשת מפרסמת בסכמת XML קצת שונה. הרשתות המרכזיות:
| רשת | פלטפורמה | הערות |
|---|---|---|
| שופרסל | ישיר (prices.shufersal.co.il) | הרשת הגדולה (כ-400 סניפים תחת שופרסל דיל, של-י, יש ואקספרס), הנתונים הכי מובנים |
| רמי לוי | Cerberus | ידועה במחירים נמוכים, 50+ סניפים |
| יוחננוף | Cerberus | מרכז הארץ |
| ויקטורי | Cerberus | חברה עצמאית (משפחת רביד, נסחרת בבורסה VCTR.TA), 60+ סניפים, שונה לחלוטין מקרפור ישראל. מאוגוסט 2025 היא מפעילה כמה מותגים (ויקטורי, ויקטורי Local, ויקטורי City, ויקטורי Plus) ועוד ויקטורי Online, שיכולים לשאת מחירים שונים, התייחסו לכל מותג כחנות נפרדת בהתאמה ובהשוואה |
| קרפור ישראל | ישיר (prices.carrefour.co.il) | זיכיון אלקטרה מוצרי צריכה; מפעילה במקביל סניפי קרפור, מגה ויינות ביתן (לא כל הסניפים הוסבו לקרפור) |
| אושר עד | Cerberus (שם משתמש: osherad, בלי סיסמה) | רשת דיסקאונט, 20+ חנויות גדולות |
| טיב טעם | Cerberus | יש מוצרים לא כשרים; מיזוג עם איסט אנד ווסט יבוא ושיווק בדצמבר 2024 |
השתמשו ב-scripts/parse_price_xml.py כדי לנתח את הפידים ל-JSON מנורמל. השדות המרכזיים: קוד פריט, שם פריט, יצרן, מחיר, מחיר ליחידה, כמות, יחידת מידה, האם נמכר במשקל, תאריך עדכון.
חישוב פריטים במשקל: כש-bIsWeighted=1, השדה ItemPrice הוא המחיר לקילוגרם, לא המחיר של האריזה על המדף. Quantity יכול להיות ריק או שבר. השוואות בין רשתות חייבות לעבוד על מחיר ליחידת משקל, אחרת אריזה של 250 גרם ב-12 ש"ח לקילו (= 3 ש"ח בקופה) תיראה יקרה יותר מאריזה של קילו ב-11 ש"ח לקילו.
שלב 3: השוואת מחירים בין רשתות
תתאימו מוצרים בין רשתות לפי:
- ברקוד (הכי אמין, ברקוד ישראלי מתחיל ב-729)
- שם פריט + יצרן (התאמה מטושטשת, להבדלי שמות)
- קוד פריט (ספציפי לרשת, פחות אמין להשוואה בין רשתות)
תייצרו טבלת השוואה למוצרים ספציפיים:
- חשבו: הרשת הזולה ביותר, מחיר ממוצע, פער מחירים (מקסימום-מינימום)
- טפלו בתמחור ספציפי לסניף (לאותה רשת יכולים להיות מחירים שונים לפי מיקום)
שלב 4: אופטימיזציה של רשימות קניות
כשיש רשימת קניות, מצאו את האפשרות הזולה ביותר:
- חנות אחת: החנות הזולה ביותר לכל הסל
- ריבוי חנויות: פיצול אופטימלי בין 2-3 חנויות קרובות (מינימום עלות + נסיעה)
שקללו את המבצעים הפעילים מפיד PromoFull. לכל מבצע יש שדה RewardType שקובע איך ההנחה חלה (1 = מחיר מוזל קבוע, 2 = מחיר אחיד ל-N יחידות, 3 = הנחה על הפריט ה-N וכו'), בנוסף ל-MinQty / MaxQty, סף MinPurchaseAmnt אופציונלי ו-ClubId. אם ClubId שונה מ-0, ההנחה חלה רק על חברי מועדון הרשת (סופש של שופרסל, מועדון רמי לוי, וכו') ואסור להחיל אותה על סל קניות של אורח. טפלו בתחליפים: הציעו חלופות זולות יותר למוצרים דומים.
חשבו את עלות הסל הכוללת לכל תרחיש. תתחשבו בהעדפות המשתמש: דרישות כשרות, אפשרויות אורגניות, העדפות מותג.
שלב 5: מעקב אחרי מגמות מחירים
תעקבו אחרי מחירים לאורך זמן למוצרים שאתם מנטרים:
- התראות על שינויים משמעותיים (עלייה או ירידה מעל 10%)
- דוח מגמות מחירים שבועי לקטגוריות במעקב
- מעקב אחרי דפוסי אינפלציה לפי קטגוריית מזון
- השוואה לנתוני מדד המחירים לצרכן, רכיב המזון
שלב 6: ניתוח עלות מרכיבים למסעדות וקייטרינג
לבעלי מסעדות: חשבו את עלויות המרכיבים מתוך נתוני הסופרמרקטים.
- קלט: מתכון עם מרכיבים וכמויות
- פלט: עלות למנה לפי המחירים הזולים ביותר שזמינים
- מעקב אחרי מגמות עלות מרכיבים לאורך זמן
- התראה כשמחירי מרכיבים מרכזיים עולים בחדות
- הפקת דוח עלויות חודשי להחלטות תמחור של התפריט
דוגמאות
דוגמה 1: השוואת מחירי חלב בין רשתות
המשתמש אומר: "איפה הכי זול לקנות חלב תנובה 3% ליטר?" פעולות: 1. שולפים את פידי PricesFull של כל הרשתות למוצר (התאמה לפי ברקוד) 2. מרכזים מחירים לפי רשת ולפי מיקום סניף 3. מחילים מבצעים פעילים מפיד PricesPromotions 4. מייצרים טבלת השוואה ממוינת לפי מחיר
תוצאה: הזול ביותר, רמי לוי ב-5.90 ש"ח, אושר עד ב-6.10 ש"ח, שופרסל ב-6.50 ש"ח (אבל יש מבצע 2 ב-10). עם המבצע בשופרסל, קנייה של 2 = 5.00 ש"ח ליחידה. המלצה: שופרסל אם קונים 2 ומעלה, רמי לוי ליחידה בודדת.
דוגמה 2: אופטימיזציה של רשימת קניות שבועית
המשתמש אומר: "הנה רשימת הקניות שלי לשבוע, תמצאו לי את האפשרות הזולה ביותר באזור רמת גן" פעולות: 1. מנתחים את רשימת הקניות (15 פריטים) 2. מחפשים מחירים ברשתות עם סניפים ליד רמת גן 3. מחשבים: חנות אחת (רמי לוי: 285 ש"ח, שופרסל: 310 ש"ח, יוחננוף: 295 ש"ח) 4. מחשבים: פיצול אופטימלי ל-2 חנויות (רמי לוי + שופרסל עם מבצעים: 262 ש"ח) 5. מציעים 3 תחליפים לחיסכון נוסף של 18 ש"ח
תוצאה: הכי זול בחנות אחת: רמי לוי ב-285 ש"ח. פיצול אופטימלי: רמי לוי (10 פריטים, 195 ש"ח) + שופרסל (5 פריטים עם מבצעים, 67 ש"ח) = 262 ש"ח. חיסכון כולל מול חנות אחת: 23 ש"ח.
דוגמה 3: מעקב אחרי עלויות מרכיבים לתפריט מסעדה
המשתמש אומר: "תעקבו אחרי עלות המרכיבים של מנת השקשוקה שלי, עגבניות, ביצים, בצל, פלפלים, תבלינים" פעולות: 1. מזהים מוצרים תואמים בפידי המחירים (עגבניות טריות, ביצים מידה L, בצל צהוב, פלפל גמבה, כמון, פפריקה) 2. מוצאים את המחיר הזול ביותר לכל מרכיב בין הרשתות 3. מחשבים עלות למנה (2 ביצים, 3 עגבניות, 1 בצל, 1 פלפל, תבלינים) 4. מגדירים מעקב מחירים שבועי למרכיבים האלה 5. מפיקים דוח עלות בסיסי
תוצאה: עלות נוכחית למנה: 8.40 ש"ח (שילוב הרשתות הזולות ביותר). הביצים תופסות 32% מהעלות. הוגדרה התראת מחיר, תקבלו הודעה אם מחיר של מרכיב כלשהו משתנה ביותר מ-10%.
משאבים מצורפים
חומרי עזר
references/chain-feeds.md, כתובות פיד לכל רשת מאורגנות לפי פלטפורמה (שופרסל ישיר, קרפור ישיר, Cerberus / PublishedPrices). כולל תיעוד של סכמת XML, לוחות זמני עדכון ווריאציות פורמט ידועות. תיעזרו בקובץ הזה כשאתם ניגשים לנתוני רשתות בשלבים 1-2.
סקריפטים
scripts/parse_price_xml.py, מנתח פידי XML של מחירי סופרמרקטים בישראל ל-JSON מנורמל. תומך בפורמטים של שופרסל, רמי לוי ורשתות נוספות. מטפל בקבצי XML דחוסים ובקידוד תווים. הרצה:python scripts/parse_price_xml.py --help
שרתי MCP מומלצים
| MCP | מה הוא מוסיף |
|---|---|
| Israeli Supermarket Prices | עוטף את פידי חוק שקיפות המחירים של כ-35 רשתות. מטפל לבד בטרנספורטים השונים: Shufersal ישיר, Carrefour publishprice, ו-Cerberus FTP. עדיף להשתמש בו במקום בשלבים הידניים של ה-XML כשהוא זמין. |
| Shufersal MCP | מוסיף אוטומציה של עגלת קניות ב-shufersal.co.il (חיפוש, הוספה לעגלה, הפיכת מתכון לעגלה). משלים את מודיעין המחירים עם תהליך התשלום בפועל. |
מלכודות נפוצות
- לרוב הרשתות אין דומיין
prices.X.co.ilמשלהן. רמי לוי, יוחננוף, ויקטורי, אושר עד, טיב טעם ועוד כ-20 רשתות מפרסמים דרך פלטפורמת Cerberus ב-url.publishedprices.co.il. סוכנים שממציאים כתובות URL לכל רשת יקבלו שגיאות חיבור. תמיד תיעזרו ב-references/chain-feeds.mdלכתובות מאומתות. - שרת Cerberus הוא לא שרת קבצים סטטי. ניסיון תמים של
curl https://url.publishedprices.co.il/file/d/PriceFull...xml.gzיחזיר דף התחברות (HTTP 200 עם HTML, לא את הקובץ). חייבים קודם GET ל-/login, שליפת ה-csrftokenמהתג<meta name="csrftoken">, שמירת ה-cookie מהתגובה, ואז POST ל-/loginעם שם המשתמש של הרשת, סיסמה ריקה אם הרשת פתוחה, וה-csrftoken. רק אחרי זה נקודות הקצה של רשימת קבצים והורדה מחזירות נתונים. - הפלטפורמה הישנה "Nibit (Matrix)" ב-
matrixcatalog.co.il/NBCompetitionRegulations.aspxכבר לא נגישה נכון ל-2026 (curl נכשל אחרי 10 שניות). ויקטורי ושאר הרשתות שפרסמו שם בעבר עברו ל-Cerberus. סקילים או סוכנים שעדיין מפנים ל-matrixcatalog.co.il ייכשלו. - מחירים בישראל כוללים מע"מ (18%) כברירת מחדל, בניגוד למחירים בארה"ב שהם לפני מס. השיעור של 18% בתוקף מ-1 בינואר 2025 (הועלה מ-17%); הצעה להעלות ל-19% בינואר 2026 נדחתה בהצבעת התקציב בכנסת. סוכנים שאומנו לפני 2025 עלולים "לתקן" את 18% חזרה ל-17%, אסור להם. סוכנים גם עלולים לבצע השוואות מחירים שסופרות מע"מ פעמיים או מתעלמות ממנו.
- ברקודים של מוצרים ישראליים משתמשים בקידומת 729, אבל מוצרים מיובאים לפעמים שומרים על הברקוד המקורי שלהם. סוכנים עלולים להיכשל בהתאמה בין רשתות כשלאותו מוצר יש פורמטי ברקוד שונים. מותגי בית של רשתות משתמשים בקידומות פנימיות (בדרך כלל מתחילות ב-
2) ולא ניתן להשוות אותם בין רשתות. - מבצעים עם
ClubIdשונה מ-0 מוגבלים לחברי מועדון של הרשת (סופש של שופרסל, מועדון רמי לוי, מועדון יוחננוף, וכו') ואסור להחיל אותם על הערכת עלות סל קניות גנרית. הרבה סוכנים תמימים מתעלמים מ-ClubIdומדווחים על חיסכון מנופח. - "מגה" ו"יינות ביתן" לא עברו מיתוג מלא לקרפור. זיכיון אלקטרה מוצרי צריכה (אפריל 2022, ל-20 שנה) מפעיל את שלושת המותגים במקביל; חלק מהסניפים הוסבו לקרפור, אחרים נשארו תחת מותג מגה או יינות ביתן. במקביל קיים פיד "מגה" מורשת נפרד ב-Cerberus לצד פורטל קרפור ישיר. "ויקטורי" היא חברה עצמאית לחלוטין (משפחת רביד, VCTR.TA). סוכנים עלולים עדיין לבלבל ביניהן. מאוגוסט 2025 ויקטורי מפעילה כמה מותגים (ויקטורי, ויקטורי Local, ויקטורי City, ויקטורי Plus, וויקטורי Online) שיכולים לתמחר את אותו מוצר אחרת, אז מחיר "ויקטורי" יחיד כבר לא בטוח להניח, בססו את ההשוואה על המותג או הסניף הספציפי ולא על "ויקטורי" כישות אחת.
- רשתות בתי מרקחת (סופר-פארם, גוד פארם) כפופות לחוק ומפרסמות דרך Cerberus, אבל טווח המוצרים שלהן הוא פריטי דראגסטור (טואלטיקה, תרופות ללא מרשם, מוצרי תינוקות) ללא ירקות טריים, חלב או בשר. אל תנסו להשוות מחיר חלב בסופר-פארם.
- מבצעים בסופרמרקטים ישראלים כוללים הרבה פעמים תנאים שסוכנים מפספסים: "2 ב-X שקלים" הוא
RewardType=2עםMinQty=2; "3 במחיר 2" הואRewardType=3; לחלקם יש סףMinPurchaseAmnt; מבצעים אזוריים חלים רק על מזהי סניפים ספציפיים.
קישורי עזר
| מקור | כתובת | מה לבדוק שם |
|---|---|---|
| ויקיפדיה, חוק קידום התחרות בענפי המזון והפארם | https://he.wikipedia.org/wiki/חוק_קידום_התחרות_בענפי_המזון_והפארם | הסבר בשפה פשוטה, רקע חקיקתי, תיקונים אחרונים |
| Wikipedia, רשתות סופרמרקטים בישראל | https://en.wikipedia.org/wiki/List_of_supermarket_chains_in_Israel | בעלות עדכנית של רשתות, מספרי סניפים, מיזוגי מותגים |
| פורטל שופרסל ישיר | https://prices.shufersal.co.il | פידים פעילים של PriceFull / PricesPromotions / Stores לשופרסל |
| פורטל Cerberus (PublishedPrices) | https://url.publishedprices.co.il/login | פידים פעילים של רמי לוי, יוחננוף, ויקטורי, טיב טעם, אושר עד, מגה ועוד כ-25 רשתות |
| פורטל קרפור ישראל ישיר | https://prices.carrefour.co.il | פידים פעילים של חנויות קרפור / מגה / יינות ביתן |
| OpenIsraeliSupermarkets, פרסרים קהילתיים | https://github.com/OpenIsraeliSupermarkets | סקריפטים פייתוניים לעיבוד הפידים שמתחזקים בקהילה. הספרייה הפעילה היא il-supermarket-scraper (PyPI), שמטפלת בהתחברות CSRF ל-Cerberus, חיפוש קוד רשת, הצגת קבצים וביטול דחיסה |
| ויקיפדיה, מס ערך מוסף | https://he.wikipedia.org/wiki/מס_ערך_מוסף | שיעור המע"מ הנוכחי בישראל (18% מ-1 בינואר 2025) והיסטוריית שינויי השיעור |
פתרון בעיות
שגיאה: "XML feed download failed"
סיבה: שרת שקיפות המחירים של הרשת מושבת זמנית או שכתובת ה-URL השתנתה. פתרון: תבדקו אם הרשת עדכנה את כתובת הפיד שלה (זה קורה מדי פעם). לפלטפורמת Cerberus יכולות להיות מדי פעם בעיות תעודת SSL; נסו HTTP אם HTTPS נכשל. הפידים הכי אמינים בשעות הבוקר (מתעדכנים בלילה). תסתכלו על references/chain-feeds.md לכתובות עדכניות.
שגיאה: "Product not found in cross-chain comparison"
סיבה: שם המוצר או הברקוד שונים בין רשתות. פתרון: נסו קודם התאמה לפי ברקוד (הכי אמין). אם התאמת ברקוד נכשלת, השתמשו בהתאמת שם מטושטשת עם יצרן. חלק מהרשתות משתמשות בשמות מוצר שונים לאותו פריט (למשל "חלב תנובה 3%" מול "חלב 3% תנובה").
שגיאה: "Price data outdated"
סיבה: השתמשתם בנתונים שמורים מיום קודם או שהרשת עוד לא עדכנה. פתרון: תבדקו את שדה UpdateDate בפיד ה-XML. רוב הרשתות מעדכנות בלילה. אם הנתונים ישנים מ-24 שעות, תאלצו הורדה מחדש. עדכוני פיד המבצעים יכולים לפגר אחרי עדכוני PricesFull.
שגיאה: "Shopping list optimization slow"
סיבה: השוואה של כל הפריטים בכל הרשתות ובכל הסניפים יקרה חישובית. פתרון: תגבילו את ההשוואה לרשתות עם סניפים ברדיוס שניתן להגדרה (ברירת מחדל: 5 ק"מ). סננו מראש לפי הרשתות שהמשתמש באמת קונה בהן. השתמשו בנתוני מחירים שמורים במקום להוריד מחדש לכל אופטימיזציה.
שגיאה: "Cerberus platform returns empty page or login prompt"
סיבה: Cerberus דורשת סשן מאומת, לא רק שליפת URL חד-פעמית. השגיאה הכי שכיחה היא השמטת ה-CSRF token או ה-cookie של הסשן. פתרון: עקבו אחרי זרימת ההתחברות המלאה ל-Cerberus המתועדת ב-references/chain-feeds.md: GET ל-/login, שליפת ערך ה-csrftoken מהתג <meta> ושמירת ה-cookie מהתגובה, POST ל-/login עם username=<קוד-רשת>, password= (ריק לרשתות פתוחות) ו-csrftoken=<ערך>, שימוש חוזר ב-cookie ל-/file/json/dir ול-/file/d/<filename>. הוסיפו השהיה של שנייה או יותר בין בקשות והשתמשו בכותרת User-Agent ריאליסטית, Cerberus מגבילה רישום אגרסיבי.
Related skills
FAQ
Is Israeli Grocery Price Intelligence safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.