REST API untuk data nutrisi pangan Indonesia — 9.938 data dari TKPI & USDA.
https://nutriapi.konfig.id
Semua endpoint mengembalikan Content-Type: application/json dan mendukung CORS.
/health
Status server
{"status":"ok"}
| Param | Tipe | Default | Deskripsi |
|---|---|---|---|
_page | number | 1 | Nomor halaman |
_limit | number | 20 | Data per halaman (max 100) |
FoodRecord[]
| Header | Deskripsi |
|---|---|
X-Total-Count | Total data |
X-Total-Pages | Total halaman |
X-Page | Halaman saat ini |
X-Limit | Data per halaman |
GET /foods?_page=1&_limit=2
[
{ "code": "AP001", "name": "Abon Ayam", "calories": 443, "protein": 24.2, "fat": 28.4, "carbo": 28.3, "fiber": 0 },
{ "code": "AP002", "name": "Abon Ayam (Daging Asap)", "calories": 443, "protein": 24.2, "fat": 28.4, "carbo": 28.3, "fiber": 0 }
]
X-Total-Count: 9938
X-Total-Pages: 4969
X-Page: 1
X-Limit: 2
| Param | Tipe | Deskripsi |
|---|---|---|
code | string | Kode unik makanan, cth: AP001 |
FoodRecord
GET /foods?code=AP001
{
"code": "AP001",
"name": "Abon Ayam",
"calories": 443,
"protein": 24.2,
"fat": 28.4,
"carbo": 28.3,
"fiber": 0
}
{"error":"Food with code 'XXXXX' not found"}
Kedua endpoint menghasilkan output yang identik.
| Param | Tipe | Default | Deskripsi |
|---|---|---|---|
name_like / q | string | — | Kata kunci (case-insensitive) |
_page | number | 1 | Halaman |
_limit | number | 20 | Per halaman (max 100) |
FoodRecord[] + header paginasi
GET /foods?name_like=nasi&_limit=2
[
{ "code": "TK096", "name": "Nasi Putih", "calories": 204, "protein": 2.3, "fat": 0.4, "carbo": 40.6, "fiber": 0.2 },
{ "code": "TK097", "name": "Nasi Gurih", "calories": 264, "protein": 3.2, "fat": 8.5, "carbo": 39.9, "fiber": 0.3 }
]
X-Total-Count: 18
X-Total-Pages: 9
X-Page: 1
X-Limit: 2
/search tanpa parameter q
{"error":"Missing 'q' query parameter. Example: /search?q=ayam"}
| Field | Tipe | Satuan | Deskripsi |
|---|---|---|---|
code | string | — | Kode unik makanan |
name | string | — | Nama makanan |
calories | number | kcal | Energi |
protein | number | g | Protein |
fat | number | g | Lemak total |
carbo | number | g | Karbohidrat |
fiber | number | g | Serat pangan |
0.
curl https://nutriapi.konfig.id/foods?code=AP001
# Dengan paginasi
curl "https://nutriapi.konfig.id/foods?_page=1&_limit=5"
# Cari makanan
curl "https://nutriapi.konfig.id/foods?name_like=tempe"
// Cari berdasarkan nama
const res = await fetch("https://nutriapi.konfig.id/foods?name_like=ayam");
const data = await res.json();
// Akses header paginasi
const total = res.headers.get("X-Total-Count");
console.log(`Ditemukan ${total} data`);
console.log(data);
// Ambil satu data berdasarkan kode
const single = await fetch("https://nutriapi.konfig.id/foods?code=AP001")
.then(r => r.json());
console.log(single.name); // "Abon Ayam"
import requests
# List dengan paginasi
r = requests.get("https://nutriapi.konfig.id/foods", params={"_page": 1, "_limit": 5})
data = r.json()
print(f"Total: {r.headers['X-Total-Count']}")
# Cari berdasarkan kode
r = requests.get("https://nutriapi.konfig.id/foods", params={"code": "AP001"})
print(r.json())
# Cari berdasarkan nama
r = requests.get("https://nutriapi.konfig.id/search", params={"q": "tempe"})
for food in r.json():
print(food["name"], "-", food["calories"], "kcal")