Korean Address Search API: Juso vs Kakao
How to add Korean address search to a form: the Juso API and the keyless Kakao (Daum) postcode service compared, English addresses, storage and testing.
To add Korean address search to a website or app, use one of two free tools: the Kakao postcode service (formerly Daum Postcode), which needs no API key and opens a ready-made search window, or the government's Juso API, which returns raw search results for you to display yourself. Both return road-name addresses, lot-number addresses, the five-digit postcode and an English version. This guide compares them and shows how to store Korean addresses so shipping, invoicing and English correspondence all work.
How are Korean addresses structured?
Korea moved official addresses to a road-name system in 2014, but the older lot-number (jibun) addresses are still in daily use, and many people know both. A complete Korean address has four parts:
| Part | Korean term | Example | Notes |
|---|---|---|---|
| Postcode | 우편번호 | Five digits; Seoul codes begin with 0 | Five digits since August 2015; older six-digit codes are obsolete |
| Road-name address | 도로명주소 | 서울특별시 종로구 세종대로 209 | Province or city, district, road, building number |
| Lot-number address | 지번주소 | The same building by its land parcel number | The older system, still widely recognised |
| Detail address | 상세주소 | 3층, 101동 1203호 | Floor, building and unit, typed by the user |
The order runs from largest to smallest: province or metropolitan city, district, road, building number, then the detail. English addresses reverse that, so the same building is written as "209 Sejong-daero, Jongno-gu, Seoul". That reversal is the main reason a Western "street, city, state, ZIP" form frustrates Korean users: they expect to search for their building and then type only the unit.
Should you use the Juso API or the Kakao postcode service?
Both draw on the official address database run by the Ministry of the Interior and Safety. The difference is how much of the interface you build.
| Kakao postcode service | Juso search API (business.juso.go.kr) | |
|---|---|---|
| What you get | A complete search window (popup or embedded) | JSON or XML search results |
| API key | None | Approval key (승인키), issued on application |
| Cost | Free, including commercial use | Free |
| Usage limit | Kakao states there is no usage limit | Traffic depends on the provider's policy |
| English address | Returned with every result | English field in search results, plus a separate English search API |
| Interface language | Korean search window | You design it |
| Best for | Checkout and sign-up forms that need to work today | Custom search UIs, server-side lookups, bulk work |
For most Korean checkout and sign-up forms, the Kakao service is the faster route: one script, one callback, no key to manage. Choose Juso when the search has to look like the rest of your product, when you need results on the server, or when you want to build your own autocomplete.
Many teams use both: Kakao for the customer-facing form and Juso on the server for clean-up jobs, such as standardising addresses imported from a spreadsheet.
How does the Kakao postcode service work?
Kakao's developer guide is explicit on the terms: no key needs to be issued, there is no usage limit, and it can be used free of charge for any purpose, commercial use included.
You load Kakao's script, create a postcode object with an oncomplete callback, and either call open() for a popup or embed(element) to place the search inside your page. When the user picks an address, the callback receives a data object. The fields you will use most:
zonecode: the five-digit postcode.roadAddressandjibunAddress: the road-name and lot-number addresses.roadAddressEnglishandjibunAddressEnglish: the English versions.userSelectedType:Rif the user chose the road-name result,Jfor lot-number.buildingNameandbname: the building name and legal neighbourhood name, useful for display.
Two details from the guide matter in production. First, the old six-digit postcode fields stopped returning data in March 2020, so read zonecode, not postcode. Second, window.open is unreliable inside mobile webviews, so the guide recommends the embedded (layer) mode for apps and in-app browsers. The second point matters in Korea: visitors often open links from KakaoTalk or the Naver app, both of which use their own in-app browsers.
How does the Juso search API work?
The Juso API is run by the Ministry of the Interior and Safety through its Address-Based Industry Support Service at business.juso.go.kr. You apply for an approval key for your system, and the public data portal's listing for the search API states that approval is automatic for both development and production use.
The search endpoint is a simple GET request to addrLinkApi.do with your key (confmKey), the search text (keyword), paging values (currentPage, countPerPage) and resultType=json if you want JSON instead of XML. Each result carries the full road-name address, the lot-number address, the postcode, an English road-name address, the building management number and administrative codes. A separate endpoint, addrEngApi.do, searches in English, and a coordinates endpoint returns map positions when you pass it the administrative and building codes from a search result.
Errors come back inside the response body with a code and a Korean message rather than as HTTP errors. An unapproved key, for example, returns error code E0001. Log the code, not just the HTTP status, or failures will look like empty searches.
Practical advice for the Juso API:
- Debounce the search. Send a request after the user pauses typing, not on every keystroke.
- Require a few characters. Very short keywords return huge result sets. Ask for a road name, building name or neighbourhood before searching.
- Keep the key on your server if you can. Proxying the request through your backend lets you add caching, rate limiting and logging in one place.
- Show the road-name and lot-number versions together. Users recognise one or the other; showing both reduces wrong picks.
How should a checkout or sign-up form handle Korean addresses?
A Korean address form that works has a search button, three read-only fields filled by the search and one field the user types:
| Field | Filled by | Store as |
|---|---|---|
| Postcode | Search | Text, five characters (keep leading zeros) |
| Base address | Search | Road-name address as returned |
| Lot-number address | Search (optional) | Text, for delivery drivers who still use it |
| Detail address | User | Free text: floor, building, unit |
| English address | Search | Text, for invoices and overseas staff |
Keep the postcode as text, not a number. Seoul postcodes start with zero, and a numeric column silently drops it.
Do not force users to split the detail into separate building and unit fields. Korean apartment addresses (for example 101동 1203호) and office addresses (3층) vary too much, and couriers read the line as written.
If you also accept international orders, put a country selector first and show the Korean search only when Korea is chosen. A single form that tries to serve both usually serves neither well. Our Korean website localization checklist covers the name and phone fields that sit next to the address.
How do you get the English version of a Korean address?
Both services return it, so you rarely need to romanise anything yourself. Kakao includes roadAddressEnglish with every selection. Juso includes an English road-name address in its search results and offers the English search endpoint for people who only know the English form.
Store the English address at the moment of selection, alongside the Korean one. Generating it later from the Korean text is error-prone, and the official romanisation of road names (Sejong-daero, Teheran-ro) is what couriers, banks and government forms expect. The English version is also what your overseas head office or customers will want on invoices and shipping documents.
The detail address remains whatever the user typed, usually in Korean. If you need it in English too, add an optional field rather than machine-translating unit descriptions.
How should you validate and store addresses?
- Trust the search, not free text. If the base address came from Juso or Kakao, it matches the official database at that moment. Mark addresses that were typed manually so you can review them.
- Keep the building management number when you have it. Juso returns it, and it is a stable key for the building even if a road is renamed.
- Save what the user saw. Store the exact string displayed at checkout, so a dispute about a delivery can be checked against what was confirmed.
- Treat addresses as personal information. Under Korea's Personal Information Protection Act, a customer's address is personal data. Collect it only for a stated purpose, such as delivery, and include it in your privacy notice.
How do you test Korean address search?
Test with real addresses, on real phones, in the browsers your users actually use:
- Search by road name, by building name and by lot number, and check that each fills the same fields.
- Pick an address with a postcode starting with zero and confirm it survives the round trip to your database.
- Open the form inside KakaoTalk's and Naver's in-app browsers. If you used the popup mode, this is where it breaks.
- Submit with an empty detail address and decide whether that is allowed for your use case.
- Check the English address on an invoice or confirmation email.
Where does address search fit in a Korean build?
Address search is rarely a project on its own. It usually arrives with a checkout, a booking form or a member sign-up, together with a Korean payment gateway, Kakao or Naver login and identity verification. If you are planning that wider set, read Korean payment gateway integration, Kakao and Naver login integration and PASS identity verification in Korea.
In our pricing catalogue (version 1.1, 23 September 2026), a simple one-way API integration is KRW 0.3M–0.6M, excluding VAT. Address search with the Kakao service usually sits at the low end of that because there is no key or contract to arrange.
Frequently asked questions
Do I need an API key for Daum Postcode?
No. The Daum Postcode service is now the Kakao postcode service, and Kakao's guide states that no key is required, there is no usage limit, and it is free for commercial use. The Juso API from the Ministry of the Interior and Safety does require an approval key.
How do I get the English version of a Korean address?
Use the address search itself. The Kakao postcode service returns roadAddressEnglish and jibunAddressEnglish with each result, and the Juso API returns an English road-name address and has a separate English search endpoint. Store the English version when the user selects the address.
What format is a Korean postcode?
Five digits, in use since August 2015. Store it as text so a leading zero is not lost, and ignore the old six-digit fields, which the Kakao service stopped returning in March 2020.
Is the Kakao postcode service free for commercial use?
Yes. Kakao's developer guide says it can be used free of charge for any purpose, including commercial use, with no key and no usage limit.
Should I store the road-name or the lot-number address?
Store the road-name address as the main value, because it is the official format. Keep the lot-number address as well if your delivery partners or users still refer to it, and record which one the user selected.
Sources
All checked October 2026.
- Kakao, Postcode service guide
- Ministry of the Interior and Safety, Address-Based Industry Support Service (Juso API)
- Public Data Portal, Ministry of the Interior and Safety real-time address search API
- Korea Ministry of Government Legislation, Personal Information Protection Act
Building a Korean checkout or sign-up form?
If you need address search, payments and Korean sign-in wired into one form that works in KakaoTalk's browser, send us your project details. The Korea integrations page lists the Korean services we connect, and the Korea market entry page shows how the pieces fit together for a launch. Consultations, meetings and documents are handled in English by our founder, so the whole project can run in English.

