# 🇰🇷 Korea IPO Pipeline · 코스피 코스닥 IPO 청약 일정 (`nexgendata/korea-ipo-pipeline-tracker`) Actor

Track Korean IPO filings on KOSPI, KOSDAQ, and KONEX via FSS OpenDART (pblntf\_ty=C, 발행공시). Prospectus → final pricing → listing pending. Offering size (KRW + USD), share count, target listing date, book-building vs competitive, lead underwriter. Bring your own free DART key.

- **URL**: https://apify.com/nexgendata/korea-ipo-pipeline-tracker.md
- **Developed by:** [NexGenData](https://apify.com/nexgendata) (community)
- **Categories:** Business, Automation
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $400.00 / 1,000 ipo records

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## 🚀 Korea IPO Pipeline Tracker — KOSPI & KOSDAQ Listing Calendar via DART

**Real-time Korean IPO pipeline: every prospectus, every final-price filing, every listing application — direct from the FSS DART system of record. KOSPI, KOSDAQ, KONEX.**

Pre-IPO research desks, sell-side ECM analysts, and Korean equity buyers waste hours every week stitching together IPO calendars from 38.co.kr, KRX, FN news, and one-off prospectus PDFs. This actor pulls the official **OpenDART** `pblntf_ty=C` (발행공시 — securities issuance) feed and classifies each filing into its IPO pipeline stage so you get a complete pre-listing calendar, top-down, in seconds.

> **Source of record:** Korea Financial Supervisory Service (FSS) — [OpenDART REST API](https://opendart.fss.or.kr/intro/main.do). Cross-referenced against the [KRX listing calendar](https://data.krx.co.kr/contents/MDC/MDI/mdiLoader/index.cmd?menuId=MDC0202).

---

### ⚡ What you get

Per IPO filing, one structured record with:

| Field | What it tells you |
|---|---|
| `rcept_no` | DART receipt number (stable join key) |
| `corp_code` | DART 8-digit issuer code |
| `corp_name` | Issuer in Korean (e.g. `에코프로비엠`) |
| `corp_name_en` | Issuer in English when DART has it registered |
| `stock_code` | Post-listing KRX ticker (blank pre-listing) |
| `market` | `KOSPI` / `KOSDAQ` / `KONEX` |
| `filing_title` | Korean DART filing title (raw) |
| `ipo_stage` | `prospectus` / `final_pricing` / `listing_pending` / `other` |
| `offering_amount_KRW` | Best-effort parsed from filing title (원/억원/조원 formats) |
| `offering_amount_USD` | Convenience conversion at default 1,380 KRW/USD |
| `share_count` | Total shares offered (where parseable) |
| `target_listing_date` | Expected first trading day (ISO YYYY-MM-DD) |
| `listing_method` | `book_building` (수요예측 default) or `competitive` |
| `underwriter` | Lead manager / 주관사 in Korean |
| `underwriter_en` | Top-15 Korean broker name in English where mapped |
| `filing_date` | DART filing date (YYYYMMDD) |
| `prospectus_url` | DART filing detail page (no auth needed for read) |
| `krx_calendar_url` | KRX listing-calendar cross-reference |

---

### 🎯 Use cases

1. **Pre-IPO secondary buyer (Korean PE / Korea equity fund).** Wake up every morning to a list of the new prospectuses and target listing dates — set up alerts on KOSDAQ tech IPOs above 50B KRW.
2. **Sell-side ECM analyst.** Track which Korean brokerage houses are winning IPO mandates (Mirae Asset, Korea Investment, NH, Samsung, KB, Shinhan) by counting `underwriter` records per quarter.
3. **Korea equity quant.** Backfill the IPO pipeline as a feature in a Korean equity factor model — `target_listing_date - filing_date` is a useful timing signal.
4. **Retail brokerage product team.** Power the "Upcoming IPOs" widget for Korean retail clients with first-party, audit-defensible data from DART.
5. **Cross-border IB.** Map Korean IPO pipeline against Hong Kong / Tokyo / Nasdaq dual-listing candidates.

---

### 📊 Sample Output

![Korea IPO Pipeline sample output](https://api.apify.com/v2/key-value-stores/8gLgXMBveEI1tTz1z/records/korea-ipo-pipeline-tracker-output.png)

Rendered with Noto Sans CJK KR. 5 sample rows spanning KOSPI + KOSDAQ filings with all four pipeline stages.

---

### 🔑 OpenDART API key (required, free, instant)

**You must supply your own OpenDART key** — per OpenDART Terms of Service §5, NexGenData cannot ship a shared key. Registration takes ~2 minutes and the key is issued instantly:

1. Sign up at [https://opendart.fss.or.kr/uss/umt/cmm/EgovMberInsertView.do](https://opendart.fss.or.kr/uss/umt/cmm/EgovMberInsertView.do) (one-time email confirmation)
2. Apply for an API key on the [API key management page](https://opendart.fss.or.kr/mng/apiKeyManagementList.do)
3. Paste the 40-character key into the `opendart_api_key` input

**Rate limit:** 20,000 API calls per key per day (FSS cap). This actor caps itself at 19,900 calls/run to leave headroom. One full 90-day scan typically uses 5–15 calls.

---

### 🚀 How to use

#### Smoke test — KOSDAQ pipeline, 5 records
```json
{
  "opendart_api_key": "YOUR_OPENDART_KEY",
  "stage_filter": "all",
  "market_filter": "KOSDAQ",
  "max_records": 5
}
````

#### Last 30 days, KOSPI only, listing-pending stage

```json
{
  "opendart_api_key": "YOUR_OPENDART_KEY",
  "stage_filter": "listing_pending",
  "market_filter": "KOSPI",
  "date_from": "2026-05-01",
  "date_to": "2026-05-31",
  "max_records": 100
}
```

#### Python (apify-client)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("nexgendata/korea-ipo-pipeline-tracker").call(run_input={
    "opendart_api_key": "YOUR_OPENDART_KEY",
    "stage_filter": "prospectus",
    "market_filter": "all",
    "min_offering_size_KRW": 50_000_000_000,
    "max_records": 200,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["corp_name"], item["market"], item["target_listing_date"])
```

#### cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/nexgendata~korea-ipo-pipeline-tracker/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"opendart_api_key":"YOUR_OPENDART_KEY","stage_filter":"all","market_filter":"KOSDAQ","max_records":5}'
```

#### MCP integration

Use this actor through the [Apify MCP Server](https://apify.com/apify/actors-mcp-server) — point your AI agent (Claude, ChatGPT, Cursor) at the actor and let it pull Korean IPO context on demand.

***

### ⚖️ Legal & data sources

- **Primary source:** FSS OpenDART REST API (`opendart.fss.or.kr/api/list.json` with `pblntf_ty=C`) — securities issuance filings.
- **Secondary cross-reference:** KRX listing calendar at `data.krx.co.kr/contents/MDC/MDI/mdiLoader/index.cmd?menuId=MDC0202`.
- DART filings are **mandated public disclosure** under the Korean Financial Investment Services and Capital Markets Act (FSCMA §159). No PII; no scraping of unofficial aggregators.
- Each consumer brings their own OpenDART key per OpenDART ToS §5.
- This actor pushes structured error records (not crashes) on `010`/`011` (invalid key) and `020` (quota exceeded) so your downstream pipeline can react gracefully.

***

### ❓ FAQ

**Q: How is this different from `nexgendata/apac-ipo-calendar-sweep`?**
A: The APAC sweep aggregates across Hong Kong, Tokyo, Singapore, Sydney, Mumbai, and Seoul at a calendar-event level. This Korea-only actor goes deeper — every prospectus revision, every book-building result, every listing application, with offering-size parsing and Korean-broker mapping. Use the sweep for breadth; use this for Korea-specific depth.

**Q: Why is `offering_amount_KRW` sometimes null?**
A: Best-effort regex extraction from the Korean filing title catches ~60-70% of filings (the ones that quote the offering total in the title). For the remaining filings, the full amount lives inside the DART XML document, which would require a second per-filing API call. v1 prioritizes API-call efficiency; null amounts pass the size filter through. Future opt-in `deep_parse` mode can pull from `document.xml`.

**Q: How do I get the actual underwriter for the IPO (not just the filer)?**
A: OpenDART's `list.json` endpoint returns `flr_nm` (filer name) only, which is usually the issuer itself for prospectus filings. The lead underwriter (주관사) is named inside the prospectus XML body. Same trade-off as above — v1 stays inside the list endpoint for speed and quota efficiency.

**Q: Does this catch SPAC mergers?**
A: Yes — SPAC merger filings (스팩 합병) appear under `pblntf_ty=C` and are picked up under `ipo_stage: "other"`. Set `stage_filter: "all"` to include them.

**Q: What's the typical `book_building` vs `competitive` split?**
A: Since the 2007 reform, ~98% of Korean IPOs use book-building (수요예측). Competitive auction (경쟁입찰) is rare — usually only for government-backed share sales.

***

### 한국어 설명

이 액터는 **금융감독원(FSS) 전자공시시스템(DART)** OpenDART REST API의 `pblntf_ty=C` (발행공시) 카테고리에서 한국 IPO 파이프라인 데이터를 수집합니다. 코스피·코스닥·코넥스 상장을 추진 중인 기업의 증권신고서, 공모가확정 결과, 상장신청서를 자동으로 분류하여 한국 IPO 파이프라인 전체를 한눈에 볼 수 있게 만듭니다.

**주요 활용 사례:**

- **프리 IPO 세컨더리 투자 (한국 PE / 한국 주식형 펀드)**: 매일 아침 새로 제출된 증권신고서와 상장 예정일 리스트를 받아 50억 원 이상 코스닥 기술기업 IPO에 대한 알림을 설정합니다.
- **셀사이드 ECM 애널리스트**: 한국 증권사(미래에셋, 한국투자, NH, 삼성, KB, 신한 등)의 IPO 주관 실적을 분기별로 집계합니다.
- **퀀트 리서치**: `target_listing_date - filing_date` 시그널을 한국 주식 팩터 모델 피처로 활용합니다.
- **리테일 브로커리지**: 1차 원천(DART)에서 가져온 감사 가능한 IPO 데이터를 자사 리테일 앱의 '예정 IPO' 위젯에 연결합니다.

**OpenDART API 키 발급:**

1. <https://opendart.fss.or.kr> 회원 가입 (1회, 이메일 인증)
2. API Key 신청 (즉시 발급, 40자)
3. `opendart_api_key` 입력란에 붙여넣기

**일일 호출 한도 20,000회/키** — 본 액터는 19,900회로 자체 캡을 걸어 여유분을 남깁니다.

**데이터 출처:** 금융감독원 전자공시시스템(DART), 자본시장법 제159조에 따른 공시 의무 대상 자료입니다. 개인정보(PII)를 포함하지 않으며, 비공식 집계 사이트(38.co.kr 등)는 스크래핑하지 않습니다.

***

### 🔗 Related Actors — Korea & Asia Capital Markets Cluster

| Actor | What it does |
|---|---|
| [kospi-stock-screener](https://apify.com/nexgendata/kospi-stock-screener) | Post-listing KOSPI equity screening — pair with this actor to track IPOs from prospectus → first-day pricing → ongoing screening |
| [apac-ipo-calendar-sweep](https://apify.com/nexgendata/apac-ipo-calendar-sweep) | Cross-region APAC IPO calendar (Hong Kong + Tokyo + Singapore + Sydney + Mumbai + Seoul). Use the sweep for breadth, this actor for Korea depth |
| [sgx-company-announcements](https://apify.com/nexgendata/sgx-company-announcements) | Singapore SGX disclosures — same disclosure-feed pattern for the Singapore market |
| [japan-edinet-insider-filings](https://apify.com/nexgendata/japan-edinet-insider-filings) | Japan EDINET filings (FSA-mandated disclosures) — Japan-side equivalent of DART |
| [tse-japan-stock-screener](https://apify.com/nexgendata/tse-japan-stock-screener) | Tokyo Stock Exchange screener — for cross-border KR/JP equity workflows |
| [sec-edgar-filings-scraper](https://apify.com/nexgendata/sec-edgar-filings-scraper) | US SEC EDGAR — pair with this actor for Korean ADR cross-listing analysis |

***

### 🏷️ About NexGenData

NexGenData builds finance-grade Apify actors for institutional and quantitative users — exchange filings, regulatory disclosures, IPO calendars, screener data — across the US, Japan, Korea, Hong Kong, Singapore, Australia, India, and the EU. All actors source from primary regulators (SEC, FSA, FSS, HKEX, SGX, MAS, ASIC, SEBI, ESMA) or licensed exchanges. Data is structured, audit-defensible, and ready for downstream pipelines.

Browse the full fleet: [apify.com/nexgendata](https://apify.com/nexgendata)

# Actor input Schema

## `opendart_api_key` (type: `string`):

Your personal OpenDART API key (crtfc\_key). Register free at https://opendart.fss.or.kr/uss/umt/cmm/EgovMberInsertView.do — keys are issued instantly after email confirmation. NexGenData does NOT supply a shared key (per OpenDART Terms of Service §5, each consumer must register their own). Limit: 20,000 API calls/day per key.

## `stage_filter` (type: `string`):

Which IPO pipeline stage to return. 'prospectus' = 증권신고서/투자설명서/정정신고서 (registration & prospectus filings); 'final\_pricing' = 공모가확정/수요예측결과 (book-building result + final offer price); 'listing\_pending' = 상장신청서/신규상장/이전상장 (listing application & approval). 'all' returns everything inside pblntf\_ty=C (발행공시 — securities issuance).

## `market_filter` (type: `string`):

Which Korean equity market to track. KOSPI = blue-chip primary board; KOSDAQ = growth/tech secondary board; KONEX = early-stage / SME board. 'all' returns issuers across all three markets.

## `min_offering_size_KRW` (type: `integer`):

Filter out IPOs smaller than this KRW offering size, parsed best-effort from the Korean filing title (handles 원/억원/조원 formats). Default 10,000,000,000 (10 billion KRW ≈ $7M USD) — typical institutional-grade KOSDAQ IPO floor. Set to 0 to include micro-cap offerings. Filings where the size cannot be parsed from the title are kept through (not filtered out).

## `date_from` (type: `string`):

Earliest filing date to scan. Defaults to 90 days ago. OpenDART supports dates back to 1999.

## `date_to` (type: `string`):

Latest filing date to scan. Defaults to today. Note: DART filings appear with a ~30-minute lag from filing time.

## `max_records` (type: `integer`):

Cap total records returned. OpenDART returns 100 per page; this actor paginates until the cap is reached or no more results exist. Hard ceiling 500 per run (use multiple runs with narrower date windows for larger sweeps).

## Actor input object example

```json
{
  "stage_filter": "all",
  "market_filter": "all",
  "min_offering_size_KRW": 10000000000,
  "max_records": 100
}
```

# 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 = {
    "opendart_api_key": "",
    "stage_filter": "all",
    "market_filter": "all",
    "min_offering_size_KRW": 10000000000,
    "date_from": "",
    "date_to": "",
    "max_records": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/korea-ipo-pipeline-tracker").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 = {
    "opendart_api_key": "",
    "stage_filter": "all",
    "market_filter": "all",
    "min_offering_size_KRW": 10000000000,
    "date_from": "",
    "date_to": "",
    "max_records": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/korea-ipo-pipeline-tracker").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "opendart_api_key": "",
  "stage_filter": "all",
  "market_filter": "all",
  "min_offering_size_KRW": 10000000000,
  "date_from": "",
  "date_to": "",
  "max_records": 100
}' |
apify call nexgendata/korea-ipo-pipeline-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nexgendata/korea-ipo-pipeline-tracker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "🇰🇷 Korea IPO Pipeline · 코스피 코스닥 IPO 청약 일정",
        "description": "Track Korean IPO filings on KOSPI, KOSDAQ, and KONEX via FSS OpenDART (pblntf_ty=C, 발행공시). Prospectus → final pricing → listing pending. Offering size (KRW + USD), share count, target listing date, book-building vs competitive, lead underwriter. Bring your own free DART key.",
        "version": "0.0",
        "x-build-id": "sRdOemMTxOPCeWUqG"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/nexgendata~korea-ipo-pipeline-tracker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-nexgendata-korea-ipo-pipeline-tracker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/nexgendata~korea-ipo-pipeline-tracker/runs": {
            "post": {
                "operationId": "runs-sync-nexgendata-korea-ipo-pipeline-tracker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/nexgendata~korea-ipo-pipeline-tracker/run-sync": {
            "post": {
                "operationId": "run-sync-nexgendata-korea-ipo-pipeline-tracker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "opendart_api_key"
                ],
                "properties": {
                    "opendart_api_key": {
                        "title": "OpenDART API key (required)",
                        "type": "string",
                        "description": "Your personal OpenDART API key (crtfc_key). Register free at https://opendart.fss.or.kr/uss/umt/cmm/EgovMberInsertView.do — keys are issued instantly after email confirmation. NexGenData does NOT supply a shared key (per OpenDART Terms of Service §5, each consumer must register their own). Limit: 20,000 API calls/day per key."
                    },
                    "stage_filter": {
                        "title": "IPO pipeline stage",
                        "enum": [
                            "prospectus",
                            "final_pricing",
                            "listing_pending",
                            "all"
                        ],
                        "type": "string",
                        "description": "Which IPO pipeline stage to return. 'prospectus' = 증권신고서/투자설명서/정정신고서 (registration & prospectus filings); 'final_pricing' = 공모가확정/수요예측결과 (book-building result + final offer price); 'listing_pending' = 상장신청서/신규상장/이전상장 (listing application & approval). 'all' returns everything inside pblntf_ty=C (발행공시 — securities issuance).",
                        "default": "all"
                    },
                    "market_filter": {
                        "title": "Target market",
                        "enum": [
                            "KOSPI",
                            "KOSDAQ",
                            "KONEX",
                            "all"
                        ],
                        "type": "string",
                        "description": "Which Korean equity market to track. KOSPI = blue-chip primary board; KOSDAQ = growth/tech secondary board; KONEX = early-stage / SME board. 'all' returns issuers across all three markets.",
                        "default": "all"
                    },
                    "min_offering_size_KRW": {
                        "title": "Minimum offering size (KRW)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Filter out IPOs smaller than this KRW offering size, parsed best-effort from the Korean filing title (handles 원/억원/조원 formats). Default 10,000,000,000 (10 billion KRW ≈ $7M USD) — typical institutional-grade KOSDAQ IPO floor. Set to 0 to include micro-cap offerings. Filings where the size cannot be parsed from the title are kept through (not filtered out).",
                        "default": 10000000000
                    },
                    "date_from": {
                        "title": "Date from (YYYY-MM-DD)",
                        "type": "string",
                        "description": "Earliest filing date to scan. Defaults to 90 days ago. OpenDART supports dates back to 1999."
                    },
                    "date_to": {
                        "title": "Date to (YYYY-MM-DD)",
                        "type": "string",
                        "description": "Latest filing date to scan. Defaults to today. Note: DART filings appear with a ~30-minute lag from filing time."
                    },
                    "max_records": {
                        "title": "Max IPO records to return",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Cap total records returned. OpenDART returns 100 per page; this actor paginates until the cap is reached or no more results exist. Hard ceiling 500 per run (use multiple runs with narrower date windows for larger sweeps).",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
