CoolFace
Datasetpublic

aiacademy-kg/house_kg_full_dataset

house.kg β€” Kyrgyzstan Real Estate (multimodal) A complete snapshot of house.kg, the largest real-estate board in Kyrgyzstan: every sale and rental listing, with coordinates, prices, seller identities, agency ratings, reviews β€” and 227,294 photographs. Field names are English; values are kept in the original language (Russian/Kyrgyz), exactly as the site renders them. πŸ’» Scraper source code on GitHub β†’ The complete, open scraper that produced this dataset —… See the full description on the dataset page: https://huggingface.co/datasets/aiacademy-kg/house_kg_full_dataset.

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
0likes321downloads
Dataset Card

house.kg β€” Kyrgyzstan Real Estate (multimodal)

A complete snapshot of house.kg, the largest real-estate board in Kyrgyzstan: every sale and rental listing, with coordinates, prices, seller identities, agency ratings, reviews β€” and 227,294 photographs.

Field names are English; values are kept in the original language (Russian/Kyrgyz), exactly as the site renders them.

## πŸ’» **Scraper source code on GitHub β†’** The complete, open scraper that produced this dataset β€” resumable, multithreaded, with a maintainer's guide to every module. Rebuild the dataset yourself, extend it, or re-run it next month to turn this snapshot into panel data (see Β§6 below).
## πŸ“– **Read the full Dataset Guide β†’** Every field, every relation, the real volumes, and every pitfall in the source. Read it before you analyse anything. Three that will bite you immediately: sale and rent prices are not comparable; rooms_n is empty for land and that is correct; never join companies and complexes on slug alone.

Subsets

subsetrowsdescription
listings25,473one ad per row β€” sale 21,264, rent 4,209. All 7 property types, all 7 regions
photos227,294listing photos as a HF Image feature (8.9 per ad, 36 GB)
users4,577people: 4,210 ad authors βˆͺ 448 reviewers (81 are both)
complexes707residential complexes (Π–Πš), rating inline
companies179estate agencies, rating inline
reviews557reviews of agencies and complexes

Relations

listings.author_user_id  -> users.user_id            (private sellers only)
listings.company_slug    -> companies.slug
listings.complex_slug    -> complexes.slug
reviews.subject_slug     -> companies.slug | complexes.slug   (per subject_type)
reviews.user_id          -> users.user_id
photos.listing_id        -> listings.id

Quick start

python
from datasets import load_dataset

REPO = "aiacademy-kg/house_kg_full_dataset"

ads    = load_dataset(REPO, "listings", split="train")
photos = load_dataset(REPO, "photos",   split="train")   # decoded PIL images

photos[0]["image"]                                        # PIL.Image
ads[0]["price_usd"], ads[0]["price_period"], ads[0]["latitude"]

πŸ”¬ Research directions

This dataset is unusually rich for an open scrape: it is tabular, textual and visual at once, it carries geocoordinates on 100% of rows, and it contains a rare weak label for deception. Below is what it can genuinely support β€” and, just as importantly, what it cannot.

What you are actually working with

SignalSizeStrength
Tabular (price, geo, area, rooms)25,473 Β· coordinates 100%very strong
Free-text descriptions24,100 (94.7%)strong β€” this is the real text corpus
Photographs227,294the most underused asset here
seller_mismatch1,408 ads (5.5%)a ready-made weak label for misrepresentation
Views + posting/bumping dates100% / 92.7%strong, but treacherous β€” see caveats
Agency concentration19,640 ads β†’ 179 agencies (110Γ—)strong for market-structure work
Reviews557weak β€” do not build a thesis on this

1. πŸ•΅οΈ Fraud and fake-listing detection

The most interesting direction, and the one this dataset is genuinely suited to. There is no open dataset of Central Asian property listings with photos and an identity signal β€” and here you get three independent detectors that a fraudster cannot easily defeat all at once.

a) Photo reuse. Perceptual hashing (imagehash: pHash / dHash) plus a FAISS index over CLIP embeddings across all 227k images. This surfaces the same apartment posted by five different agents, stock photography standing in for a real flat, and photos lifted from a different building entirely.

b) Price as an outlier. Fit a hedonic model, then read the residuals. Listings priced impossibly far below what their features justify are the classic bait ad.

c) Text–image inconsistency. A CLIP similarity score between the description and the ad's own photos. "Π•Π²Ρ€ΠΎΡ€Π΅ΠΌΠΎΠ½Ρ‚" described over photos of a bare concrete shell is a measurable contradiction.

