Kaspi.kz Product Search Scraper — Prices, Sellers & Ratings avatar

Kaspi.kz Product Search Scraper — Prices, Sellers & Ratings

Pricing

from $0.70 / 1,000 result items

Go to Apify Store
Kaspi.kz Product Search Scraper — Prices, Sellers & Ratings

Kaspi.kz Product Search Scraper — Prices, Sellers & Ratings

Kaspi.kz marketplace products for price monitoring, assortment research and AI agents: search or browse any category in 320 cities, filter by brand, merchant, price and rating. Price, installment, rating, reviews, merchant offers with min/max price, optional specs.

Pricing

from $0.70 / 1,000 result items

Rating

0.0

(0)

Developer

Samat Makatov

Samat Makatov

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

1

Monthly active users

3 days ago

Last modified

Share

Structured product data from kaspi.kz, Kazakhstan's largest marketplace: search by text or browse any of 1 700+ catalogue categories in any of 320 cities, filter by brand, merchant, price, rating and freshness, and get price, bonus, installment terms, rating and review counts for every product. Optional add-ons return the merchant offers (how many sellers, min/max price, cheapest sellers with rating and delivery speed), the rating breakdown with latest reviews, and the full specification table from the product page. Built for price monitoring, assortment and competitor research, sellers entering Kaspi, and AI shopping agents.

One run can cover a whole market: several queries and categories × many cities (presets for the 10 biggest cities, all 20 regional centres, a whole region or all 320 cities); a list of your own product links checked in every city; your shop's position among all sellers (rank, gap to the cheapest competitor); and change tracking between scheduled runs (new, cheaper, pricier, out of stock, removed) so a daily schedule outputs only what changed.

Uses the site's own JSON endpoints — no browser, no API key. kaspi.kz blocks datacenter IPs, so on the Apify platform the run goes through Apify residential proxy (Kazakhstan), which is on by default.

Use cases

  • Price monitoring of your SKUs — paste product links into productUrls, pick cities, schedule daily with trackChanges + onlyChanges: you get only products whose price or number of sellers moved.
  • Seller repricing input — myMerchantId shows, for every product and city, your price, your rank among all sellers and how much cheaper the cheapest competitor is. With merchantId set to the same id it covers your whole storefront.
  • Regional price comparison — one query in cityIds: ["@regional-centers"] → the same products in 20 cities with price, delivery speed and sellers per city; every row has region.
  • Price monitoring by search — track the cheapest offer and number of sellers every day (queries / categories + brand, includeOffers: true).
  • Competitor / merchant intelligence — list everything a given merchant sells (merchantId) with prices and ratings.
  • Assortment research before entering Kaspi — browse a category sorted by rating, see how many products, reviews and sellers each niche has (saveFacets: true gives the full facet counts).
  • New-arrival alerts — sort: "newest" + sinceDays: 1 on a category, scheduled daily; maxPages sets how deep the run looks for them (see Limits).
  • Product content & specs — detail: true for the specification table, description and breadcrumbs (catalogue enrichment, AI agents).

Input

Search needs at least one of query / queries / category / categories; product monitoring needs productUrls. All other fields are optional.

