見出し画像

不動産情報ライブラリの公開APIを利用する

国土交通省が公開している不動産情報ライブラリの活用についてご案内しています。
この記事は、以前公開した記事「不動産取引価格情報取得APIを利用する」
で紹介したAPIの仕様が2024年4月1日から仕様変更になったため、アップデートしたものになります。

不動産情報ライブラリについて

不動産情報ライブラリとは、不動産の取引価格、地価公示等の価格情報や防災情報、都市計画情報、周辺施設情報等、不動産に関する情報をご覧になることができる国土交通省のWEBサイトです。
https://www.reinfolib.mlit.go.jp/

以前ご紹介した不動産取引価格情報検索は、不動産価格(取引価格・成約価格)情報の検索・ダウンロードという機能に変わっています。また、成約価格情報というのが加わっており、以前よりも件数が多くなっています。
成約価格情報とは、以下の情報だそうです。
指定流通機構(レインズ)保有の不動産取引価格情報を、国土交通省が個別の不動産取引が特定できないよう加工し、消費者向け不動産取引情報サービスである、「レインズ・マーケット・インフォメーション」(RMI)にて公表している情報。なお、マンション及び一戸建ての不動産取引価格(成約価格)については、統計情報としての正確性に配慮した絞り込みを行った上で、個別の不動産取引が特定できないように加工し提供しております。

以下のように、検索結果が一覧で表示され、ダウンロードも可能です。

不動産情報ライブラリの公開APIについて

都度都度検索して調べるのは手間がかかりますし、分析もしづらいです。そこで国土交通省ではAPIを公開し、簡単に不動産取引価格情報を取得できるようにしてくれています。
https://www.reinfolib.mlit.go.jp/help/apiManual/
以前は、誰でも利用できたのですが、2024年4月1日からAPI利用申請が必要になりました。サイト上の利用申請フォームから申請すると、審査後にAPIキーがメールで送られてきます。
ここからは、Google Colba上でPythonを使用して、スプレッドシートに不動産取引価格情報を出力する流れを紹介しています。

不動産取引価格情報を取得する

APIで取得できるデータは以下です。
タグ名内容備考Type取引の種類(日本語)Type取引の種類(英語)Region地区(日本語)Region地区(日本語)MunicipalityCode市区町村コードPrefecture都道府県名(日本語)Prefecture都道府県名(英語)Municipality市区町村名(日本語)Municipality市区町村名(英語)DistrictName地区名(日本語)DistrictName地区名(英語)TradePrice取引価格(総額)PricePerUnit坪単価FloorPlan間取り(日本語)FloorPlan間取り(英語)Area面積(平方メートル)UnitPrice取引価格(平方メートル単価)LandShape土地の形状(日本語)LandShape土地の形状(英語)Frontage間口TotalFloorArea延床面積(平方メートル)BuildingYear建築年(日本語)BuildingYear建築年(英語)Structure建物の構造(日本語)Structure建物の構造(英語)Use用途(日本語)Use用途(英語)Purpose今後の利用目的(日本語)Purpose今後の利用目的(英語)Direction前面道路:方位(日本語)Direction前面道路:方位(英語)Classification前面道路:種類(日本語)Classification前面道路:種類(英語)Breadth前面道路:幅員(m)CityPlanning都市計画(日本語)CityPlanning都市計画(英語)CoverageRatio建蔽率(%)FloorAreaRatio容積率(%)Period取引時点(日本語)Period取引時点(英語)Renovation改装(日本語)Renovation改装(英語)Remarks取引の事情等(日本語)Remarks取引の事情等(英語)
1. 実行環境の準備: APIを利用するためのコードを記述する場としてGoogle Colaboratoryを、データの出力先としてスプレッドシートを準備します。
今回はGoogle Colabとスプレッドシートを使用する方法をご紹介します。

Google Colabは、無料でPythonというプログラミングコードの実行環境を整備できるサービスです。Googleのサービスなので、同じGoogleサービスであるスプレッドシートとの連携もしやすいです。

