Kimchi Premium Tracker
Pricing
from $3.00 / 1,000 result rows
Kimchi Premium Tracker
Kimchi premium board: Upbit KRW prices vs Binance USDT prices for a token watchlist or the top-turnover KRW markets, with the FX leg anchored on Upbit's own KRW-USDT pair and an optional Telegram alert when the premium crosses a threshold. Live board snapshot per run.
Pricing
from $3.00 / 1,000 result rows
Rating
0.0
(0)
Developer
Philip Kirkbride
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
Kimchi Premium Tracker (Upbit × Binance)
Track the kimchi premium — the gap between Korean (Upbit KRW) prices and global (Binance USDT) prices — per token, with the KRW/USD rate taken from the market's own KRW-USDT pair. Each run returns one live record per token with both price legs, the implied USD price, the FX rate and the premium percentage. Use it for cross-exchange arbitrage research and Korean retail-flow monitoring, with the option of a Telegram digest when the premium crosses a threshold.
Quick Start
{"tokens": ["BTC", "ETH", "XRP", "SOL"]}
With no watchlist, the run tracks the top KRW markets by 24-hour turnover instead. Watchlist entries that match no Upbit KRW market produce no rows and are listed in the run warnings. An all-unmatched watchlist can finish successfully with an empty dataset.
Input
| Name | Type | Default | Meaning |
|---|---|---|---|
tokens | array | [] | Optional token watchlist, case-insensitive ("BTC" or "KRW-BTC" both work). Empty tracks the top KRW markets by 24h turnover. |
topTokens | integer | 40 | Board size when no watchlist is given. |
alertPremiumPct | number | 3 | Tokens whose premium magnitude reaches this percent go into the Telegram digest. The threshold is symmetric, so deep discounts count too. |
telegramChatId | string | empty | Chat for the digest; requires the TELEGRAM_BOT_TOKEN secret environment variable. |
requestDelaySecs | number | 0.25 | Pause between requests. |
maxPlausiblePremiumPct | number | 50 | Suppress premiums whose absolute value exceeds this percent (1–1000). Both price legs are kept. Known symbol collisions are always suppressed, regardless of this setting. |
What it returns
One dataset row per token:
| Field | Meaning |
|---|---|
recordKey | Stable key, kimchi:{SYMBOL}. |
source, kind | Record source and type. |
token, upbitMarket, koreanName | Token symbol, Upbit market and Korean display name. |
upbitPriceKrw | Upbit last trade price in KRW. |
upbitPriceUsdImplied | The KRW price converted at the run's FX rate. |
upbitVolume24hKrw | 24-hour KRW turnover used for ranking. |
upbitTradeAt | Timestamp of the Upbit trade. |
binanceSymbol, binancePriceUsdt | Binance pair and price in USDT, or null for a Korea-only token. |
usdtKrwRate | The KRW/USD rate used. |
premiumPct | The kimchi premium in percent, rounded to 4 decimal places; null when unavailable or suppressed. |
premiumWarning | Reason a computed premium was suppressed, or null. |
marketWarning, priceFluctuations | Boolean Upbit market-warning and price-fluctuation caution flags. |
sourceUrl, binanceUrl | Public links to the two price sources. |
collectedAt | UTC time the snapshot was taken. |
The run summary (OUTPUT) reports coverage counters, the alert digest and warnings such as Korea-only tokens with no global pair.
Matching ticker symbols do not guarantee the same asset on both exchanges. Known symbol collisions and price gaps beyond maxPlausiblePremiumPct (default 50% in either direction) get premiumPct: null with a premiumWarning. Both prices are kept for inspection. These checks are safeguards, not proof of asset identity; verify the asset and transfer network before acting. Upbit market warnings remain visible in marketWarning and priceFluctuations.
Output example
Illustrative snapshot:
{"recordKey":"kimchi:BTC","source":"upbit-binance","kind":"kimchi_premium","token":"BTC","upbitMarket":"KRW-BTC","koreanName":"비트코인","upbitPriceKrw":135200000,"upbitPriceUsdImplied":97203.2496944424,"upbitVolume24hKrw":81234567890.0,"upbitTradeAt":"2026-09-06T09:12:45+00:00","binanceSymbol":"BTCUSDT","binancePriceUsdt":96430.1,"usdtKrwRate":1390.9,"premiumPct":0.8018,"premiumWarning":null,"marketWarning":false,"priceFluctuations":false,"sourceUrl":"https://upbit.com/exchange?code=CRIX.UPBIT.KRW-BTC","binanceUrl":"https://www.binance.com/en/trade/BTC_USDT","collectedAt":"2026-09-06T09:12:47Z"}
FAQ
How is the premium computed? ((upbitPriceKrw / usdtKrwRate) / binancePriceUsdt − 1) × 100, with the KRW/USD rate anchored on the market's own KRW-USDT pair rather than a third-party FX feed.
What about tokens listed only in Korea? They keep their Upbit-side record with premiumPct as an explicit null, never guessed, and are named in the run warnings.
How many tokens can I track? Up to 100 watchlist entries, or the top 40 KRW markets by turnover (configurable with topTokens).
Are both spikes and discounts alerted? Yes — the threshold is symmetric, so a deep negative premium alerts exactly like a spike.
Can I get the Telegram digest? Set telegramChatId and provide the TELEGRAM_BOT_TOKEN secret. Without them, the run still collects the board; a failed or skipped send is a warning, not a failed run.
Price
$0.003 per result delivered, plus $0.005 per run start. The run-start event is charged per GB of memory; the default 512 MB run is one start event. The start is charged even if the run saves no results. Platform usage is included in these prices.
For support, contact Apify support and include the Actor run ID.