Belarus classifieds as JSON, with the seller's own currency kept and the rouble figure beside it
Kufar.by API returns live Kufar.by data as clean JSON for kufar.by The primary endpoint, search, returns total_results, page, page_size, returned, has_more and listings[] with listing_id, url, title, description_excerpt, price, price_currency….
4 active endpoints. Every call is 1 credit.
- POST/kufar/v1/search
- POST/kufar/v1/listing
- POST/kufar/v1/categories
- POST/kufar/v1/regions
What Kufar.by endpoints does ReefAPI ship?
4 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Kufar.by API
4 of 4 endpoints, ready to run
Search Kufar by Russian keyword, category, region, area, price band and seller type. Every filter is proven against an unfiltered control in the same run. Measured 2026-10-01: an unfiltered search returns 31,485 ads, a category takes it to 1,272 and a region to 17,612.
{ "ok": true, "data": { "total_results": 31490, "page": 1, "page_size": 30, "returned": 30, "has_more": true, "page_type": "search_page", "listings": [ { "listing_id": "1087258949", "url": "https://www.kufar.by/item/1087258949", "title": "холодильник Атлант", "description_excerpt": null, "price": 200, "price_currency": "BYN", "price_currency_raw": "BYR", "price_kind": "fixed", "price_byn": 200, "price_conversions": { "USD": 66.04, "EUR": 58.27, "BYN": 200, "RUB": 5573.83 }, "category_id": "15020", "category_name": "Крупная техника для кухни", "region_id": 7, "region_name": "Минск", "area_id": 28, "area_name": "Октябрьский", "listing_type": "sell", "posted_at": "2026-09-30T22:01:47Z", "seller_type": "private", "seller_account_id": "O7ulQ22NRFm0ewPPJs1nhAA", "phone_hidden": false, "promoted": false, "highlighted": false, "image": "https://rms.kufar.by/v1/gallery/adim1/c44dad4b-e2e5-4236-9ef1-516b3c4d4ac8.jpg", "images": [ "https://rms.kufar.by/v1/gallery/adim1/c44dad4b-e2e5-4236-9ef1-516b3c4d4ac8.jpg", "https://rms.kufar.by/v1/gallery/adim1/f05f7a8d-fdd9-4157-a9b2-7973cc3b1ebe.jpg" ], "image_thumbnails": [ "https://rms.kufar.by/v1/prc_thumbs/adim1/c44dad4b-e2e5-4236-9ef1-516b3c4d4ac8.jpg", "https://rms.kufar.by/v1/prc_thumbs/adim1/f05f7a8d-fdd9-4157-a9b2-7973cc3b1ebe.jpg" ], "image_count": 2, "attributes": [ { "name": "category", "label": "Категория", "value": "Крупная техника для кухни", "raw_value": 15020, "query_key": "cat" }, { "name": "region", "label": "Регион", "value": "Минск", "raw_value": 7, "query_key": "rgn" }, { "name": "area", "label": "Город / Район", "value": "Октябрьский", "raw_value": "28", "query_key": "ar" } ] }, { "listing_id": "1087258839", "url": "https://www.kufar.by/item/1087258839", "title": "Сумка холодильник/ сумочка для детей Винни пух", "description_excerpt": null, "price": null, "price_currency": "BYN", "price_currency_raw": "BYR", "price_kind": "negotiable", "price_byn": null, "price_conversions": { "USD": null, "EUR": null, "BYN": null, "RUB": null }, "category_id": "12170", "category_name": "Аксессуары для детей", "region_id": 3, "region_name": "Гродненская область", "area_id": 10, "area_name": "Лида", "listing_type": "sell", "posted_at": "2026-09-30T22:00:15Z", "seller_type": "private", "seller_account_id": "OzMnznFaRjkWYoQc-ijDvKw", "phone_hidden": true, "promoted": false, "highlighted": false, "image": "https://rms.kufar.by/v1/gallery/adim1/4d0e88de-6eea-451a-838e-0bd514e0caf9.jpg", "images": [ "https://rms.kufar.by/v1/gallery/adim1/4d0e88de-6eea-451a-838e-0bd514e0caf9.jpg", "https://rms.kufar.by/v1/gallery/adim1/b1fca4fe-8a23-4a37-9a1b-637b04e8f674.jpg", "https://rms.kufar.by/v1/gallery/adim1/1403b70e-a643-48e9-817d-3640383c9957.jpg" ], "image_thumbnails": [ "https://rms.kufar.by/v1/prc_thumbs/adim1/4d0e88de-6eea-451a-838e-0bd514e0caf9.jpg", "https://rms.kufar.by/v1/prc_thumbs/adim1/b1fca4fe-8a23-4a37-9a1b-637b04e8f674.jpg", "https://rms.kufar.by/v1/prc_thumbs/adim1/1403b70e-a643-48e9-817d-3640383c9957.jpg" ], "image_count": 5, "attributes": [ { "name": "category", "label": "Категория", "value": "Аксессуары для детей", "raw_value": 12170, "query_key": "cat" }, { "name": "region", "label": "Регион", "value": "Гродненская область", "raw_value": 3, "query_key": "rgn" }, { "name": "area", "label": "Город / Район", "value": "Лида", "raw_value": "10", "query_key": "ar" } ] }, { "listing_id": "1087258133", "url": "https://www.kufar.by/item/1087258133", "title": "Лоток для яиц на дверцу холодильника Атлант", "description_excerpt": null, "price": 1, "price_currency": "BYN", "price_currency_raw": "BYR", "price_kind": "fixed", "price_byn": 1, "price_conversions": { "USD": 0.33, "EUR": 0.29, "BYN": 1, "RUB": 27.87 }, "category_id": "15020", "category_name": "Крупная техника для кухни", "region_id": 7, "region_name": "Минск", "area_id": 24, "area_name": "Первомайский", "listing_type": "sell", "posted_at": "2026-09-30T21:19:22Z", "seller_type": "private", "seller_account_id": "O_q5-6rZ3Emez2bjIvwzT0E", "phone_hidden": true, "promoted": false, "highlighted": false, "image": "https://rms.kufar.by/v1/gallery/adim1/3c90db18-8275-4ca2-845c-ce55148e5e45.jpg", "images": [ "https://rms.kufar.by/v1/gallery/adim1/3c90db18-8275-4ca2-845c-ce55148e5e45.jpg" ], "image_thumbnails": [ "https://rms.kufar.by/v1/prc_thumbs/adim1/3c90db18-8275-4ca2-845c-ce55148e5e45.jpg" ], "image_count": 1, "attributes": [ { "name": "category", "label": "Категория", "value": "Крупная техника для кухни", "raw_value": 15020, "query_key": "cat" }, { "name": "region", "label": "Регион", "value": "Минск", "raw_value": 7, "query_key": "rgn" }, { "name": "area", "label": "Город / Район", "value": "Первомайский", "raw_value": "24", "query_key": "ar" } ] } ], "query": "холодильник", "filters": { "lang": "ru", "sort": "lst.d" } } }
How the Kufar.by API works
Kufar.by is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 321 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
The price is in the seller's currency, and a category group is not a filter
Two things to get right. Kufar sellers quote in their own currency — measured on one property page, all 100 rows were in dollars — so the row's own currency field is what the number means, and the rouble figure sits beside it as a conversion, verified against the source's own calculator on 50 of 50 rows. And the category filter only accepts LEAF ids: a parent group returns an honest-looking zero, which reads as an empty category instead of a refused filter.
{}22 groups and 214 leaves. Filter with a leaf id; a group id returns zero and means nothing.
{}Seven regions and 180 towns with their ids, for the region and area filters.
{"query": "холодильник", "region": 7}Ads with both price figures, the locality, the seller type and images. Kufar rejects a filter name it does not know with an error rather than swallowing it, which is unusually honest.
{"listing_id": 1087257888}The full ad. The description is only published in property categories on search rows; the full text is always here.
Belarusian classified ads with the price in the seller's own currency, its rouble conversion beside it, the region and area, the seller type and the images.
curl -X POST https://api.reefapi.com/kufar/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{}'{
"ok": true,
"data": { … },
"meta": {
"api": "kufar",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}Belarus, in whatever currency the seller picked, and one ad in ten is priced by agreement
Measured 2026-10-01 against the live gateway: 38 fixed cases run twice at 38/38, 50-row samples for the field counts plus an independent 60-row audit. Two of these lines go against us.
Belarus. Sellers quote in BYN, USD, EUR or RUB and the row's own currency says which; on one property page all 100 rows were in dollars. The rouble figure is a conversion and matched the source's own calculator on 50 of 50 rows.
listing_id, url, title, price_currency, posted_at, category, region, area, image, seller and attribute names on 50 of 50 rows.
Every missing one is an ad marked negotiable. Kufar writes 0 there; that comes back as null with the kind recorded, and zero rows published a price of zero.
The key is on every row but Kufar only fills it for property listings, where it is 50 of 50. Not a dead key — the full text is always available through the listing action.
A parent id returns HTTP 200 with a total of zero, its leaf returns 30,813. Only leaf ids are accepted here, verified against the live tree.
An unrecognised filter name is rejected outright rather than swallowed, which is the opposite of most sites in this catalogue.
The seller's phone is never requested; only the source's own flag saying whether one is hidden.
What people build with Kufar.by
The jobs this data is most often used for.
endpoints
credit per call
Pricing and assortment teams use Kufar.by to search Kufar classifieds by keyword and/or category, region, city/district, price band, ad ty….
Brand-protection teams use Kufar.by to get full detail of one Kufar ad by id or URL.
Retail analysts use Kufar.by to get kufar's live category tree.
Catalog enrichment teams use Kufar.by to get kufar's live region and city/district table.
What Kufar.by data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 321 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/kufar/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{}'import requests
r = requests.post(
"https://api.reefapi.com/kufar/v1/search",
headers={"x-api-key": REEF_KEY},
json={},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Kufar.by.
Get a free key →What is the Kufar.by API?▾
Kufar.by API is a ReefAPI endpoint group for kufar.by It returns live JSON through POST requests under /kufar/v1.
Is the Kufar.by API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Kufar.by calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Kufar.by login or account?▾
No login to Kufar.by 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 Kufar.by 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 Kufar.by API use?▾
Kufar.by actions currently cost 1 credit per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Kufar.by from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call kufar actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Kufar.by API a Kufar.by scraper?▾
It is the managed alternative to a DIY Kufar.by 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 kufar.by back as clean JSON.
Why does my Kufar.by scraper keep getting blocked?▾
Most Kufar.by 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 calls are free.
26 More APIs APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Kufar.by, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 320 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-10-01.