# DART Korea 공시·재무제표 API (DART Korea Filings & Financials) (`linus009400/dart-korea-filings-scraper`) Actor

Korean corporate filings and financial statements from DART, normalised to English field names and real numbers. Feed it a ticker like 005930 and get the balance sheet, income statement and cash flow as clean JSON. Covers 119,000 companies across KOSPI, KOSDAQ and KONEX.

- **URL**: https://apify.com/linus009400/dart-korea-filings-scraper.md
- **Developed by:** [HEESEOK HONG](https://apify.com/linus009400) (community)
- **Categories:** AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 financial statement lines

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## DART Korea Filings & Financials Scraper

**Get Korean public company disclosures and financial statements as clean JSON — with English field names.**

Korea's official corporate disclosure system (DART, run by the Financial Supervisory Service) holds every filing from every listed Korean company: Samsung Electronics, SK Hynix, NAVER, Kakao, Hyundai, and ~3,900 others across KOSPI, KOSDAQ and KONEX.

The problem is that DART speaks Korean. Field names, account names, market codes, report types — all of it. Amounts arrive as `"514,531,948,000,000"` strings, negatives show up as `"(1,234)"`, and missing values are `"-"`. Companies are keyed by an 8-digit `corp_code` that appears nowhere else in finance.

This actor fixes all of that. You give it a ticker; you get typed, English-labelled, analysis-ready rows.

***

### What you can pull

#### 1. Filings — the disclosure feed

Every filing a company submits, with the category, the filer, the date, and a direct link to the original document.

```json
{
  "queryCompany": "005930",
  "corpName": "삼성전자",
  "stockCode": "005930",
  "market": "KOSPI",
  "reportName": "사업보고서 (2025.12)",
  "receiptNo": "20260311000123",
  "filerName": "삼성전자",
  "filedAt": "2026-03-11",
  "filingUrl": "https://dart.fss.or.kr/dsaf001/main.do?rcpNo=20260311000123"
}
```

Filter by category: periodic reports, material facts, securities issuance, tender offers, ownership changes, audit matters, and more.

#### 2. Financials — balance sheet, income statement, cash flow

Full statements as filed, with IFRS account IDs mapped to English labels and every amount converted to a real number.

```json
{
  "corpNameKr": "삼성전자",
  "stockCode": "005930",
  "fiscalYear": 2025,
  "reportType": "ANNUAL",
  "statement": "INCOME_STATEMENT",
  "consolidation": "CONSOLIDATED",
  "accountId": "ifrs-full_Revenue",
  "accountNameEn": "Revenue",
  "accountNameKr": "매출액",
  "currentAmount": 300870903000000,
  "priorAmount": 258935494000000,
  "currency": "KRW",
  "filingUrl": "https://dart.fss.or.kr/dsaf001/main.do?rcpNo=20260311000123"
}
```

Choose **key accounts** (~20 headline lines: revenue, operating profit, net profit, total assets, equity, EPS, operating cash flow) or **full statements** (every line item exactly as filed).

Annual, half-year, Q1 and Q3 reports. Consolidated or parent-only.

#### 3. Company — corporate profile

CEO, industry code, incorporation date, fiscal year end, corporate and business registration numbers, address, homepage, IR page.

***

### Who uses this

- **Quant and fundamental research** — pull FY financials across a KOSPI universe and build a factor dataset without reading Korean
- **Fintech and data products** — Korean corporate fundamentals as a normalised feed
- **Compliance, KYC and due diligence** — verify a Korean counterparty's registration numbers, CEO and legal address against the official registry
- **Investor relations and competitive intelligence** — watch when competitors file, and what
- **AI agents** — this actor is available through Apify's MCP server, so an agent can pull Korean corporate data as a tool call

***

### How to use it

Just press **Run**. The defaults fetch Samsung Electronics' filings from the last 90 days.

To go further:

| Input | What it does |
|---|---|
| `companies` | Tickers (`005930`), DART corp codes (`00126380`), or Korean names (`삼성전자`). Mix them freely. |
| `mode` | `filings`, `financials`, or `company` |
| `dateFrom` / `dateTo` | Filing date range. `YYYY-MM-DD` or `YYYYMMDD`. |
| `fiscalYear` / `reportType` | Which financial report to pull |
| `detailLevel` | `key` for headline accounts, `full` for every line |
| `maxResults` | Hard cap on billed rows — protects you from an unexpectedly large query |

#### Company matching

You do not need to know DART's internal codes. The actor downloads the official company index (~110,000 entities including unlisted ones), caches it for a week, and resolves whatever you give it. Ambiguous names prefer listed companies, so `삼성전자` resolves to the listed entity rather than a subsidiary. Anything it cannot match is reported in `unresolved` rather than silently dropped.

#### API keys

The actor ships with a shared DART key so it works out of the box. DART allows 20,000 requests per key per day, so for scheduled or high-volume runs you should get your own — it is free, takes about a minute, and there is no approval step. Register at [opendart.fss.or.kr](https://opendart.fss.or.kr/uss/umt/EgovMberInsertView.do) and paste the key into `dartApiKey`.

***

### Output

Results go to the default dataset — export as JSON, CSV, Excel, or XML, or pull them through the Apify API. A `RUN_SUMMARY` record in the key-value store lists rows returned, API calls used, unresolved companies, and any per-company failures, so a scheduled run tells you exactly what happened.

***

### Notes on the data

- Amounts are in the currency reported by the filer, usually **KRW**. Check the `currency` field before comparing across companies.
- Korean fiscal years mostly end in December, but not always — `fiscalYearEndMonth` in company mode tells you.
- `accountNameEn` is populated for standard IFRS and DART accounts. Company-specific accounts keep `accountNameKr` and return `null` for the English label rather than a machine translation you cannot trust.
- Financial statements are only available for companies that file them. Small unlisted entities appear in the index but may return no financial data.

### Legality

This actor reads DART's official Open API — a public data service the Financial Supervisory Service operates for exactly this purpose. It does not scrape rendered pages, bypass authentication, or touch personal data.

***

Built by a fintech CTO who got tired of hand-mapping Korean account codes.
Found a bug or need another endpoint? Open an issue on the actor's **Issues** tab — I read them.

# Actor input Schema

## `mode` (type: `string`):

**Filings** = disclosure list (8-K style). **Financials** = full financial statements. **Company** = company profile, CEO, industry, registration numbers.

## `companies` (type: `array`):

Ticker (`005930`), DART corp\_code (`00126380`), or Korean name (`삼성전자`). Mix freely.

## `dateFrom` (type: `string`):

`YYYY-MM-DD` or `YYYYMMDD`. Defaults to 90 days ago.

## `dateTo` (type: `string`):

`YYYY-MM-DD` or `YYYYMMDD`. Defaults to today.

## `filingType` (type: `string`):

Leave empty for all categories.

## `fiscalYear` (type: `string`):

Four-digit year, e.g. `2025`. Defaults to last completed year.

## `reportType` (type: `string`):

Which periodic report to read the figures from. Korean issuers file an annual report plus half-year, Q1 and Q3 reports.

## `consolidation` (type: `string`):

**Consolidated** includes subsidiaries — this is what most analysts want. **Separate** is the parent entity alone. The two sets of figures can differ substantially.

## `detailLevel` (type: `string`):

**Key accounts** returns ~20 headline IFRS lines with English labels. **Full** returns every line item as filed.

## `maxResults` (type: `integer`):

Hard cap on billed rows. Protects you from an unexpectedly large query.

## `dartApiKey` (type: `string`):

Leave empty to use the shared key. For heavy or scheduled use, get your own free key in about a minute at [opendart.fss.or.kr](https://opendart.fss.or.kr/uss/umt/EgovMberInsertView.do) — each key allows 20,000 requests per day.

## Actor input object example

```json
{
  "mode": "filings",
  "companies": [
    "005930",
    "000660",
    "035420"
  ],
  "reportType": "ANNUAL",
  "consolidation": "CONSOLIDATED",
  "detailLevel": "key",
  "maxResults": 1000
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "companies": [
        "005930",
        "000660",
        "035420"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("linus009400/dart-korea-filings-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "companies": [
        "005930",
        "000660",
        "035420",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("linus009400/dart-korea-filings-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "companies": [
    "005930",
    "000660",
    "035420"
  ]
}' |
apify call linus009400/dart-korea-filings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,linus009400/dart-korea-filings-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ZCnVkTIqz0dp6HtdQ/builds/37eh0Y7KosC6kTXW2/openapi.json
