本文へスキップ

e-Gov法令API v2エンドポイント逆引きリファレンス:6本の用途・パラメータ・実測レスポンス

e-Gov法令API v2の6エンドポイント(laws / law_revisions / law_data / keyword / law_file / attachment)を、やりたいこと別に逆引きできる形で整理。全エンドポイントをcurlで実行し、主要パラメータと応答を2026年9月14日に実測しました。

codeagent.jp編集部 更新 約6分

e-Gov法令API v2のエンドポイントは6本しかありません。法令IDを探す laws、改正履歴を追う law_revisions、本文を取る law_data の3本を覚えれば、法令調査の大半はこなせます。 残りの keyword(全文検索)、law_file(ファイル取得)、attachment(添付ファイル)は、用途がはっきりしたときに足せば十分です。

この記事は「やりたいこと」から引ける逆引きリファレンスとして、6本すべてを2026年9月14日にcurlで実行し、主要パラメータと応答の主要フィールドを実測値で整理したものです。パラメータ名はSwagger UIが読み込んでいるOpenAPI定義(version 2.1.139)で確認しました。asof による時点指定の詳細はasof指定と通称検索の記事、Pythonでの実装はPython実装の記事に分けています。

  1. 入口は laws 法令名・略称・法令番号のどれからでも法令IDに辿り着けます。総法令数は9,568件でした。
  2. law_data は法令ID・法令番号・履歴IDのどれでも受け付けます。 elm で条単位に絞れるので、全文を取る前に必要な範囲を決めます。
  3. keyword は「法令」ではなく「文」を数えます。 total_count はヒットした文の数で、0件は200ではなく404で返ります。
  4. law_fileattachment はバイナリ応答です。 Content-Typeが application/octet-streamimage/jpeg になり、JSONの枠から外れます。

逆引き:やりたいこと → エンドポイント

やりたいことエンドポイント必須よく使うパラメータ
法令名・通称から法令IDを探すGET /lawsなしlaw_title law_type limit offset asof
法令番号から探すGET /lawsなしlaw_num または law_num_era + law_num_type + law_num_num
改正履歴・施行日・未施行の版を見るGET /law_revisions/{law_id_or_num}パスcurrent_revision_status updated_from amendment_date_from
本文を取る(全文・条単位・過去時点)GET /law_data/{law_id_or_num_or_revision_id}パスelm asof json_format law_full_text_format response_format
条文中の語で横断検索するGET /keywordkeywordlaw_type law_num limit offset sentence_text_size highlight_tag
XML / DOCX などのファイルで保存するGET /law_file/{file_type}/{id}パスasof
別図・別記様式の画像やPDFを取るGET /attachment/{law_revision_id}パスsrc

ベースURLはどれも https://laws.e-gov.go.jp/api/2 で、認証は不要でした。以下、各エンドポイントの実行例と、応答で最初に見るべきフィールドを順に見ていきます。

laws:法令IDを確定する

法令名の部分一致で検索します。law_title は法令名だけでなく略称(abbrev)にもマッチします。

Terminal window
curl -s -G "https://laws.e-gov.go.jp/api/2/laws" \
--data-urlencode "law_title=民法" \
--data-urlencode "limit=3"
total_count=11 count=3 next_offset=3
129AC0000000089 Act 民法
131AC0000000011 Act 民法施行法
410AC0000000104 Act 動産及び債権の譲渡の対抗要件に関する民法の特例等に関する法律

応答は total_count(条件に合った総数)、count(今回返した件数)、next_offset(次の取得開始位置)と laws 配列です。配列の各要素は3つのブロックに分かれています。

  • law_infolaw_id law_num law_type promulgation_date など、改正で変わらない情報
  • revision_infolaw_revision_id law_title abbrev amendment_enforcement_date current_revision_status など、指定時点(asof)での版の情報
  • current_revision_infoasof に関係なく現時点の最新版の情報。omit_current_revision_info=true で省略できます

法令番号からも引けます。law_num に「昭和二十二年法律第四十九号」を渡すと労働基準法が1件返り、元号・種別・号数を分けて law_num_era=Meiji&law_num_type=Act&law_num_num=89 と渡すと民法(明治二十九年法律第八十九号)が1件返りました。パラメータなしで limit=1 を付けると total_count が9,568で、これが2026年9月14日時点の収録法令数です。

law_revisions:改正履歴と未施行の版を見る

法令IDまたは法令番号をパスに置きます。応答の revisions は履歴IDが新しい順です。

Terminal window
curl -s "https://laws.e-gov.go.jp/api/2/law_revisions/322AC0000000049"
revisions: 15件
322AC0000000049_20281223_508AC0000000046 施行 2028-12-23 UnEnforced 令和八年法律第四十六号
322AC0000000049_20270401_508AC0000000060 施行 2027-04-01 UnEnforced 令和八年法律第六十号
322AC0000000049_20260717_508AC0000000060 施行 2026-07-17 CurrentEnforced 令和八年法律第六十号
322AC0000000049_20260624_508AC0000000046 施行 2026-06-24 PreviousEnforced 令和八年法律第四十六号
322AC0000000049_20250601_504AC0000000068 施行 2025-06-01 PreviousEnforced 令和四年法律第六十八号
...

