本文へスキップ

e-Stat API 3.0の使い方:appId取得と統計表・メタ情報・統計データの取得手順

政府統計e-Stat API 3.0のappId取得手順、getStatsList・getMetaInfo・getStatsDataのURLとパラメータ、レスポンス構造、10万件上限とNEXT_KEYを公式仕様(2026-09-14確認)で整理。AIエージェントに統計を引かせる時の表ID・単位・注記の扱いも。

SHAYOUWORLD 更新 約8分

e-Stat API 3.0で統計値を取るには、統計表情報取得(getStatsList)→メタ情報取得(getMetaInfo)→統計データ取得(getStatsData)の3段階を、公式の開発ガイドどおりに踏むのが最短です。 appIdはユーザ登録後にマイページで発行し、リクエストURLのクエリ appId= に付けます。

この記事では、appIdの取得手順、3つのAPIのURLとパラメータ、レスポンス構造、10万件上限と NEXT_KEY の扱いを公式仕様から整理し、最後にAIエージェントに統計を引かせるときの注意をまとめます。e-Gov・国会会議録・法人番号などとの比較は日本の公共データAPI 5選にあります。

先に押さえること

  1. appIdはマイページで発行する。 ユーザ登録→「API機能(アプリケーションID発行)」→アプリケーションごとに発行。FAQによれば1ユーザ3つまでです。
  2. URLは https://api.e-stat.go.jp/rest/3.0/app/ 配下。 XMLは getStatsList、JSONは json/getStatsList、CSVは getSimpleStatsList と、形式でパスが変わります。
  3. 1回の取得は最大10万件。 超えたら RESULT_INFNEXT_KEYstartPosition に渡して続きを取ります。
  4. AIに引かせるなら、表ID・分類コード・単位・注釈をセットで持たせる。 秘匿を表す「X」を0に潰した時点で統計として壊れます。

appIdを取得する

公式の利用ガイドが示す流れは4段階です。

  1. 政府統計の総合窓口(e-Stat)にユーザ登録する
  2. マイページにログインし、「API機能(アプリケーションID発行)」から、開発するアプリケーションごとにアプリケーションIDを取得する
  3. API仕様を確認してアプリケーションを開発する
  4. 公開する場合はクレジット表示を付ける

発行時に入力する名称・URL・概要は後から変更でき、非公開サイトで使う場合はローカルアドレスで登録できます。取得できるIDの数はFAQで「3つまで」とされています。

利用規約で運用に効く条項は次の4つです。

  • 第3条:発行されたIDを第三者に譲渡・貸与しない。不正利用が判明したら速やかに統計センターへ連絡する
  • 第5条:負荷状況に応じてアクセス制限をかけることがある。予告なく停止・性能劣化が起こりうる
  • 第7条:API機能を利用したサービスを提供する場合は出所等を明示する
  • 第8条:短時間における大量のアクセスなど、運用に支障を与える行為の禁止

出所明示の具体的な文言はクレジット表示のページにあります。「このサービスは、政府統計総合窓口(e-Stat)のAPI機能を使用していますが、サービスの内容は国によって保証されたものではありません。」を、利用者がアクセスできる場所に置きます。FAQでは商用利用が可能、アクセス回数の制限は現在のところないとされています。

appIdはコードやプロンプトに直書きせず、環境変数から読む前提にします。

Terminal window
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日から全バージョンで対応しています。

  1. 2014-10-31
    バージョン1.0
    e-Stat API機能の提供開始
  2. 2015-01-30
    バージョン2.0
  3. 2016-07-14
    バージョン2.1
  4. 2018-01-04
    https対応
    全バージョンでhttpsによるリクエストに対応
  5. 2019-07-26
    バージョン3.0
    小地域・地域メッシュデータが取得可能に。現行の最新版
e-Stat API仕様ページの版歴より(2026-09-14確認)

出力形式ごとにパスが違います。統計表情報取得を例にすると次の対応です。

