KAMIS CLI — 한국 농수산물 가격 OpenAPI
KAMIS(Korea Agro-Fisheries & Food Trade Corporation,kamis.or.kr)是韩国农业、畜牧和水产价格的权威来源。每天更新约180种商品的批发/零售价格,涵盖10个类别,并提供1天、1周、2周、1个月、1年和平年的价格对比。
端点:https://www.kamis.or.kr/service/price/xml.do?action={ACTION}&p_cert_key={KEY}&p_cert_id={ID}&p_returntype=json&...
设置(一次性)
在https://www.kamis.or.kr/customer/reference/openapi_list.do申请API密钥(1个工作日审批,免费)。
在shell中导出凭证:
export KAMIS_CERT_KEY="your-key"
export KAMIS_CERT_ID="your-email-id"
CLI也接受--key / --id标志。如果未设置,则默认使用TEST/TEST,这适用于dailyPriceByCategoryList(最常见的调用),但对于付费端点可能会受到限制并返回error_code:001。
子命令
所有子命令将JSON输出到标准输出。可以通过jq进行数据处理。
- daily.sh — 일일 부류별 도/소매가격(dailyPriceByCategoryList)
该端点返回每个类别中每个商品的今日/1天前/1周前/2周前/1个月前/1年前/平年的价格。
scripts/daily.sh --cls 01 --category 200 --date 2026-04-30
# 01 = 소매(零售),02 = 도매(批发)
# 类别:100=식량작물,200=채소류,300=特用作物,400=과일류,500=축산물,600=수산물
# 可选:--country 1101(서울),--kg-convert Y
- period.sh — 기간별 도매가격(periodProductList)
返回特定商品在特定日期范围(≤ 1年)内的每日价格。
scripts/period.sh \
--start 2026-01-01 --end 2026-04-30 \
--category 200 --item 211 --kind 01 --rank 04 --country 1101
# 211 = 양파,01 = 일반양파,04 = 商品,1101 = 서울
- period-retail.sh — 기간별 소매가격(periodRetailProductList)
与period.sh类似,但返回零售价格而不是批发价格。
scripts/period-retail.sh --start 2026-04-01 --end 2026-04-30 --category 200 --item 211 --kind 01 --rank 04 --country 1101
- monthly.sh — 월별 평균 가격(monthlySalesList)
返回长期月平均价格,用于季节性图表和年比对比。
scripts/monthly.sh --year 2026 --period 2024,2025 --category 200 --item 211 --kind 01
- yearly.sh — 연도별 평균 가격(yearlySalesList)
返回年度平均价格。
scripts/yearly.sh --year 2026 --category 200 --item 211 --kind 01
- recent.sh — 최근 가격 동향 간이조회(recentlyPriceTrendList)
返回单个商品的最近价格趋势,包括最近40天、30天、20天、10天和0天的价格,以及最低和最高价格。
scripts/recent.sh --product 111
# 111 = 쌀
- codes.sh — 코드 표(helper,no API call)
本地查找类别/商品/种类/排名/国家代码。
scripts/codes.sh categories
scripts/codes.sh items --category 200
scripts/codes.sh countries
# 17 시·군 codes
scripts/codes.sh ranks
快速食谱
"How much have onion prices moved this week?"
scripts/daily.sh --cls 01 --category 200 | jq '.data.item[] | select(.item_name=="양파")'
"Plot 1-year retail price for rice"
scripts/period.sh --start 2025-05-01 --end 2026-04-30 --category 100 --item 111 --kind 01 --rank 04 --country 1101 | jq '.data.item[] | {date: .yyyy + "-" + .regday, price: .price}'
"Daily morning brief: top 5 climbers in 채소류"
scripts/daily.sh --cls 02 --category 200 \
| jq '[.data.item[] | {name: .item_name, kind: .kind_name, today: (.dpr1|gsub(",";"")|tonumber), week_ago: (.dpr3|gsub(",";"")|tonumber)} | .pct = ((.today - .week_ago) / .week_ago * 100)] | sort_by(-.pct) | .[0:5]'
请参阅examples/restaurant-cost-tracker.sh以获取完整的管道示例,该示例每天发出Slack/Telegram准备好的摘要。
与opendart-cli、bank-of-korea-ecos-cli、kr-holiday-cli、naver-datalab-cli、kakao-local-cli、tistory-api-cli和velog-cli等工具自然配对。
注意事项
TEST密钥适用于dailyPriceByCategoryList(立即快照),但几个“期间”端点在您切换到自己的密钥之前会返回error_code:“001”。
KAMIS仅通过公共API保留1年最近的数据。对于更旧的数据,请直接联系KAMIS(061-930-9971)。
p_returntype=json被支持,但API仍然发送xml.do路径——这不是一个错误。
数字以逗号格式化的字符串(“62,421”)形式出现——在进行算术运算之前使用jq 'gsub(","; "") | tonumber'进行剥离。
几个端点不一致地使用p_country_code和p_countycode——脚本为您标准化了这些。