# Torob Scraper - Iran Price Comparison & Product Prices (`logiover/torob-scraper`) Actor

Export Torob.com product listings in bulk: product name, price in toman, the shop offering it, stock condition, image and product URL. Compare prices across Iranian online shops and download as JSON, CSV or Excel.

- **URL**: https://apify.com/logiover/torob-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** E-commerce
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.10 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Torob Scraper — Iran Price Comparison & Product Prices

Torob.com in rows: product name, price in toman as a real number, the shop quoting it, stock condition, image and product URL — Iran's price comparison index in bulk.

### What does the Torob Scraper do?

This Actor collects products from **Torob**, the price comparison engine Iranians use before buying anything online. Torob indexes the same product across hundreds of Iranian shops and reports who is selling it and for how much, and this Actor exports that with **the price as a sortable number and the shop named on every row**.

That pairing — product plus shop plus price — is what makes the data worth having. A plain product export tells you what exists; this tells you what it costs and who is quoting it, which is the input a price monitor or a market study actually runs on.

Prices come back in Persian-Indic numerals as display text and as a number. Both are kept, so you can compute with one and verify against the site with the other.

### Who is it for?

- **Price monitoring teams** tracking Iranian retail prices across shops.
- **Brands and distributors** checking what their products sell for and where.
- **Market researchers** studying Iranian e-commerce pricing and assortment.
- **Economists and journalists** using retail prices as an inflation signal.
- **Sourcing and trade analysts** mapping product availability in Iran.
- **Comparison and catalogue platforms** seeding Iranian product data.

### Use cases

- Track a product category's prices across Iranian shops over time.
- Find the cheapest shop for a given product.
- Measure price dispersion for the same item across retailers.
- Build a retail price index from real listings.
- Separate new from used supply using the condition column.
- Monitor how fast prices move in a high-inflation market.
- Assemble a product catalogue with images and links.

### Why use this Torob Scraper?

- **The shop is on every row**, not just the product — which is the column that makes price data actionable.
- **Prices as numbers**, transliterated from Persian numerals, with the original text kept.
- **No API key, no account** — the same search endpoint the site itself calls.
- **English and Persian search terms both work**, so you do not need Persian input to get started.
- **Iran-pinned residential proxying**, because Torob answers requests from inside the country.
- **Nine columns with no filler.** A field Torob declares but never fills was removed rather than shipped empty.

### What data can you extract?

| Field | Description |
| --- | --- |
| `productKey` | Torob's own product key |
| `name` | Product name |
| `secondaryName` | Secondary or English name, where Torob has one |
| `price` | Price in toman as a number |
| `priceText` | Price exactly as Torob printed it |
| `shopText` | Which shop is quoting that price |
| `stockStatus` | Condition or stock note, e.g. new or used |
| `imageUrl` | Product image |
| `url` | Direct link to the product page |

#### Sample output

```json
{
  "productKey": "82c68b10-10dd-4f8c-9761-ff770df7ebbf",
  "name": "لپ تاپ ایسر Predator Helios 18 مدل I9 14900HX",
  "secondaryName": "Acer Predator Helios 18",
  "price": 460000000,
  "priceText": "۴۶۰٫۰۰۰٫۰۰۰ تومان",
  "shopText": "در سما رایانه",
  "stockStatus": "کارکرده",
  "imageUrl": "https://image.torob.com/base/images/zq/em/zqemNcFzVSxBCd8j.jpg",
  "url": "https://torob.com/p/82c68b10-10dd-4f8c-9761-ff770df7ebbf/"
}
```

### How to use the Torob Scraper

#### Option A — search terms

Put one or more terms into **Search terms** — `laptop`, `iphone`, or Persian equivalents — set **Maximum products** and run.

#### Option B — cheapest first

Set **Sort by** to cheapest first when you are looking for the floor price in a category.

#### Option C — several categories in one run

Add multiple search terms, one per line. The row budget is shared and results are deduplicated across them.

