# Daraz Product, Review & Seller Scraper (`mrdoe/daraz-product-review-seller-scraper`) Actor

Scrape Daraz product details, prices, ratings, reviews, seller information, and product data from Daraz product pages. Export structured data for research, price monitoring, competitor analysis, and e-commerce applications.

- **URL**: https://apify.com/mrdoe/daraz-product-review-seller-scraper.md
- **Developed by:** [MrDoe](https://apify.com/mrdoe) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 50.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.77 / 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/platform/actors/running/actors-in-store#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

## Daraz Product, Review & Seller Scraper

**Scrape real Daraz products, reviews, and seller profiles** - no coding, no manual copy-pasting. Get product **name, price, discount, rating, and stock**, real customer **reviews with star ratings and seller replies**, and **seller trust stats** (ratings, ship-on-time %, follower count), across every live Daraz market: **Pakistan, Bangladesh, Sri Lanka, and Nepal**.

### What does this Daraz scraper do?

This Actor searches Daraz directly - by keyword or specific product URLs - and pulls three kinds of data in one run:

- **Products** - name, price, original price, discount %, rating, review count, seller, brand, stock status, sold count, full description, category, and images.
- **Reviews** - star rating, review text, photos, purchase/review dates, the (masked) buyer name, and any seller replies.
- **Sellers** - shop name and URL, positive rating %, ship-on-time %, chat response rate, and follower count.

Run it across all 4 countries at once, or narrow it to specific markets. Run it on-demand, on a schedule, or trigger it via the Apify API - full run monitoring built in, with optional Discord/Slack notifications when a run finishes.

### Why scrape Daraz?

- **Price monitoring** - track prices, discounts, and stock across products and sellers over time.
- **Reputation & review analysis** - see what customers actually say, star ratings, and how sellers respond.
- **Competitive & market research** - compare pricing and seller trust signals across Pakistan, Bangladesh, Sri Lanka, and Nepal.
- **Lead generation** - build a structured dataset of active sellers (name, ratings, follower count) for outreach or market mapping.

### How to use this Daraz scraper

1. Go to the **Input** tab.
2. Leave **Countries** as "All countries" and **Search queries** as the default (`laptop`) for a fast, cheap first run across every market.
3. Choose which **Data types** you want - Products, Reviews, Sellers, or any combination. All three by default.
4. Click **Start**, then open the **Storage** tab for your results - each run writes to three separate, clearly named datasets: **Products**, **Sellers**, and **Reviews**.

For specific products you already know, set **Product URLs** instead - it replaces search entirely and each URL's own domain determines its country.

### Input

| Field                    | Type    | Description                                                                                               |
| ------------------------ | ------- | --------------------------------------------------------------------------------------------------------- |
| `countries`              | Array   | Which Daraz countries to search (default: all 4). Ignored when `productUrls` is set.                      |
| `searchQueries`          | Array   | Search terms to look up (default: `["laptop"]`). Ignored when `productUrls` is set.                       |
| `productUrls`            | Array   | Specific product URLs to scrape directly - replaces search entirely.                                      |
| `dataTypes`              | Array   | Which record types to collect: `products`, `reviews`, `sellers` (default: all three).                     |
| `maxItemsPerQuery`       | Integer | Max products per search query per country (default: `2`, for a fast preview; `0` = unlimited).            |
| `maxReviewsPerProduct`   | Integer | Max reviews saved per product (default: `2`; `0` = unlimited).                                            |
| `enableCache`            | Boolean | Reuse product/review/seller data fetched in a previous run instead of re-fetching. On by default.         |
| `cacheTtlHours`          | Integer | How long a cached entry stays valid (default: `24`).                                                      |
| `notificationWebhookUrl` | String  | Optional Discord or Slack incoming webhook URL. Posts a one-line run summary there when the run finishes. |

Example input - quick nationwide preview across all 4 countries:

```json
{}
```

Example input - full catalog search in one country:

```json
{ "countries": ["PK"], "searchQueries": ["running shoes"], "maxItemsPerQuery": 0, "dataTypes": ["products"] }
```

Example input - deep-dive on specific products:

```json
{
    "productUrls": ["https://www.daraz.pk/products/example-i123456.html"],
    "dataTypes": ["products", "reviews", "sellers"]
}
```

### Output

This Actor writes to three separate named datasets - **Products**, **Sellers**, and **Reviews** - so each keeps only the fields that belong to it, with no `type` field needed to tell records apart. `itemId` links a review back to its product; `sellerId` links a product to its seller. Open your run's **Storage** tab in Apify Console to see all three listed side by side, in that order - each with its own **Overview** tab (a clean, formatted table of its key fields) plus **All fields** for the raw data.

Every record is also mirrored into the run's default dataset (tagged with `type`, so it's harder to browse - use the three named datasets above for that) purely so this Actor's pay-per-result pricing bills correctly.