current_revision_statusCurrentEnforced(現施行)・UnEnforced(未施行)・PreviousEnforced(過去施行)・Repeal(廃止)のどれかで、current_revision_status=UnEnforced を付けると未施行の2件だけに絞れました。updated_from=2026-06-01 ではデータ更新日でフィルタでき、5件に絞れます。改正チェックを定期実行するなら、このエンドポイントを軸にするのが軽くて済みます(改正チェックの定期実行)。

law_title/ で囲むと正規表現になります。law_title=/^労働基準法$/ はそのまま送ると動きましたが、スラッシュを %2F にエンコードすると400(コード400033)になったので、/ はエンコードせずに送ります。

law_data:本文を取る

パスには法令ID、法令番号、履歴IDのどれでも置けます。3種類とも同じ労働基準法で確認しました。

Terminal window
# 法令ID(現行)
curl -s "https://laws.e-gov.go.jp/api/2/law_data/322AC0000000049?elm=LawTitle%5B1%5D"
# 法令番号(URLエンコード済み)
curl -s "https://laws.e-gov.go.jp/api/2/law_data/%E6%98%AD%E5%92%8C%E4%BA%8C%E5%8D%81%E4%BA%8C%E5%B9%B4%E6%B3%95%E5%BE%8B%E7%AC%AC%E5%9B%9B%E5%8D%81%E4%B9%9D%E5%8F%B7?elm=LawTitle%5B1%5D"
# 履歴ID(この版に固定。asof を付けても無視される)
curl -s "https://laws.e-gov.go.jp/api/2/law_data/322AC0000000049_20250601_504AC0000000068?elm=LawTitle%5B1%5D"

3本とも200で、履歴ID指定のものだけ revision_info.law_revision_id..._20250601_... になりました。履歴IDに asof=2020-01-01 を足しても結果は変わらず、OpenAPI定義の「履歴IDを指定した場合は無視されます」という記述どおりです。

条単位に絞るのが elm です。json_format=light を付けるとパースしやすい簡易版になります。

Terminal window
curl -s "https://laws.e-gov.go.jp/api/2/law_data/322AC0000000049?elm=MainProvision-Article_32&json_format=light"
{"Article": {"ArticleCaption": "(労働時間)", "ArticleTitle": "第三十二条",
"Paragraph": [
{"Num": "1", "ParagraphSentence": {"Sentence": ["使用者は、労働者に、休憩時間を除き一週間について四十時間を超えて、労働させてはならない。"]}},
{"Num": "2", "ParagraphSentence": {"Sentence": ["使用者は、一週間の各日については、労働者に、休憩時間を除き一日について八時間を超えて、労働させてはならない。"]}}
]}}

応答全体は1,713バイトで、同じ法令の全文JSON(419,817バイト)の0.4%です。応答のトップレベルは attached_files_info law_info revision_info law_full_text の4つで、law_full_text の中身だけが elmjson_format で変わります。elm に存在しない要素(MainProvision-Article_9999)を渡すと400(コード400021)で止まります。

elm=LawTitle[1] のような角括弧付きの指定は、そのまま送るとサーバーがHTML形式の400を返し、curlは角括弧をグロブとして解釈してリクエスト前にエラー(終了コード3)になります。%5B1%5D にエンコードするか、curl -g を付けてください。

keyword:条文本文の全文検索

keyword が必須で、法令本文を対象に全文検索します。

Terminal window
curl -s -G "https://laws.e-gov.go.jp/api/2/keyword" \
--data-urlencode "keyword=電子計算機" \
--data-urlencode "law_type=Act" \
--data-urlencode "limit=5" \
--data-urlencode "sentence_text_size=40"
total_count=1183 sentence_count=5 next_offset=5 items=4
129AC0000000089 民法 mainprovision ...で作られる記録であって、<span>電子計算機</span>
131AC0000000011 民法施行法 mainprovision ...ニ依リ作ラルル記録ニシテ<span>電子計算機</span>
132AC0000000048 商法 mainprovision ...

total_count は法令数ではなくヒットした文の数で、limit も文の数の上限です(5文が4法令に散っています)。ヒット箇所は items[].sentences[]position(本則・附則・目次などの位置)と text<span> で強調された抜粋)で入ります。検索式の書き方、ページングの実際、ヒットしない語の例はキーワード検索の記事に分けました。

law_file と attachment:ファイルで受け取る

law_filefile_typexml json html rtf docx のどれかを置きます。労働基準法で5種類すべてを取得しました。

Terminal window
curl -s -o roukihou.docx "https://laws.e-gov.go.jp/api/2/law_file/docx/322AC0000000049"
xml 398,337 bytes application/octet-stream
json 1,147,616 (整形済みJSON。law_data より大きい)
html 521,328
rtf 518,139
docx 63,504