### Input parameters

| Parameter | Type | Description |
| --- | --- | --- |
| `searchQueries` | array | Search terms, one per line |
| `sortBy` | select | Relevance, price ascending or descending, popularity |
| `maxItems` | integer | How many products to collect in total |
| `proxyConfiguration` | object | Iran-pinned residential proxy, required |

### Tips for best results

- **Leave the proxy pinned to Iran.** Torob's search API does not answer from outside the country.
- **Persian terms return more results than English ones**, though both work.
- **Use `price` for calculations and `priceText` for verification.**
- **`stockStatus` fills on roughly half the rows** — Torob only notes a condition where the shop stated one.
- **Compare `shopText` across rows for the same product** to see the real price spread.

### Integrations

Deliver results to Google Sheets, Airtable, Slack, Zapier, Make or your own endpoint through Apify's integrations, or schedule a run to track prices over time.

### API usage

```bash
curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~torob-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "searchQueries": ["laptop"],
    "maxItems": 1000
  }'
```

Results export as JSON, CSV, Excel, XML or RSS.

### Use with AI agents (MCP)

Available through Apify's MCP server, so an agent can look up an Iranian retail price or compare shops without custom code.

### FAQ

#### Do I need a Torob account or API key?

No. The search endpoint this Actor calls is the public one the website uses.

#### How many products can one run return?

Popular searches page into the thousands. A narrow term naturally exhausts sooner.

#### Can I search in English?

Yes. Many Torob products carry Latin brand and model names, though Persian terms return more.

#### Why is `secondaryName` sometimes empty?

Torob only carries a second name where the product has one — usually the Latin-script version of a Persian title.

#### Why is `stockStatus` sometimes empty?

Because the shop did not state a condition. The Actor reports what was published rather than assuming "new".

#### Is the price the cheapest offer?

It is the price Torob shows for that product in the search results, together with the shop quoting it.

#### Can I export to CSV or Excel?

Yes — JSON, CSV, Excel, XML and RSS.

#### How fresh is the data?

Every run queries Torob live.

#### Why did my run return zero products?

Usually a search term with no matches. Try it on torob.com first to confirm it returns results.

### Is it legal to scrape Torob?

This Actor reads publicly available price comparison data, which is generally lawful to collect. You remain responsible for how you use it — check Torob's terms, respect shop and manufacturer intellectual property in images, and do not republish the index wholesale.

### Related scrapers

Pair with the other price comparison and marketplace Actors in the store to cover Iranian classifieds and regional e-commerce alongside this one.

***

\*Maintained: last verified 2026-09-01 — checked end-to-end against live run history (reliability, output fields and types, and time/memory budgets).

# Actor input Schema

## `searchQueries` (type: `array`):

What to look for on Torob, one term per line. Both English and Persian terms work - for example laptop, iphone, or لپ تاپ.

## `sortBy` (type: `string`):

Optional. The order Torob returns products in. Leave as default for relevance.

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

How many products to collect in total across every search term.

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

Required. Torob answers requests from inside Iran, so the run is pinned to Iranian residential addresses.

## Actor input object example

```json
{
  "searchQueries": [
    "laptop"
  ],
  "sortBy": "",
  "maxItems": 500,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IR"
  }
}
```

# Actor output Schema

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

Every record collected in this run. Open the Dataset tab to browse, filter or export as JSON, CSV or Excel.

# 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 = {
    "searchQueries": [
        "laptop"
    ],
    "maxItems": 500,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "IR"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/torob-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 = {
    "searchQueries": ["laptop"],
    "maxItems": 500,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "IR",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/torob-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 '{
  "searchQueries": [
    "laptop"
  ],
  "maxItems": 500,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "IR"
  }
}' |
apify call logiover/torob-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,logiover/torob-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/6NXzVRaqDFtdbgIeq/builds/vMYeg6fVLgjO8YgNH/openapi.json
