# Zap.co.il Product Prices & Reviews Scraper (`amrameng/zap-products-scraper`) Actor

Merchant prices and customer reviews for any product on zap.co.il, Israel's largest price-comparison site. One record per product with offers and reviews — pick prices, reviews, or both. Target by URL, ID, category, or brand. Read-only.

- **URL**: https://apify.com/amrameng/zap-products-scraper.md
- **Developed by:** [Amram Englander](https://apify.com/amrameng) (community)
- **Categories:** E-commerce, Developer tools, Automation
- **Features:** Limited permissions
- **Stats:** 3 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Zap.co.il Product Prices & Reviews Scraper

**Zap.co.il Product Prices & Reviews Scraper** extracts merchant prices and customer reviews for any product on [zap.co.il](https://www.zap.co.il/), Israel's largest price-comparison marketplace. Give it a product link, choose whether you want **prices, reviews, or both**, and get clean structured data — one record per product, with every merchant offer and every review included.

It's a simple, powerful tool for price monitoring, competitor research, and review analysis. No coding required.

### Why use this scraper?

- 💰 **Price monitoring & repricing** — track every seller's price and shipping on a product, spot the cheapest offer instantly, and react the moment a competitor cuts their price.
- 📊 **Competitive analysis** — see exactly who you're up against: which stores carry a product, where you rank on price, and how your rating stacks up.
- ⭐ **Review & sentiment insights** — collect every customer review with its rating, text, and pros to learn what buyers love (or complain about) — about your products or a rival's.
- 🔍 **Market & product research** — sweep a whole category or brand to size up demand, price ranges, and the best-reviewed models.
- ⚙️ **Automate it** — schedule runs and pull only new prices and reviews to keep your dashboards and alerts fresh.

### How to use it

1. Open the **Input** tab.
2. Paste one or more **product URLs** (or product IDs), or enter a **category** to scrape a whole section.
3. Choose **what to scrape** — prices, reviews, or both.
4. (Optional) Set a **proxy** — an Israeli proxy is recommended for the most reliable results.
5. Click **Start**. When it finishes, view or download the data as JSON, CSV, or Excel.

### Input

You only need one target. Example:

```json
{
    "productUrls": ["https://www.zap.co.il/model.aspx?modelid=1124638"],
    "parts": ["offers", "reviews"]
}
```

| Field                | Description                                                                |
| -------------------- | -------------------------------------------------------------------------- |
| `productUrls`        | One or more product page links.                                            |
| `modelIds`           | Product IDs, if you have them instead of full links.                       |
| `category`           | Scrape a whole category (e.g. `e-cellphone` for cellphones).               |
| `manufacturerFilter` | Optional — limit a category run to a single brand.                         |
| `parts`              | What to collect: `offers` (prices), `reviews`, or both (default).          |
| `maxProducts`        | Limit how many products to scrape in category mode. `0` = no limit.        |
| `maxReviews`         | Limit reviews per product (newest first). `0` = all.                       |
| `reviewsSince`       | Only reviews on or after a date (`YYYY-MM-DD`) — great for scheduled runs. |
| `proxyConfiguration` | Proxy settings; an Israeli proxy is recommended.                           |

### Output sample

One record per product, with offers and reviews nested:

```json
{
    "modelId": "1124638",
    "name": "Apple iPhone 13 128GB",
    "manufacturer": "Apple",
    "category": "Cellphones",
    "aggregateRating": 4.5,
    "reviewCount": 43,
    "offerCount": 23,
    "minPrice": 1090,
    "maxPrice": 3350,
    "offers": [
        {
            "merchantId": "3607",
            "merchantName": "Smile Phone",
            "merchantRating": 5,
            "price": 1090,
            "shippingPrice": 0,
            "shippingDays": null,
            "isMarketplace": false
        }
    ],
    "reviews": [
        {
            "reviewId": "1431390",
            "author": "Hadas",
            "date": "2024-12-03",
            "ratingStars": 5,
            "text": "An Apple product — durable and reliable…",
            "pros": ["Display quality", "Battery life"],
            "helpful": 0,
            "notHelpful": 0
        }
    ],
    "modelUrl": "https://www.zap.co.il/model.aspx?modelid=1124638",
    "scrapedAt": "2026-05-30T00:00:00.000Z"
}
```

You can download the dataset in JSON, CSV, Excel, or HTML, or pull it via the API.

#### Output fields

| Field                                | Description                                                                        |
| ------------------------------------ | ---------------------------------------------------------------------------------- |
| `modelId`, `name`, `manufacturer`    | Product ID, name, and brand                                                        |
| `category`                           | Product category                                                                   |
| `aggregateRating`                    | Average customer rating (0–5)                                                      |
| `reviewCount`                        | Total number of reviews the product has                                            |
| `offerCount`, `minPrice`, `maxPrice` | Number of offers and price range (₪)                                               |
| `offers[]`                           | Each merchant: name, rating, price, shipping cost, delivery days, marketplace flag |
| `reviews[]`                          | Each review: author, date, rating, text, pros, helpful votes                       |
| `modelUrl`, `scrapedAt`              | Product link and capture time                                                      |

#### Output views

The **Output** tab gives you three ready-made tables of the same run:

- **Products** — one row per product
- **Offers** — one row per merchant price (great for price monitoring)
- **Reviews** — one row per review (great for sentiment analysis)

### How many products can I scrape?

As many as you like. Prices for a product come from a single page; reviews are collected in pages of ~16. Use `maxProducts` and `maxReviews` to keep runs fast and predictable, or `parts: ["offers"]` for the quickest price-only runs.

### Integrations

Connect the scraper to your stack with the Apify API, scheduling, webhooks, and integrations like Make, Zapier, Google Sheets, and Slack. Tip: feed an offer's `merchantId` into the **Zap.co.il Stores Scraper** to enrich any seller with its full profile and reviews.

### How much does it cost to scrape Zap.co.il?

You pay only for Apify platform usage (compute + optional proxy) — there's no per-result surcharge. A price-only run (`parts: ["offers"]`) is cheapest: one page per product. Pulling reviews adds a request per ~16 reviews. Use `maxProducts`, `maxReviews`, and `parts` to keep runs predictable. New Apify accounts include a monthly free-usage tier that covers small runs at no cost.

### FAQ

**What format is the data in? Can I export to Excel or CSV?**
Yes — download the dataset as JSON, CSV, Excel, or HTML, or pull it from the Apify API. Each product is one record with offers and reviews nested.

**Can I run it on a schedule?**
Yes. Schedule runs from the Apify Console and use `reviewsSince` to collect only new reviews, keeping price alerts and dashboards fresh.

**Is the data in Hebrew?**
Product names and review text are in Hebrew, as they appear on zap.co.il. Prices, ratings, and IDs are language-neutral.

**How do I get prices for a whole category or brand?**
Set `category` (e.g. `e-cellphone`) and optionally `manufacturerFilter` to sweep a section instead of passing individual product URLs.

**Do I need a proxy?**
An Israeli proxy is recommended for the most reliable results — set it in the Input tab under Proxy configuration.

### Feedback

Found an issue or want a new feature? Open an issue on the Actor's Issues tab.

# Actor input Schema

## `productUrls` (type: `array`):

zap product links, e.g. https://www.zap.co.il/model.aspx?modelid=1124638 . The model ID is parsed from each URL.

## `modelIds` (type: `array`):

Raw zap model IDs (the modelid= value), e.g. 1124638.

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

Scrape every product in a category. Pick from the list. Leave empty to scrape only the products you provide above.

## `manufacturerFilter` (type: `string`):

Optional. Limit a category run to a single brand using the site's brand-filter value, e.g. db188396=1951979 for Apple phones (db188396=1951988 for Samsung). Only used with a category.

## `parts` (type: `array`):

Which data to collect per product: offers (merchant prices) and/or reviews. Default both.

## `maxProducts` (type: `integer`):

Safety cap on how many products to scrape when using a category. Ignored when you pass explicit productUrls / modelIds. Set 0 for no limit.

## `maxReviews` (type: `integer`):

Cap how many reviews to collect per product (newest first). The product's reviewCount still reports the true total. Set 0 for all reviews.

## `reviewsSince` (type: `string`):

Only collect reviews written on or after this date. Reviews are newest-first, so this also stops paging early — ideal for scheduled, incremental runs. Leave blank for all dates.

## `proxyConfiguration` (type: `object`):

An Israeli residential proxy is recommended for the most reliable results. This is the default.

## Actor input object example

```json
{
  "productUrls": [
    "https://www.zap.co.il/model.aspx?modelid=1124638"
  ],
  "parts": [
    "offers",
    "reviews"
  ],
  "maxProducts": 50,
  "maxReviews": 0,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IL"
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "productUrls": [
        "https://www.zap.co.il/model.aspx?modelid=1124638"
    ],
    "maxProducts": 50,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "IL"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("amrameng/zap-products-scraper").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 = {
    "productUrls": ["https://www.zap.co.il/model.aspx?modelid=1124638"],
    "maxProducts": 50,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "IL",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("amrameng/zap-products-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "productUrls": [
    "https://www.zap.co.il/model.aspx?modelid=1124638"
  ],
  "maxProducts": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IL"
  }
}' |
apify call amrameng/zap-products-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,amrameng/zap-products-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/qG0Qi6dzUgodSguLA/builds/IV0bb8NpqhbEgIcsN/openapi.json