形式パス備考
XML/rest/3.0/app/getStatsList既定の形式
JSON/rest/3.0/app/json/getStatsListCORSはJSON形式で対応
JSONP/rest/3.0/app/jsonp/getStatsListcallback パラメータを付ける
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任意調査年月・公開年月。yyyyyyyymmyyyymm-yyyymm
statsField任意統計分野。2桁(大分類)または4桁(小分類)
statsCode任意5桁(作成機関)または8桁(政府統計コード)
searchWord任意検索キーワード。AND / OR / NOT に対応
searchKind / collectArea任意検索データ種別、集計地域区分
explanationGetFlg任意解説情報の有無
updatedDate任意更新日付
startPosition / limit任意取得開始位置と件数。limit の既定値は10万件

公式の「APIの使い方」は、パラメータ値をUTF-8でURLエンコードしてから結合するよう求めています。「人口」で探す場合はこうなります。

Terminal window
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(必須)、langexplanationGetFlg です。

Terminal window
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地域事項
lvCat01lvCat15 / cdCat01cdCat15分類事項01〜15
metaGetFlgメタ情報を含めるか(Y / N、既定 Y
cntGetFlg件数のみ取得するか(Y / N
annotationGetFlg注釈情報を含めるか(Y / N、既定 Y
replaceSpChar特殊文字の置換(03、既定 0
startPosition / limit取得開始位置と件数。既定10万件

絞り込みで列挙できる単一コードは最大100個です。

Terminal window
curl -s "https://api.e-stat.go.jp/rest/3.0/app/json/getStatsData?appId=${ESTAT_APP_ID}&statsDataId=<統計表ID>&cdCat01=<分類コード>&limit=1000"
10万件
1回の取得上限
limit の既定値。超過分は NEXT_KEY で続きを取る
3つ
1ユーザのappId上限
公式FAQの記載
100個
絞り込みで列挙できるコード数
単一コードの上限
なし
アクセス回数の制限
FAQ「現在のところ、ございません」。規約は大量アクセスを禁止
e-Stat API仕様3.0・FAQ・利用規約より(2026-09-14確認)

レスポンスの構造

3つのAPIとも、ルート要素(GET_STATS_LIST / GET_META_INFO / GET_STATS_DATA)の下に RESULTPARAMETER、データ本体が並びます。RESULT には STATUSERROR_MSGDATE が入り、STATUS は0〜2が成功、100以上がエラーです。

統計表情報取得の本体は DATALIST_INF で、NUMBERRESULT_INFFROM_NUMBERTO_NUMBERNEXT_KEY)、TABLE_INF が並びます。TABLE_INFid 属性が統計表IDです。 子要素には STAT_NAMEcode 属性つき)、GOV_ORGSTATISTICS_NAMETITLECYCLESURVEY_DATEOPEN_DATESMALL_AREACOLLECT_AREAMAIN_CATEGORYSUB_CATEGORYOVERALL_TOTAL_NUMBERUPDATED_DATE などがあります。

メタ情報取得の本体は METADATA_INF で、TABLE_INFCLASS_INF を持ちます。CLASS_INF の下に CLASS_OBJidnamedescription)があり、その下の CLASScodenamelevelunitparentCodeaddInf を属性として持ちます。ここで見る unitcode が、次の統計データ取得で効きます。

統計データ取得の本体は 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日)。

Terminal window
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_INFNEXT_KEY に続きの開始行が入ります。次のリクエストで startPosition にその値を渡すと続きが取れます。FAQも「一度に最大10万件。超過時は <NEXT_KEY> で指定して分割取得」と案内しています。

統計値には数値でないものが混ざります。NOTE 要素に凡例が入り、仕様上の意味は次のとおりです。

文字意味
-該当なし、または除数が0
除数が表章単位未満、または除数が1万人未満
*除数が表章単位未満
X数字秘匿

