實價登錄開放資料怎麼用:下載、檔案結構,和直接算平均會出錯的 6 個地方
內政部的實價登錄開放資料可以免費下載、再利用,但直接拿 CSV 算平均單價,幾乎一定會算錯。 我們每天把它整理進資料庫(目前買賣 4,903,354 筆、租賃 831,490 筆、預售 572,637 筆), 以近三年的 786,807 筆買賣為例:29% 是純土地、18% 是特殊交易, 而官方的「單價」依車位有沒有分開標價,用的是兩種不同公式。
去哪裡下載
- 下載頁:不動產成交案件實際資訊資料供應系統,分「本期下載」「非本期下載」「預售備查建案下載」三種。
- 本期:每月 1 日、11 日、21 日發布。
- 非本期(按季):以民國年+季為單位,例如 115 年第 2 季是
115S2。我們用的下載網址格式是https://plvr.land.moi.gov.tw/DownloadSeason?season=115S2&type=zip&fileName=lvr_landcsv.zip。 - 授權:開放資料無償、非專屬、得再授權,可以重製、改作、編輯、公開傳輸,但要註明出處。
檔案結構
解壓縮後是一堆 CSV,檔名格式是 縣市代碼_lvr_land_類別.csv:類別 a 是買賣、b 是預售屋、c 是租賃。 每個主檔還有三個明細檔:_build(建物)、_land(土地)、_park(車位),一筆交易可能對到好幾列明細,用「編號」對應。預售建案另有 縣市代碼_lvr_buildcase.csv。
a台北市 | b台中市 | c基隆市 | d台南市 | e高雄市 | f新北市 | g宜蘭縣 | h桃園市 | i嘉義市 | j新竹縣 | k苗栗縣 |
m南投縣 | n彰化縣 | o新竹市 | p雲林縣 | q嘉義縣 | t屏東縣 | u花蓮縣 | v台東縣 | w金門縣 | x澎湖縣 | z連江縣 |
縣市代碼。代碼不是連續字母(沒有 l、r、s、y)。
讀檔時會遇到的問題
- 第二列是英文欄名:第一列中文欄名、第二列英文欄名,第三列才是資料。直接用 pandas 讀,第一筆資料會是一列英文字。
- 編碼:UTF-8 加 BOM,要用
utf-8-sig讀;少數檔案夾帶 NUL 字元,寫進 PostgreSQL 的 jsonb 會失敗,要先去掉。 - 超長欄位:110 年第 4 季有超過 128 KB 的欄位,Python 的
csv模組預設上限是 128 KB,要先調高csv.field_size_limit。 - 民國日期:交易年月日是
1150101這種 7 位數字(民國 115 年 1 月 1 日)。 - 同一筆會重複出現:同一筆交易會出現在不同期的檔案,也可能在後來的檔案被修正(我們看過 1,499 個編號內容被改過)。合併多期資料要用「編號」去重,以較新的為準。
陷阱一:不是每一筆都是「一間房子」
「交易標的」欄位分五種。近三年買賣裡,將近三成是純土地,還有只買車位的:
算房價只能用「房地(土地+建物)」與「房地(土地+建物)+車位」。另外約 13% 的交易是持分移轉、6,714 筆一次買了好幾棟,單價都不能直接比。
陷阱二:官方「單價」有兩種公式
有車位的成交裡,47% 的車位沒有分開標價(車位總價是 0)。我們用近三年單一建物、非特殊交易逐筆驗算官方的「單價元平方公尺」:
| 情況 | 筆數 | 官方單價怎麼算 | 符合比例 |
|---|---|---|---|
| 車位沒有分開標價 | 102,980 | 總價 ÷ 建物總面積(含車位面積) | 100.0% |
| 車位有分開標價 | 114,765 | (總價 − 車位價)÷(建物面積 − 車位面積) | 94.6% |
也就是說,車位沒標價的那一半,官方單價等於把車位當成房子的一部分、按坪攤進去;有標價的那一半,則是扣掉車位後的房子單價。 兩種混在一起算平均,比的不是同一件事。如果自己用「總價 ÷ 扣掉車位的面積」算,中位數會比官方單價高約 14%。
本站的做法:車位有標價就扣標價;沒標價時,用同一區車位成交估一個車位價扣掉,再除以扣車位的面積,讓每一筆都是「不含車位的房子單價」。 車位實際值多少,見機械車位與平面車位價差。
陷阱三:近兩成是特殊交易
「備註」是自由文字,近三年有 57% 的買賣有填。用關鍵字分類後,18.1% 屬於價格不能當行情的特殊交易:
另有 22% 的備註提到增建、加蓋、外推、夾層或未登記建物。這些面積不在登記面積裡,單價會被高估;我們會標記,但不排除。
陷阱四:日期會打錯
資料裡有 1,369 筆的交易日期早於 2010 年或晚於下載日,例如買賣的最新交易日是 2101-10-17。取「最新資料日」之前要先排除這些,實際的最新買賣日是 2026-09-16。
陷阱五:樓層是中文字
「移轉層次」是文字,不是數字。有建物的買賣裡,24% 是「全」(整棟,多為透天),5% 一次移轉好幾層或連同騎樓、陽台。常見的寫法:全一層,騎樓四層,陽台三層,陽台一層,二層二層,陽台一層,二層,騎樓一層,見其他登記事項
要算樓層價差,得先把「十二層」轉成 12、排除多層與整棟的交易;方法見樓層價差。
陷阱六:最近兩個月還沒到齊
買賣要等辦完移轉登記才申報,發布又按旬。所以最新一兩個月的筆數一定偏少,直接拿來算「成交量暴跌」是錯的:
| 成交月份 | 目前筆數 | 前一年同月 | 比例 |
|---|---|---|---|
| 2026-04 | 12,554 | 13,955 | 90% |
| 2026-05 | 12,438 | 14,211 | 88% |
| 2026-06 | 11,499 | 13,829 | 83% |
| 2026-07 | 9,044 | 12,494 | 72% |
| 2026-08 | 3,598 | 12,723 | 28% |
| 2026-09 | 199 | 13,098 | 2% |
買賣、非特殊交易,資料截至 2026-09-16。比例偏低的月份同時包含市場變化與申報延遲,越近的月份延遲影響越大。
本站的統計只算到「資料完整月」,之後的月份標成初步值。
不想自己清:用 API 或 MCP
上面這些都已經在本站處理好(扣車位單價、特殊交易標記、樓層解析、去重、地址對到社區與座標)。 要程式化取用可以用 REST API;要讓 ChatGPT、Claude 這類 AI 助理直接查,可以接 MCP 伺服器。 單價欄位:REST API 的 unit_price_ping 是官方單價換算成元/坪、unit_price_ping_net 是扣車位後的單價; MCP 回傳的 unit_price_ping 一律是扣車位後的單價,官方原始值放在 unit_price_ping_official。
資料與方法
- 來源:內政部實價登錄開放資料,本站資料庫的現行版本;近三年買賣為 2026-09-16 往前三年。快照 2026-10-02。
- 單價驗算:交易標的含車位、單一建物、非特殊交易;官方單價與公式的差距在 1% 以內視為符合。
- 特殊交易:依備註關鍵字分類,規則見
realestate/units.py;預售屋分件登記、增建等只標記、不排除。 - 下載頁、發布頻率與授權:plvr.land.moi.gov.tw/DownloadOpenData(2026-10-02 查詢)。
- 分析程式:
scripts/content/open_data.py;讀檔與轉換:realestate/etl/plvr/。