Tony Wang6 分で読めますNumbeoのスクレイピング方法(2026年版・API & Python)
2026年版 Numbeo スクレイピングガイド:生活費・生活の質データをDIY、ノーコード、または構造化APIで取得する方法と、利用規約・有料APIの実情を解説。
2026年に Numbeo をスクレイピングする最も手早い方法は、Numbeo のレンダリング済みページを自分でパースするのではなく、正規化された JSON —都市または国ごとの品目別生活費と複合的な生活の質指数 — を返す構造化 API を呼び出すことです。Numbeo は都市間の生活費比較におけるウェブのデフォルトのソースであり、公式 API も存在しますが、それは手早く無料でサインアップできるものではなく、有料の商用サブスクリプションです。このガイドでは DIY、ノーコード、そして構造化 API を取り上げ、あわせて Numbeo の利用規約が実際に何を認めているかも解説します。
なぜ Numbeo をスクレイピングするのか?
Numbeo のクラウドソーシングによる価格・指数データは、立地に関するリサーチの特定領域を支えています。
- 生活費リサーチ — 移住計画や市場分析のために、都市間で家賃・食料品・外食・光熱費を比較します。
- リモートワーク・デジタルノマド向けツール — 「どこに住むべきか」を提案するプロダクトのために、手頃さ・治安・生活の質で候補都市をランク付けします。
- 不動産の手頃さ分析 — 家賃・不動産価格指数と地域の所得データを組み合わせ、市場ごとに住宅の手頃さをスコアリングします。
- 給与・報酬リサーチ — 都市の生活費指数で名目給与オファーを調整し、地域間の実質購買力を比較します。
- 国・地域レベルのベンチマーキング — ある国の生活費指数や犯罪指数が近隣国と比べてどうか、あるいは期間ごとにどう推移しているかを追跡します。
Numbeo をスクレイピングするのは合法か?
選択肢1: Python で DIY する(そしてなぜ破綻するか)
DIY のスクレイパーは Numbeo の都市ページや指数ページをリクエストし、レンダリングされたテーブルをパースします。
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://www.numbeo.com/cost-of-living/in/Los-Angeles",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Prices live in nested tables split across "Restaurants", "Markets",
# "Transportation", "Utilities", "Rent Per Month" sections — each needs
# its own row/column parsing logic
デモは動きますが、その後破綻します。
- ToS が明示的にこれを制限しています。 Numbeo の利用規約は自動化されたスクレイピングやクロールを直接名指しし、事前の書面による許可を必須としています — これは理論上のリスクではなく、実際のリスクです。
- 入れ子になった複数セクションのテーブル。 生活費ページは価格を十数個のカテゴリテーブル(外食、市場、交通、光熱費、家賃など)に分割しており、指数ページも独自のタイトル付きサブセクションに分かれています — それぞれに個別のパースロジックが必要で、マークアップが変わるたびに壊れます。
- 都市の検索手段がない。 Numbeo には公開の都市検索やオートコンプリートがなく、Numbeo が想定する正確なスラッグをあらかじめ知っている(あるいは国別ページやランキングページからスクレイピングする)必要があります。
- 指数ファミリーが対象範囲を増やします。 生活の質、犯罪、医療、汚染、交通、不動産投資はそれぞれ独立したページで、セクションのレイアウトも異なるため、「Numbeo のデータを取得する」ことは実質的に6種類以上の異なるパーサーを意味します。
選択肢2: ノーコードツール
マーケットプレイスのスクレイパーアクターは Numbeo の単発取得(CSV にエクスポートされる生活費テーブル)向けに存在し、スプレッドシート用のスナップショットを取得する手段としては妥当です。しかし定期実行するパイプラインには耐えられません — スケジューリングも都市間で正規化されたスキーマもなく、どのツールが行うかにかかわらず自動収集には Numbeo の許可が必要という同じ利用規約上のリスクを、DIY と同様に抱えています。
選択肢3: 構造化された Numbeo API
繰り返し実行できる、許可の範囲内に収まるワークフローには、Numbeo スクレイピング API が正規化された JSON を返し、メンテナンスすべきページパースはありません。都市の生活費を取得するには次のようにします。
curl "https://api.crawlora.net/api/v1/numbeo/cost-of-living/city/Los-Angeles" \
-H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"city": "Los Angeles, CA",
"city_slug": "Los-Angeles",
"country": "United States",
"categories": [
{
"category": "Restaurants",
"items": [
{ "name": "Meal at an Inexpensive Restaurant", "currency_symbol": "$", "price": 25, "range_low": 16, "range_high": 45 }
]
},
{
"category": "Rent Per Month",
"items": [
{ "name": "1 Bedroom Apartment in City Centre", "currency_symbol": "$", "price": 2563.18, "range_low": 2000, "range_high": 3400 }
]
}
],
"contributors_12mo": 178,
"last_update": "13 July 2026",
"source_url": "https://www.numbeo.com/cost-of-living/in/Los-Angeles"
}
}
Numbeo には公開の都市検索エンドポイントがないため、まず国別エンドポイントから有効な city_slug を発見し、その後、同じ都市について生活の質、犯罪、医療、汚染、交通、不動産投資のいずれかの指数を取得します。
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/numbeo"
# Discover city slugs for a country
country = requests.get(f"{base}/cost-of-living/country", headers=h, params={"country": "United States"}).json()["data"]
slug = country["cities"][0]["city_slug"]
# Cost-of-living detail for that city
col = requests.get(f"{base}/cost-of-living/city/{slug}", headers=h).json()["data"]
# Crime index for that city
crime = requests.get(f"{base}/indices/city/{slug}", headers=h, params={"index": "crime"}).json()["data"]
指数系エンドポイントは index の値にかかわらず共通のエンベロープを返します — 見出し値に加えて、ほとんどのファミリーではタイトル付きの個別指標のサブセクションが含まれます。
{
"code": 200,
"msg": "OK",
"data": {
"index": "crime",
"city": "Los Angeles, CA",
"city_slug": "Los-Angeles",
"country": "United States",
"headline_indices": [
{ "name": "Crime Index", "value": 53.83 },
{ "name": "Safety Index", "value": 46.17 }
],
"sections": [
{
"title": "Crime rates in Los Angeles, CA, United States",
"rows": [{ "name": "Level of crime", "value": 61.08, "qualifier": "High" }]
}
],
"contributors_note": "Contributors: 486",
"last_update": "13 June 2026",
"source_url": "https://www.numbeo.com/crime/in/Los-Angeles"
}
}
ランキング系エンドポイント(cost-of-living/rankings、cost-of-living/rankings-by-country、indices/rankings、indices/rankings-by-country)も同様に動作し、Numbeo が過去のスナップショットを公開している現行スコープのエンドポイントでは scope/period を受け付けます。都市または国ごとに1行を保存し、スケジュールを組んで再実行してください。
収集できるもの
都市別・国別の生活費データ: カテゴリ別(外食、市場、交通、光熱費、家賃など)の品目別価格と price、range_low、range_high、通貨記号、さらに6つの見出し生活費指数(cost_of_living_index、rent_index、cost_of_living_plus_rent_index、groceries_index、restaurant_price_index、local_purchasing_power_index)。都市別・国別の指数データは、生活の質、犯罪、医療、汚染、交通、不動産投資の6ファミリーについて、見出し値とタイトル付きサブ指数の内訳として提供されます。両ファミリーのランク付けされた都市・国リストには、すべてのレスポンスに contributors_12mo/contributors_note と last_update のメタデータが付きます。公開データのみです。
制約とよくある課題
- クラウドソーシングであり、監査されていません。 Numbeo の価格はサイト訪問者が実際に支払った金額を投稿したものです —
contributors_12moとcontributors_noteがその数値の背後にあるサンプルサイズを教えてくれます。数百人規模の貢献者がいる都市(ロサンゼルス、チューリッヒなど)は、少数の都市よりもはるかに信頼できます。貢献者の少ない都市の数値は、正確なものではなく目安として扱ってください。 - 都市検索エンドポイントがありません。 オートコンプリートはないため、都市詳細をリクエストする前に、国別またはランキングのレスポンスから
city_slugを解決してください。 - 6つの独立した指数ファミリー。 生活の質、犯罪、医療、汚染、交通、不動産投資はそれぞれ異なるレスポンス形状を返します(一部には
sectionsがあり、不動産投資には代わりにprice_categoriesがあります)— 汎用的な1つの形状ではなく、ファミリーごとにスキーマを設計してください。 - 規模拡大には利用規約の制約があります。 Numbeo 自身の規約は、自動収集には書面による許可を、商用利用には有料プランを必要とします — プロジェクトの範囲を正真正銘の公開参照用途に限定し、大規模な商用再配布には Numbeo 自身の API またはライセンスを利用してください。
- 公開データのみです。 これは Numbeo がすでに公開表示しているものを収集するだけであり、Numbeo 規模の競合する生活費データベースを構築する手段では決してありません。
どこで使われるか
- 移住・リモートワーク向けツール — 立地決定プロダクトのために、手頃さと生活の質で都市をランク付けします。
- 報酬リサーチ — 都市の生活費指数で給与額を調整し、市場間でオファーを比較します。
- 不動産の手頃さモデル — 家賃・不動産指数と所得データを組み合わせ、住宅市場をスコアリングします。
- 市場・国別リサーチ — ある国のコスト・治安・医療指数を近隣国と比較してベンチマークします。
出典
収集を始める
まずは無料でお試しください: 任意の公開 URL を無料ウェブスクレイパーに通すか、アンチボットチェッカーでサイトがボットをブロックするかどうかを確認できます。サインアップ不要です。
生活費・指数エンドポイントをプレイグラウンドで試し、API ドキュメントでスキーマを確認し、料金をご覧ください。生活費はモノやサービスにいくらかかるかを教えてくれます。Yahoo Finance は、同じ経済圏で人々が市場や給与からいくら稼いでいるかを教えてくれます — この2つを組み合わせることで、実質的な購買力のリサーチができます。住宅の手頃さが着眼点であれば、不動産物件のスクレイピング方法が Numbeo の家賃・不動産指数と直接組み合わさり、生活費と住宅を合わせた全体像が得られます。
よくある質問
Numbeoに公式APIはありますか?
はい — Numbeoは有料のData APIを販売しており、月額プランは月200,000クエリで260ドルから、FastSpring経由で課金されます。無料のセルフサービス型サインアップではないため、軽量な用途やリサーチ目的には構造化スクレイピングAPIの方が手軽な選択肢になります。
Numbeoをスクレイピングするのは合法ですか?
Numbeoの利用規約は、事前の書面による許可がない限り自動化されたスクレイピングやクロールを禁止していますが、公開表示されているデータの個人・学術・報道目的での利用は、出典を明記すれば認められています。商用利用にはNumbeoの有料プランまたはデータライセンスが必要です。
Numbeoの生活費データはどれくらい信頼できますか?
監査されたものではなく、サイト訪問者からクラウドソーシングされたデータのため、信頼性は貢献者数に左右されます — ロサンゼルスやチューリッヒのような貢献者数の多い都市は、投稿数がわずかな小都市よりもはるかに信頼できます。
都市のNumbeoスラッグはどうやって見つけますか?
公開の都市検索エンドポイントはありません。cost-of-living/countryまたはindices/rankingsエンドポイントを国指定で呼び出し、返ってくるcities配列からcity_slugを読み取ります。
Numbeoが追跡している指数ファミリーは何ですか?
6つあります:生活の質、犯罪、医療、汚染、交通、不動産投資です。それぞれ見出しとなる指数値に加え、ほとんどのファミリーでタイトル付きのサブ指数セクションや品目別の価格カテゴリを返します。
現在のランキングだけでなく、過去のNumbeoランキングも取得できますか?
ランキング系エンドポイントはscopeとperiodパラメータを受け付けており、Numbeo自身が過去の履歴を公開している範囲で過去のスナップショットを取得できます。
生活費データと指数データの違いは何ですか?
生活費エンドポイントは実際の品目別価格(家賃、食料品、外食費など)を返します。指数エンドポイントは、生活の質、治安、その他の項目について、複合的に正規化されたスコア(0〜100超のスケール)を返します。