Vibeleaderboard
Index / tool

Korean Stock Data API (aikstockdata)

aikstockdata.com
Visit aikstockdata.com
Category
Developer Tools
Rank
No. 1722Tools index

Previous survey · No. 1640 ·

Pricing
Free
Type
TOOL
Use case
Data, Retrieval & Knowledge
Interfaces
API
GitHub
7 stars
Latest release
v2.1.2
Date

About

A free, keyless API serving static JSON files for 2,791 Korean stocks across KOSPI/KOSDAQ/KONEX, including T+1 closing prices, 250-day history, DART filing timestamps, and earnings extracted from filings. Designed for AI/LLM consumption with an OpenAPI 3.1 spec, open CORS, and size-capped 'small' endpoints to avoid truncation by AI fetch tools.

What it does

A daily-published set of Korean equity data files plus a hosted MCP server (Model Context Protocol, the plug-in standard AI assistants use to call outside tools) that reads them. After each trading day closes, the project writes confirmed closing prices, index levels, regulatory filings from DART (Korea's disclosure system) and earnings figures to public files. You paste one server address into Claude, ChatGPT or Claude Code and get read-only tools for market summaries, stock lookups, screens and filing history. There is no account, key or quota. A small Python client and plain web requests reach the same files.

Why it's ranked here

The case rests on one field and on candour about it. The project attaches the hour and minute each filing was received, which it says the official DART search only gives as a date, and sorts filings into before-open, intraday and after-close. That split decides whether a filing could have moved that day's closing price. It also publishes market-adjusted returns after each filing type with 95% intervals, withholds numbers for types with fewer than 20 events, and states that 41 of 56 filled cells include zero. Setup is a single address with no credentials, where it says most Korean stock servers need a key first.

What's good

Every server reply carries an as-of date, a source link and a not-investment-advice line, and the instructions say a null means not provided, not zero. The server also tells the model that the tool list is not the whole catalogue, after a user's AI wrongly concluded earnings data was missing. The README warns that most AI fetch tools cut responses near 150 KB and points oversized files to smaller versions. The Python client has zero required dependencies, always sends a User-Agent because the default one gets a 403 from the CDN, and warns rather than silently padding a stock code given as an integer.

Tradeoffs

It is not real-time: prices are confirmed closes published once per trading day around 18:10 to 18:30 Korea time, and polling faster returns the same values. The licensing is split and not fully consistent. Code is MIT, but the server instructions say the data is non-commercial with attribution and commercial redistribution is not permitted, while the Python package docstring says it can be freely redistributed. The Python changelog marks its first version as not yet uploaded to PyPI, though the README shows a pip install. None of the files read contain the job that builds the published data. Most documentation is in Korean.

How to use it well

Best for someone asking an AI assistant about Korean listed companies after the close: what filed today, which filings landed after the market shut, how a filing type has historically moved prices. Check the catalogue's freshness status before quoting numbers, and when asking about post-filing returns, ask for the interval too, as the README itself advises. Treat stock codes as six-character strings. For direct file access, use the small variants of large files so AI fetch tools do not truncate them. It does not cover intraday quotes, consensus forecasts or commercial redistribution, so trading systems and resale products need another source.

Technical notes+

mcp/worker.js is a single-file Cloudflare Worker serving stateless MCP Streamable HTTP (JSON-RPC 2.0 on POST /mcp; GET /mcp returns 405), with open CORS, a 10-minute in-memory cache that reuses stale entries when the origin fails, protocol versions 2025-06-18, 2025-03-26 and 2024-11-05, and an INSTRUCTIONS string stating the non-commercial data terms and KOGL Type 4 for prices. server.json registers com.aikstockdata/mcp as a streamable-http remote; smithery.yaml marks runtime remote, authentication none, readOnly true. The Dockerfile only wraps a pinned mcp-remote@0.8.3 stdio bridge to the hosted URL. python/aikstockdata/client.py uses urllib plus json, a Response subclass of dict exposing as_of keys, a 0.2 s min_interval and per-process memory cache; python/pyproject.toml has an empty dependencies list, hatchling, and a pandas extra. python/tests/test_client.py is a plain script checking UA, URL assembly, caching and a live 403 probe. The license tension sits between __init__.py and worker.js.

Observed

License
MIT for the code; data terms stated separately as non-commercial with attribution
Languages
Python client library, JavaScript MCP server
Interface
Hosted remote MCP server over streamable HTTP, no authentication, read-only tools
Other access
Public JSON and CSV files over plain HTTPS; Python client
Python packaging
Requires Python 3.9 or later, no required dependencies, optional pandas extra
Container
Dockerfile runs a stdio-to-HTTP bridge to the hosted server rather than a local implementation
Data cadence
Once per trading day after the close; prices are T+1 confirmed closes, not real-time
Tests
Python client contract test runs as a standalone script, no test framework

Read from README.md, python/pyproject.toml, python/README.md, python/aikstockdata/client.py, python/aikstockdata/__init__.py, mcp/worker.js, server.json, Dockerfile, LICENSE, smithery.yaml, python/CHANGELOG.md, python/tests/test_client.py, examples/quickstart.py.

Tags

korean-stockskospikosdaqstock-apijson-apidart-filingsfinancial-dataopenapi

Tech Stack

Docker

Media

Korean Stock Data API (aikstockdata)

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.