Kufar.by
Kufar.by
/kufar/v1/search1 creditSearch Kufar classifieds by keyword and/or category, region, city/district, price band, ad type and seller type, with four sorts and paging (up to 200 ads per page). With no filter at all it walks the whole live catalogue (~6 000 000 ads).
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| query | optional | — | Free-text search, in the site's own language (Russian/Cyrillic matches best — Kufar's ads are written in Russian). Omit it to browse a category, a region or the whole catalogue. |
| category | optional | — | Kufar SUBCATEGORY id — 17010 Мобильные телефоны, 1010 Квартиры, 2010 Легковые автомобили... The `categories` action lists every id. Kufar's own filter does NOT match top-level group ids (1000, 2000, 17000...): it answers them with an empty result, so this engine rejects a group id and names its subcategories instead. |
| region | optional | 1 · 2 · 3 · 4 · 5 · 6 · 7 | Kufar region id (7 = Минск). The `regions` action returns the names and every city/district id inside each region. |
| area | optional | 1– | City or district id INSIDE the chosen region — requires `region`. Ids come from the `regions` action (region 7 → 22 Центральный…). |
| price_min | optional | 0–9999999 | Minimum price in whole BYN roubles — the number Kufar prints beside the ad. Kufar filters on its own BYN conversion, so an ad quoted in USD is matched on its BYN figure. Kufar needs both ends of the band, so an omitted bound is filled with 0 / 9999999 BYN and the band actually applied comes back in `filters.prc` (kopecks). A price band always excludes negotiable ads — they carry no number to compare. |
| price_max | optional | 0–9999999 | Maximum price in whole BYN roubles — the number Kufar prints beside the ad. Kufar filters on its own BYN conversion, so an ad quoted in USD is matched on its BYN figure. Kufar needs both ends of the band, so an omitted bound is filled with 0 / 9999999 BYN and the band actually applied comes back in `filters.prc` (kopecks). A price band always excludes negotiable ads — they carry no number to compare. |
| listing_type | optional | sell · buy | Kufar's own ad type. Omit for both. |
| company_only = false | optional | — | Only ads posted by registered companies/shops (measured: 4 100 of 21 641 `iphone` ads). |
| sort = newest | optional | newest · oldest · price_asc · price_desc | Ordering. Kufar has no relevance sort; `newest` is what the site itself shows by default. |
| size = 30 | optional | 1–200 | Ads per page, 1–200. Kufar clamps anything larger to 200 rather than erroring. |
| page = 1 | optional | 1–100 | 1-based page number (translated into Kufar's own opaque cursor). |
| language = ru | optional | ru · by | Language of Kufar's own labels (category/region names). Ad titles and bodies are returned exactly as the seller typed them. |
/kufar/v1/listing1 creditFull detail of one Kufar ad by id or URL: the complete description, price in the seller's own currency with Kufar's conversions, location, posting time, seller display name and account id, every photo, and all category attributes. The seller's phone is never requested or returned — only Kufar's own `phone_hidden` flag.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| listing_id | optional | — | Kufar ad id — the number in the ad URL and in every search row's `listing_id`. Give this or `url`. |
| url | optional | — | Full ad URL, exactly as a search row returns it (real-estate and car ads live on re./auto. subdomains — both are accepted). |
/kufar/v1/categories1 creditKufar's live category tree — the resolver `search` needs, because the `category` filter takes numeric ids. 22 top-level groups and 214 subcategories, each with its Russian and Belarusian name.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| category | optional | — | Omit to get all 22 top-level groups with their subcategories; pass a group id to get just that group. |
| language = ru | optional | ru · by | Language of Kufar's own labels (category/region names). Ad titles and bodies are returned exactly as the seller typed them. |
/kufar/v1/regions1 creditKufar's live region and city/district table — the resolver the `region` and `area` search filters need. Seven regions, each with every city/district id Kufar offers.
Try in playground →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": { /* the result */ },
"meta": {
"latency_ms": 240,
"record_count": 12,
"completeness_pct": 100
},
"error": null
}Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.
Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.
Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.
No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.
Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.