Content-Typeはどれも application/octet-stream で、pdf を指定すると400(コード400042)でした。

attachment は履歴IDをパスに置き、law_dataattached_files_info.attached_files[].srcsrc に渡します。国旗及び国歌に関する法律(411AC0000000127)は別記に図が2枚あり、src=./pict/H11HO127-001.jpg で360×240のJPEG(12,614バイト、image/jpeg)、src なしで2枚まとめたZIP(51,226バイト)が返りました。law_datainclude_attached_file_content=true を付けると、同じ内容がBase64の image_data としてJSONに埋め込まれます。

6本の実測サマリー

6本
エンドポイント数
laws / law_revisions / law_data / keyword / law_file / attachment
9,568件
収録法令数
laws?limit=1 の total_count(2026-09-14)
0.1〜1.8秒
通常の応答時間
law_revisions 0.11秒、laws 0.4〜1.1秒、keyword 0.6〜1.8秒
1,713 bytes
elm で条単位に絞った本文
労働基準法第32条。全文は 419,817 bytes
2026-09-14 に Windows 11 の Git Bash から curl で実行した値。応答時間は回線・時間帯で変わる

法令名で探す laws と本文で探す keyword は、似て見えて数え方も失敗の形も違います。

laws(法令名・番号で探す)
keyword(本文の語で探す)
検索対象
法令名・略称(abbrev)・法令番号
法令本文(条文・附則・目次)
total_count の単位
法令数
ヒットした文の数
0件のとき
200 で laws が空配列
404 でコード 404001「取得結果が0件です。」
limit の上限
定義なし(100000 でも 200 が返った)
1000。1001 は 400 コード 400005
応答時間
0.4〜1.1秒
0.6〜1.8秒。ワイルドカードは17秒以上
向いている用途
法令IDの確定、一覧の作成
語の使われ方の横断調査
2026-09-14 の実測。ワイルドカード検索の所要時間はキーワード検索の記事で詳述

共通の落とし穴

実行して引っかかった点を3つだけ挙げます。エラーコードの一覧と大きな法令のサイズ実測はエラーと制限の記事にまとめています。

  • 角括弧はエンコードする。 elm=TOC[1]%5B1%5D にしないとHTMLの400が返ります。
  • response_format はAcceptヘッダより強い。 Accept: application/xml を送っても response_format=json があればJSONが返りました。Accept: text/html は406です。
  • next_offset は末尾でキーごと消える。 OpenAPI定義では末尾で null とありますが、実際の応答ではキー自体がありませんでした。ページングのループは「キーが無ければ終了」で書いておくと安全です。

まとめ

  • 法令API v2は laws law_revisions law_data keyword law_file attachment の6本。認証は不要
  • 法令IDの確定は laws、履歴と施行日は law_revisions、本文は law_data。この3本で大半の調査が回る
  • law_data は法令ID・法令番号・履歴IDのどれでも受け付け、elm で条単位に絞れる。角括弧はエンコードが必要
  • keyword は文の数を数え、0件は404。law_fileattachment はバイナリ応答

curlで確かめたパラメータをそのままフォームに入れて試したい場合はe-Gov法令APIリクエストビルダー、Claude Codeから条文を引きたい場合はe-Gov法令API活用ガイドから辿れます。

この記事の情報・検証メモ
Tags
公開日
情報確認
参考リンク
3件
更新性
長く使える
更新管理

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

検証メモ
e-Gov法令API v2 / OpenAPI 2.1.139 curl 実行日 2026-09-14(Windows 11、Git Bash)
図解を保存・共有

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

e-Gov法令API v2エンドポイント逆引きリファレンス:6本の用途・パラメータ・実測レスポンス 6本のうち laws・law_revisions・law_data の3本で大半が済む。残り3本は用途が決まってから 最初に覚える3本:laws:法令名・通称・法令番号から法令IDを確定する。law_revisions:改正履歴と施行日、未施行の版を一覧する。law_data:法令ID・法令番号・履歴IDのいずれかで本文を取る。 用途が決まったら足す3本:keyword:条文本文の全文検索。0件は404で返る。law_file:XML/JSON/HTML/RTF/DOCXをファイルで取得。attachment:別図などの添付ファイルをJPG/PDF/ZIPで取得。 実測で分かった共通ルール:elm の角括弧は %5B %5D にエンコードしないと400のHTMLが返る。response_format は Accept ヘッダより優先される。next_offset は末尾でキー自体が消える(nullではない)。
e-Gov法令API v2エンドポイント逆引きリファレンス:6本の用途・パラメータ・実測レスポンス 記事の要約 2026.09.14 入門・導入ガイド
Primary sources

一次情報・参考リンク

About the author
codeagent.jp編集部

Claude Code / Codex / MCP を個人開発サイト運用と公開MCPサーバー開発で試し、一次情報・検証ログ・失敗例をもとに整理します。