e-Stat API 3.0の使い方:appId取得と統計表・メタ情報・統計データの取得手順
政府統計e-Stat API 3.0のappId取得手順、getStatsList・getMetaInfo・getStatsDataのURLとパラメータ、レスポンス構造、10万件上限とNEXT_KEYを公式仕様(2026-09-14確認)で整理。AIエージェントに統計を引かせる時の表ID・単位・注記の扱いも。
e-Stat API 3.0で統計値を取るには、統計表情報取得(getStatsList)→メタ情報取得(getMetaInfo)→統計データ取得(getStatsData)の3段階を、公式の開発ガイドどおりに踏むのが最短です。 appIdはユーザ登録後にマイページで発行し、リクエストURLのクエリ appId= に付けます。
この記事では、appIdの取得手順、3つのAPIのURLとパラメータ、レスポンス構造、10万件上限と NEXT_KEY の扱いを公式仕様から整理し、最後にAIエージェントに統計を引かせるときの注意をまとめます。e-Gov・国会会議録・法人番号などとの比較は日本の公共データAPI 5選にあります。
先に押さえること
- appIdはマイページで発行する。 ユーザ登録→「API機能(アプリケーションID発行)」→アプリケーションごとに発行。FAQによれば1ユーザ3つまでです。
- URLは
https://api.e-stat.go.jp/rest/3.0/app/配下。 XMLはgetStatsList、JSONはjson/getStatsList、CSVはgetSimpleStatsListと、形式でパスが変わります。 - 1回の取得は最大10万件。 超えたら
RESULT_INFのNEXT_KEYをstartPositionに渡して続きを取ります。 - AIに引かせるなら、表ID・分類コード・単位・注釈をセットで持たせる。 秘匿を表す「X」を0に潰した時点で統計として壊れます。
appIdを取得する
公式の利用ガイドが示す流れは4段階です。
- 政府統計の総合窓口(e-Stat)にユーザ登録する
- マイページにログインし、「API機能(アプリケーションID発行)」から、開発するアプリケーションごとにアプリケーションIDを取得する
- API仕様を確認してアプリケーションを開発する
- 公開する場合はクレジット表示を付ける
発行時に入力する名称・URL・概要は後から変更でき、非公開サイトで使う場合はローカルアドレスで登録できます。取得できるIDの数はFAQで「3つまで」とされています。
利用規約で運用に効く条項は次の4つです。
- 第3条:発行されたIDを第三者に譲渡・貸与しない。不正利用が判明したら速やかに統計センターへ連絡する
- 第5条:負荷状況に応じてアクセス制限をかけることがある。予告なく停止・性能劣化が起こりうる
- 第7条:API機能を利用したサービスを提供する場合は出所等を明示する
- 第8条:短時間における大量のアクセスなど、運用に支障を与える行為の禁止
出所明示の具体的な文言はクレジット表示のページにあります。「このサービスは、政府統計総合窓口(e-Stat)のAPI機能を使用していますが、サービスの内容は国によって保証されたものではありません。」を、利用者がアクセスできる場所に置きます。FAQでは商用利用が可能、アクセス回数の制限は現在のところないとされています。
appIdはコードやプロンプトに直書きせず、環境変数から読む前提にします。
export ESTAT_APP_ID="マイページで発行されたアプリケーションID"3つのAPIのURLとパラメータ
API仕様のページによると、最新版は2019年7月26日提供開始の3.0で、リクエストURLは api.e-stat.go.jp/rest/3.0/app/... の形です。httpsは2018年1月4日から全バージョンで対応しています。
- 2014-10-31バージョン1.0e-Stat API機能の提供開始
- 2015-01-30バージョン2.0
- 2016-07-14バージョン2.1
- 2018-01-04https対応全バージョンでhttpsによるリクエストに対応
- 2019-07-26バージョン3.0小地域・地域メッシュデータが取得可能に。現行の最新版
出力形式ごとにパスが違います。統計表情報取得を例にすると次の対応です。
| 形式 | パス | 備考 |
|---|---|---|
| XML | /rest/3.0/app/getStatsList | 既定の形式 |
| JSON | /rest/3.0/app/json/getStatsList | CORSはJSON形式で対応 |
| JSONP | /rest/3.0/app/jsonp/getStatsList | callback パラメータを付ける |
| CSV | /rest/3.0/app/getSimpleStatsList | 統計表情報・メタ情報・統計データの3つのみ |
メタ情報取得は getMetaInfo、統計データ取得は getStatsData に読み替えます。このほかにデータセット登録(postDataset、POST)、データセット参照(refDataset)、データカタログ情報取得(getDataCatalog)、統計データ一括取得(getStatsDatas、POST)があります。gzip圧縮は Accept-Encoding ヘッダで指定できます。
統計表情報取得(getStatsList)
統計表を探して統計表ID(statsDataId)を得るためのAPIです。主なパラメータは次のとおりです。
| パラメータ | 必須 | 意味 |
|---|---|---|
appId | 必須 | アプリケーションID |
lang | 任意 | J(日本語、既定)または E(英語) |
surveyYears / openYears | 任意 | 調査年月・公開年月。yyyy、yyyymm、yyyymm-yyyymm |
statsField | 任意 | 統計分野。2桁(大分類)または4桁(小分類) |
statsCode | 任意 | 5桁(作成機関)または8桁(政府統計コード) |
searchWord | 任意 | 検索キーワード。AND / OR / NOT に対応 |
searchKind / collectArea | 任意 | 検索データ種別、集計地域区分 |
explanationGetFlg | 任意 | 解説情報の有無 |
updatedDate | 任意 | 更新日付 |
startPosition / limit | 任意 | 取得開始位置と件数。limit の既定値は10万件 |
公式の「APIの使い方」は、パラメータ値をUTF-8でURLエンコードしてから結合するよう求めています。「人口」で探す場合はこうなります。
curl -s "https://api.e-stat.go.jp/rest/3.0/app/json/getStatsList?appId=${ESTAT_APP_ID}&searchWord=%E4%BA%BA%E5%8F%A3&limit=20"メタ情報取得(getMetaInfo)
統計表IDを渡し、その表が持つ分類事項・時間軸・地域・表章事項のコードを確認します。パラメータは appId(必須)、statsDataId(必須)、lang、explanationGetFlg です。
curl -s "https://api.e-stat.go.jp/rest/3.0/app/json/getMetaInfo?appId=${ESTAT_APP_ID}&statsDataId=<統計表ID>"統計データ取得(getStatsData)
statsDataId または dataSetId のどちらかが必須で、メタ情報で確認したコードを絞り込み条件に使います。
| パラメータ | 意味 |
|---|---|
lvTab / cdTab / cdTabFrom / cdTabTo | 表章事項の階層・コード・範囲 |
lvTime / cdTime | 時間軸事項 |
lvArea / cdArea | 地域事項 |
lvCat01〜lvCat15 / cdCat01〜cdCat15 | 分類事項01〜15 |
metaGetFlg | メタ情報を含めるか(Y / N、既定 Y) |
cntGetFlg | 件数のみ取得するか(Y / N) |
annotationGetFlg | 注釈情報を含めるか(Y / N、既定 Y) |
replaceSpChar | 特殊文字の置換(0〜3、既定 0) |
startPosition / limit | 取得開始位置と件数。既定10万件 |
絞り込みで列挙できる単一コードは最大100個です。
curl -s "https://api.e-stat.go.jp/rest/3.0/app/json/getStatsData?appId=${ESTAT_APP_ID}&statsDataId=<統計表ID>&cdCat01=<分類コード>&limit=1000"レスポンスの構造
3つのAPIとも、ルート要素(GET_STATS_LIST / GET_META_INFO / GET_STATS_DATA)の下に RESULT、PARAMETER、データ本体が並びます。RESULT には STATUS、ERROR_MSG、DATE が入り、STATUS は0〜2が成功、100以上がエラーです。
統計表情報取得の本体は DATALIST_INF で、NUMBER、RESULT_INF(FROM_NUMBER、TO_NUMBER、NEXT_KEY)、TABLE_INF が並びます。TABLE_INF の id 属性が統計表IDです。 子要素には STAT_NAME(code 属性つき)、GOV_ORG、STATISTICS_NAME、TITLE、CYCLE、SURVEY_DATE、OPEN_DATE、SMALL_AREA、COLLECT_AREA、MAIN_CATEGORY、SUB_CATEGORY、OVERALL_TOTAL_NUMBER、UPDATED_DATE などがあります。
メタ情報取得の本体は METADATA_INF で、TABLE_INF と CLASS_INF を持ちます。CLASS_INF の下に CLASS_OBJ(id、name、description)があり、その下の CLASS が code、name、level、unit、parentCode、addInf を属性として持ちます。ここで見る unit と code が、次の統計データ取得で効きます。
統計データ取得の本体は STATISTICAL_DATA で、構造はこうです。
GET_STATS_DATA└─ STATISTICAL_DATA ├─ RESULT_INF TOTAL_NUMBER / FROM_NUMBER / TO_NUMBER / NEXT_KEY ├─ TABLE_INF 統計表のメタデータ ├─ CLASS_INF CLASS_OBJ > CLASS (code, name, level, unit, parentCode) └─ DATA_INF ├─ NOTE 特殊文字の凡例 ├─ ANNOTATION 注釈 └─ VALUE tab / cat01〜cat15 / area / time / unit / annotation 属性VALUE 要素のテキストが統計値で、どの表章事項・分類・地域・時間の値かは属性で表されます。unit 属性に「世帯」のような単位、annotation 属性に「J1」のような注釈記号が入ります。
実際に返ってきたエラー応答
appIdを持っていないので、空のappIdで統計表情報取得を叩いた応答だけは実際に確認できました(2026年9月14日)。
curl -s "https://api.e-stat.go.jp/rest/3.0/app/json/getStatsList?appId=&limit=1&searchWord=%E4%BA%BA%E5%8F%A3"{"GET_STATS_LIST":{"RESULT":{"STATUS":100,"ERROR_MSG":"認証に失敗しました。アプリケーションIDを確認して下さい。","DATE":"2026-09-14T13:28:35.410+09:00"},"PARAMETER":{"SEARCH_WORD":"人口","DATA_FORMAT":"J","LIMIT":1}}}注意したいのは、このときHTTPステータスは200でした(appId=dummy でも同じ)。仕様書のコード一覧ではSTATUS 100に403が併記されていますが、手元の実行ではHTTP層は成功扱いで、本文の STATUS を見ないと失敗に気づけません。AIエージェントやMCPから呼ぶ場合、HTTPステータスだけで成否を判定する実装は避けてください。
主な STATUS は、0 正常終了、1 正常終了(該当データなし)、100 認証失敗、101 必須パラメータ未指定、102 パラメータ値が無効、200 DB(統計データ)アクセスエラー、300 データが存在しない、です。
10万件の壁と特殊文字
統計データ取得の limit は省略時10万件で、これを超えるデータは RESULT_INF の NEXT_KEY に続きの開始行が入ります。次のリクエストで startPosition にその値を渡すと続きが取れます。FAQも「一度に最大10万件。超過時は <NEXT_KEY> で指定して分割取得」と案内しています。
統計値には数値でないものが混ざります。NOTE 要素に凡例が入り、仕様上の意味は次のとおりです。
| 文字 | 意味 |
|---|---|
- | 該当なし、または除数が0 |
… | 除数が表章単位未満、または除数が1万人未満 |
* | 除数が表章単位未満 |
X | 数字秘匿 |
replaceSpChar は 0 置換なし(既定)、1 0に置換、2 NULL(空文字)に置換、3 文字列 NA に置換です。1 を選ぶと秘匿値「X」が0として集計に混ざります。 統計として扱うなら 0 のまま受け取り、文字列として保持してから用途に応じて処理するのが安全です。
AIエージェントに統計を引かせるときの注意
e-Statをエージェントから使うとき、危ないのはAPIそのものより「値だけ抜いて要約する」使い方です。次の5点を守ります。
- 表IDの特定を任せきりにしない。 同じ
searchWordで複数のTABLE_INFが返ります。TITLE、STATISTICS_NAME、SURVEY_DATE、GOV_ORG、UPDATED_DATEを並べて候補を提示させ、statsDataIdは人が固定します。 - コードで絞り、ラベルは表示用にする。
cdCat01などにはメタ情報のCLASSのcodeを渡します。nameは人が読むためのもので、照合キーにしません。 - 単位を一緒に持つ。
CLASSのunitとVALUEのunitの両方を保持します。「千円」と「円」、「人」と「千人」を落とすと桁が変わります。 - 注釈を落とさない。
annotationGetFlg=Y(既定)のまま取り、VALUEのannotation属性とANNOTATION要素を値に添えます。 - 未取得範囲を明示する。
NEXT_KEYが返ったのに続きを取っていない場合、その旨を出力の先頭に書かせます。
MCPにするなら、この3段階をそのままツールに分けます。search_stat_tables(統計表情報取得)、get_stat_metadata(メタ情報取得)、get_stat_values(統計データ取得)の3つで、それぞれ statsDataId、UPDATED_DATE、取得日時、使用した絞り込みパラメータを出典として返します。認証キーの扱いや出典の構造は公共データAPIをMCP化する設計パターンとMCPの出典情報を欠落させないoutputSchema設計にまとめています。
CLAUDE.mdやAGENTS.mdに置く指示は、次の程度で十分です。
## e-Stat を使うときのルール- getStatsList → getMetaInfo → getStatsData の順で呼ぶ。順番を飛ばさない- statsDataId は候補を TITLE・STATISTICS_NAME・SURVEY_DATE 付きで列挙して止まる。私が選ぶまで確定しない- 値は unit・annotation・分類コードと一緒に返す。「X」「-」「…」を数値に置き換えない- NEXT_KEY が返ったら「未取得範囲あり」を出力の先頭に書く- appId は環境変数 ESTAT_APP_ID から読む。URL・ログ・出力に含めないまとめ
- appIdはe-Statのマイページ「API機能(アプリケーションID発行)」でアプリケーションごとに発行。1ユーザ3つまで、譲渡・貸与は禁止
- URLは
https://api.e-stat.go.jp/rest/3.0/app/配下で、XML / JSON / JSONP / CSVでパスが変わる - 統計表情報取得→メタ情報取得→統計データ取得の3段階。
TABLE_INFのidが統計表ID、CLASSのcodeとunitが絞り込みと単位の鍵 - 1回10万件、超えたら
NEXT_KEYをstartPositionへ。エラーはHTTP 200でも本文STATUSに出る - AIに引かせるときは表IDを人が固定し、値を単位・注釈・コードとセットで返させる。秘匿「X」を0にしない
appIdを取得して実際に統計値を取った時点で、この記事は実測ログに差し替えます。同じ公共データでも法令は仕様が別物なので、時点指定が必要ならe-Gov法令API v2のasof指定から読んでください。
関連して読む
ai-agent・mcpを続けて読む
· 参考リンク 5件法人番号システムWeb-APIの使い方:アプリケーションID申請から名称検索・差分取得まで
国税庁の法人番号システムWeb-API(Ver.4.0)について、アプリケーションIDの発行届出、法人番号指定・期間指定・法人名指定の3リクエストとパラメータ、CSV/XMLレスポンス、変更履歴の扱いを公式仕様(2026-09-14確認)で整理。AIエージェントで取引先マスタを照合する時の注意も。
mcp・public-dataを続けて読む
· 参考リンク 5件日本の公共データAPI 5選:MCPで使うe-Gov・国会・統計・法人情報の選び方
日本の公共データをMCPから使う開発者向けに、e-Gov・国会会議録・e-Stat・Gビズインフォ・EDINETを比較。用途・認証・識別子からAPIを選び、法令の時点指定やXML変換の実装例へ進めます。
この記事の情報・検証メモ
- 公開日
- 情報確認
- 参考リンク
- 8件
- 更新性
- 定期更新
仕様・料金・提供範囲が変わりやすいテーマは、公開日・更新日・情報確認日を分けて管理します。 導入前には必ず記事末尾の一次情報と公式ドキュメントで最新状況を確認してください。
一次情報・参考リンク
- e-Stat API機能(政府統計の総合窓口) https://www.e-stat.go.jp/api/
- e-Stat API仕様 https://www.e-stat.go.jp/api/api-info/api-spec
- e-Stat API仕様 3.0(HTML版) https://www.e-stat.go.jp/api/api-info/e-stat-manual3-0
- e-Stat API機能の利用ガイド https://www.e-stat.go.jp/api/api-info/api-guide
- e-Stat APIの使い方 https://www.e-stat.go.jp/api/api-dev/how_to_use
- e-Stat API よくある質問 https://www.e-stat.go.jp/api/api-dev/faq
- e-Stat API機能 利用規約 https://www.e-stat.go.jp/api/terms-of-use
- e-Stat API クレジット表示について https://www.e-stat.go.jp/api/api-info/credit