Google Colabについて
2. エリアの選定: 収集するデータのエリアを決めます。
不動産取引価格情報は、エリアごとにエリアコードを指定して、取得を行いますので、まずは取得したいエリアのエリアコードを調べる必要があります。
今回は、東京の市区町村のコードを調べたいと思います。 ちなみに、東京都のコードは、13です。
コード日本語表記英語表記01北海道Hokkaido02青森県Aomori Prefecture03岩手県Iwate Prefecture04宮城県Miyagi Prefecture05秋田県Akita Prefecture06山形県Yamagata Prefecture07福島県Fukushima Prefecture08茨城県Ibaraki Prefecture09栃木県Tochigi Prefecture10群馬県Gunma Prefecture11埼玉県Saitama Prefecture12千葉県Chiba Prefecture13東京都Tokyo14神奈川県Kanagawa Prefecture15新潟県Niigata Prefecture16富山県Toyama Prefecture17石川県Ishikawa Prefecture18福井県Fukui Prefecture19山梨県Yamanashi Prefecture20長野県Nagano Prefecture21岐阜県Gifu Prefecture22静岡県Shizuoka Prefecture23愛知県Aichi Prefecture24三重県Mie Prefecture25滋賀県Shiga Prefecture26京都府Kyoto Prefecture27大阪府Osaka Prefecture28兵庫県Hyogo Prefecture29奈良県Nara Prefecture30和歌山県Wakayama Prefecture31鳥取県Tottori Prefecture32島根県Shimane Prefecture33岡山県Okayama Prefecture34広島県Hiroshima Prefecture35山口県Yamaguchi Prefecture36徳島県Tokushima Prefecture37香川県Kagawa Prefecture38愛媛県Ehime Prefecture39高知県Kochi Prefecture40福岡県Fukuoka Prefecture41佐賀県Saga Prefecture42長崎県Nagasaki Prefecture43熊本県Kumamoto Prefecture44大分県Oita Prefecture45宮崎県Miyazaki Prefecture46鹿児島県Kagoshima Prefecture47沖縄県Okinawa Prefecture
以下のコードで、東京都の市区町村コードを取得します。
import requests

# APIエンドポイントとパラメータの設定
url = "https://www.reinfolib.mlit.go.jp/ex-api/external/XIT002"
params = {"area": "13"} # 東京都の都道府県コード

# APIキーの設定(実際のキーに置き換えてください)
headers = {"Ocp-Apim-Subscription-Key": "APIキーを入力してください"}

# APIリクエストを送信
response = requests.get(url, headers=headers, params=params)

# 応答の確認
if response.status_code == 200:
json_response_data = response.json()
print(json_response_data) # 応答データを表示
else:
print("Failed to retrieve data:", response.status_code)
以下のように13ではじまる東京の市区町村のコードが出力されます。

3. データの取得: エリアを指定してデータを取得します。
次に、市町村コードと期間を指定して、不動産取引価格情報を取得するコードを記述します。今回は、都心5区に限定して2023年のデータを取得します。
# ライブラリをインポート
import requests
import pandas as pd
import gspread
from google.colab import auth
from google.auth import default
from gspread_dataframe import set_with_dataframe
import time

# Googleユーザー認証
auth.authenticate_user()
creds, _ = default()
gc = gspread.authorize(creds)

# スプレッドシートを開く
spreadsheet_id = '****************' # 実際のスプレッドシートIDに置き換えてください
sheet = gc.open_by_key(spreadsheet_id).sheet1 # シート1を選択

# API設定
url = "https://www.reinfolib.mlit.go.jp/ex-api/external/XIT001" # 不動産価格情報のAPIエンドポイント
headers = {"Ocp-Apim-Subscription-Key": "******************"} # APIキー

# 対象の市町村コードリスト
city_codes = [13101, 13102, 13103, 13104, 13113]
year = 2023 # 取得する年度

# 列の順序を定義
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:
params = {"year": year, "city": city_code}
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
json_response_data = response.json()
df = pd.DataFrame(json_response_data["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

# APIリクエスト間のスリープ
time.sleep(5)
上記を実行すると、以下のように指定したスプレッドシートに不動産取引価格情報が出力されます。

今回は、不動産情報ライブラリーの公開APIについて紹介しました。
不動産DXに関するご相談などもお気軽にどうぞ。

いいなと思ったら応援しよう!

片山 幹健 |Social Bank
SmartApproachのテスト利用に付き合ってもいいよ(無料です)という企業さんや、事業立ち上げ手伝ってもいいよ(今6人ですが、ほぼ副業メンバーです)という方がいらっしゃいましたら、ご連絡いただけますと嬉しいです。よろしくお願いいたします。