Korea 아파트 실거래가 API (Korea Apartment Transactions)
Pricing
from $0.50 / 1,000 transaction records
Korea 아파트 실거래가 API (Korea Apartment Transactions)
Every apartment sale in Korea from the government register, in real KRW. The raw API quotes 만원, so 145,000 means 1,450,000,000 won. Fixed here, plus price per m² and per pyeong, English district names, and cancelled contracts flagged so they don't inflate your averages.
Pricing
from $0.50 / 1,000 transaction records
Rating
0.0
(0)
Developer
HEESEOK HONG
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
7 days ago
Last modified
Share
Korea Apartment Sale Transactions Scraper
Every apartment sale in Korea, from the government register — with prices in real won and districts in English.
Korea publishes every apartment sale contract. Price, date, exact building, floor, exclusive area, whether it went through an agent, whether the buyer was a company. It is one of the most complete residential price datasets any country makes public.
It is also, in raw form, a trap.
<dealAmount>145,000</dealAmount>
That is not ₩145,000. The unit is 만원 — ten thousand won — so the real figure is ₩1,450,000,000. About 1.45 billion won. Anyone reading the raw field is wrong by a factor of ten thousand, and nothing in the response says so.
This actor fixes that and everything else in the way.
What you get
{"dealDate": "2026-06-20","sidoEn": "Seoul","sggEn": "Gangnam-gu","sggKr": "강남구","umdKr": "수서동","aptName": "까치마을","floor": 6,"buildYear": 1993,"areaSqm": 34.44,"areaPyeong": 10.42,"areaSqft": 370.7,"priceKrw": 1450000000,"priceManwon": 145000,"priceKrwPerSqm": 42102207,"priceKrwPerPyeong": 139180843,"currency": "KRW","buyerType": "INDIVIDUAL","sellerType": "INDIVIDUAL","dealChannel": "THROUGH_AGENT","isCancelled": false,"isLandLease": false}
Against the raw API, this actor:
- Converts 만원 to real KRW — and keeps
priceManwonand the original string so you can audit it - Adds price per m² and per pyeong, computed before rounding so the figures don't drift
- Gives area three ways — m² as filed, 평 because that is how Koreans quote it, ft² because you may not
- Assembles one date from the three separate year / month / day fields
- Translates the Korean enum values — 개인 →
INDIVIDUAL, 법인 →CORPORATION, 중개거래 →THROUGH_AGENT, 직거래 →DIRECT - Resolves districts by name — you pass
Gangnam-gu, not11680 - Flags cancelled contracts. Korea records contracts and then records their withdrawal. Leaving those in inflates apparent market prices, so they are excluded unless you ask for them
- Flags land-lease apartments (
토지임대부), which trade far below freehold units and will skew any average that mixes them in - Returns
nullfor genuinely blank fields. The raw API sends a single space character, which silently survives most parsers as a truthy value
Who uses this
- Property analytics and proptech — a normalised national price feed without building the plumbing
- Funds and research desks — Korean housing as a macro signal, in a form you can regress on
- Relocation and expat services — real prices for a specific building, in English
- Appraisal and lending — comparable sales for a district and unit size
- Journalists and researchers — official figures with the traps removed
- AI agents — available through Apify's MCP server as a tool call
How to use it
Press Run. The defaults pull last month's sales in Gangnam-gu.
| Input | What it does |
|---|---|
regions | Gangnam-gu, 강남구, 서울 강남구, or 11680. Mix freely. |
monthFrom / monthTo | 2026-01 to 2026-06. Leave empty for the last completed month. |
months | Exact months, e.g. 2025-06 and 2026-06 for a year-on-year read. |
minPriceKrw / maxPriceKrw | In actual won. One billion is 1000000000. |
minAreaSqm / maxAreaSqm | 84 m² is the standard Korean family unit. |
includeCancelled | Off by default, for the reason above. |
maxResults | Hard cap on billed rows. |
Districts
334 queryable districts, covering the whole country. All 25 Seoul districts and the major Gyeonggi and metropolitan districts have English names; the rest resolve by Korean name or code.
Cities divided into 구 must be queried at 구 level — the register has no city-wide figure. Ask for Seongnam Bundang-gu, not 성남시. If a name is ambiguous (중구 exists in eight provinces) the actor returns the candidate codes rather than guessing.
The lookup table is generated from the Ministry of the Interior's 법정동코드 register and pruned of everything that cannot be queried: abolished districts, renamed ones like 인천 남구 → 미추홀구, 출장소 entries, and parent cities superseded by their 구.
Coverage and timing
Transactions are filed after the contract is signed, so the current month is always thin and fills in over the following weeks. For a settled picture, read months that are at least 30 days old.
Volume varies enormously by district — a busy Seoul district produces 200–400 sales a month, a rural county may produce none. An empty result for a small district usually means there were no sales, not that something broke.
API keys
Works out of the box on a shared key. For scheduled or high-volume runs, get your own — free, approved automatically, about two minutes at data.go.kr. Use the Decoding key; the Encoding one is pre-escaped and will fail. Each key allows 10,000 requests per day.
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 records rows returned, API calls used, how many rows the filters removed, and any districts that could not be resolved, so a scheduled run tells you exactly what happened.
Legality
This actor reads the Ministry of Land, Infrastructure and Transport's official open API, published through data.go.kr for exactly this purpose. No page scraping, no authentication bypass, no personal data — the register identifies buildings and lots, never people.
Built by a fintech CTO. Found a bug, or want 전월세 (rent) or non-apartment property types added? Open an issue on the Issues tab — I read them.