BIKZ.DEV — CASE No. 13 KOLESA BOT · 2026 NODE.JS + TELEGRAM · KOLESA.KZ LISTING WATCHER NEW MATCHING ADS · DELIVERED IN SECONDS +7 775 878 17 32 BIKZ.DEV — CASE No. 13 KOLESA BOT · 2026
Case · No. 13
2026
Telegram bot · Node.js

KOLESA
BOT.

A Telegram bot that watches kolesa.kz for you. Build a search through inline-keyboard prompts — make, model, city, generation, price range, year range — and the bot pings you the moment a new listing posts. Bilingual Kazakh and Russian, runs continuously, only ever forwards ads created after your search was saved.

Telegram bot · Alerts Bot · Scraper · API 2026
Kolesa Bot Telegram chat — saved search 897853 for Toyota Land Cruiser, Almaty, generation BM 12M, price 8000000–12000000 ₸, years 2002–2006, with the bot reporting that 44 ads currently match and that only new ones will be sent from this point on
Year
2026
Length
1 wk
Scale
100+ brands
Status
Live
01

About the project

// 3 min read

Kolesa.kz is the place Kazakhstan goes to buy and sell used cars — and the good listings get snapped up within hours of going live. Refreshing the search page on your phone every twenty minutes is no way to live. The brief was simple: a Telegram bot that watches the site for you and pings you the second something matching your query appears. No app to install, no email digest, no daily round-up — a single message in a chat you already check fifty times a day.

Telegram chat with Kolesa bot — user sent /start, bot replied 'Выберите язык / Тілді таңдаңыз:' with two inline-keyboard buttons: Русский and Қазақша
01Onboarding — pick a language, then build the request inside Telegram

The whole flow lives inside Telegram. /start picks the language — Kazakh or Russian. /add walks you through the request as a chain of inline-keyboard prompts: make from a paged list of every brand on kolesa.kz, then model in the same way, then city, then generation if the model has them, then a price range in tenge and a year range as plain ranges. Finish, and the bot saves the query and tells you immediately how many ads currently match — so you have a baseline before notifications start arriving. /list shows your active searches, /remove deletes one, and you can pause a search without deleting it and bring it back later.

Kolesa bot — /add flow at the brand-pick step, showing a paged inline keyboard with Toyota, Hyundai, Kia, BMW, Mercedes-Benz, Volkswagen, Nissan, Acura, AITO, Alfa Romeo, Arcfox, Aston Martin, Audi, Avatr, BAIC, Bajaj, Baojun, BAW, Bentley, Brilliance, Buick, BYD
02Search builder — every brand on kolesa.kz, then model, city, generation, price, year

The watcher is a small Node.js service that polls kolesa.kz at a polite cadence per saved query, normalises each listing into a stable identifier, deduplicates against a Postgres set of seen IDs per query, and pushes only the genuinely-new entries to the bot. We tuned the schedule per query against marketplace rate limits — popular brand × city combinations get re-scanned every few minutes; sparse combinations every hour. A typical user has three to five searches running in parallel — "Land Cruiser in Almaty, 8M–12M ₸, 2002–2006" alongside "Lexus RX anywhere, ≤14M ₸, post-2018" — and gets a steady trickle of fresh listings throughout the day.

Each notification is a single message: title, price, year, city, and a deep link to the ad on kolesa.kz. No noise, no banners, no daily digest. One ad, one message, the moment it appears. The bot has been running continuously since launch and currently watches several hundred saved searches across its user base; the marginal cost of adding a user is essentially zero, which is what makes the model work — and what makes the bot a quiet, durable utility rather than another app you forget about after a week.

02

Stack

// what we shipped on
Node.js TypeScript Telegram Bot API grammY PostgreSQL Redis BullMQ Cheerio Docker Fly.io
Next case · No. 14 · 2025

KNIFEAID.

← Previous: Codedala