国土交通省のAPIから不動産情報を取得する

姉妹ブログTwitterに記載していますが、私は不動産投資を行っています。 不動産情報は下記のサイトで調べることができますが、Python等でデータを分析したかったので、APIからデータを取得してみました。

土地総合情報システム

API仕様は下記のサイトで公開されています。出力はJSON形式になっていますので、これを取得します。

API操作説明 | 国土交通省 土地総合情報システム

プログラム

import requests
import json
import csv

url = "https://www.land.mlit.go.jp/webland/api/TradeListSearch?from=20151&to=20152&city=13102"

response = requests.get(url)
jsonData = response.json()

#Get keys
keys=[]
data_num = len(jsonData["data"])

for i in range(data_num):
    keys.extend(list(jsonData["data"][i].keys()))
keys = set(keys)

#Get data
output=[keys]
for i in range(data_num):
    temp=[]
    for key in keys:
        try:
            temp.append(jsonData["data"][i][key])
        except:
            temp.append("NaN")
    output.append(temp)

#Export CSV file
with open("output.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerows(output)

実際にデータを見てみると欠損値が多かったので、少し回りくどいことをしています。
Get keysのところで、1度全部のデータのキーを取得してから重複を削除してキーのリストを作っています。 Get dataのところではキーのリストを使ってデータを取得して、値がない場合はNaNを入れています。 もっとスマートなやり方があると思いますがとりあえず動いているのでOKとしています。

これで任意のデータが取得できるようになったので、Pandas等を使ってデータ分析してみようと思います。