← luxury thailand
The method behind the desk

One feed for every ₿20M+ home in Thailand.

Nine portals scraped weekly. Cross-source dedup. THB-normalised prices. Static geocoding to 14 provinces and 90+ named luxury areas. 12,484 unified properties, 11,959 pinned on the map, 1,618 verified across two or more portals.

Ardinz — Founder
Founder

Ardinz

Thai native, Bangkok-based. A decade at the intersection of Thai real estate and international capital — sourcing, structuring, and advising on private acquisitions across the Kingdom for foreign principals.

Why this exists: luxury Thai property is fragmented across nine portals and three platforms. Each lists the same villa at different prices, in different currencies, with different photos. Foreign buyers spend weeks reconciling. This site does the reconciliation once, with a verifiable method, and shows the spread.

How it works

From nine portals to one feed

  1. 1
    Scrape
    Nine Thai and global luxury portals are crawled on a weekly schedule. Each source has a dedicated spider that extracts listing URLs, prices, specs, photos, and geo metadata.
  2. 2
    Deduplicate
    Listings appearing on multiple portals are matched by address, coordinates, and price fingerprint. The result is one canonical record per physical property with a source_count field recording portal coverage.
  3. 3
    Normalize
    All prices are converted to Thai Baht at mid-market FX rates captured at scrape time. Property specs (area, bedrooms, bathrooms) are unified to SI units (sqm, whole numbers).
  4. 4
    Geocode
    Province and district are resolved from listing metadata. Where lat/lng is available it is stored directly; otherwise it is estimated from the reported district centroid.
  5. 5
    Publish
    The deduplicated, normalized dataset is exported as a static JSONL file and shipped with the Next.js build. There is no database — all data lives in the bundle and is refreshed at each weekly build.

Common questions

How often is the data updated?
The nine portals are scraped on a weekly schedule. A new static build is deployed each time the pipeline completes, so data freshness is typically 5–8 days.
How are duplicate listings removed?
Listings are fingerprinted by province, approximate coordinates, property type, and price band. Exact address matches and coordinate proximity within 50 metres are used for high-confidence deduplication. The source_count field on each record shows how many portals carry the listing.
Does Luxury Thailand accept paid listings or developer sponsorship?
No. There are no paid placements, no promoted listings, and no developer or agency money. Every listing in the index was discovered organically via the portal scrapers. Acquisition enquiries are handled privately through the concierge.

How the data is built

  1. Scrape. Nine HTTP scrapers run weekly using curl-cffi with Chrome JA3/JA4 impersonation. Each emits JSONL into output/residence/<source>.jsonl.
  2. Dedup. Fingerprint = (normalised name, province, bedrooms). Same villa across multiple portals collapses to one record with a sources: [...] list.
  3. Price-normalise. Per-source price + currency → THB at fixed reference rates (USD 36, EUR 39, GBP 46, SGD 27, HKD 4.6). The unified record carries a median THB plus the per-source breakdown.
  4. Geocode. Static lookup table of ~110 hand-curated Thai luxury locations (subdistrict / district / area-token / province). Free, instant, predictable. 90% of records get coords; misses are the long tail.
  5. Classify. Rules-based property type: villa / condo / penthouse / house / townhouse / land / commercial.
  6. Enrich photos. Detail-page visits pull the real listing photos (skipping agent badges and dealer logos) via JSON-LD, og:image, and inline img tags.

The nine sources

JamesEdition
Global luxury portal; richest detail-page JSON-LD
FazWaz
Thai-native; rich card payloads with units + project pages
DDProperty
Largest Thai sale inventory; weak agent-photo bleed (filtered out)
DotProperty
Sister site to TH-Property; Lifull platform
Thailand-Property
Lifull platform sibling — overlap with DotProperty
Knight Frank
Sitemap-driven; ~1,300 luxury URLs harvested
Realtor International
realtor.com TH country index — broker syndication
LuxuryEstate
Italian luxury portal with Thailand vertical
Hipflat (BKK index)
Cherry-picked from our Bangkok building dataset (₿24M+ floor)

Where we stand

  • We represent the buyer. Not the seller, not the developer. This index is the leverage we negotiate with — the cross-portal spread is our buyers' advantage, handled privately through the concierge.
  • No paid placements. No developer money, no seller fees, no sponsored listings. What you see is the public market, reconciled honestly — which is precisely why the price intelligence is trustworthy.
  • Independent legal counsel. We don't self-certify title or foreign-ownership quota — a vetted, independent Bangkok lawyer reviews every acquisition before completion.

Limitations

  • !FX rates are fixed at reference levels — they're not real-time. For a USD-denominated listing the actual THB cost at transaction time will differ.
  • !12,484 of 12,484 records carry a price — about 100%. The rest are hide-price listings; we keep them indexed but show no THB figure.
  • !Geocoding is area-level for ~80% of records (district / province centroid). Building-precise coordinates require a paid geocoder and aren't worth it for a "browse by region" interface.
The private desk

The data is the diligence. We do the acquisition.

When you've found the one — or want us to find it — this same intelligence becomes your negotiating position. One desk, complete discretion.

Spotted a stale listing or wrong data point? Tell us — we re-index weekly but corrections speed things up.