Taiwan Real Estate Actual Price Registration — 實價登錄 API avatar

Taiwan Real Estate Actual Price Registration — 實價登錄 API

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Taiwan Real Estate Actual Price Registration — 實價登錄 API

Taiwan Real Estate Actual Price Registration — 實價登錄 API

Every property deal Taiwan's Ministry of the Interior registers: sales, presale contracts and leases, with price, area, floor, layout, age and parking, normalized to JSON with ping and per-ping prices. All 22 cities, quarterly batches back to 2012.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

chris

chris

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Taiwan Real Estate Actual Price Registration (實價登錄) API

Get structured JSON access to every property deal Taiwan's Ministry of the Interior registers — completed sales, presale contracts and leases — with price, area, floor, layout, building age, parking and the registrar's own notes. All 22 cities and counties, quarterly batches back to 2012. Season 115S2 alone holds 75,399 sales, 8,571 presale contracts and 47,610 leases.

Taiwan has published every registered transaction price since 2012-08-01, which makes it one of the few property markets in the world with a complete, free, official price record. It ships as a 14 MB ZIP of 236 CSVs — one set per city, split three ways, with two header rows, ROC-calendar dates, Chinese numerals for floors and areas in square metres that nobody in Taiwan actually quotes. This Actor turns it into one flat record shape, adds 坪 and per-坪 prices alongside the official ones, and reproduces the Ministry's own unit price from the raw price and areas on every single row as a check that nothing was mis-parsed.

Why this data matters

  • Actual transaction prices, not asking prices. Listing sites publish what sellers hope for. This is what the deeds registry recorded, with a statutory 30-day filing deadline behind it.
  • excludeNoteFlags is the difference between a price and a market price. The registrar flags related-party deals, and they are not priced like arm's-length ones: in season 115S2, Taipei's 679 related-party residential deals had a median of NT$555,980 per ping against NT$847,385 for the 3,995 arm's-length ones. Averaging the two together is the most common way to get Taiwan property analysis wrong.
  • note_flags splits the registrar's prose into the flags it actually is. 預售屋、或土地及建物分件登記案件 on 16,393 sales, 其他增建 on 7,033, 陽台外推 on 3,742, 協議價購 on 2,301, 僅車位交易 on 993 — each of which changes how a price should be read.
  • Prices in 坪, which is how the market quotes them. unit_price_ping converts the Ministry's NT$/m² at the exact legal ratio (1 坪 = 400/121 m²). Areas come in both units throughout.
  • The presale book carries the project name. project_name and building_unit mean you can follow a single development contract by contract — and contract_cancelled catches the rescissions whose prices stay in the register regardless.
  • The lease book separates social housing from market rent. 27,715 of season 115S2's 47,610 leases are 社會住宅 代管 or 包租轉租, whose rents are set by policy. rental_service lets you drop them; lease_start_date, lease_end_date, has_furniture and equipment describe what is left.
  • includeDetails opens up the parcels behind the deal. Every land parcel with its number and ownership share, every registered building layer with its own area and age, every parking bay with its price and floor — and each one summed back against the summary row.
  • Nobody serves this in English. Search for a Taiwan property price API and you find listing scrapers. The official register is free, complete and effectively unusable without a parser.

Output

One record per registered case. A Da'an District apartment sale:

{
"record_type": "SALE",
"record_type_zh": "買賣",
"source_batch": "115S2",
"serial_number": "RPVNMLPKNHLGFFA68DA",
"city": "臺北市",
"city_code": "a",
"district": "大安區",
"address": "臺北市大安區大安路二段27巷1號五樓之1",
"property_kind": "房地(土地+建物)",
"transaction_date": "2026-05-01",
"transaction_month": "2026-05",
"transaction_date_roc": "1150501",
"land_area_sqm": 14.5,
"land_area_ping": 4.3862,
"building_area_sqm": 88.38,
"building_area_ping": 26.7349,
"urban_land_use": "住",
"land_count": 1,
"building_count": 1,
"parking_count": 0,
"transaction_counts_raw": "土地1建物1車位0",
"floor_raw": "五層",
"floors": [5],
"floor_tags": [],
"total_floors": 8,
"building_type": "華廈(10層含以下有電梯)",
"main_use": "住家用",
"main_material": "鋼筋混凝土造",
"completion_date": "1981-11-02",
"building_age_years": 44.5,
"rooms": 4,
"halls": 2,
"baths": 2,
"has_compartment": true,
"has_management_org": true,
"total_price": 27000000.0,
"unit_price_sqm": 305499.0,
"unit_price_ping": 1009914.05,
"parking_type": null,
"parking_price": 0.0,
"note": "親友、員工、共有人或其他特殊關係間之交易;陽台外推;",
"note_flags": ["親友、員工、共有人或其他特殊關係間之交易", "陽台外推"],
"unit_price_check": "MATCH",
"unit_price_sqm_recomputed": 305498.98,
"main_building_area_sqm": 66.29,
"aux_building_area_sqm": 0.0,
"balcony_area_sqm": 11.51,
"has_elevator": true,
"transfer_number": "0026"
}