replaceSpChar0 置換なし(既定)、1 0に置換、2 NULL(空文字)に置換、3 文字列 NA に置換です。1 を選ぶと秘匿値「X」が0として集計に混ざります。 統計として扱うなら 0 のまま受け取り、文字列として保持してから用途に応じて処理するのが安全です。

AIエージェントに統計を引かせるときの注意

e-Statをエージェントから使うとき、危ないのはAPIそのものより「値だけ抜いて要約する」使い方です。次の5点を守ります。

  1. 表IDの特定を任せきりにしない。 同じ searchWord で複数の TABLE_INF が返ります。TITLESTATISTICS_NAMESURVEY_DATEGOV_ORGUPDATED_DATE を並べて候補を提示させ、statsDataId は人が固定します。
  2. コードで絞り、ラベルは表示用にする。 cdCat01 などにはメタ情報の CLASScode を渡します。name は人が読むためのもので、照合キーにしません。
  3. 単位を一緒に持つ。 CLASSunitVALUEunit の両方を保持します。「千円」と「円」、「人」と「千人」を落とすと桁が変わります。
  4. 注釈を落とさない。 annotationGetFlg=Y(既定)のまま取り、VALUEannotation 属性と ANNOTATION 要素を値に添えます。
  5. 未取得範囲を明示する。 NEXT_KEY が返ったのに続きを取っていない場合、その旨を出力の先頭に書かせます。

MCPにするなら、この3段階をそのままツールに分けます。search_stat_tables(統計表情報取得)、get_stat_metadata(メタ情報取得)、get_stat_values(統計データ取得)の3つで、それぞれ statsDataIdUPDATED_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_INFid が統計表ID、CLASScodeunit が絞り込みと単位の鍵
  • 1回10万件、超えたら NEXT_KEYstartPosition へ。エラーはHTTP 200でも本文 STATUS に出る
  • AIに引かせるときは表IDを人が固定し、値を単位・注釈・コードとセットで返させる。秘匿「X」を0にしない

appIdを取得して実際に統計値を取った時点で、この記事は実測ログに差し替えます。同じ公共データでも法令は仕様が別物なので、時点指定が必要ならe-Gov法令API v2のasof指定から読んでください。

関連して読む

この記事の情報・検証メモ
Tags
公開日
情報確認
参考リンク
8件
更新性
定期更新
更新管理

仕様・料金・提供範囲が変わりやすいテーマは、公開日・更新日・情報確認日を分けて管理します。 導入前には必ず記事末尾の一次情報と公式ドキュメントで最新状況を確認してください。

図解を保存・共有

記事の要点を1枚にまとめました。画像は新しいタブで開いて保存できます。

e-Stat API 3.0の使い方:appId取得と統計表・メタ情報・統計データの取得手順 e-Stat APIは統計表情報→メタ情報→統計データの3段階で引く。appIdは環境変数に置き、表IDと単位・注釈は人が確認する appIdの取り方:ユーザ登録後、マイページの「API機能(アプリケーションID発行)」から発行。アプリケーションごとに発行し、1ユーザ3つまで。第三者への譲渡・貸与は規約で禁止。URLやログに出さない。 3つのAPI:getStatsListで統計表IDを探す。getMetaInfoで分類コード・単位・階層を確認する。getStatsDataで絞り込んだ値を取る。10万件を超えたらNEXT_KEY。 AIに引かせる時:表IDは候補を並べて人が固定する。値は単位・注釈・分類コードと一緒に返す。秘匿「X」や「-」を0に置き換えない。
e-Stat API 3.0の使い方:appId取得と統計表・メタ情報・統計データの取得手順 記事の要約 2026.09.14 入門・導入ガイド
Primary sources

一次情報・参考リンク

About the author
SHAYOUWORLD

日本の公共データAPIを使うMCPサーバーを作って公開し、ローカルLLMを自分のGPUで測った記録を、一次情報・検証ログ・失敗例とあわせて整理します。