d) Behavioural. A recently-registered account (users.registered_date) with many ads (ads_count) and aggressive bumping (upped_date).

The rare part: seller_mismatch is true for 1,408 ads β€” an agent posting from a personal account while declaring "ΠΎΡ‚ собствСнника". That is a weak label for deliberate misrepresentation, already computed, on a real population. Open datasets almost never hand you that; it normally costs months of manual annotation.

⚠️ There is no fraud ground truth here. This is weakly-supervised and unsupervised work. The output is a ranked list of hypotheses, not a verdict. A model that flags 300 listings has found 300 things worth a human look β€” it has not "found 300 fraudsters." Learning to state that difference is part of the exercise.

2. πŸ‘οΈ For the computer-vision people

227,294 real-estate photos with prices, coordinates and text attached. Very few open image collections come with that much structured context.

Start by embedding everything and seeing what falls out.

ToolWhy
imagehash (pHash)cheap near-duplicate detection β€” run this first, it costs minutes
openai/clip-vit-base-patch32fast baseline, and gives you text↔image scoring for free
google/siglip-base-patch16-224stronger embeddings, same interface
facebook/dinov2-baseself-supervised; excellent for pure visual similarity and duplicates
faissyou cannot brute-force 227k Γ— 227k β€” approximate search is the point

Projects, roughly by difficulty:

  • β€”Near-duplicate detection at scale. An honest ANN/FAISS engineering exercise, and it feeds Β§1 directly.
  • β€”Room-type classification β€” zero-shot with CLIP (kitchen / bathroom / faΓ§ade / floorplan / view). Then treat the composition of an ad's photo set as a feature: do ads that show a bathroom get more views?
  • β€”Photo quality β†’ market outcome. Does image quality predict views (controlling for ad age!)? Does it predict the price residual β€” i.e. do better photos let a seller ask more?
  • β€”Floorplan detection and parsing. A surprising share of ads include a scanned floorplan. Finding and reading them is a strong multimodal project.
  • β€”Price from pixels alone. How far can you get with only the photos? Then measure how much images add on top of a tabular model. (Expect a modest gain β€” and publish that. A negative result honestly reported is worth more than an inflated one.)
  • β€”Visual geography. Cluster embeddings and ask whether neighbourhoods are visually separable. Bishkek's Soviet-era сСрия housing has a very distinctive look.

3. πŸ“ For the NLP people

24,100 free-text descriptions in Russian and Kyrgyz β€” frequently code-switched within a single ad. This is the real corpus. (The 557 reviews are not β€” see the caveats.)

ModelWhy
intfloat/multilingual-e5-largestrong multilingual embeddings β€” the safe default here
cointegrated/rubert-tiny2tiny and fast; ideal when you must iterate on a laptop
ai-forever/ruBert-baseRussian-specific: stronger on Russian, weaker on Kyrgyz
BERTopictopic modelling on top of any of the above

Projects:

  • β€”Structured extraction from unstructured text. Descriptions routinely contain facts the site's own fields do not: renovation history, whether the furniture stays, why they are selling, how negotiable the price is. Extract them (an LLM does this well), then measure how much the enriched features improve price prediction. This is the cleanest way to show that text carries real information.
  • β€”What do sellers emphasise, and to whom? Topic-model the descriptions and cross with price tier, district and seller_type. Agencies and private owners write measurably differently.
  • β€”πŸŒŸ Language choice as a social variable. This one is genuinely novel. Kyrgyzstan is bilingual, and every seller chooses a language. Detect the language of each description and cross it with district, price segment, property type and seller type. Who writes in Kyrgyz, about what, and where? There is almost no open data anywhere that permits this question. It is a sociolinguistics paper hiding inside a real-estate scrape.
  • β€”Does deception have a style? Do the 1,408 seller_mismatch ads read differently? Train a text-only classifier and inspect what it keys on.
  • β€”Which words are worth money? Text β†’ price residual, controlling for area, rooms and location.
⚠️ The Kyrgyz caveat. Russian-only models (ruBert) do not fail loudly on Kyrgyz β€” they degrade quietly, which is worse. Your corpus is mixed. Use a multilingual encoder, and report the language split instead of pretending the corpus is homogeneous.

4. πŸ’° Multimodal price modelling

