調べたい食品名や栄養素を入力
例)トマト

Food HealthのAPIの仕様や利用方法について、このページで説明していきます。

このAPIを利用したデモを公開しています。
デモ1
デモ2

文部科学省が公開している日本食品標準成分表2015年版(七訂)には、主な食品に含まれている成分の一覧が記載されています。

非常に価値のあるデータであり、既にオープンなライセンスで公開されていますので、これ自体がオープンデータと言えます。

ただ、データフォーマットがPDFとExcelファイルであり、プログラムからは利用しにくい形式となっています。

政府の「電子行政オープンデータ戦略」でも、機械判読可能な形式で公開することを、基本原則の一つとして掲げています。

そこで、利用しやすいデータ形式であるJSONに加工し、ライセンスだけでなくフォーマットもオープンなものとすることで、オープンデータをさらに進めることにしました。また、簡易な検索機能も付与することで、利便性の向上も図っています。

エンドポイントは全て、下記のURLから始まります。

http://food-health.numb86.net/api/

現行のエンドポイントは、以下の3つです。

http://food-health.numb86.net/api/v0/foods/食品番号
http://food-health.numb86.net/api/v0/foods/search?q=検索ワード&page=ページ番号
http://food-health.numb86.net/api/v0/nutritions

それぞれの詳細は後述します。

0.1.0

URLに含めることで、バージョンを指定します。

http://food-health.numb86.net/api/v0/foods/食品番号

上記のURLのv0の部分が、バージョンを示しています。

API全体に共通する事項です。

GETのみです。それ以外のメソッドを使用した場合、ステータスコード405を返します。

JSONのみに対応しています。
そのため、リクエストヘッダのAcceptを指定する場合、application/jsonを許可しないような内容だと、データを返すことが出来ません。

その場合、ステータスコード406を返します。

なお、現在のところJSONPには対応しておりません。

http://food-health.numb86.net/api/v0/foods/食品番号

上記のURLにアクセスすることで、当該食品のデータを取得できます。
食品番号は5桁の数字であり、後述する検索機能を使用することで食品番号を調べることが出来ます。

http://food-health.numb86.net/api/v0/foods/06182


{
  "食品番号":"06182",
  "索引番号":"580",
  "食品名":"(トマト類) トマト 果実 生",
  "廃棄率(%)":"3",
  "エネルギー(kcal)":"19",
  "エネルギー(kJ)":"79",
  "水分(g)":"94.0",
  "たんぱく質(g)":"0.7",
  "アミノ酸組成によるたんぱく質(g)":"0.5",
  (中略)
  "ビタミンB1(mg)":"0.05",
  "ビタミンB2(mg)":"0.02",
  "ナイアシン(mg)":"0.7",
  "ビタミンB6(mg)":"0.08",
  "重量変化率(%)":"-",
  "備考":"廃棄部位: へた  "
}
          

各成分値は、可食部100g当たりの数値です。
可食部とは、食品全体あるいは購入形態から、廃棄部位を除いたものを指します。

数値の表記について
-: 未測定
Tr: 微量
(0): 未測定だが、0と推定される。
(Tr): 未測定だが、微量と推定される。
(0)と(Tr)以外の( )は、類似食品や諸外国の食品成分表の収載値等から推計した数値。

詳細は日本食品標準成分表2015年版(七訂)を参照してください。

http://food-health.numb86.net/api/v0/foods/search?q=検索ワード&page=ページ番号

上記のURLにアクセスすることで、食品情報の検索結果を取得できます。

検索ワードはエンコードしてから送信してください。

スペースで区切ることで、複数の語句を検索することが出来ます。
その場合、AND検索ではなくOR検索となります。

1回の検索で取得できる食品の数は、10件までです。
1ページ目には1〜10番目の結果を、2ページ目は11〜20番目の結果を、返します。

省略可能です。その場合、1ページ目の結果を返します。

http://food-health.numb86.net/api/v0/foods/search?q=トマト

pageは指定されたページ数、numberはヒット数を、示しています。

resultsは配列で、ヒットした食品の情報が入っています。一つ一つがオブジェクトになっており、キーは食品番号食品名の2つです。


{
  "page":1,
  "number":13,
  "results":[
    {"食品番号":"06182","食品名":"(トマト類) トマト 果実 生"},
    {"食品番号":"06183","食品名":"(トマト類) ミニトマト 果実 生"},
    {"食品番号":"06184","食品名":"(トマト類) 缶詰 ホール 食塩無添加"},
    {"食品番号":"06185","食品名":"(トマト類) 缶詰 トマトジュース 食塩添加"},
    {"食品番号":"06186","食品名":"(トマト類) 缶詰 ミックスジュース 食塩添加"},
    {"食品番号":"06340","食品名":"(トマト類) 缶詰 トマトジュース 食塩無添加"},
    {"食品番号":"06341","食品名":"(トマト類) 缶詰 ミックスジュース 食塩無添加"},
    {"食品番号":"10062","食品名":"<魚類>(いわし類) 缶詰 トマト漬"},
    {"食品番号":"17034","食品名":"<調味料類>(トマト加工品類)トマトピューレー"},
    {"食品番号":"17035","食品名":"<調味料類>(トマト加工品類)トマトペースト"}
  ]
}
          

結果が0だった場合、numberは0になり、resultsの値は空の配列になります。


{
  "page":1,
  "number":0,
  "results":[]
}
          

http://food-health.numb86.net/api/v0/nutritions/栄養素

http://food-health.numb86.net/api/v0/nutritions


{
  "たんぱく質":"protein",
  "脂質":"lipid",
  (中略)
  "モリブデン":"molybdenum"
}
          

http://food-health.numb86.net/api/v0/nutritions/vitamin-c

栄養素備考データ単位の4つのデータが存在します。

栄養素には、栄養素の名前が入っています。

備考には、補足的な情報が入っています。備考が存在しない場合、空の文字列が入っています。

データは階層構造になっています。

年齢 >> 性別 >> 数値データ

数値データは、以下の5種類です。

  • 推定平均必要量
  • 推奨量
  • 目安量
  • 耐容上限量
  • 目標量

数値データは文字列として入っており、該当する値が存在しない場合はnullが入っています。


"3〜5 (歳)":{
  "男性":{
    "推定平均必要":"35",
    "推奨量":"40",
    "目安量":null,
    "耐容上限量":null,
    "目標量":null
  },
  "女性":{
    "推定平均必要":"35",
    "推奨量":"40",
    "目安量":null,
    "耐容上限量":null,
    "目標量":null
  }
}
          

各数値データの単位が入っています。


"単位":{
  "推定平均必要":"mg",
  "推奨量":"mg",
  "目安量":"mg",
  "耐容上限量":"mg",
  "目標量":"mg"
}
          

エラーが発生した場合、対応するステータスコードを返すのと同時に、以下の形式のJSONを返します。


{
  "message": "エラーについて説明する文言。"
}
          

本サービスの仕様は予告なく変更となる可能性があります。

本サービスを利用することで生じたあらゆる不利益、損害に対し、一切の責任を負いません。