国土交通省の不動産取引価格情報取得APIの利用方法について案内しています。
不動産取引価格情報検索について
国土交通省が提供する土地総合情報システムです。不動産の取引価格、地価公示・都道府県地価調査の価格を検索してご覧になることができます。
国土交通省 土地総合情報システム
https://www.land.mlit.go.jp/webland/

不動産取引価格情報検索は、不動産売買においてどんな物件がどのくらいの取引価格で売買されているかという相場を知らせるために、国が不動産取引価格アンケートに回答してもらう形で不動産の取引データをデータベース化し、公開しています。
以下のように、エリアやカテゴリを選択して検索することができます。

不動産取引価格情報取得APIについて
とはいえ、都度都度検索して調べるのは手間がかかりますし、分析もしづらいです。そこで国土交通省ではAPIを公開し、簡単に不動産取引価格情報を取得できるようにしてくれています。
https://www.land.mlit.go.jp/webland/api.html

ここからは、Githubで公開されていj_realty_apiを使用して、スプレッドシートに不動産取引価格情報を出力する流れを紹介しています。
https://github.com/mazarimono/j_realty_api
不動産取引価格情報を取得する
APIで取得できるデータは以下です。
| タグ名 |
内容 |
備考 |
| Type |
取引の種類 |
|
| Region |
地区 |
|
| MunicipalityCode |
市区町村コード |
|
| Prefecture |
都道府県名 |
|
| Municipality |
市区町村名 |
|
| DistrictName |
地区名 |
|
| TradePrice |
取引価格(総額) |
|
| PricePerUnit |
坪単価 |
英語版には含まれません |
| FloorPlan |
間取り |
|
| Area |
面積(平方メートル) |
|
| UnitPrice |
取引価格(平方メートル単価) |
|
| LandShape |
土地の形状 |
|
| Frontage |
間口 |
|
| TotalFloorArea |
延床面積(平方メートル) |
|
| BuildingYear |
建築年 |
|
| Structure |
建物の構造 |
|
| Use |
用途 |
|
| Purpose |
今後の利用目的 |
|
| Direction |
前面道路:方位 |
|
| Classification |
前面道路:種類 |
|
| Breadth |
前面道路:幅員(m) |
|
| CityPlanning |
都市計画 |
|
| CoverageRatio |
建ぺい率(%) |
|
| FloorAreaRatio |
容積率(%) |
|
| Period |
取引時点 |
|
| Renovation |
改装 |
|
| Remarks |
取引の事情等 |
1. 実行環境の準備: APIを利用するためのコードを記述する場としてGoogle Colaboratoryを、データの出力先としてスプレッドシートを準備します。
今回はGoogle Colabとスプレッドシートを使用する方法をご紹介します。
Google Colabは、無料でPythonというプログラミングコードの実行環境を整備できるサービスです。Googleのサービスなので、同じGoogleサービスであるスプレッドシートとの連携もしやすいです。
Google Colabについて
2. エリアの選定: 収集するデータのエリアを決めます。
不動産取引価格情報は、エリアごとにエリアコードを指定して、取得を行いますので、まずは取得したいエリアのエリアコードを調べる必要があります。
今回は、東京の市区町村のコードを調べたいと思います。
まずは、
!pip install j_realty_api japanize_matplotlib -Uqq
というコードで、j_realty_apiをインストールします。
次に以下のコードで、東京の市区町村のコード一覧を取得します。
from j_realty_api import j_realty_jp as jrn
import japanize_matplotlib
japanize_matplotlib.japanize()
# prop transaction API need Pref code and Municipality code
j = jrn.CityCode('東京')
pref_code = j.pref_code
city_json = j.city_json
pref_code, city_json
以下のように13ではじまる東京の市区町村のコードが出力されます。

3. データの取得: エリアを指定してデータを取得します。
次に、市町村コードと期間を指定して、不動産取引価格情報を取得するコードを記述します。今回は、都心5区に限定して2023Q1から2023Q4までのデータを取得します。
ちなみに、Q1は4~6月ではなく、1~3月で、Q2が4~6月、Q3が7~10月、Q4が11~12月と少し変則的な設定になっています。
!pip install j_realty_api japanize_matplotlib -Uqq
from j_realty_api import j_realty_jp as jrn
import japanize_matplotlib
japanize_matplotlib.japanize()
from google.colab import auth
auth.authenticate_user()
import pandas as pd
import gspread
from google.auth import default
creds, _ = default()
gc = gspread.authorize(creds)
from gspread_dataframe import set_with_dataframe
import time # time モジュールのインポートを追加
# スプレッドシートのオープン
spreadsheet_id = '*************************************' # スプレッドシートのID
sheet = gc.open_by_key(spreadsheet_id).sheet1 # シート1を選択
# 対象の市町村コードリスト
city_codes = [13101, 13102, 13103, 13104, 13113]
# 列の順序を定義
columns_ordered = ["Type", "Region", "MunicipalityCode", "Prefecture", "Municipality",
"DistrictName", "TradePrice", "PricePerUnit", "FloorPlan", "Area",
"UnitPrice", "LandShape", "Frontage", "TotalFloorArea", "BuildingYear",
"Structure", "Use", "Purpose", "Direction", "Classification",
"Breadth", "CityPlanning", "CoverageRatio", "FloorAreaRatio",
"Period", "Renovation", "Remarks"]
# 最初のデータセットかどうかを判断するフラグ
first_dataset = True
for city_code in city_codes:
# データフレームの取得
pt = jrn.PropTransactions(pref_code, city_code, 20231, 20234)
df = pt.get_data()
# 列の順序を調整
df = df.reindex(columns=columns_ordered)
# スプレッドシートにデータフレームを転記
set_with_dataframe(sheet, df, row=len(sheet.get_all_values()) + 1, include_index=False,
include_column_header=first_dataset)
# 最初のデータセットの後は列名を含めない
first_dataset = False
# 次の市町村データのためにスリープを入れる
time.sleep(5)
上記を実行すると、以下のように指定したスプレッドシートに不動産取引価格情報が出力されます。

今回は、国土交通省の不動産取引価格情報取得APIについて紹介しました。
不動産DXに関するご相談などもお気軽にどうぞ。