KOSPI/KOSDAQ closing prices and DART regulatory filings. Free, no signup, no API key.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
๐ก Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
KOSPIยทKOSDAQ ์ฝ 1,500์ข ๋ชฉ์ ํ์ ์ข ๊ฐยท์ง์, DART ๊ณต์, ์ข ๋ชฉ๋น 1๋ ์น ์ผ๋ณ ์์ธ๋ฅผ ๋งค ๊ฑฐ๋์ผ ์ ๋ AI๊ฐ ์ฝ์ ์ ์๋ JSON์ผ๋ก ๋ฐํํฉ๋๋ค. ๊ฐ์ ๋, API ํค๋, ์์ฒญ ์ ํ๋ ์์ต๋๋ค.
๐ ์ฌ์ดํธ https://aikstockdata.com ยท MCP ์ฃผ์ https://mcp.aikstockdata.com/mcp
๊ณต์ MCP ๋ ์ง์คํธ๋ฆฌ์
com.aikstockdata/mcp ๋ก ๋ฑ์ฌ๋ผ ์์ต๋๋ค(๋๋ฉ์ธ ํ์ธ ์๋ฃ).
English documentation is in the second half of this page.
์ค์ ์ ์ปค์คํ ์ปค๋ฅํฐ์ ์๋ ์ฃผ์๋ฅผ ๋ถ์ฌ๋ฃ์ผ๋ฉด ๋์ ๋๋ค. ์ธ์ฆ์ด ์์ต๋๋ค.
๋๊ตฌ 10๊ฐ๊ฐ ์๊น๋๋ค.
| ๋๊ตฌ | ๋ฌด์์ |
|---|---|
get_today | ์ค๋ ์์ฅ ํ ๋ฐฉ์ โ ๋ฑ๋ฝยท์์นํ๋ฝ ์ข ๋ชฉ ์ยท์ฃผ์ ๊ณต์ |
search_stock ยท get_stock | ์ข ๋ชฉ ์ฐพ๊ธฐ ยท ์ข ๋ชฉ ์์ธ(์์ธยท์ฌ๋ฌดยท๊ณต์) |
get_rankings ยท get_market_summary | ์์ํ ยท ์์ฅ ์์ฝ |
list_stocks | ์กฐ๊ฑด์ ๋ง๋ ์ข ๋ชฉ ๋ชฉ๋ก โ ํ์์ ํยท52์ฃผ ์ ๊ณ ์ ์ ์์ดรท์ฐํ์ฐ์์ ์ด์ต ๋ฐฐ์ ์ํ๊น์ง |
get_earnings | ์ ์ ์ค์ ํฌํจ โ ์ ๊ธฐ๋ณด๊ณ ์๋ณด๋ค 2์ฃผ ๋น ๋ฆ ๋๋ค |
get_history | 250๊ฑฐ๋์ผ ์ผ๋ณ ์์ธ + 52์ฃผ ๊ณ ์ ยท๊ณ ์ ๋๋น ๋ํญยท๊ฑฐ๋๋ ๋ฐฐ์ |
get_disclosure_impact | ๊ณต์ ์ ํ๋ณ๋ก ๊ทธ ๋ค 1ยท5ยท20๊ฑฐ๋์ผ ์ฃผ๊ฐ(์์ฅ ๋ฑ๋ฝ์ ๋บ ๊ฐ) |
get_data_urls | ์์๋ฃ ์ฃผ์ ์นดํ๋ก๊ทธ โ ๋๊ตฌ์ ์๋ ๊ฒ๋ JSON ์ผ๋ก ๋ค ์์ต๋๋ค |
๊ทธ๋ค์์ ๊ทธ๋ฅ ๋ฌผ์ด๋ณด๋ฉด ๋ฉ๋๋ค: "์ค๋ ํ๊ตญ ์์ฅ ์ด๋ ์ด?" ยท "์ผ์ฑ์ ์ ์ต๊ทผ ๊ณต์ ์ ๋ฆฌํด์ค" ยท "ํ์์ ํํ ์ข ๋ชฉ ์ค์ ์์ด์ด ์์ ์ด์ต์ 10๋ฐฐ ์ ๋๋ ๊ฒ๋ง"
โ ์ข ๋ชฉ์ฝ๋๋ ์ฌ์ฏ ์๋ฆฌ ๋ฌธ์์ด์ ๋๋ค. ์ ์๋ก ์ฝ์ผ๋ฉด
000020์ด20์ด ๋ฉ๋๋ค. pandas ๋ฅผ ์ด๋ค๋ฉดdtype={"code": str}๋ฅผ ๋ฐ๋์ ์ฃผ์ธ์.
MCP ๋ฅผ ๋ถ์๊ฑฐ๋ ์ฃผ์๋ฅผ ๋ถ์ฌ๋ฃ์๋ค๋ฉด, ์๋๋ ๊ทธ๋๋ก ๋ณต์ฌํด ์ฐ๋ ์ง๋ฌธ์ ๋๋ค. ์ ๋ถ ์ฐ๋ฆฌ ๋ฐ์ดํฐ๋ก ๋ตํ ์ ์๋ ๊ฒ๋ง ๊ณจ๋์ต๋๋ค.
์ง์์ ์์น ์ข ๋ชฉ ์๋ ์์ฃผ ๋ฐ๋๋ฅผ ๊ฐ๋ฆฌํต๋๋ค. ๋ ๋ค ๋ด์ผ ํฉ๋๋ค.
์ด๊ฒ ์ฐ๋ฆฌ๋ง ๋ตํ ์ ์๋ ์ง๋ฌธ์ ๋๋ค โ ๊ณต๊ฐ API ์๋ ์ ์ ๋ ์ง๋ง ์์ต๋๋ค.
s/005930_history.jsonํ ํ์ผ(7KB)๋ก ๋๋ฉ๋๋ค.
์ซ์๋ง ๋ฐ์ ์ค์ง ๋ง๊ณ ๊ตฌ๊ฐ์ ๊ฐ์ด ๋ฌผ์ด๋ณด์ธ์. ํ์ฌ ์ซ์๊ฐ ์๋ 18์นธ ์ค 15์นธ์ 95% ๊ตฌ๊ฐ์ด 0์ ํฌํจํฉ๋๋ค. ๊ทธ ์ฌ์ค์ ๊ฐ์ถ์ง ์๋ ๊ฒ์ด ์ด ํ์ ์์ ์ ๋๋ค.
์ ์ ์๊ฐ์ด ์์ผ๋ฉด ์ด ์ง๋ฌธ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์ ์ ๋๋ ์ ํฌ ์ฃผ์ฅ์ด ์๋๋ผ ๊ณ์ฐ๊ฐ์ ๋๋ค. ์ค๋๋๋ฉด ์ค์ค๋ก
stale์ด๋ผ๊ณ ๋ฐํ๋๋ค.
์ง๊ณ๋ฅผ ๋ฐ๋ฐํ๋ผ๊ณ ๊ฐ๋ณ ๊ฐ์ ์ฃ์ต๋๋ค. ๊ฐ์
cluster๋ ํ ๋ฒ๋ง ์ธ์ผ ํฉ๋๋ค โ ์ ๊ทธ๋ฌ๋ฉด ์ ํฌ๊ฐ ์ ์ง๋ ๋ ์ค๋ณต ๊ณ์ฐ์ด ์ฌํ๋ฉ๋๋ค.
ํ๊ตญ ์์ฅ ๋ฐ์ดํฐ๋ AI๊ฐ ์ฐ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ณต์ ์ถ์ฒ(๊ธ์ต์์ํ ๊ณต๊ณต๋ฐ์ดํฐํฌํธ, ๊ธ์ต๊ฐ๋ ์ DART)๋ API ํค๋ฅผ ๋จผ์ ๋ฐ์์ผ ํ๊ณ , ํ๊ธ ํ๋๋ช ์ด ๊ทธ๋๋ก์ธ XMLยทJSON์ ์ฃผ๋ฉฐ, ๊ฐ์ด ์๋ ๊ฒ์ธ์ง 0์ธ ๊ฒ์ธ์ง ๊ตฌ๋ถํ ๋ฐฉ๋ฒ์ ์ฃผ์ง ์์ต๋๋ค.
์ด ํ๋ก์ ํธ๋ ๊ทธ๊ฒ์ LLM์ด ๊ทธ๋๋ก ์ฝ๋ ์๊ธฐ์ค๋ช ํ JSON์ผ๋ก ์ ๊ทํํ๊ณ , ์ฃผ์ ํ๋๋ง ๋ถ์ฌ๋ฃ์ผ๋ฉด ๋๋ MCP ์๋ฒ๋ฅผ ์น์์ต๋๋ค.
์ค์ง์ ์ธ ์ฐจ์ด๋ ์๊ฒฉ์ฆ๋ช ์ ๋๋ค. ํ๊ตญ ์ฃผ์ MCP ์๋ฒ ๋๋ถ๋ถ์ DARTยท์ฆ๊ถ์ฌ API๋ฅผ ์ค์๊ฐ์ผ๋ก ์ค๊ณํ๊ธฐ ๋๋ฌธ์ ์ฒซ ํธ์ถ ์ ์ ํค ๋ฐ๊ธ์ด ํ์ํฉ๋๋ค. ์ด ์๋ฒ๋ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋ ๊ณต๊ฐ ํ์ผ์ ๋ด๋ณด๋ด๋ฏ๋ก ์ฃผ์๋ฅผ ๋ถ์ฌ๋ฃ๋ ์๊ฐ๋ถํฐ ๋์ํฉ๋๋ค.
DART ๊ณต์๊ฒ์ API๊ฐ ์ฃผ๋ ์ ์ ์ ๋ณด๋ ๋ ์ง(YYYYMMDD)๋ฟ์ ๋๋ค. ๊ฐ๋ณ ๊ณต์ ๋ทฐ์ด์๋, ๊ณต์๊ฒ์ ํ๋ฉด์๋ ์:๋ถ์ด ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐ์ ๋ ์ง์ ๊ณต์๋ผ๋ ์ฅ์ค์ ๋์จ ๊ฒ๊ณผ ์ฅ ๋ง๊ฐ ํ์ ๋์จ ๊ฒ์ ๊ทธ๋ ์ข ๊ฐ์ ๋ํด ์ ๋ฐ๋๋ฅผ ๋ปํฉ๋๋ค โ ์์ ๊ฒ์ ์ด๋ฏธ ์ฃผ๊ฐ์ ๋ฐ์๋๊ณ , ๋ค์ ๊ฒ์ ์์ง ๋ฐ์๋์ง ์์์ต๋๋ค.
์ ํฌ๋ ์:๋ถ์ด ๋จ์ ์๋ ์ ์ผํ ๊ณณ์์ ์ด ๊ฐ์ ๋ฐ๋ก ๋ชจ์ ๋ถ์ ๋๋ค.
session ์ ์ ๊ท์ฅ(09:00~15:30) ๊ธฐ์ค ์ธ ๊ฐ๋์
๋๋ค.
| ๊ฐ | ๋ป | ๊ทธ๋ ์ข ๊ฐ ์์ง์์ |
|---|---|---|
pre_open | ~09:00 ์ ์ | ์ ์ฒด๊ฐ ๊ณต์ ๋ค โ ๋ฐ์์ผ๋ก ์ฝ์ ์ ์๋ ์ ์ผํ ๊ฒฝ์ฐ |
intraday | 09:00~15:30 | ์๋ถ๋ถ์ ๊ณต์ ์ด์ โ ์์ฌ ์์ต๋๋ค |
after_close | 15:30~ | ์ ์ฒด๊ฐ ๊ณต์ ์ โ ๊ณต์ ๋ฐ์์ด ์๋๋๋ค |
์ค์ธก์ผ๋ก ์ ์ ๊ฑด์ 40% ์ํ์ด ์ฅ ๋ง๊ฐ ํ์ ๋๋ค. ์๊ฐ์ด ์์ผ๋ฉด ๊ทธ 40%๋ฅผ ๊ทธ๋ ์ข ๊ฐ์ ๋ฐ์์ผ๋ก ์๋ชป ์ฝ๊ฒ ๋ฉ๋๋ค.
๊ณต์๋ง๋ค ๊ทธ ์ข ๋ชฉ์ ์ผ๋ณ ์ข ๊ฐ์ ์์ ์ง์๋ฅผ ๋ถ์ฌ ๋์์ต๋๋ค. "์ด๋ฐ ์ข ๋ฅ์ ๊ณต์ ๋ค์ ์์ฅ์ ์ด๋ป๊ฒ ์์ง์๋" ๋ฅผ ๊ธฐ๋ก์ผ๋ก์ ๋ฌผ์ ์ ์์ต๋๋ค โ ์์ธก์ด ์๋๋๋ค.
์ ํ๋ณ๋ก +1 / +5 / +20๊ฑฐ๋์ผ ๋ค์ ์์ฅ์กฐ์ ์์ต๋ฅ ์ค์๊ฐ(์ข ๋ชฉ ์์ต๋ฅ โ ๊ฐ์ ๊ธฐ๊ฐ ์์ ์ง์ ์์ต๋ฅ )๊ณผ ์์ฅ์ ์ด๊ธด ๋น์จ์ ํจ๊ป ๋ ๋๋ค. ๊ฐ๋ณ ๊ฐ์ DART ์ ์๋ฒํธ๋ฅผ ์ด์ ๋ก ์ฃ๊ธฐ ๋๋ฌธ์ ์๋ฌธ๊ณผ ๋์กฐํ ์ ์์ต๋๋ค.
ํ๋ณธ์ด 20๊ฑด ๋ฏธ๋ง์ธ ์ ํ์๋ ์ซ์๋ฅผ ๋ฃ์ง ์์ต๋๋ค. ๋ช ๊ฑด์ง๋ฆฌ ์ค์๊ฐ์ ์ฐ์ฐ์ ํต๊ณ๋ก ๋๊ฐ์ํต๋๋ค. 95% ๊ตฌ๊ฐ๋ ํจ๊ป ์ฃ๋๋ฐ, ํ์ฌ ์ซ์๊ฐ ์๋ 18์นธ ์ค 17์นธ์ ๊ตฌ๊ฐ์ด 0์ ํฌํจํฉ๋๋ค. ๊ทธ ์ฌ์ค์ ๊ฐ์ถ์ง ์๋ ๊ฒ์ด ์ด ํ์ ์์ ์ ๋๋ค.
s/{์ข
๋ชฉ์ฝ๋}_history.json โ ์ต๋ 250๊ฑฐ๋์ผ์ [๋ ์ง, ์ข
๊ฐ, ๊ฑฐ๋๋].
ํ์ ๊ฐ์ฒด๊ฐ ์๋๋ผ ๋ฐฐ์ด๋ก ๋ก๋๋ค. ์ฌ์ฏ ๊ฐ ํค ์ด๋ฆ์ 250๋ฒ ๋ฐ๋ณตํ๋ฉด ์ ๋ณด ์์ด ํ์ผ๋ง
๋ ๋ฐฐ๊ฐ ๋ฉ๋๋ค(์ค์ธก 14.3KB โ 6.8KB).
today.json ์ KOSPIยทKOSDAQ ์ข
๊ฐ์ ์์นยทํ๋ฝ ์ข
๋ชฉ ์๋ฅผ ๋ ๋ค ์ฃ์ต๋๋ค. ์ด ๋์
์์ฃผ ๋ฐ๋๋ฅผ ๊ฐ๋ฆฌํต๋๋ค. 2026-08-03 ์๋ ์ฝ์คํผ๊ฐ 5.12% ๋ด๋ ธ๋๋ฐ 855์ข
๋ชฉ์ด ์ค๋ฅด๊ณ
518์ข
๋ชฉ์ด ๋ด๋ ธ์ต๋๋ค โ ์ง์๋ ์์ด ๊ฐ์ค์ด๊ณ ์ข
๋ชฉ ์๋ ํ ์ข
๋ชฉ ํ ํ์ด๊ธฐ ๋๋ฌธ์
๋๋ค.
๋๋ถ๋ถ์ ์ถ์ฒ๋ ๋ ์ค ํ๋๋ง ์ฃผ๊ณ ๋๋จธ์ง๋ ๊ฐ์ผ๋ ค๋ ํ๊ฒ ๋ง๋ญ๋๋ค.
https://aikstockdata.com/market/{YYYY-MM-DD} โ ์ฃผ์์ ๋ ์ง๋ ๋ฐํ์ผ์ด ์๋๋ผ
์ข
๊ฐ ๊ธฐ์ค์ผ์
๋๋ค. (ํ ๋ฒ ํ๋ฆฐ ์ ์ด ์์ต๋๋ค. ํญ๋ฝํ ๋ ํ์ด์ง๊ฐ ๋ช ์๊ฐ ๋์
+17.9% ๋จธ๋ฆฌ๊ธฐ์ฌ๋ฅผ ๋ฌ๊ณ ์์์ต๋๋ค. ์ง๊ธ์ ๋ ์ง์ ๋ฐ์ดํฐ๊ฐ ์ด๊ธ๋ ์ ์์ต๋๋ค.)
๋ฐํ์ผ์ ๊ณ ์ ๋ ์ค๋ ์ท์ ๋๋ค. ๋งค ๊ฑฐ๋์ผ ๊ฐฑ์ ๋๋ ์๋ณธ์ ์ ์ฃผ์๋ค์ ๋๋ค.
| ์ด๋ | ๋ฌด์ |
|---|---|
| Hugging Face | JSON Lines ยท ์ข ๋ชฉ ๋ง์คํฐ ยท ์ผ๋ณ ์ข ๊ฐ ยท ๊ณต์ ์ ํ๋ณ ์ดํ ์ฃผ๊ฐ |
| Kaggle | CSV 4๊ฐ ยท ๊ณต์ ์ ์ ์๊ฐ ์ด ํฌํจ |
์ธ์ฉ์ฉ ์๊ฐ ๋๊ฒฐ๋ณธ์ ํ๊น
ํ์ด์ค์ korea-equity-daily-YYYY-MM ์ ๋ฐ๋ก ์์ต๋๋ค.
main ์ ๋งค ๊ฑฐ๋์ผ ๋ฎ์ด์ฐ์ด๋ฏ๋ก ์ธ์ฉ์ ์ธ ์ ์์ต๋๋ค.
null ์ 0์ด ์๋๋๋ค. ๊ฒฐ์ธก์ null, 0 ์ ์ค์ ๋ก ์ธก์ ๋ 0์
๋๋ค(๊ฑฐ๋ ์์ ๋ฑ,
has_trade: false ๋ก ํ์).quote_as_of(์์ธ ๊ธฐ์ค์ผ, T+1 ํ์ ์ข
๊ฐ)์
disclosure_through(๊ณต์ ์๋ก์ผ)๋ ๋ฐ๋ก ์์ง์
๋๋ค. ํ๋์ "์ค๋"๋ก ํฉ์น์ง ๋ง์ธ์.index.json โ freshness.status ๋ ์ค์ ๊ฒฝ๊ณผ์ผ์์
๋์ต๋๋ค(fresh 4์ผ ์ด๋ด / delayed 5~7์ผ / stale 8์ผ ์ด์). quote_as_of_age_days ๋ฅผ
๊ฐ์ด ์ค์ด ์ง์ ๊ฒ์ฐํ ์ ์๊ฒ ํ์ต๋๋ค.value_status: "withdrawn_inconsistent").rankings.json ์์ ์ฑ๋ถ๋ณ ์ ์๊น์ง ๋ค์ด ์์ด
๋๊ตฌ๋ ์ฌ๊ณ์ฐํ ์ ์์ต๋๋ค.notices.json ์ ํ์ดํ๋ผ์ธ ์คํจ์ ์ ์ ์ ๊ธฐ๋กํฉ๋๋ค. ์คํ์ด
์คํจํ๋ฉด ๋ฐ์ฏค ๋ง๋ ๊ฒ์ ๋ด๋ณด๋ด์ง ์๊ณ ๋ง์ง๋ง ์ ์ ์ค๋
์ท์ ์ ์งํฉ๋๋ค.์ค์๊ฐยท๋ถ๋ด ์์ธ๊ฐ ์์ต๋๋ค(์ ์์ ์ผ ํ์ ์ข ๊ฐ, T+1). ์ฆ๊ถ์ฌ ์ ๋์ PERยทPBRยท์ปจ์ผ์์คยท ๋ชฉํ์ฃผ๊ฐ๊ฐ ์์ต๋๋ค. ์ฃผ๋ฌธ ์คํ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ์๋๋ ๊ฒ์ ๋๋ค โ ์ฌ๋ฐฐํฌํ ๊ถ๋ฆฌ๊ฐ ๋ถ๋ช ํ ๋ฐ์ดํฐ๋ง ๋ค๋ฃน๋๋ค.
๋ฐํ ํ์ผ์ ๊ณต๊ณต๋ฐ์ดํฐ ๊ฐ๊ณต๋ฌผ์ด๋ฉฐ ์ถ์ฒ๋ฅผ ํ๊ธฐํ๋ฉด ์๋ฆฌ ๋ชฉ์ ์ ํฌํจํด ์์ ๋กญ๊ฒ ์ธ ์ ์์ต๋๋ค.
์๋ฃ: ํ๊ตญ์ฃผ์๋ฐ์ดํฐ(aikstockdata.com) โ ์์ฒ: ๊ธ์ต๊ฐ๋ ์ DART ยท ๊ธ์ต์์ํ ๊ณต๊ณต๋ฐ์ดํฐํฌํธ
์ด ์ ์ฅ์์ ์ฝ๋๋ MIT ๋ผ์ด์ ์ค์
๋๋ค(LICENSE ์ฐธ์กฐ). ์ ๋ฐ์ดํฐ ๋ผ์ด์ ์ค๋ ๋ฐํ๋๋
JSONยทCSV ํ์ผ์ ์ ์ฉ๋๋ฉฐ ์ด ์ ์ฅ์์ ์ฝ๋์๋ ์ ์ฉ๋์ง ์์ต๋๋ค.
๋ฐํ ๋ฐ์ดํฐ๋ ์ ๋ณด ์ ๊ณต ๋ชฉ์ ์ด๋ฉฐ ํฌ์ ์กฐ์ธ์ด ์๋๋๋ค. ๊ธฐ๊ณ๊ฐ ์ง๊ณํ ๊ณผ๊ฑฐ ๊ธฐ๋ก์ด๊ณ ์ด๋ค ์ข ๋ชฉ์ ๋งค์ยท๋งค๋๋ฅผ ๊ถํ์ง ์์ต๋๋ค.
๋ฐํ ํ์ผ์ ๋ง๋๋ ๋ฐ์ดํฐ ํ์ดํ๋ผ์ธ์ ๋ณ๋๋ก ๊ด๋ฆฌํฉ๋๋ค.
The Korean documentation above is the primary reference. This section mirrors it.
Korean market data is hard for AI to use. The official sources (๊ธ์ต์์ํ public data portal, ๊ธ์ต๊ฐ๋ ์ DART) require API keys, return raw XML/JSON with untranslated Korean field names, and give you no way to tell whether a number is missing or actually zero.
This project normalizes them into selfโdescribing JSON that an LLM can read directly โ and adds an MCP server so Claude and ChatGPT can query it midโconversation without any setup beyond pasting a URL.
The practical difference: no credentials. Most Korean stock MCP servers proxy the DART or brokerage APIs live, so you have to register for a key before the first call. This one serves preโbuilt public files, so it works the moment you paste the URL.
Add this URL as a custom connector in settings. No authentication.
Ten tools become available.
| Tool | What it does |
|---|---|
get_today | Whole market in one call โ breadth, tone, top filings |
search_stock ยท get_stock | Find a ticker ยท full detail (price, financials, filings) |
get_rankings ยท get_market_summary | Ranking tables ยท market digest |
list_stocks | The list, not just the count โ turnaround to profit, 52-week high/low, with a capรทannualised-operating-income ceiling |
get_earnings | Preliminary results included โ filed ~2 weeks before the regular report |
get_history | 250 trading days of daily prices + 52w high/low, drawdown, volume ratio |
get_disclosure_impact | Market-adjusted price path at +1/+5/+20 days after each filing type |
get_data_urls | Catalogue of raw JSON โ the tool list is not the extent of the data |
Then just ask: "์ค๋ ํ๊ตญ ์์ฅ ์ด๋ ์ด?" or "Samsung Electronics latest disclosures?" or "Which stocks turned profitable and trade under 10ร operating income?"
Why the User-Agent header? The CDN's bot filter rejects the default Python-urllib user agent with a 403. requests, curl, httpx and browser fetch work without it. Sending any UA string is enough.
The live API below is republished every trading evening. If you would rather pull one file and work offline, a dated snapshot is mirrored there:
https://huggingface.co/datasets/aikstockdata/korea-equity-daily
Four configs: daily_prices, stocks, filing_impact_summary, and filing_price_impact โ
the individual filings behind the summary, one row each, so the published medians can be
recomputed rather than taken on trust.
The loadable files are JSON Lines, not CSV. A Korean ticker is six digits including leading
zeros, and type inference on CSV turns 000020 into 20, at which point it joins to nothing.
The snapshot is frozen at its upload date โ the endpoints below are the ones that stay current.
Start at the catalog โ it lists every file with its size, freshness and archive dates:
| Endpoint | What it is | Size |
|---|---|---|
today.json | Oneโday digest โ KOSPI/KOSDAQ index close, breadth, top filings, rankings | 7 KB |
s/{code6}.json | One stock โ quote, financials, recent filings, signals | ~5 KB |
s/{code6}_history.json | One stock, 250 trading days โ [date, close, volume] | ~7 KB |
disclosure_impact.json | What happened after each filing type โ marketโadjusted median return at +1/+5/+20 trading days | 60 KB |
disclosures_intraday.json | Today's filings with receipt times (HH:MM) โ published 15:00 KST, before the close | 60 KB |
dart_receipt_times.json | Receipt number โ HH:MM lookup โ not available from any public API | 110 KB |
earnings_recent60.json | Earnings scoreboard, latest 60 (truncationโsafe) | 40 KB |
daily/today_{YYYYMMDD}.json | Archived daily digest (30โday window) | 7 KB |
search_index_min.json | Name โ code lookup (URL patterns declared once) | 83 KB |
disclosures_top100.json | Top 100 filings by importance score, plainโKorean explanation | 80 KB |
quotes_top300.json | Top 300 by market cap, sort order guaranteed | 84 KB |
rankings.json | Growth top 8, quiet performers, 52โweek highs/lows, movers | 17 KB |
earnings.json | Earnings filings, 120โday rolling scoreboard | 148 KB |
quotes_slim.json | All stocks, 6 core fields | 201 KB |
quotes.json | All stocks, all fields | 400 KB |
disclosures.json | All filings from the last 7 days, with financial detail | 380 KB |
excluded.json | Stocks in the universe with no quote, and why | 9 KB |
notices.json | Machineโreadable incident and correction log | 9 KB |
quotes.csv / quotes_en.csv | Same data as CSV (Korean / English headers) | 161 KB |
Also: /openapi.json (OpenAPI 3.1 โ drop it into a
ChatGPT custom GPT as an Action, or generate an SDK) ยท
/llms.txt ยท
/llms-full.txt ยท
/feed.xml ยท
JSON Schemas under /data/public/schemas/
Most AI fetch tools cut responses at 50โ150 KB, and a truncated JSON is unparseable โ which
produces silently wrong answers rather than an error. index.json carries a machineโreadable
fetch_guide block with the small alternative for every large file. Rule of thumb: if you need
one stock, always use s/{code}.json.
The DART search API returns a receipt date, never a time. Neither does the filing viewer, nor the search screen. But an intraday filing and an after-close filing mean opposite things for that day's close: the first is already in the price, the second is not.
session splits on the Korean regular session (09:00-15:30): pre_open (the whole day
follows the filing โ the only identifiable case), intraday (mixed), after_close (the whole
day precedes it โ not a reaction at all). Measured: roughly 40% of filings arrive after the
close. Without the minute, that 40% gets read as same-day reaction.
Every filing is joined to that stock's daily closes and to its market index, so you can ask "what did the market do after this kind of filing, historically?" โ as a record, not a forecast.
For each filing type: the median marketโadjusted return at +1 / +5 / +20 trading days
(stock return minus its own index over the same window), plus how often it beat the market.
Perโfiling values are keyed by DART receipt number, so you can join back to the original document.
(๋ฐฐ๋น ๊ฒฐ์ = dividend decision. Live values as of 2026โ08โ07; they change every trading evening โ always read the interval from the file, not from this page.)
Read median_ci95 before median_excess_pct. Of the cells currently carrying a
number, most have an interval spanning zero โ those values are not distinguishable
from zero. The interval ships in the same object so you cannot take the median alone
by accident.
Types with fewer than 20 samples are not given a number โ a median over a handful of cases turns coincidence into a statistic. This is a record of what happened, not a claim about cause, and not a prediction.
s/{code6}_history.json โ up to 250 trading days of [date, close, volume], ~7 KB.
Rows are arrays, not objects: repeating six key names 250 times doubles the file for no
information (measured: 14.3 KB โ 6.8 KB).
today.json carries both the KOSPI/KOSDAQ close and the advance/decline count, because they
routinely point opposite ways. On 2026โ08โ03 KOSPI fell 5.12% while 855 stocks rose and 518 fell:
the index is capโweighted, the count is one vote per stock. Most sources give you only one of the
two and let you assume they agree.
https://aikstockdata.com/market/{YYYY-MM-DD} โ the URL date is the closingโprice date, not
the publish date. (We got that wrong once and a crash day carried a +17.9% headline for a few
hours. Now the date and the data cannot disagree.)
null never means zero. A missing value is null. 0 means an actual measured zero
(e.g. no trades that day, flagged by has_trade: false).quote_as_of (price date, T+1 settled close) and
disclosure_through (last filing receipt date) are separate fields, because they move
independently. Never collapse them into one "today".index.json โ freshness.status is derived from the
actual age of the data (fresh โค4d / delayed 5โ7d / stale 8d+), and
quote_as_of_age_days is exposed so you can check the arithmetic yourself.value_status: "withdrawn_inconsistent".rankings.json itself, with perโcomponent scores,
so any result can be recomputed.notices.json records pipeline failures and corrections.
When a run fails, the last good snapshot is kept rather than publishing a partial one.No realโtime quotes (data is the previous trading day's settled close, T+1). No PER/PBR/analyst consensus/target prices from brokerage sources. No order execution. These are deliberate โ the project only redistributes data it has clear rights to redistribute.
Data derives from Korean public sources:
The published files are derived works of public data and are free to use, including commercially, with attribution:
์๋ฃ: ํ๊ตญ์ฃผ์๋ฐ์ดํฐ(aikstockdata.com) โ ์์ฒ: ๊ธ์ต๊ฐ๋ ์ DART ยท ๊ธ์ต์์ํ ๊ณต๊ณต๋ฐ์ดํฐํฌํธ
The code in this repository is MIT licensed (see LICENSE). The data license above applies to the
published JSON/CSV files, not to this repository's code.
The data is provided for information purposes and is not investment advice. It is a machine aggregation of past records and does not recommend buying or selling any security.
The data pipeline that produces the published files is maintained separately.
Keywords: Korean stock market API, KOSPI JSON, KOSDAQ data, DART disclosures API, MCP server Korea, free Korean stock data, ํ๊ตญ ์ฃผ์ API ๋ฌด๋ฃ, ํ๊ตญ ์ฃผ์ MCP, DART ๊ณต์ JSON, ์ฝ์คํผ ์ข ๊ฐ CSV
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/aikstockdata-korean-stock-data)<a href="https://allmcps.com/mcp/aikstockdata-korean-stock-data"><img src="https://allmcps.com/api/badge/aikstockdata-korean-stock-data?style=directory" alt="Aikstockdata โ Korean Stock Data on AllMCPs" /></a>