**Prefer a plain CSV file?** Every run also saves a ready-to-download snapshot of each named dataset straight into its **Key-value store** - open the run, click the **Key-value store** tab, and you'll find:

| File          | Contents                             |
| ------------- | ------------------------------------ |
| `product.csv` | Everything from the Products dataset |
| `seller.csv`  | Everything from the Sellers dataset  |
| `review.csv`  | Everything from the Reviews dataset  |

No need to open the dataset UI or pick an export format - just click a file and download it.

A product (Products dataset):

```json
{
    "itemId": "837110516",
    "name": "Dell Latitude 7420 Core i7 11th Gen Laptop | 16GB RAM | 512GB SSD",
    "price": 116000,
    "originalPrice": 170000,
    "discountPercent": 32,
    "currency": "PKR",
    "ratingScore": 5,
    "reviewCount": 12,
    "sellerId": "6005033052228",
    "sellerName": "E-Laptech",
    "brandName": "Dell",
    "image": "https://static-01.daraz.pk/p/af720548210edee3ec27aa72bcbe9ab0.jpg",
    "itemUrl": "https://www.daraz.pk/products/dell-latitude-7420-...-i837110516.html",
    "inStock": true,
    "soldCount": 14,
    "location": "Punjab",
    "country": "PK",
    "description": "Brand: Dell Model: Latitude 7420 ...",
    "category": "Computers & Laptops > Laptops",
    "images": ["https://static-01.daraz.pk/p/af720548210edee3ec27aa72bcbe9ab0.jpg"],
    "scrapedAt": "2026-08-15"
}
```

a seller (Sellers dataset):

```json
{
    "sellerId": "6005033052228",
    "sellerName": "E-Laptech",
    "shopUrl": "https://www.daraz.pk/shop/261zxnow/",
    "positiveRatingPercent": 99,
    "shipOnTimePercent": 66,
    "chatResponseRate": "Not enough data",
    "followersCount": 994,
    "country": "PK",
    "scrapedAt": "2026-08-15"
}
```

and a review (Reviews dataset):

