# Kaspi Product Search Scraper (`soft_alexist/kaspi-product-search-scraper`) Actor

Scrape product listings from Kaspi.kz effortlessly. Collect titles, prices, ratings, merchant info, delivery details, and 36+ fields per product. Perfect for price monitoring, market analysis, and e-commerce intelligence.

- **URL**: https://apify.com/soft\_alexist/kaspi-product-search-scraper.md
- **Developed by:** [Soft Alexist](https://apify.com/soft_alexist) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 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 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

## Kaspi.kz Product Search Scraper: Extract E-commerce Data from Kazakhstan

***

### What Is Kaspi.kz?

Kaspi.kz is Kazakhstan's leading e-commerce platform, hosting hundreds of thousands of products across electronics, appliances, fashion, and more. With millions of daily users and diverse merchants, it represents a critical market for price monitoring, competitive research, and inventory management. Manually tracking product data across Kaspi is inefficient — the **Kaspi Product Search Scraper** automates extraction of structured product intelligence at scale.

***

### Overview

The **Kaspi Product Search Scraper** extracts product listings from Kaspi.kz search results and category pages, returning detailed product records with 36+ data points per item. It is ideal for:

- **Price monitoring platforms** tracking competitor pricing and discounts
- **Market researchers** analyzing e-commerce trends in Kazakhstan
- **Aggregators and resellers** feeding Kaspi data into their systems
- **Business analysts** benchmarking product availability and merchant performance
- **E-commerce managers** monitoring inventory and promotional campaigns

Key features include configurable item limits per URL, automatic failure handling, and comprehensive product metadata spanning pricing, ratings, delivery options, and merchant details.

***

### Input Format

The scraper accepts a JSON configuration object:

```json
{
  "urls": [
    "https://kaspi.kz/shop/c/computers/?source=kaspikz"
  ],
  "max_items_per_url": 200,
  "ignore_url_failures": true
}
```

| Field | Type | Description |
|---|---|---|
| `urls` | Array | Direct links to Kaspi product list or search result pages. Add multiple URLs for bulk scraping. |
| `max_items_per_url` | Integer | Maximum products extracted per URL (e.g., `200`). Higher values collect more items but take longer. |
| `ignore_url_failures` | Boolean | If `true`, scraper continues if some URLs fail. If `false`, scraper stops on error. Recommended: `true` for large runs. |

> **Tip:** Use category or search result URLs to scrape multiple products at once. Example: `/shop/c/computers/` for all computers, or `/search/?q=laptop` for filtered results.

***

### Output Format

**Sample output**

```json
{
  "id": "5400775",
  "config_sku": "5400775",
  "title": "Стабилизатор напряжения 8 кВт АСН-8000/1-Ц Ресанта релейный, 140-260В, однофазный 63/6/7",
  "brand": "Ресанта",
  "category_id": "05305",
  "has_variants": false,
  "loan_available": true,
  "shop_link": "/p/stabilizator-naprjazhenija-8-kvt-asn-8000-1-ts-resanta-releinyi-140-260v-odnofaznyi-63-6-7-5400775/?c=750000000",
  "unit_price": 82290,
  "unit_sale_price": 82290,
  "price_formatted": "82 290 ₸",
  "price_minus_bonus": 79822,
  "created_time": "2019-02-15T04:09:03.063Z",
  "stickers": [],
  "preview_images": [
    {
      "small": "https://resources.cdn-kaspi.kz/img/m/p/h94/h40/80852082098206.png?format=preview-small",
      "medium": "https://resources.cdn-kaspi.kz/img/m/p/h94/h40/80852082098206.png?format=preview-medium",
      "large": "https://resources.cdn-kaspi.kz/img/m/p/h94/h40/80852082098206.png?format=preview-large"
    },
    {
      "small": "https://resources.cdn-kaspi.kz/img/m/p/h34/h22/63761380048926.jpg?format=preview-small",
      "medium": "https://resources.cdn-kaspi.kz/img/m/p/h34/h22/63761380048926.jpg?format=preview-medium",
      "large": "https://resources.cdn-kaspi.kz/img/m/p/h34/h22/63761380048926.jpg?format=preview-large"
    },
    {
      "small": "https://resources.cdn-kaspi.kz/img/m/p/hf3/hda/63761382539294.jpg?format=preview-small",
      "medium": "https://resources.cdn-kaspi.kz/img/m/p/hf3/hda/63761382539294.jpg?format=preview-medium",
      "large": "https://resources.cdn-kaspi.kz/img/m/p/hf3/hda/63761382539294.jpg?format=preview-large"
    },
    {
      "small": "https://resources.cdn-kaspi.kz/img/m/p/h06/hcd/80852082130974.png?format=preview-small",
      "medium": "https://resources.cdn-kaspi.kz/img/m/p/h06/hcd/80852082130974.png?format=preview-medium",
      "large": "https://resources.cdn-kaspi.kz/img/m/p/h06/hcd/80852082130974.png?format=preview-large"
    },
    {
      "small": "https://resources.cdn-kaspi.kz/img/m/p/hcc/h3d/80852082163742.png?format=preview-small",
      "medium": "https://resources.cdn-kaspi.kz/img/m/p/hcc/h3d/80852082163742.png?format=preview-medium",
      "large": "https://resources.cdn-kaspi.kz/img/m/p/hcc/h3d/80852082163742.png?format=preview-large"
    },
    {
      "small": "https://resources.cdn-kaspi.kz/img/m/p/h60/hb7/80852082196510.png?format=preview-small",
      "medium": "https://resources.cdn-kaspi.kz/img/m/p/h60/hb7/80852082196510.png?format=preview-medium",
      "large": "https://resources.cdn-kaspi.kz/img/m/p/h60/hb7/80852082196510.png?format=preview-large"
    },
    {
      "small": "https://resources.cdn-kaspi.kz/img/m/p/h48/h54/63761394401310.jpg?format=preview-small",
      "medium": "https://resources.cdn-kaspi.kz/img/m/p/h48/h54/63761394401310.jpg?format=preview-medium",
      "large": "https://resources.cdn-kaspi.kz/img/m/p/h48/h54/63761394401310.jpg?format=preview-large"
    },
    {
      "small": "https://resources.cdn-kaspi.kz/img/m/p/hb1/h5c/80852082229278.png?format=preview-small",
      "medium": "https://resources.cdn-kaspi.kz/img/m/p/hb1/h5c/80852082229278.png?format=preview-medium",
      "large": "https://resources.cdn-kaspi.kz/img/m/p/hb1/h5c/80852082229278.png?format=preview-large"
    }
  ],
  "teasers": [],
  "credit_monthly_price": 6858,
  "monthly_installment": {
    "id": 12,
    "installment": true,
    "formatted_per_month": "6 858 ₸"
  },
  "reviews_link": "/p/stabilizator-naprjazhenija-8-kvt-asn-8000-1-ts-resanta-releinyi-140-260v-odnofaznyi-63-6-7-5400775/?c=750000000&tab=reviews",
  "weight": 0,
  "unit": {
    "type": "PIECES",
    "increment": 1,
    "measurement_literal": "шт",
    "counting_literal": "шт",
    "code": null
  },
  "rating": 4.9,
  "reviews_quantity": 68,
  "stock": 1,
  "currency": "KZT",
  "mods": "",
  "delivery_duration": "EXPRESS",
  "base_product_codes": [
    "[Master - Stabilizers][resanta]{АСН/1-Ц}"
  ],
  "is_brand_official_partner": false,
  "category": [
    "Компьютеры",
    "Периферия",
    "ИБП и стабилизаторы"
  ],
  "category_ru": [
    "Компьютеры",
    "Периферия",
    "ИБП и стабилизаторы"
  ],
  "category_codes": [
    "UPS",
    "Peripherals",
    "Computers",
    "Categories"
  ],
  "groups": [
    "6d4e66fb-8dbe-475e-95ed-4f60444a9bde",
    "c6c99e86-eeec-44c8-bf8e-6bc575929036"
  ],
  "promo": [
    {
      "code": "RASSROCHKA_DEFAULT_BADGE",
      "type": "LOAN",
      "priority": 12,
      "owner": "KASPI",
      "bonus_type": "",
      "display_duration": 12,
      "img": {
        "alt": null,
        "medium": {
          "src": "https://mrk.cdn-kaspi.kz/msd/Aimira/2026/FEB/YELLOW_BADGE/card_small/0012/0012_3x.png",
          "width": 65,
          "height": 35
        },
        "large": {
          "src": "https://mrk.cdn-kaspi.kz/msd/Aimira/2026/FEB/YELLOW_BADGE/card_small/0012/0012_3x.png",
          "width": 84,
          "height": 45
        },
        "small": {
          "src": "https://mrk.cdn-kaspi.kz/msd/Aimira/2026/FEB/YELLOW_BADGE/card_small/0012/0012_3x.png",
          "width": 65,
          "height": 35
        }
      }
    },
    {
      "code": "DEFAULT_BONUS_BADGE_FROM_5K",
      "type": "BONUS",
      "priority": 3,
      "owner": "KASPI",
      "bonus_type": "RELATIVE",
      "bonus_in_currency": 2468,
      "display_type": "ABSOLUTE",
      "img": {
        "alt": null,
        "medium": {
          "src": "https://static.cdn-kaspi.kz/msd/goods_badge/3.png",
          "width": 65,
          "height": 35
        },
        "large": {
          "src": "https://static.cdn-kaspi.kz/msd/goods_badge/3.png",
          "width": 84,
          "height": 45
        },
        "small": {
          "src": "https://static.cdn-kaspi.kz/msd/goods_badge/3.png",
          "width": 65,
          "height": 35
        }
      }
    }
  ],
  "major_merchants": [],
  "best_merchant": "3721006",
  "delivery_zones": [
    "750000000"
  ],
  "from_url": "https://kaspi.kz/shop/c/computers/?source=kaspikz&page=2"
}
```

Each scraped product returns a comprehensive record with 36+ fields:

#### Product Identification

| Field | Meaning |
|---|---|
| `ID` | Unique Kaspi product identifier |
| `Config SKU` | SKU code for variant tracking |
| `Title` | Product name as displayed on Kaspi |
| `Brand` | Manufacturer or brand name |
| `Category` | English product category (e.g., "Laptops") |
| `Category RU` | Russian product category name |
| `Category ID` | Internal category numeric identifier |
| `Category Codes` | Additional category classification codes |
| `Has Variants` | Whether the product has color/size variants |

#### Pricing & Payments

| Field | Meaning |
|---|---|
| `Unit Price` | Original product price in local currency |
| `Unit Sale Price` | Current discounted/sale price |
| `Price Formatted` | Price as displayed to customers (formatted string) |
| `Price Minus Bonus` | Price after Kaspi bonus/cashback deduction |
| `Credit Monthly Price` | Monthly installment amount if financed |
| `Monthly Installment` | Calculated monthly payment for credit plans |
| `Currency` | Currency code (e.g., "KZT" for Tenge) |
| `Loan Available` | Whether financing/loan options are available |

#### Ratings & Reviews

| Field | Meaning |
|---|---|
| `Rating` | Average product rating (e.g., 4.5 stars) |
| `Reviews Quantity` | Total number of customer reviews |
| `Reviews Link` | Direct URL to product review section |

#### Product Details

| Field | Meaning |
|---|---|
| `Weight` | Product weight (useful for shipping estimates) |
| `Unit` | Unit of measurement (kg, pieces, etc.) |
| `Created Time` | Product listing creation date |
| `Stickers` | Badge labels (e.g., "New", "Best Seller", "Sale") |
| `Preview Images` | URLs of product photos/thumbnails |
| `Teasers` | Promotional banners or highlights |
| `Mods` | Product modifications or configurations available |
| `Base Product Codes` | Parent product codes if this is a variant |

#### Stock & Availability

| Field | Meaning |
|---|---|
| `Stock` | Current inventory/availability status |
| `Delivery Duration` | Estimated delivery time (e.g., "1-2 days", "Within a week") |
| `Delivery Zones` | Geographic areas where delivery is available |

#### Merchant & Partnership Info

| Field | Meaning |
|---|---|
| `Shop Link` | URL to the merchant's Kaspi storefront |
| `Best Merchant` | Primary/recommended seller for this product |
| `Major Merchants` | List of authorized or major sellers |
| `Is Brand Official Partner` | Whether the merchant is an official brand partner |

#### Categorization & Promotions

| Field | Meaning |
|---|---|
| `Groups` | Product groupings or collections |
| `Promo` | Active promotional campaigns or offers |

***

### How to Use

1. **Find Kaspi URLs** — Navigate to Kaspi.kz and open a category page, search results, or product list. Copy the URL (e.g., `/shop/c/computers/`).
2. **Add to configuration** — Paste URLs into the `urls` array. You can add one URL or multiple for batch scraping.
3. **Set limits** — Choose `max_items_per_url` based on your needs. Start with `200` for balanced speed and completeness.
4. **Enable error handling** — Set `ignore_url_failures: true` to prevent the scraper from stopping on connection errors.
5. **Run the scraper** — Start the actor and monitor progress via the run log.
6. **Export data** — Download results as JSON, CSV, or Excel for analysis, reporting, or database import.

**Tips for best results:**

- Use category URLs (`/shop/c/category-name/`) to scrape hundreds of products efficiently.
- Combine with search queries (`/search/?q=keyword`) to target specific products.
- Set `max_items_per_url: 200` for comprehensive coverage without excessive runtime.
- Export to CSV for spreadsheet analysis or JSON for programmatic integration.

***

### Use Cases & Business Value

- **Price intelligence:** Track Kaspi pricing changes and competitor discounts in real time
- **Inventory management:** Monitor stock levels and product availability across merchants
- **Market research:** Analyze bestselling products, categories, and pricing trends in Kazakhstan
- **Merchant benchmarking:** Compare performance, ratings, and delivery times across sellers
- **Data enrichment:** Augment internal catalogs with fresh Kaspi product data
- **Promotion tracking:** Monitor active campaigns, bonuses, and limited-time offers

By automating data extraction, the **Kaspi Product Search Scraper** saves hours of manual work while providing cleaner, more consistent data for decision-making.

***

### Conclusion

The **Kaspi.kz Product Search Scraper** transforms unstructured e-commerce listings into actionable intelligence. With 36+ fields spanning pricing, ratings, inventory, and merchant details, it provides everything needed for competitive analysis, price monitoring, and market research. Whether you're a price aggregator, market analyst, or e-commerce professional, this scraper delivers reliable Kaspi data at scale.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the product list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://kaspi.kz/shop/c/computers/?source=kaspikz"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}
```

# 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 = {
    "urls": [
        "https://kaspi.kz/shop/c/computers/?source=kaspikz"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("soft_alexist/kaspi-product-search-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 = {
    "urls": ["https://kaspi.kz/shop/c/computers/?source=kaspikz"],
    "ignore_url_failures": True,
    "max_items_per_url": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("soft_alexist/kaspi-product-search-scraper").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 '{
  "urls": [
    "https://kaspi.kz/shop/c/computers/?source=kaspikz"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}' |
apify call soft_alexist/kaspi-product-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=soft_alexist/kaspi-product-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/HGV9DNKsagpXFhCdW/builds/Gz0nAIDKvBjirJpSu/openapi.json
