e-Gov法令API v2エンドポイント逆引きリファレンス:6本の用途・パラメータ・実測レスポンス
e-Gov法令API v2の6エンドポイント(laws / law_revisions / law_data / keyword / law_file / attachment)を、やりたいこと別に逆引きできる形で整理。全エンドポイントをcurlで実行し、主要パラメータと応答を2026年9月14日に実測しました。
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実装の記事に分けています。
- 入口は
laws。 法令名・略称・法令番号のどれからでも法令IDに辿り着けます。総法令数は9,568件でした。 law_dataは法令ID・法令番号・履歴IDのどれでも受け付けます。elmで条単位に絞れるので、全文を取る前に必要な範囲を決めます。keywordは「法令」ではなく「文」を数えます。total_countはヒットした文の数で、0件は200ではなく404で返ります。law_fileとattachmentはバイナリ応答です。 Content-Typeがapplication/octet-streamやimage/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 /keyword | keyword | law_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)にもマッチします。
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=3129AC0000000089 Act 民法131AC0000000011 Act 民法施行法410AC0000000104 Act 動産及び債権の譲渡の対抗要件に関する民法の特例等に関する法律応答は total_count(条件に合った総数)、count(今回返した件数)、next_offset(次の取得開始位置)と laws 配列です。配列の各要素は3つのブロックに分かれています。
law_info:law_idlaw_numlaw_typepromulgation_dateなど、改正で変わらない情報revision_info:law_revision_idlaw_titleabbrevamendment_enforcement_datecurrent_revision_statusなど、指定時点(asof)での版の情報current_revision_info:asofに関係なく現時点の最新版の情報。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が新しい順です。
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_status が CurrentEnforced(現施行)・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種類とも同じ労働基準法で確認しました。
# 法令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 を付けるとパースしやすい簡易版になります。
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 の中身だけが elm と json_format で変わります。elm に存在しない要素(MainProvision-Article_9999)を渡すと400(コード400021)で止まります。
elm=LawTitle[1] のような角括弧付きの指定は、そのまま送るとサーバーがHTML形式の400を返し、curlは角括弧をグロブとして解釈してリクエスト前にエラー(終了コード3)になります。%5B1%5D にエンコードするか、curl -g を付けてください。
keyword:条文本文の全文検索
keyword が必須で、法令本文を対象に全文検索します。
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=4129AC0000000089 民法 mainprovision ...で作られる記録であって、<span>電子計算機</span>131AC0000000011 民法施行法 mainprovision ...ニ依リ作ラルル記録ニシテ<span>電子計算機</span>132AC0000000048 商法 mainprovision ...total_count は法令数ではなくヒットした文の数で、limit も文の数の上限です(5文が4法令に散っています)。ヒット箇所は items[].sentences[] に position(本則・附則・目次などの位置)と text(<span> で強調された抜粋)で入ります。検索式の書き方、ページングの実際、ヒットしない語の例はキーワード検索の記事に分けました。
law_file と attachment:ファイルで受け取る
law_file は file_type に xml json html rtf docx のどれかを置きます。労働基準法で5種類すべてを取得しました。
curl -s -o roukihou.docx "https://laws.e-gov.go.jp/api/2/law_file/docx/322AC0000000049"xml 398,337 bytes application/octet-streamjson 1,147,616 (整形済みJSON。law_data より大きい)html 521,328rtf 518,139docx 63,504Content-Typeはどれも application/octet-stream で、pdf を指定すると400(コード400042)でした。
attachment は履歴IDをパスに置き、law_data の attached_files_info.attached_files[].src を src に渡します。国旗及び国歌に関する法律(411AC0000000127)は別記に図が2枚あり、src=./pict/H11HO127-001.jpg で360×240のJPEG(12,614バイト、image/jpeg)、src なしで2枚まとめたZIP(51,226バイト)が返りました。law_data に include_attached_file_content=true を付けると、同じ内容がBase64の image_data としてJSONに埋め込まれます。
6本の実測サマリー
法令名で探す laws と本文で探す keyword は、似て見えて数え方も失敗の形も違います。
共通の落とし穴
実行して引っかかった点を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は
lawslaw_revisionslaw_datakeywordlaw_fileattachmentの6本。認証は不要 - 法令IDの確定は
laws、履歴と施行日はlaw_revisions、本文はlaw_data。この3本で大半の調査が回る law_dataは法令ID・法令番号・履歴IDのどれでも受け付け、elmで条単位に絞れる。角括弧はエンコードが必要keywordは文の数を数え、0件は404。law_fileとattachmentはバイナリ応答
curlで確かめたパラメータをそのままフォームに入れて試したい場合はe-Gov法令APIリクエストビルダー、Claude Codeから条文を引きたい場合はe-Gov法令API活用ガイドから辿れます。
この記事の情報・検証メモ
- egov
- japanese-law
- legal-tech
- api
- json
- mcp
- claude-code
- 公開日
- 情報確認
- 参考リンク
- 3件
- 更新性
- 長く使える
仕様・料金・提供範囲が変わりやすいテーマは、公開日・更新日・情報確認日を分けて管理します。 導入前には必ず記事末尾の一次情報と公式ドキュメントで最新状況を確認してください。