```json
{
    "reviewId": "74766705810516",
    "itemId": "837110516",
    "rating": 5,
    "content": "Ordered this Laptop for my Family. My kids are loving it. Battery Backup is Awesome.",
    "images": ["https://lzd-u.slatic.net/18e2c656c4474d24919768f708adc170_3_1757616697.483368.jpg"],
    "buyerName": "A***.",
    "boughtDate": "27 Jul 2025",
    "reviewTime": "11 Sep 2025",
    "skuInfo": "Color Family:Red",
    "likeCount": 0,
    "sellerReplies": [{ "author": "Daraz Guest", "content": "Thankyou for the Feedback...", "time": "11 months ago" }],
    "country": "PK",
    "scrapedAt": "2026-08-15"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### Pricing / Cost estimation

Daraz's own product-search and review APIs have no bot protection (verified live: plain, unauthenticated requests return full JSON), so those two stages are fast and cheap - cost scales with how many products/reviews you request, not with any browser overhead. The seller stage is the one exception: seller trust stats and follower counts are only ever rendered client-side, so that stage needs one real (proxied) browser page-load per distinct seller. **Enable cache** to avoid paying that cost again for a seller (or product/review) already scraped in a recent run.

### Tips for better runs

- Leave the defaults (`maxItemsPerQuery: 2`, all countries, all data types) for a cheap first look at what this Actor returns.
- Use `productUrls` for repeat/scheduled checks on specific listings you already track.
- Turn off the Sellers data type if you only need product/review data - it's the one stage that needs a browser.
- Use the Apify **Schedule** feature to re-run this Actor periodically and track price, review, or seller-rating changes over time.

### FAQ

**Is this legal?** This Actor only collects publicly visible product, review, and seller data. You are responsible for using the data in accordance with Daraz's Terms of Service and any applicable laws in your jurisdiction.

**Why isn't Myanmar included?** Daraz Myanmar shut down in April 2026. This Actor covers every market still live: Pakistan, Bangladesh, Sri Lanka, and Nepal.

**Why do some sellers have `null` for `followersCount`?** That field comes from the seller's own shop page, which this Actor visits after finding the seller's shop link on one of their product pages - if that page doesn't render in time, this field is left `null` rather than guessed at.

**Found a bug or have a feature request?** Please use the Issues tab on this Actor's page - feedback directly shapes future updates.

# Actor input Schema

## `countries` (type: `array`):

Which Daraz country site(s) to search. Defaults to all 4 live markets. Ignored when <b>Product URLs</b> is set - each URL already names its own country.

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

Search terms to look up on each country's Daraz, e.g. <code>laptop</code> or <code>running shoes</code>. Ignored when <b>Product URLs</b> is set.

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

Specific Daraz product page URLs to scrape directly, one per line - copy these straight from the site. When set, this replaces search entirely (<b>Countries</b> and <b>Search queries</b> are ignored) - each URL's own domain determines its country.

## `dataTypes` (type: `array`):

Which kinds of records to collect. Products and reviews come from Daraz's own JSON APIs (fast, cheap). Sellers needs a real browser render of each product's page (slower) since seller trust stats aren't in any API response.

## `maxItemsPerQuery` (type: `integer`):

Maximum number of products to pull per search query, per country (default: 2, for a fast/cheap preview across every data type you selected). Set to 0 for unlimited.

## `maxReviewsPerProduct` (type: `integer`):

Only used when <b>Data types</b> includes Reviews. Caps how many reviews are saved per product (default: 2). Set to 0 for unlimited.

## `enableCache` (type: `boolean`):

Reuse product/review/seller data already fetched in a previous run (within <b>Cache TTL</b>) instead of re-fetching it. Saves the most on the seller stage, which needs a full browser render per seller. On by default.

## `cacheTtlHours` (type: `integer`):

Only used when <b>Enable cache</b> is on. How long a cached product/review/seller entry stays valid before this Actor re-fetches it (default: 24 hours).

## `notificationWebhookUrl` (type: `string`):

Optional. A Discord or Slack incoming webhook URL - when set, this Actor posts a one-line summary (products/reviews/sellers found) to it after the run finishes. Leave empty to skip notifications.

## Actor input object example

```json
{
  "countries": [
    "ALL"
  ],
  "searchQueries": [
    "laptop"
  ],
  "productUrls": [],
  "dataTypes": [
    "products",
    "reviews",
    "sellers"
  ],
  "maxItemsPerQuery": 2,
  "maxReviewsPerProduct": 2,
  "enableCache": true,
  "cacheTtlHours": 24,
  "notificationWebhookUrl": ""
}
```

# Actor output Schema

## `items` (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 = {
    "searchQueries": [
        "laptop"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("mrdoe/daraz-product-review-seller-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"] }

# Run the Actor and wait for it to finish
run = client.actor("mrdoe/daraz-product-review-seller-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"
  ]
}' |
apify call mrdoe/daraz-product-review-seller-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,mrdoe/daraz-product-review-seller-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/pD3onYAoTfiRIQWaw/builds/HfwATxO71lFzdQ1CB/openapi.json
