Kaspi.kz API & Scraper
The Kaspi API turns Kaspi Магазин (kaspi.kz), Kazakhstan's largest marketplace, into clean JSON in five actions: search, product/detail, product/offers, product/reviews and seller/detail.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
search takes a keyword or a Kaspi category, applies Kaspi's own filters (brand, price band and the category's attributes, each returned with its value id and count), offers the site's five sort orders and pages 12 products at a time. Each row carries the product id, title, brand, images, the price in tenge, the Kaspi bonus amount and the instalment plan kept apart from the price, the rating and review count, the category path and the delivery speed. product/detail adds the full specification table, the description, every colour and size variant with its own product id, the exact average with the 1-5 breakdown, and the merchant offers cheapest first. product/offers pages through all of them: seller with rating and review count, price, pre-discount price where the merchant shows one, and courier, pickup and postomat dates for the city you pass. In a live check on 2026-09-15 across 14 products in 13 categories, title, price, offers, rating and specifications were filled on 14 of 14, and on 6 product pages compared against the page itself the title, the cheapest price, the offer count and the rating matched on all 6. Prices are KZT. No Kaspi account, no browser, one ReefAPI key and the standard { ok, data, meta, error } envelope.
One Kaspi product has many prices, and only one of them is what you pay
A Kaspi listing card shows a price, a Kaspi bonus and a monthly instalment side by side. The API keeps them apart: price (tenge), bonus_amount (cashback credited after purchase), price_after_bonus and installment {months, monthly_payment}. product/detail then reads the live merchant offers, so price_min is the cheapest offer right now.
| Product | price | bonus / instalment | Live offers |
|---|---|---|---|
| Apple iPhone 17 Pro 256Gb (145467625) | 676,136 KZT in search, 676,121 cheapest live offer | bonus 20,284 · 24 × 28,173 | 74 merchants |
| Concept Silver shampoo 300 ml (103659955) | 3,179 KZT | 48 merchants | |
| LEGO Ninjago 71862 (168565602) | 7,200 KZT | 2 merchants | |
| Leadbros HD-400W fridge (121431315) | 279,990 KZT | 1 merchant |
The search price comes from Kaspi's listing index and can trail the live offers by a few tenge: on 14 products checked it matched the cheapest live offer on 8 and was 1 to 90 KZT higher on the rest. Use product/detail price_min or product/offers when the exact figure matters.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/kaspi/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "iphone"
}
}{
"ok": true,
"meta": {
"api": "kaspi",
"endpoint": "search",
"mode": "live",
"latency_ms": 5556.6,
"record_count": 12,
"bytes": 202024,
"cache_hit": false,
"city": "almaty",
"pagination": {
"page": 1,
"page_size": 12,
"total": 1001,
"has_more": true
}
},
"data": {
"results": [
{
"position": 1,
"product_id": "145467625",
"group_id": null,
"title": "Apple iPhone 17 Pro 256Gb NanoSIM+eSIM оранжевый",
"brand": "Apple",
"url": "https://kaspi.kz/shop/p/apple-iphone-17-pro-256gb-nanosim-esim-oranzhevyi-145467625/?c=750000000",
"image": "https://resources.cdn-kaspi.kz/img/m/p/p18/p96/64168413.png?format=preview-large",
"images": [
"https://resources.cdn-kaspi.kz/img/m/p/p18/p96/64168413.png?format=preview-large",
"https://resources.cdn-kaspi.kz/img/m/p/p29/p1e/64464409.jpg?format=preview-large",
"https://resources.cdn-kaspi.kz/img/m/p/pfc/p95/64168414.png?format=preview-large"
],
"price": 669479,
"currency": "KZT",
"bonus_amount": 20084,
"price_after_bonus": 649395,
"installment": {
"months": 24,
"monthly_payment": 27895
},
"credit_available": true,
"rating": 4.9,
"rating_scale": 5,
"review_count": 2155,
"category_id": "00003",
"category_path": [
"Телефоны и гаджеты",
"Смартфоны"
],
"delivery_duration": "EXPRESS",
"has_variants": false,
"brand_official_partner": false,
"top_merchant_id": "12484078",
"stickers": [],
"sold_by_unit": "PIECES",
"unit_label": "шт",
"listed_at": "2025-09-10T03:46:20Z"
},
{
"position": 2,
"product_id": "145467562",
"group_id": null,
"title": "Apple iPhone 17 Pro 256Gb NanoSIM+eSIM серебристый",
"brand": "Apple",
"url": "https://kaspi.kz/shop/p/apple-iphone-17-pro-256gb-nanosim-esim-serebristyi-145467562/?c=750000000",
"image": "https://resources.cdn-kaspi.kz/img/m/p/pb3/p40/64168003.png?format=preview-large",
"images": [
"https://resources.cdn-kaspi.kz/img/m/p/pb3/p40/64168003.png?format=preview-large",
"https://resources.cdn-kaspi.kz/img/m/p/pd4/p66/64464588.jpg?format=preview-large",
"https://resources.cdn-kaspi.kz/img/m/p/p7b/p40/64168005.png?format=preview-large"
],
"price": 706899,
"currency": "KZT",
"bonus_amount": 21206,
"price_after_bonus": 685693,
"installment": {
"months": 24,
"monthly_payment": 29455
},
"credit_available": true,
"rating": 5,
"rating_scale": 5,
"review_count": 2347,
"category_id": "00003",
"category_path": [
"Телефоны и гаджеты",
"Смартфоны"
],
"delivery_duration": "EXPRESS",
"has_variants": false,
"brand_official_partner": false,
"top_merchant_id": "13192006",
"stickers": [],
"sold_by_unit": "PIECES",
"unit_label": "шт",
"listed_at": "2025-09-10T03:45:22Z"
},
{
"position": 3,
"product_id": "145468241",
"group_id": null,
"title": "Apple iPhone 17 Pro Max 256Gb NanoSIM+eSIM оранжевый",
"brand": "Apple",
"url": "https://kaspi.kz/shop/p/apple-iphone-17-pro-max-256gb-nanosim-esim-oranzhevyi-145468241/?c=750000000",
"image": "https://resources.cdn-kaspi.kz/img/m/p/p24/p88/64170090.png?format=preview-large",
"images": [
"https://resources.cdn-kaspi.kz/img/m/p/p24/p88/64170090.png?format=preview-large",
"https://resources.cdn-kaspi.kz/img/m/p/ped/p29/64476207.jpg?format=preview-large",
"https://resources.cdn-kaspi.kz/img/m/p/p41/p88/64170091.png?format=preview-large"
],
"price": 728848,
"currency": "KZT",
"bonus_amount": 21865,
"price_after_bonus": 706983,
"installment": {
"months": 24,
"monthly_payment": 30369
},
"credit_available": true,
"rating": 4.9,
"rating_scale": 5,
"review_count": 2049,
"category_id": "00003",
"category_path": [
"Телефоны и гаджеты",
"Смартфоны"
],
"delivery_duration": "EXPRESS",
"has_variants": false,
"brand_official_partner": false,
"top_merchant_id": "8888000",
"stickers": [],
"sold_by_unit": "PIECES",
"unit_label": "шт",
"listed_at": "2025-09-10T04:00:37Z"
}
],
"count": 12,
"page": 1,
"page_size": 12,
"total_results": 1001,
"total_pages": 84,
"sort": "relevance",
"query": "iphone",
"applied_filters": [],
"ignored_filters": [],
"available_filters": [
{
"key": "price",
"title": "Цена",
"type": "multiselect",
"values": [
{
"id": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]",
"active": "[trimmed-depth]"
},
{
"id": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]",
"active": "[trimmed-depth]"
},
{
"id": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]",
"active": "[trimmed-depth]"
}
]
},
{
"key": "manufacturerName",
"title": "Бренд",
"type": "multiselect",
"values": [
{
"id": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]",
"active": "[trimmed-depth]"
}
]
},
{
"key": "Smartphones*Series",
"title": "Все модели",
"type": "multiselect",
"values": [
{
"id": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]",
"active": "[trimmed-depth]"
},
{
"id": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]",
"active": "[trimmed-depth]"
},
{
"id": "[trimmed-depth]",
"label": "[trimmed-depth]",
"count": "[trimmed-depth]",
"active": "[trimmed-depth]"
}
]
}
],
"categories": [
{
"category": "Smartphones and gadgets",
"title": "Телефоны и гаджеты",
"count": 1001,
"active": false,
"depth": 0
},
{
"category": "Smartphones",
"title": "Смартфоны",
"count": 1001,
"active": true,
"depth": 1
}
],
"category": "Smartphones",
"category_title": "Смартфоны",
"completions": [
"17",
"13",
"16"
],
"sponsored_dropped": 0,
"duplicate_rows_dropped": 0,
"page_notice": null,
"city": {
"id": "750000000",
"code": "almaty",
"name": "Almaty",
"name_ru": "Алматы"
}
}
}What the Kaspi.kz API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search Kaspi Магазин by keyword or browse a category, with Kaspi's five sort orders and its own filters (brand, price band, category-specific attributes). 12 products a page: product id, title, brand, URL, images, price in KZT, Kaspi bonus amount, instalment plan, rating and review count, category path, delivery speed. Page 1 also returns the total, the filter list with counts and the category tree. | Pricing teams call search to search Kaspi Магазин by keyword or browse a category, with Kaspi's five sort orders and its o…. | query, category, filters, sort, page, ... |
| product/detail | One Kaspi product by id or URL: title, brand, images, category path, full specifications, description, variants (colour / size with their product ids), exact rating with 1-5 breakdown and counts, the cheapest price across merchants and the first page of merchant offers with price, pre-discount price, seller rating and delivery dates for the chosen city. | Marketplace operators call product/detail to get one Kaspi product by id or URL. | product_id, url, city, offers_limit, max_rotations |
| product/offers | Every merchant offer for one Kaspi product in a city, paged: seller with rating and review count, price, pre-discount price, delivery speed and dates for courier, pickup and postomat, delivery cost and free-delivery threshold, preorder days. | Catalog enrichment teams call product/offers to get every merchant offer for one Kaspi product in a city, paged. | product_id, url, city, sort, page, ... |
| product/reviews | Reviews of one Kaspi product, paged: stars, date, text, pros and cons, helpful count, photos and the merchant it was bought from, plus the exact average, the 1-5 breakdown and the size of each review group. Reviewer names and order numbers are never returned. | Retail analysts call product/reviews to get reviews of one Kaspi product, paged. | product_id, url, sort, filter, page, ... |
| seller/detail | A Kaspi merchant's public profile: name, logo, rating and review count, Kaspi status, the share of cancelled, returned and late orders, order-volume bracket and legal address. | Pricing teams call seller/detail to get a Kaspi merchant's public profile. | seller_id, city, max_rotations |
Call search from your stack
curl -X POST https://api.reefapi.com/kaspi/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"iphone"}'import requests
r = requests.post(
"https://api.reefapi.com/kaspi/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "iphone"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/kaspi/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "iphone"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.kaspi.search with {"query":"iphone"}.Who uses this API and why
- Brands and distributors in Kazakhstan track how many merchants sell their products on Kaspi, at what price, and who is cheapest.
- Merchants monitor competing offers and delivery promises for their SKUs in the cities they ship to.
- Market researchers pull category listings with Kaspi's filters, prices, ratings and review counts.
- Catalog teams collect specifications, variants and images for products they list on Kaspi.
Questions developers ask before integrating
Does the city change the price?
It changes what you can get and when. The city parameter accepts any of Kaspi's 320 cities (almaty, nur-sultan for Astana, shymkent, karaganda and so on, or the numeric id). On 2026-09-15 the offer prices for five products were the same in Almaty, Astana and Shymkent, while delivery was not: for an iPhone 15 sold by 54 merchants, 34 offers delivered tomorrow in Almaty against 19 in Astana and 18 in Shymkent, and the number of merchants delivering can differ by city.
Why does a search row have both product_id and group_id?
Clothes and shoes are listed as one card per colour group, with an id ending in b such as 12764554b. That group id does not open a product. Every row's product_id is a real product (for example 121078529, one size of that group), and product/detail returns all the group's sizes and colours in variants, each with its own product_id: 300 for one pair of kids' sneakers.
Is the rating on a search row the same as on the product?
The count is, the average is rounded. Search rows carry Kaspi's one-decimal rating (4.9); product/detail and product/reviews return the exact average (4.95) with the 1-5 breakdown and the rating and review counts. On 14 products checked the review count matched 14 of 14.
What happens if I pass a filter Kaspi does not have?
Kaspi silently ignores it and still marks it as selected. The API checks whether the filter actually narrowed the results and lists the ones that did not in ignored_filters, so you are never told a filter applied when it did not. Valid filter ids come back in available_filters with their counts, for example the seven fixed price bands.
Are there discounts?
Per merchant. Some merchants show a pre-discount price: for the iPhone 17 Pro, 8 of 74 offers had one (811,990 down to 684,990 KZT, 16%). Those offers carry was_price and discount_percent; the rest return null rather than a made-up discount. The Kaspi bonus is cashback, not a price cut, so it is in bonus_amount and never subtracted from price.
What does Kaspi not publish?
Barcodes, stock counts, Kazakh-language titles and a separate Kaspi Red price are not in the product, offer and review data Kaspi serves to its own pages, so there are no such fields. Instalment plans appear on search rows only. Reviews come without reviewer names or order numbers by design.
What is the Kaspi.kz API?
Kaspi.kz API is a ReefAPI endpoint group for kazakhstan's #1 marketplace: products, every merchant's price and delivery per city, reviews. It returns live JSON through POST requests under /kaspi/v1.
Is the Kaspi.kz API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Kaspi.kz calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Kaspi.kz login or account?
No login to Kaspi.kz is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Kaspi.kz data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Kaspi.kz API use?
Kaspi.kz actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call Kaspi.kz from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call kaspi actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Kaspi.kz API a Kaspi.kz scraper?
It is the managed alternative to a DIY Kaspi.kz scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same kazakhstan's #1 marketplace: products, every merchant's price and delivery per city, reviews back as clean JSON.
Why does my Kaspi.kz scraper keep getting blocked?
Most Kaspi.kz scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.