CoolFace
Datasetpublic

aiacademy-kg/lalafo-kg-phones

lalafo.kg — Kyrgyzstan Mobile Phones (handsets for sale) Scraped from lalafo.kg, the largest informal classifieds board in Kyrgyzstan — messier and larger than the curated boards, and closer to the real street-level market. Field names are English; values are kept in the original language (Russian). Subsets subset rows description listings 8,160 one row per advertisement (every category, deal and region in scope) users 6,605 sellers (ad authors), with… See the full description on the dataset page: https://huggingface.co/datasets/aiacademy-kg/lalafo-kg-phones.

sourceHugging Faceotherupdated 18d agoView on Hugging Face
0likes77downloads
Dataset Card

lalafo.kg — Kyrgyzstan Mobile Phones (handsets for sale)

Scraped from lalafo.kg, the largest informal classifieds board in Kyrgyzstan — messier and larger than the curated boards, and closer to the real street-level market. Field names are English; values are kept in the original language (Russian).

Subsets

subsetrowsdescription
listings8,160one row per advertisement (every category, deal and region in scope)
users6,605sellers (ad authors), with reputation (responserate / responsetime)
cities175city/town dimension with best-effort oblast
images37,627listing images, embedded as a HF Image feature (+ perceptual hash)

Relations

listings.user_id     -> users.user_id
listings.city_id     -> cities.city_id
images.listing_id    -> listings.ad_id

Keys are lalafo's own ids (ad_id, user_id, city_id), so they are stable across crawls — two snapshots can be diffed and joined.

Usage

python
from datasets import load_dataset

ads    = load_dataset("<repo>", "listings", split="train")
users  = load_dataset("<repo>", "users",    split="train")
images = load_dataset("<repo>", "images",   split="train")   # decoded PIL images
images[0]["image"]

Read before you analyse

  • —Every row here is `sale`. deal is constant in this vertical, so it is a filter you do not need — but keep it when unioning with another vertical's listings, where it is what tells a sale from a rent.
  • —`price` is often null — a large share of ads are «договорная» (negotiable), flagged by is_negotiable. Do not treat null as zero.
  • —The data is noisy. lalafo is unmoderated: duplicate re-posts, keyword-stuffed titles, and mis-filed categories are common. p_hash on images helps dedupe near-identical ads; property_type/deal come from the category, not the text.
  • —`brand` comes from the category, not the text. lalafo files this branch by brand, so the column is exactly as reliable as the seller's choice of category — and is never parsed out of a title.
  • —Contact PII is present (mobile, sometimes email). Handle per your ethics board / data-protection obligations; this is a research artefact.
  • —The board is Bishkek-centric. region is a best-effort oblast from the city name and is null for unlisted towns.
  • —Timestamps are absolute Unix seconds (created_time/updated_time) with ISO mirrors (created_date/updated_date) — no relative-date decoding needed.
  • —Attributes are open-ended. Params mapped in phones.yaml become English columns; an unmapped param is transliterated (e.g. naznachenie). The untouched list is in params_raw.

The full field-by-field guide, with every pitfall in the source, is in DATASET_GUIDE.md.