The clean, well-posed task with an honest metric β€” a good backbone project.

  • β€”Tabular baseline: CatBoost (it ingests Russian categorical strings natively β€” no one-hot needed) or LightGBM.
  • β€”Spatial features: H3 hexagons, k-NN neighbour prices, distance to centre. Use spatial cross-validation. Random splits leak through neighbouring properties and will flatter your model badly β€” this is the single most common mistake in this task.
  • β€”Then add text, then images, measuring each increment separately. The interesting result is the size of each gain, not the final number.
  • β€”Interpret with SHAP.

Non-negotiable: stratify by price_period. A sale total and a monthly rent in one regression is not a model β€” it is the average of two unrelated quantities.


5. πŸ™οΈ Sociology, geography and market structure

  • β€”Spatial inequality. Price surfaces over Bishkek: where the gradients are steep, which amenities carry a premium, how sharply neighbourhoods separate.
  • β€”Market concentration. 179 agencies hold 19,640 listings. Compute an HHI, profile the portfolios, see who specialises where. The concentration itself (110Γ—) is already a finding.
  • β€”Developer quality. Do better-rated complexes command a price premium once location is controlled for?
  • β€”Agent vs owner. Do agencies price systematically differently from private sellers on otherwise-identical properties?

6. πŸš€ The biggest upgrade available: make it panel data

This release is a snapshot. But house_kg_id and review_id are stable across crawls β€” so re-running the scraper in a month and diffing the two gives you a panel, and a panel answers questions a snapshot never can:

  • β€”Price dynamics. Who cuts their asking price, by how much, and after how long?
  • β€”Time on market β†’ survival analysis. A listing that disappears was (probably) sold or withdrawn. That is a duration model β€” and it is the single most valuable thing anyone could add to this dataset.
  • β€”True view growth, instead of a cumulative counter confounded by ad age.

The scraper is resumable and a full crawl takes about 4.5 hours β€” make parsing_run, then make make_hf_dataset. One run a month turns a correlational dataset into a longitudinal one.


⚠️ Read this before drawing any conclusion

  • β€”Sale and rent prices are not comparable. Always filter on price_period (total 21,264 / month 3,765 / day 444). Mixing them averages a $198,000 sale with a $1,200/month rent.
  • β€”`views` is treacherous. It is a cumulative counter, confounded by how old an ad is and how often it was bumped. A naive "photos β†’ views" regression mostly measures ad age. Control for posted_date and upped_date.
  • β€”92% of the board is Bishkek. Any regional claim outside Chui / Issyk-Kul / Osh rests on a few dozen rows.
  • β€”Reviews are thin (557) and ratings sparse (only 18% of agencies have one). Enough for descriptive work; not enough for a sentiment or reputation study. Do not let the mere existence of a reviews table tempt you past what 557 short texts can carry.
  • β€”No fraud ground truth. See Β§1.
  • β€”`offer_type` vs `seller_type`: the first is what the seller claims, the second is what their account is. They disagree on 5.5% of ads β€” and that gap is a feature, not noise.
  • β€”These are asking prices, not transaction prices. Everything you conclude is about what sellers want, not what buyers paid.

Every one of these β€” and a dozen more β€” is explained in the **Dataset Guide**.


Provenance

Scraped from publicly visible pages of house.kg at 10 concurrent requests, over 4h 32m, using our open-source scraper:

πŸ’» github.com/ai-academy-bish/house_kg_parser

Everything in this dataset is reproducible from it.

License

Released under the Apache License 2.0 β€” see `LICENSE`.

What that licence does and does not cover. Apache-2.0 applies to our work: the scraper, the schema, the documentation, and this compilation. It cannot apply to the underlying content β€” the listing texts and the 227,294 photographs belong to the people who posted them on house.kg. We neither own that material nor relicense it. In practice: use the dataset freely for research, teaching and model development. If you intend to redistribute the photographs themselves, or use them commercially, that is a question about the original posters' rights, not about this licence. Cite the source, and respect house.kg's terms of service and applicable law.

Citation

bibtex
@misc{house_kg_dataset,
  title  = {house.kg: A Multimodal Dataset of Kyrgyz Real Estate Listings},
  author = {AI Academy Bishkek},
  year   = {2026},
  url    = {https://huggingface.co/datasets/aiacademy-kg/house_kg_full_dataset},
  note   = {Scraper: https://github.com/ai-academy-bish/house_kg_parser}
}