FieldTypeDefaultAllowed values / notes
modestringsearchsearch, products (the productUrls in every city), cities / categories (reference lists, no scraping; query filters them). With only productUrls filled the run switches to products by itself. Any other value is refused by Apify before the run starts.
queriesstring[][]Extra search texts; merged with query.
categoriesstring[][]Extra category codes; merged with category. Every query × category × city is one search (max 2 000 per run).
productUrlsstring[][]kaspi product links or numeric ids. One row per product × city: city price, availability (available), rating, sellers with includeOffers. Products not sold in a city come back with available: false.
cityIdsstring[][]Several cities: ids, codes, names, or presets @top-10, @regional-centers, @region:<code>, @all (see Reference → Regions). Overrides cityId.
myMerchantIdstring–Your merchant id → myPrice, myRank, sellersCount, cheapestCompetitorPrice, cheapestMerchantName, priceGapToCheapest, priceGapPct, isCheapest, myDeliveryDays per product and city. The id is the offers[].merchantId value kaspi.kz shows — a number (234005) or a word (Gadgetcity); case and spaces do not matter. Products you do not sell keep the competitor columns and leave the my* ones empty.
trackChangesbooleanfalseCompare with the previous run of the same monitorKey; adds changeType, previousPrice, priceChange, priceChangePct, previousOffersCount, offersCountChange, firstSeenAt, previousSeenAt.
monitorKeystringdefaultSeparate history per monitor (stored in your account as key-value store kaspi-monitor-<key>).
onlyChangesbooleanfalseWith trackChanges: skip unchanged products (they are not saved and not charged). The first run saves the baseline and outputs everything.
includeRemovedbooleantrueWith trackChanges: a removed row for products that disappeared — only when every search was read to its end and nothing failed.
maxTotalItemsinteger10000Cap on dataset rows (= charged rows) for the whole run, removed rows included. Unchanged products skipped by onlyChanges do not count.
maxConcurrencyinteger31–10 searches / product lookups at the same time. 6 is a good value for big multi-city runs (see Limits).
querystring–Free-text search as on kaspi.kz (Russian or English).
categorystring–Category code or Russian title, e.g. Smartphones, Notebooks, TVs, Tires, Шины. See Reference → Categories. A near miss (Smartfones, Notebook) is corrected to the closest known code — the correction appears in the log and in the run status message. Codes we do not know are passed through with a warning.
cityIdstring750000000kaspi city id, URL code (almaty, nur-sultan) or city name (Russian/English). See Reference → Cities.
brandstring[][]Manufacturer names as on kaspi.kz (Apple, Samsung). Several = OR. Server-side (:manufacturerName:).
merchantIdstring–Only products of this merchant (:allMerchants:). Ids appear in offers[].merchantId.
facetsobject–Any other kaspi facet `{code: value
priceFrom / priceTointeger–Tenge, client-side. With sort: cheapest / expensive paging stops early.
minRatingnumber–0–5, client-side.
minReviewsinteger–Client-side.
officialPartnerOnlybooleanfalseBest offer from an official brand partner (client-side).
sinceDaysinteger–Products first listed within N days (createdAt, client-side). Best with sort: newest. kaspi's "newest" order is often shuffled (see Limits): when it is, the scan reads maxPages pages and keeps every fresh product it finds, so maxPages decides how deep the run digs.
sortstringrelevancerelevance, newest, cheapest, expensive, rating, or the legacy values priceAsc, priceDesc. Any other value is refused by Apify before the run starts.
maxItemsinteger501–1000 per search (query × category × city). kaspi returns 12 products per request.
maxPagesinteger1001–200 safety cap (matters when client-side filters reject most products).
includeOffersbooleanfalse+1 request/product: offersCount, minOfferPrice, maxOfferPrice, cheapest offers[], deliveryFacets.
offersLimitinteger51–50 offers kept per product.
includeReviewsSummarybooleanfalse+1 request/product: rating distribution, positive/negative/with-photo counts, 3 latest reviews.
detailbooleanfalse+1 page/product: specifications, specificationGroups, description, breadcrumbs, gallery size, discount.
saveFacetsbooleanfalseSave total, sort options, every facet with counts and the category tree to key-value store record SEARCH_FACETS.
dedupebooleantrueOne row per product × city: skip products repeated across pages and found again by another query or category in the same city. false keeps every search's own row.
fieldsstring[][]Keep only these columns, in this order (empty = all), e.g. ["title", "price", "cityName", "url"]. id and cityId (plus changeType with trackChanges) are always kept and come first unless you list them; mode cities always keeps id, categories keeps code. Case, spaces and _ do not matter; a near miss with one candidate (pric) is read as it and an unknown name is ignored — both are named in the run status and SUMMARY. If none of the names exists, the run fails with the list of valid names (see Output).
proxyobjectApify RESIDENTIAL, country KZRequired on the Apify platform — kaspi.kz blocks datacenter IPs.

Server-side vs client-side: kaspi's search API accepts category, brand, merchant and facet filters, but not arbitrary price/rating ranges — those are applied after download and the log tells you so. Nothing is silently ignored: unknown categories and cities produce warnings, and if kaspi applies a different category than requested the run warns.

Reference

Run {"mode": "cities"} or {"mode": "categories"} to get these lists as a dataset (CSV/Excel/JSON) — every city with its region, every category with its parent and catalogue URL. cities returns all 320 rows, categories the 20 roots; add query to keep the rows where a word of any field starts with that text ({"mode": "categories", "query": "tires"} → every tyre category; "шины" → the tyre categories with «Шины» in the Russian title, not «Стиральные машины»). The complete lists are always saved, free of charge, to key-value store records CITIES and CATEGORIES.

Regions and city presets (cityIds)

PresetCities
@top-10Almaty, Astana, Shymkent, Karaganda, Aktobe, Taraz, Pavlodar, Oskemen, Semey, Atyrau
@regional-centers20: Astana, Almaty, Shymkent + Kokshetau, Aktobe, Taldykorgan, Atyrau, Oral, Taraz, Karaganda, Zhezkazgan, Kostanay, Kyzylorda, Aktau, Turkestan, Pavlodar, Petropavl, Oskemen, Semey, Konaev
@region:<code>Every kaspi city of one region (codes below)
@allAll 320 cities (combine with a small maxItems)

Every row carries region. kaspi city ids are KATO codes, whose first two digits name the region in the pre-2022 division, so Zhetysu is inside 19, Ulytau inside 35 and Abai inside 63:

CodeRegionCodeRegion
71Астана (city)35Карагандинская обл. и Улытау
75Алматы (city)39Костанайская обл.
79Шымкент (city)43Кызылординская обл.
11Акмолинская обл.47Мангистауская обл.
15Актюбинская обл.51Туркестанская обл.
19Алматинская обл. и Жетысу55Павлодарская обл.
23Атырауская обл.59Северо-Казахстанская обл.
27Западно-Казахстанская обл.63Восточно-Казахстанская обл. и Абай
31Жамбылская обл.

Cities (cityId, cityIds)

Prices, stock and delivery differ by city. The most common ones:

CityidURL code
Алматы (Almaty)750000000almaty
Астана (Astana)710000000nur-sultan
Шымкент (Shymkent)511010000shymkent
Караганда (Karaganda)351010000karaganda
Актобе (Aktobe)151010000aktobe
Тараз (Taraz)311010000taraz
Павлодар (Pavlodar)551010000pavlodar
Усть-Каменогорск (Ust-Kamenogorsk)631010000ust-kamenogorsk
Семей (Semey)632810000semey
Атырау (Atyrau)231010000atyrau
Костанай (Kostanai)391010000kostanai
Кызылорда (Kyzylorda)431010000kyzylorda
Уральск (Uralsk)271010000uralsk
Петропавловск (Petropavlovsk)591010000petropavlovsk
Актау (Aktau)471010000aktau
Туркестан (Turkestan)512610000turkestan
Кокшетау (Kokshetau)111010000kokshetau
Талдыкорган (Taldykorgan)191010000taldykorgan
Экибастуз (Ekibastuz)552210000ekibastuz
Темиртау (Temirtau)352410000temirtau
Конаев (Капшагай) (Kapshagay)191610000kapshagay
Жезказган (Zhezkazgan)351810000zhezkazgan

Categories (category)

20 root categories and 1732 sub-categories are built in (level 2 and 3 of the kaspi.kz catalogue). Codes are case-insensitive; Russian titles work too. Any code from a catalogue URL https://kaspi.kz/shop/c/<code>/ can be passed.

Root codeTitleSub-category codes (examples)
Smartphones and gadgetsТелефоны и гаджетыPhone accessories, Phone cases, Smartphones screen protection, Phone holders, Wireless chargers, Cables and adapters, Power banks, Cases for chargers and cables, Cooling systems for smartphones, Smartphone displays, Cell phone batteries, Stickers for phones, Smart lenses for smartphones, Magnifying screens for smartphones, … (49 total)
ComputersКомпьютерыPeripherals, Mice, Other peripherals, Keyboards, Computer cables and adapters, Mouse pads, USB Flash drives, Monitors, Memory cards, UPS, Storage devices, Webcams, Controllers for streaming, Notebooks and accessories, … (83 total)
Home equipmentБытовая техникаKitchen appliances, Stoves and grills, Mixers blenders and choppers, Other kitchen appliances, Kettles, Making desserts, Coffee machines and coffee makers, Food processors and grinders, Table stoves, Accessories for small kitchen appliances, Pumps for water, Multicooker and cooking equipment, Juicers, Toasters, … (68 total)
TV_AudioТВ, Аудио, ВидеоHeadphones, Audio, Portable audio, Professional audio, Headphone accessories, Home Audio and Hi-Fi, Cables and connectivity, Smart speakers, Microphone and speaker accessories, Photo_Video, Batteries and accumulators, Tripods, Ring lights, Studio light, … (91 total)
Car goodsАвтотоварыReplacement parts, Engine, Autoeletrics, Car chassis, Car body parts, Car filters, Cooling system, Brake system, Transmission, Car interior parts, Steering, Fuel supply system, Car exhaust system, Air Intake Systems, … (121 total)
Beauty careКрасота и здоровьеSkin care, Creams, Makeup removers, Cotton pads and stems, Lotions, Facial masks, Makeup remover, Lip care products, Scrubs and peelings, Patches, Cosmetic tweezers, Matting napkins, Hair care, Hair accessories, … (145 total)
Child goodsДетские товарыToys, Educational toys, Stuffed toys, Toy sets, Construction, Play vehicles, Dolls and accessories, Stress relief toys, Play mats for kids, Toy weapons and blasters, Remote control toys and accessories, Toy figures, Outdoor games, Toy robots and transformers, … (57 total)
PharmacyАптекаMedications, Cold and flu, Stomach intestines liver, Inflammation and infections, Cardiovascular system, Obstetrics and gynecology, Antimicrobial drugs, Healing creams, Allergy, Boost immunity, Neurology, Vision, Disinfectants, Endocrinology, … (117 total)
FurnitureМебельBedroom, Wardrobes, Beds, Bedroom mattresses, Bedroom sets, Bedroom dressers, Camping cots, Nightstands, Dressing tables, Living room, Sofas, Coffee tables, TV stands, Poufs, … (72 total)
Construction and repairСтроительство, ремонтPower tools, Tooling equipment, Electrical tools, Measurement tools, Electric and gasoline saws, Spray guns, Tool storage, Welding equipment, Electric soldering irons and accessories, Nail and staple guns, Power tool sets, Pneumatic tools, Radio components, Plumbing, … (112 total)
Sports and outdoorsСпорт, туризмCamping and hiking, Hiking, Camping, Camping lanterns and accessories, Tents and awnings, Camping knives and multitools, Camping burners heaters, Backpacks and bags, Optics, Metal detectors and accessories, Chargers for tourism, Fitness, Hand strengtheners, Fitness equipments, … (155 total)
Pet goodsТовары для животныхCat goods, Wet cat food, Dry cat food, Toys for cats, Cat snacks, Cat scratching pads, Hygiene and care for animals, Cat litter, Shampoos and conditioners for animals, Pet underpads, Pet odour eliminators, Animal repellent sprays, Poop bags for pets, Pet serums and oils, … (100 total)
LeisureДосуг, книгиHobbies and crafts, Painting goods, Crafting goods, Modelling goods, Goods for sewing and embroidery, Scrapbooking goods, Knitting goods, Collecting and modeling, Decoupage goods, Books, Schoolbooks and study guides, Kids books, Fiction, Self-help literature, … (65 total)
HomeТовары для дома и дачиHousehold goods, Home paper products, Cleaning tools, Bathroom and toilet accessories, Clothing care, Packaging materials, Shoes care, Accessories for kitchen sinks, Household bags, Household ropes, Lighters, Kitchenware, Kitchen accessories, Utensils for cooking, … (81 total)
FashionОдеждаWomen fashion, Women underwear, Women t-shirts, Women leisurewear, Women outerwear, Women cardigans, Women suits and sport suits, Women pants, Women blouses and shirts, Women dresses, Women tanks and camis, Women skirts, Women sport suits, Women swimwear, … (98 total)
ShoesОбувьWomen shoes, Women trainers, Women fashion slippers, Women flip flops, Women dress shoes, Women knee boots, Women boots, Women sandals, Women ballet pumps, Women moccasins, Women mules, Women ankle boots, Women safety shoes, Women dance shoes, … (67 total)
Fashion accessoriesАксессуарыTravel gear, Fashion handbags, Backpacks, Travel duffels, Wallets, Suitcases, Travel accessories, Passport holders, Suitcase covers, Hats and scarves, Fashion hats and caps, Fashion scarves, Fashion gloves and mittens, Watches, … (37 total)
Jewelry and BijouterieУкрашенияEarrings bijouterie and jewelry, Imitation earrings, Earrings, Rings bijouterie and jewelry, Rings, Imitation rings, Bracelets bijouterie and jewelry, Bracelets, Imitation bracelets, Necklaces bijouterie and jewelry, Necklaces, Imitation necklaces, Jewelry and bijouterie sets, Jewelry sets, … (43 total)
Gifts and party suppliesПодарки, товары для праздниковNew year decor, Electric string lights, New Year trees, Tree ornaments, New year decorations, Tinsel rain, Illuminated decorations, Hooks and accessories for garlands, New Year wreaths, Fir needle decorations, Artificial snow, Fireworks, Holiday decorations, Party balloons, … (57 total)
Office and school suppliesКанцелярские товарыPaper products, Exercise notebooks, Office paper, Paper notebooks, Envelope mailers, Memo sheets, Account books and journals, Posters, Drawing and copying paper, Document forms, Calendars, Flipchart pads, Writing Supplies, Pens and pen supplies, … (114 total)

Sort (sort)

Valuekaspi.kz sortMeaning
relevance(none)Popular (site default)
newestcreated-descNewest first
cheapestprice-ascCheapest first
expensiveprice-descMost expensive first
ratingratingHighest rating
priceAscprice-ascCheapest first (alias)
priceDescprice-descMost expensive first (alias)

Delivery speed (deliveryDuration, offers[].deliveryDuration)

EXPRESS, TODAY, TOMORROW, TILL_2_DAYS, TILL_5_DAYS, TILL_7_DAYS, OTHER

Examples

Your products in every regional centre, only what changed since yesterday (schedule daily)

{ "productUrls": ["https://kaspi.kz/shop/p/apple-iphone-15-128gb-nanosim-esim-chernyi-113137790/", "176684789"], "cityIds": ["@regional-centers"], "includeOffers": true, "trackChanges": true, "monitorKey": "my-skus", "onlyChanges": true }

My shop vs competitors — rank and gap to the cheapest seller for my whole storefront in Almaty and Astana

{ "category": "Smartphones and gadgets", "merchantId": "234005", "myMerchantId": "234005", "cityIds": ["almaty", "astana"], "maxItems": 200 }

Regional price comparison — three models in the 10 biggest cities

{ "queries": ["iphone 16 128", "galaxy s25", "redmi note 14"], "category": "Smartphones", "cityIds": ["@top-10"], "sort": "cheapest", "maxItems": 5 }

Reference lists — all tyre categories, all cities of Karaganda region

{ "mode": "categories", "query": "tires" }
{ "mode": "cities", "query": "Караганд" }

Daily price monitor — iPhone 17 Pro in Almaty with sellers

{ "query": "iphone 17 pro", "category": "Smartphones", "brand": ["Apple"], "cityId": "almaty", "sort": "cheapest", "includeOffers": true, "offersLimit": 10, "maxItems": 30 }

Niche research — best-rated robot vacuums with review breakdown

{ "query": "робот пылесос", "sort": "rating", "minReviews": 50, "includeReviewsSummary": true, "saveFacets": true, "maxItems": 100 }

Competitor catalogue — everything one merchant sells in Astana

{ "category": "Smartphones and gadgets", "merchantId": "441010", "cityId": "710000000", "maxItems": 500 }

New arrivals alert — tyres added in the last 3 days

{ "category": "Tires", "sort": "newest", "sinceDays": 3, "maxItems": 60, "maxPages": 15 }

New products are scattered over kaspi's "newest" pages, so maxPages decides how deep the run digs (≈ 2–5 s per page): 15 pages ≈ 1 minute.

Catalogue enrichment — Samsung smartphones from 100 000 ₸ with full specs

{ "category": "Smartphones", "brand": ["Samsung"], "priceFrom": 100000, "sort": "cheapest", "detail": true, "maxItems": 50 }

Output

One dataset item per product (per product × city in multi-city runs). Rows are saved as each search page or product lookup is done, a few seconds apart, so rows of different searches and cities can interleave — sort by cityId, query and position when you need a fixed order. fields keeps only the columns you list. Every run also writes key-value store record SUMMARY (rows delivered, why the run stopped, failed or skipped searches, filter counts, input notes). Dataset views: Overview, Merchant offers, Ratings, Price changes, My seller position, Reference. Example (trimmed; includeOffers, includeReviewsSummary and detail on; real run, Astana):

{
"id": "169791776",
"title": "Samsung Galaxy A07 6 ГБ/128 ГБ черный + сетевое зарядное устройство Samsung EP-T2510NBEGRU",
"brand": "Samsung",
"url": "https://kaspi.kz/shop/p/samsung-galaxy-a07-6-gb-128-gb-chernyi-setevoe-zarjadnoe-ustroistvo-samsung-ep-t2510n…-169791776/?c=710000000",
"price": 104990, "salePrice": 104990, "priceMinusBonus": 101841, "bonusKzt": 3149, "currency": "KZT",
"creditMonthlyPrice": 8750, "installmentMonths": 12, "loanAvailable": true,
"rating": 5, "reviewsCount": 12,
"categoryPath": ["Телефоны и гаджеты", "Смартфоны"], "categoryCode": "Smartphones",
"createdAt": "2026-06-20T09:24:57.359Z", "deliveryDuration": "TODAY", "isBrandOfficialPartner": false,
"bestMerchantId": "10637013", "image": "https://resources.cdn-kaspi.kz/img/m/p/p38/pe1/152760318.jpg?format=preview-large",
"position": 31, "searchTotal": 907, "cityId": "710000000", "cityName": "Астана", "category": "Smartphones",
"fetchedAt": "2026-09-13T08:11:53.744Z",
"offersCount": 3, "minOfferPrice": 104990, "maxOfferPrice": 115000,
"offers": [{ "merchantId": "10637013", "merchantName": "iNOVА", "price": 104990, "merchantRating": 4.9, "merchantReviews": 237, "deliveryDuration": "TILL_2_DAYS", "kaspiDelivery": true }],
"ratingDistribution": { "1": 0, "2": 0, "3": 0, "4": 0, "5": 21 }, "reviewsTotal": 21, "reviewsNegative": 0, "reviewsWithPhotos": 7,
"latestReviews": [{ "date": "06.09.2026", "rating": 5, "text": "Телефон уақытылы жеткізілді…" }],
"specifications": { "4G (LTE)": "да", "Операционная система": "Android 15", "Тип SIM-карты": "dual nano SIM" },
"breadcrumbs": ["Kaspi Магазин", "Телефоны и гаджеты", "Смартфоны"], "maxQuantity": 3
}
FieldDescription
id, url, title, brandkaspi product id, product URL (with city), title, manufacturer
price, salePrice, priceMinusBonus, bonusKzt, currencyBest price in ₸ for the city, sale price, price after Kaspi bonus, bonus amount
creditMonthlyPrice, installmentMonths, loanAvailableKaspi installment / credit terms
rating, reviewsCountAverage rating 0–5 and number of reviews
categoryPath, categoryCode, categoryIdCategory breadcrumb (Russian), code, id
createdAtWhen the product card first appeared on kaspi.kz
deliveryDurationFastest delivery option of the best offer (see Reference)
isBrandOfficialPartner, hasVariants, stickersOfficial partner flag, colour/size variants, promo stickers
bestMerchantId, majorMerchantsMerchant behind the shown price; large merchants selling it
image, images, unitPreview images, unit of sale
position, searchTotalRank in the result list; total products matching the search (market size)
cityId, cityName, region, query, category, fetchedAtEcho of the search scope (region of the city) and fetch timestamp
availablefalse when a product from productUrls is not sold / not delivered in that city (price fields are then null)
offersCount, minOfferPrice, maxOfferPrice, fastestDeliveryDays, offers[], deliveryFacetsWith includeOffers — sellers, spread, fastest delivery, cheapest offers (merchant id/name, price, rating, reviews, delivery speed/date, deliveryDays, deliveryCost, freeDeliveryFrom, postomat)
myPrice, myRank, sellersCount, cheapestPrice, cheapestMerchantName, cheapestCompetitorPrice, priceGapToCheapest, priceGapPct, isCheapest, myDeliveryDaysWith myMerchantId — your position among all sellers in that city (ties share a rank; nulls when you do not sell the product)
changeType, previousPrice, priceChange, priceChangePct, previousOffersCount, offersCountChange, firstSeenAt, previousSeenAtWith trackChanges — changeType is new, priceUp, priceDown, unchanged, outOfStock, backInStock or removed; the run summary is in key-value store record CHANGES
ratingGlobal, ratingDistribution, reviewsTotal, reviewsWithComments, reviewsPositive, reviewsNegative, reviewsWithPhotos, latestReviews[]With includeReviewsSummary
specifications, specificationGroups, description, breadcrumbs, galleryCount, discount, priceBeforeDiscount, maxQuantity, aiGeneratedDescriptionWith detail
offersError, reviewsError, detailErrorPresent only when that add-on request failed for the product, or was not made because the run was stopping (spending limit, run timeout) — the item is still saved
unavailableReasonProducts mode: why a product is available: false in that city

Use it from code / agents

curl -X POST "https://api.apify.com/v2/acts/yadroo~kaspi-kz-products/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"query":"iphone 17 pro","cityId":"almaty","sort":"cheapest","maxItems":20}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('yadroo/kaspi-kz-products').call({ category: 'Tires', sort: 'newest', sinceDays: 3 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("yadroo/kaspi-kz-products").call(run_input={"query": "робот пылесос", "includeOffers": True, "maxItems": 50})
items = client.dataset(run["defaultDatasetId"]).list_items().items

MCP: add https://mcp.apify.com to Claude / Cursor / any MCP client and call the yadroo/kaspi-kz-products tool with the same JSON input.

Pricing

Pay per event: $0.005 per run start + $0.001 per dataset row on the Free plan; Bronze $0.0009, Silver $0.0008, Gold and above $0.0007 per row. The start event is the same on every plan. Platform usage and the residential proxy traffic are included in the price.

Every dataset row counts as one result: a product (one per city in multi-city runs), a products-mode row with available: false for a product that is not sold in a city, a removed row of change tracking, and a city or category row of the reference modes. Unchanged products skipped by onlyChanges are not saved and not charged; the full reference lists in key-value store records CITIES and CATEGORIES are free.

Typical runs (Free plan): 50 products ≈ $0.055; 500-product category snapshot ≈ $0.505. includeOffers, includeReviewsSummary and detail do not change the per-row price but add one request per product each, so the run takes longer.

Your maximum cost per run is respected: the run stops reading when the rows on their way would exceed it, keeps every row already saved and ends with the status "Stopped at your spending limit: N rows delivered".

Limits & FAQ

  • Proxy — kaspi.kz rejects datacenter IPs. Keep the default residential proxy (country KZ). A 403 or a non-JSON answer is asked again through another IP, then fails that search with a clear message instead of returning empty data. With your own proxy URLs (proxyUrls) the requests rotate over all of them.
  • Request pace and robots.txt — product, offer and review data come from kaspi.kz's JSON endpoints under /yml/, which its robots.txt does not disallow. The same robots.txt asks for 10 s between requests (Crawl-delay: 10); this actor does not keep that delay — it runs 3 requests at a time by default (up to 10 with maxConcurrency), each through a rotating residential IP, with short pauses between pages and backoff on 429/5xx.
  • Rate limits (measured 23.09.2026 through Apify residential proxy, KZ) — the proxy, not kaspi, is the bottleneck (~4 s per request). One product in all 320 cities: 468 s at maxConcurrency 3, 2.8 % of requests retried. 112 cities: 72 s at 6 (no retries), 59 s at 10 (5 % retried). Search in all 320 cities at 6: 339 s. 1 080 products with sellers (1 223 requests) at 6: 17 min, 3.5 % retried. No 403 blocks in any test. 429/5xx are retried with backoff; under load kaspi occasionally answers without the product card, so a product-mode miss is re-checked after 2 s before it is reported as not sold (unavailableReason).
  • Depth — up to 1000 products per search (12 per page), up to 2 000 searches or product × city lookups and maxTotalItems rows per run. Split large categories by brand or sub-category.
  • Long runs and the timeout — rows are saved as they are read, not at the end. Near the run timeout the actor stops starting new requests (15 % of the timeout before it, at most 90 s), saves what it has read and ends SUCCEEDED with "Stopped before the run timeout: N rows saved"; raise the timeout or split the job for the rest. At the default 3 parallel requests one hour holds roughly 2 000 product × city lookups (about half that with includeOffers) or 10 000 search rows; maxConcurrency 6 is about twice as fast.
  • Batches are fault-tolerant — searches run 3 at a time by default; if one city or category fails (e.g. an unknown code), the others are still saved, the status message says how many failed and the reasons are in key-value store record ERRORS. The run fails only when every search failed and nothing was saved.
  • Change tracking is honest — a product is reported removed only when every search in the run was read to its end, nothing failed and the run was not cut short by your spending limit, the timeout or maxTotalItems; a search cut by maxItems would otherwise make products look removed. The history remembers only rows that were saved: a change that did not fit under your spending limit is reported again by the next run. Use productUrls for exact SKU monitoring.
  • Price and rating filters are client-side (kaspi's API does not support ranges); combine with the matching sort so paging stops early. When client-side filters drop products, the run status message says how many and why — a run that ends with 0 products always explains itself.
  • "Newest" is not sorted by date — kaspi's created-desc returns the recently listed products in shuffled order: measured on Tires (44 335 products, 27.09.2026) all 15 pages held the same age spread and the five products younger than 3 days sat at positions 35, 79, 81, 133 and 136. So sinceDays never stops at the first old pages when the order is shuffled (the log says when it is); it reads until maxItems or maxPages, whichever comes first. Give a big category enough pages — 15 pages ≈ 180 products ≈ 1 minute — and maxItems keeps the cost down; on a search that really comes back newest-first the scan still stops as soon as the window is behind it.
  • Errors are readable — invalid input (no query and no category, priceFrom > priceTo, fields without a single known column) and a blocked proxy end the run with the reason in the run's status message, not just in the log. An off-list mode or sort value is refused by Apify before the run starts, with the list of allowed values.
  • detail mode keeps what it has: if kaspi starts refusing product pages mid-run, the products are still saved (with detailError) instead of failing the whole run. A product page is about 80 KB against about 1 KB of search data per product (measured 02.10.2026), so detail runs are slower: 30 smartphones took 74 s with detail and 11 s without, at the default 3 parallel requests.
  • Freshness — live data at run time; prices differ by city and change during the day.
  • myMerchantId shows your assortment as it is — a search returns every product that matches, including the ones your shop does not sell (bundles, Dual-SIM variants, colours you dropped), so the my* columns are empty for those rows while sellersCount, cheapestPrice and cheapestMerchantName still describe the market. The status message says how many of the rows you sell, and a run where your id matches no offer at all warns that the id may be mistyped. Add merchantId with the same id to list only your own storefront.
  • Phone numbers of merchants are not published by kaspi.kz and are not collected.
  • Reviews and specs are fetched once per product in multi-city runs (they do not depend on the city); prices, sellers and delivery are per city.

Made by Yadroo. Sibling actors: krisha-kz (real estate), kolesa-kz (cars), hh-kz-vacancies (jobs), autoscout24-cars (EU cars).