Korean Stock Data API — endpoints, no key required
2,786 Korean tickers across KOSPI/KOSDAQ/KONEX: T+1 settled closing prices, DART regulatory filings with receipt timestamps (HH:MM KST) — the public filing API gives the date only — and the latest periodic report's year-to-date results (H1 = Jan–Jun, not Q2 alone) read from the filings themselves. Every file below is a plain static JSON document over HTTPS with no authentication, no quota and open CORS. Data is refreshed every trading day after the close (T+1). Machine-readable spec: OpenAPI 3.1 — drop that URL into a ChatGPT custom GPT as an Action, or generate a client from it. Start from the catalog, index.json, which lists every file with its byte size and freshness.
Endpoints
| Path | What it is |
|---|---|
index.json | Catalog — file list, sizes, freshness, archive dates |
today.json | One-day digest — index close, advance/decline, top filings, rankings |
s/{code}.json | One stock — close, market cap, financials, recent filings |
s/{code}_history.json | One stock's daily history: [date, close, volume] (row count in count) |
quotes_top300.json | Top 300 by market cap, sort order guaranteed |
disclosures_top100.json | Top 100 filings by materiality score |
earnings_recent60.json | Top 80 by market cap + latest 70 filings, with compact financials (truncation-safe) |
disclosure_impact.json | Median market-adjusted return after each filing type |
disclosure_impact_summary.json | Same, summary only — about 1/15 the size, safe for AI fetch tools |
market_index_history.json | KOSPI and KOSDAQ daily closes — joins to s/{code}_history.json on date |
quotes_en.csv | All stocks, latest confirmed close — English column headers |
rankings.json | Growth leaders, quiet performers, 52-week highs/lows |
daily/today_{YYYYMMDD}.json | Archived daily digest (30-day window) |
notices.json | Machine-readable incident and correction log |
Stock codes are the 6-digit KRX short code (Samsung Electronics =
005930). Look them up in
search_index_rows.json (code · name · market rows), which also declares the
URL patterns so you do not have to guess them.
Large files are truncated by AI fetch tools — use the small edition
Most AI fetch tools cut a response at 50–150 KB, and a truncated JSON is
unparseable, which produces a silently wrong answer instead of an error.
index.json carries a fetch_guide block naming the small alternative
for every large file. Rule of thumb: if you need one stock, always use
s/{code}.json rather than the full quotes file.
Examples
curl -s https://aikstockdata.com/data/public/s/005930.json
# Python
import requests
u = "https://aikstockdata.com/data/public/s/005930_history.json"
rows = requests.get(u, timeout=20).json()["rows"] # [[date, close, volume], ...]
print(rows[-1])
// JavaScript — CORS is open, this works in a browser
const r = await fetch("https://aikstockdata.com/data/public/today.json");
const d = await r.json();
console.log(d.market_index, d.market_breadth);
A caveat we used to have, now gone: from 2026-08-11 to 2026-09-16
the CDN bot filter rejected the default Python-urllib user agent with a 403.
We turned that filter off on 2026-09-16 — every user agent we tested now returns 200
(6 agents x 4 paths, 24/24), including a bare pd.read_csv(url) and
urllib.request.urlopen(url). If you ever do get a 403, send any User-Agent header:
urllib.request.Request(url, headers={"User-Agent": "my-app"}) — and please tell us,
because that would be our setting, not your code.
Licence and citation
Derived from Korean public-sector open data. Data published here (/data/public/*) may be quoted and used for non-commercial purposes with attribution. Commercial redistribution is not permitted in any form. Market prices come from the Financial Services Commission's public data portal and are also subject to that source's licence (KOGL Type 4: attribution, non-commercial, no derivatives) and notices; disclosure content follows FSS DART's terms. Real-time quotes are never redistributed here. Licence: aiksd-public-1.1.
Please cite as: Source: aikstockdata (aikstockdata.com) — original data: FSS DART, FSC open data portal, Republic of Korea. Schemas are published
under /data/public/schemas/.
What is not here
- No real-time or intraday prices. Closing prices only, published the next business day (T+1) by the government source. If you need live quotes, this is the wrong dataset.
- No target prices or analyst ratings. Those are brokerage-derived; this project
publishes only public-sector data. (PER and PBR are here where the inputs exist —
computed by us from DART financials and FSC closing prices:
valuation.pe_ttm,valuation.pbin/data/public/s/{code}.json.) - No investor-type flows (foreign / institutional / retail).
- No sector classification yet.
- Filing explanations are written in Korean. Field names and structure are English-friendly; the prose is not translated.
This site publishes public data as fact. It is not investment advice and does not recommend buying or selling any security. Source: Financial Services Commission open data portal (prices) and DART, the Financial Supervisory Service filing system. Terms: Non-commercial use with attribution; commercial redistribution is not permitted. (aiksd-public-1.1)