Presale contracts add project_name, building_unit, contract_cancelled and contract_cancellation_date. Leases add lease_kind, lease_start_date, lease_end_date, has_furniture, equipment and rental_service. Fields that belong to only one book are null on the other two.

With includeDetails, each record also carries details.land, details.building and details.parking — the itemised rows behind the summary — plus a detail_check saying whether they add up.

Input

FieldTypeNotes
recordTypesarraySALE, PRESALE, RENT. Default ["SALE"]. Three separate books with different columns.
seasonsarrayROC quarters, e.g. ["115S2"]. Empty means the newest published one. Eight per run.
includeLatestbooleanAlso fetch the ten-day top-up batch published between quarters.
citiesarrayChinese names, e.g. ["臺北市", "新北市"]. is accepted for . Empty means all 22.
districtsarraye.g. ["大安區"].
transactionDateFrom / transactionDateTostringYYYY-MM-DD. Filters what a season holds; does not choose seasons.
propertyKindsarraye.g. ["房地(土地+建物)", "房地(土地+建物)+車位"] for residential deals without bare land or lone parking bays.
buildingTypesarraye.g. ["住宅大樓(11層含以上有電梯)"].
minTotalPrice / maxTotalPriceintegerNTD. For leases this is the monthly rent.
excludeNoteFlagsarrayDrop records whose 備註 contains any of these, e.g. ["親友、員工、共有人或其他特殊關係間之交易"].
includeDetailsbooleanAttach itemised land, building and parking rows, and cross-check their areas.
maxResultsintegerDefault 5000; 0 for everything. A season's sales across all 22 cities is ~75,000 records.

How the numbers are verified

The prices and areas are the government's own — this Actor does not compute them. What it does is recompute the government's derived number from the government's raw ones, on every row, and report the result per record in unit_price_check:

  • The unit price identity, on every row. The Ministry publishes 單價元平方公尺 but not the rule behind it. Recovering it takes three cases: a land-only deal divides by land area; anything with a building divides by building area after removing the parking bay from both price and area, but only when the bay has a price and an area of its own; a deal with no building area falls back to land area. Applied to season 115S2 this reproduces the published figure for all 129,765 of its 131,580 rows that carry one — every sale, presale and lease, to within the Ministry's own rounding. The remaining 1,815 rows publish no unit price at all.
  • The order of those cases is not cosmetic. Eleven land-only rows also carry a building area; dividing those by it lands 20–80% off.
  • Itemised areas summed back against the summary row. Land, building and parking areas are published twice — once as a total, once itemised in a separate CSV. Across season 115S2's 75,399 sales, 75,271 reconcile: land and parking areas agree exactly, one building area does not, and 127 are cases where 交易筆棟數 names fewer land parcels than the detail file itemises.
  • Column signatures, per file. Every column this Actor reads is pinned by name for each of the three books. If the Ministry renames one, the run fails loudly rather than silently filing nulls.
  • Nothing is guessed. The 22 city letters were each confirmed against the district names inside their own file, over every season from 101S4 to 115S2. A letter outside that set yields city: null, not a guess.

Coverage and limits

  • The register opened on 2012-08-01, inside season 101S3. The Ministry lists 101S1 and 101S2 as well, but those archives ship no city files at all.
  • A season is cut by registration date, not transaction date. 115S2 holds sales registered 2026-03-11 to 2026-06-10, whose transactions happened weeks to months earlier — and a handful of which date back decades. Use transactionDateFrom / transactionDateTo to filter, and expect a transaction to appear in the season after the one its date falls in.
  • Leases and presale contracts run on their own windows. The same 115S2 archive holds leases contracted 2026-02-11 to 2026-05-10 and presale transactions over the same span. Each run logs the exact window the Ministry printed.
  • Street numbers are masked to a range on residential cases. That is the Ministry's privacy rule, not a parsing loss. Land-only cases carry the parcel instead.
  • building_age_years is null for presale units, which transact before the building exists, and for the roughly one sale in four where the register leaves the completion date blank. About one sale in six hundred carries a completion date whose day is out of range or unreadable; those keep completion_month where they can and drop completion_date.
  • floors and floor_tags split a field that is not always a number. One case can name several floors at once and mix them with 全, 騎樓, 陽台, 夾層 or 見其他登記事項. Numbered floors go in floors with basements negative; everything else is kept verbatim in floor_tags rather than dropped.
  • The ten-day increment overlaps nothing and repeats little. Combined with a season it can restate a record; de-duplicate on serial_number, which is unique within a batch.
  • maxResults cuts city by city, in the Ministry's order. A low limit returns whole cities rather than a sample across all of them. Set 0 for everything.

Taiwan Market Data Suite

This Actor is part of a suite of 23 Taiwan market data APIs by chamarix — official sources only, cross-validated against independent official endpoints, clean JSON out. Code samples for the whole suite: GitHub.

Market data:

Property market:

Government & civic data:

Data source

Ministry of the Interior 不動產交易實價查詢服務網 (plvr.land.moi.gov.tw) — the quarterly 不動產成交案件實際資訊資料 archives and the ten-day increment. Public open data, no login and no API key required.