# Israeli Supermarket Prices - Cross-Chain Compare (`swerve/supermarket-prices`) Actor

Compare any product's price across every major Israeli supermarket chain (Shufersal, Rami Levy, Carrefour, Tiv Taam, Osher Ad, Yochananof and more). Built on the legally-mandated price-transparency files, updated daily. Snapshot a single store, list branches, or pull promotions.

- **URL**: https://apify.com/swerve/supermarket-prices.md
- **Developed by:** [Swerve](https://apify.com/swerve) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Israeli Supermarket Prices - Cross-Chain Compare

Compare any product's price across **every major Israeli supermarket chain** in one run. Built directly on the price files chains are required to publish by law (the Food Price Transparency regulations), so the data is official, complete, and refreshed daily.

Supported chains: Shufersal, Rami Levy, Carrefour, Tiv Taam, Osher Ad, Yochananof, Keshet Taamim, Stop Market, Super Yuda, Fresh Market (Paz), Politzer, Salach Dabach.

### Modes

| Mode | What you get | Inputs |
|---|---|---|
| **compareProducts** (default) | The same product's price at every chain, ready to sort cheapest-first | `barcodes` and/or `productQuery`, `chains`, `oneStorePerChain` |
| **storeSnapshot** | Every product in one store | `chain`, `storeId` (optional), `category` (optional) |
| **listStores** | Every branch of a chain (id, name, address, city) | `chain` (or `chains`) |
| **chainDump** | An entire chain (large) | `chain`, `confirmFullDump: true` |
| **promoSnapshot** | Current promotions | `chain`, `storeId` (optional) |

### Comparing a product (the main use)

Match by **barcode** for an exact, reliable cross-chain comparison (each chain names products differently, so name matching is fuzzier):

```json
{ "mode": "compareProducts", "barcodes": ["7290000042015", "7290010945306"], "oneStorePerChain": true }
````

Returns one row per chain that carries the barcode, e.g.:

```json
{ "barcode": "7290000042015", "itemName": "חלב תנובה 3% שומן 1 ליטר", "price": 6.20, "chainName": "Rami Levy (רמי לוי)", "storeId": "044", "priceUpdateDate": "2026-06-10T00:10:07" }
```

Sort the rows by `price` to see who is cheapest. `productQuery` (a Hebrew name substring like `"חלב 3%"`) is also supported for discovery.

### Output

One row per matched product per chain, with the shelf `price` and `unitPrice` (both ILS), `barcode`, `itemName`, `manufacturer`, weight/unit info, the `priceUpdateDate`, and `chainName` / `chainId` / `storeId` / `sourceFile`.

### How it works

Each chain publishes gzipped XML price files on a public portal (Shufersal's own site, the shared Cerberus portal used by Rami Levy and others, Carrefour's site). The actor logs in where needed, downloads the relevant store file per chain, stream-parses it (files are 5-15 MB and never loaded whole into memory), normalizes the three different XML dialects into one schema, and emits only the rows you asked for. Results are pushed continuously, so a long run never loses progress.

### Notes & limits

- Prices in a chain's full price file refresh daily (early morning). Intra-day changes land in the incremental files (a future mode).
- `oneStorePerChain` is on by default because branch-to-branch prices within a chain are nearly identical; turn it off to scan every store.
- `chainDump` is gated behind `confirmFullDump` because a whole chain is hundreds of thousands of items.
- Weighed produce uses internal codes, not universal barcodes, so it does not always join across chains.

### Use cases

- Cheapest-basket / price-comparison apps and bots.
- Retail and CPG price intelligence (track your product, or a competitor's, across all chains).
- Inflation and consumer-price research.
- Building a normalized national price dataset.

# Actor input Schema

## `mode` (type: `string`):

Pick one. The fields below are grouped by mode, only fill in the group that matches your choice.

## `productQueries` (type: `array`):

Type product names in Hebrew, the way they appear on the shelf. Each one is matched against every chain's products. Add as many as you like. Examples: חלב 3% (3% milk), קוטג' (cottage cheese), קוקה קולה זירו, במבה. You get the matching products and their price at each chain, ready to sort cheapest-first.

## `barcodes` (type: `array`):

If you know a product's barcode, use it for an exact match (names vary slightly between chains, barcodes do not). Example: 7290000042015 (Tnuva 3% milk). Most people should just use the name search above.

## `chains` (type: `array`):

Leave empty to compare ALL chains. Or pick specific ones.

## `oneStorePerChain` (type: `boolean`):

On: check one representative branch per chain (prices barely vary between a chain's branches, so this is fast and gives a clean one-row-per-chain comparison). Off: check every branch of every chain (much slower, many more rows).

## `includeImages` (type: `boolean`):

Add a product photo (imageUrl) to each item, looked up by barcode. Best for comparing a handful of products; it adds a lookup per product so avoid it on whole-store or whole-chain pulls. Coverage is roughly 70% of common products.

## `chain` (type: `string`):

Which chain to pull from.

## `storeId` (type: `string`):

For 'one store' and 'promotions': a specific branch ID (get IDs from the 'List a chain's branches' mode). Leave empty to use the first available branch.

## `category` (type: `string`):

For 'one store' and 'download a chain': filter to products whose name contains this text. Example: שמן (oil), בירה (beer). Leave empty to keep everything.

## `confirmFullDump` (type: `boolean`):

Only for 'Download an entire chain'. A full chain is hundreds of thousands of products. This must be on for that mode to run, a safety check so nobody triggers a huge run by accident.

## `maxItems` (type: `integer`):

Stop after this many rows. Leave empty for everything in scope (there is no upper limit).

## Actor input object example

```json
{
  "mode": "compareProducts",
  "productQueries": [
    "חלב 3%"
  ],
  "chains": [],
  "oneStorePerChain": true,
  "includeImages": true,
  "chain": "rami-levy",
  "confirmFullDump": false
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "productQueries": [
        "חלב 3%"
    ],
    "includeImages": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("swerve/supermarket-prices").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "productQueries": ["חלב 3%"],
    "includeImages": True,
}

# Run the Actor and wait for it to finish
run = client.actor("swerve/supermarket-prices").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "productQueries": [
    "חלב 3%"
  ],
  "includeImages": true
}' |
apify call swerve/supermarket-prices --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=swerve/supermarket-prices",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Israeli Supermarket Prices - Cross-Chain Compare",
        "description": "Compare any product's price across every major Israeli supermarket chain (Shufersal, Rami Levy, Carrefour, Tiv Taam, Osher Ad, Yochananof and more). Built on the legally-mandated price-transparency files, updated daily. Snapshot a single store, list branches, or pull promotions.",
        "version": "0.1",
        "x-build-id": "N7bR45WxUgl1FRhxc"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/swerve~supermarket-prices/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-swerve-supermarket-prices",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/swerve~supermarket-prices/runs": {
            "post": {
                "operationId": "runs-sync-swerve-supermarket-prices",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/swerve~supermarket-prices/run-sync": {
            "post": {
                "operationId": "run-sync-swerve-supermarket-prices",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "What do you want to do?",
                        "enum": [
                            "compareProducts",
                            "storeSnapshot",
                            "listStores",
                            "chainDump",
                            "promoSnapshot"
                        ],
                        "type": "string",
                        "description": "Pick one. The fields below are grouped by mode, only fill in the group that matches your choice.",
                        "default": "compareProducts"
                    },
                    "productQueries": {
                        "title": "Products to compare (search by name)",
                        "type": "array",
                        "description": "Type product names in Hebrew, the way they appear on the shelf. Each one is matched against every chain's products. Add as many as you like. Examples: חלב 3% (3% milk), קוטג' (cottage cheese), קוקה קולה זירו, במבה. You get the matching products and their price at each chain, ready to sort cheapest-first.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "barcodes": {
                        "title": "...or by exact barcode (advanced, most precise)",
                        "type": "array",
                        "description": "If you know a product's barcode, use it for an exact match (names vary slightly between chains, barcodes do not). Example: 7290000042015 (Tnuva 3% milk). Most people should just use the name search above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "chains": {
                        "title": "Which chains to compare",
                        "type": "array",
                        "description": "Leave empty to compare ALL chains. Or pick specific ones.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "shufersal",
                                "rami-levy",
                                "carrefour",
                                "tiv-taam",
                                "osher-ad",
                                "yochananof",
                                "keshet",
                                "stop-market",
                                "super-yuda",
                                "fresh-market",
                                "politzer",
                                "salach-dabach"
                            ],
                            "enumTitles": [
                                "Shufersal",
                                "Rami Levy",
                                "Carrefour",
                                "Tiv Taam",
                                "Osher Ad",
                                "Yochananof",
                                "Keshet Taamim",
                                "Stop Market",
                                "Super Yuda",
                                "Fresh Market (Paz)",
                                "Politzer",
                                "Salach Dabach"
                            ]
                        },
                        "default": []
                    },
                    "oneStorePerChain": {
                        "title": "One store per chain (recommended)",
                        "type": "boolean",
                        "description": "On: check one representative branch per chain (prices barely vary between a chain's branches, so this is fast and gives a clean one-row-per-chain comparison). Off: check every branch of every chain (much slower, many more rows).",
                        "default": true
                    },
                    "includeImages": {
                        "title": "Include product photos",
                        "type": "boolean",
                        "description": "Add a product photo (imageUrl) to each item, looked up by barcode. Best for comparing a handful of products; it adds a lookup per product so avoid it on whole-store or whole-chain pulls. Coverage is roughly 70% of common products.",
                        "default": false
                    },
                    "chain": {
                        "title": "Chain",
                        "enum": [
                            "shufersal",
                            "rami-levy",
                            "carrefour",
                            "tiv-taam",
                            "osher-ad",
                            "yochananof",
                            "keshet",
                            "stop-market",
                            "super-yuda",
                            "fresh-market",
                            "politzer",
                            "salach-dabach"
                        ],
                        "type": "string",
                        "description": "Which chain to pull from.",
                        "default": "rami-levy"
                    },
                    "storeId": {
                        "title": "Store / branch ID (optional)",
                        "type": "string",
                        "description": "For 'one store' and 'promotions': a specific branch ID (get IDs from the 'List a chain's branches' mode). Leave empty to use the first available branch."
                    },
                    "category": {
                        "title": "Keep only products whose name contains (optional)",
                        "type": "string",
                        "description": "For 'one store' and 'download a chain': filter to products whose name contains this text. Example: שמן (oil), בירה (beer). Leave empty to keep everything."
                    },
                    "confirmFullDump": {
                        "title": "Yes, download the whole chain",
                        "type": "boolean",
                        "description": "Only for 'Download an entire chain'. A full chain is hundreds of thousands of products. This must be on for that mode to run, a safety check so nobody triggers a huge run by accident.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max results (optional)",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Stop after this many rows. Leave empty for everything in scope (there is no upper limit)."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
