해외 서버에서 한국 주소를 좌표로 바꾸려면: 도로명주소·카카오·브이월드·SGIS 지오코딩 API 비교
핵심 요약
- 2026년 10월 14일 프랑스에 있는 서버에서 호출하니 도로명주소 API, 카카오 로컬, SGIS, Photon은 응답했고, 브이월드는 세 번 모두 API 응답 없이 연결이 끊기거나 502가 왔어요.
- 도로명주소 좌표제공 API는 승인할 때 '이 자료는 국외로 반출할 수 없음'에 동의해야 해서 해외 서버에서는 쓰기 어렵고, 카카오 로컬은 좌표와 주소 같은 결과를 저장할 수 없어(장소 ID와 URL만 가능) 실시간 검색에만 맞아요.
- SGIS 지오코딩은 키당 하루 50,000회이고 결과 저장을 막는 조항은 없지만, 약관 제7조 제4항에 따라 영업활동에 쓰려면 사전 승낙이 필요해요.
- 공개 데이터 쪽은 도로명주소 20건 중 Photon(OpenStreetMap)이 건물 번호까지 맞힌 것이 2건이었고, Overture 주소 데이터는 서울·인천·부산 세 구역에서 0건이었어요.
서버가 한국 밖에 있고 변환한 좌표를 저장해야 한다면, 저희가 시험한 국내 지오코딩 API 가운데 조건 없이 쓸 수 있는 곳은 없었어요. 도로명주소 좌표제공 API는 국외 반출 금지 서약이, 카카오 로컬은 결과 저장 금지가, SGIS는 영업활동 사전 승낙이 걸리고, 브이월드는 저희 서버에서 응답하지 않았어요.
저희는 공공 CCTV 위치 지도 보는지도를 프랑스에 있는 서버에서 운영해요. 일부 지자체가 CCTV 좌표를 소수점 둘째 자리(약 1km 단위)까지만 공개해서, 함께 적힌 도로명주소로 좌표를 다시 찾을 수 있는지 2026년 10월 14일 하루 동안 알아봤어요. 아래는 그날 직접 호출한 결과와 각 서비스의 약관, 공식 답변을 대조한 기록이에요. 네이버 클라우드 Maps와 Google Geocoding은 이번에 시험하지 않았어요.
국내 API 4곳과 공개 데이터 2곳의 조건
| 서비스 | 프랑스 서버에서 응답 | 국외 반출 | 결과 저장 | 상업적 이용 | 하루 한도 |
|---|---|---|---|---|---|
| 도로명주소 좌표제공 API (행정안전부) | 응답함 | 안내사항에 "국외로 반출할 수 없음" | 안내사항에는 조항 없음 | 안내사항에는 조항 없음 | 확인하지 않음 |
| 카카오 로컬 API | 응답함 | 찾은 조항 없음 | 결과 저장 불가 (장소 ID, URL만 가능) | 허용 (재판매, 기능 유료화는 불가) | 주소 변환, 키워드 검색 각 100,000건 |
| 브이월드 지오코더 | 3회 모두 API 응답 없음 | 약관을 열지 못함 | 약관을 열지 못함 | 약관을 열지 못함 | 약관을 열지 못함 |
| SGIS 지오코딩 (국가데이터처) | 인증 API가 응답함 | 약관에 조항 없음 | 약관에 조항 없음 | 사전 승낙 없이 영업활동 불가 | 키당 50,000회 |
| Photon (OpenStreetMap) | 응답함 | 해당 없음 | ODbL (출처 표시, 동일 라이선스) | 출처를 표시하면 가능 | 공개 서버는 과다 사용 시 제한 |
| Overture Maps 주소 | 파일을 직접 받음 | 해당 없음 | 한국 데이터 없음 | 한국 데이터 없음 | 없음 (파일) |
응답 여부는 키 없이 또는 가짜 키로 호출해서, 서비스가 자기 오류 메시지(승인되지 않은 KEY 입니다 같은)를 돌려주는지로 판단했어요. 각 서비스에 세 번씩 호출했어요.
도로명주소 좌표제공 API는 접속이 되는데도 쓸 수 없었어요
행정안전부 주소정보누리집의 좌표제공 API는 해외에서도 잘 응답해요. 키 없이 부르면 바로 오류 JSON이 와요.
{"results":{"common":{"errorMessage":"승인되지 않은 KEY 입니다.","errorCode":"E0001","totalCount":"0"},"juso":null}}
이 API는 주소 문자열을 받지 않아요. 요청 변수가 행정구역코드(admCd), 도로명코드(rnMgtSn), 지하여부(udrtYn), 건물본번(buldMnnm)이라서, 먼저 도로명주소 검색 API로 주소를 찾아 이 코드들을 받은 뒤 좌표 API를 부르는 2단계 구조예요. 승인키도 따로 받아야 해요. 오류 코드 안내에 "검색API 승인키 사용불가"라고 적혀 있어요.
막히는 지점은 좌표 API 승인키를 신청할 때 동의하는 안내사항이에요. 2026년 10월 14일 신청 화면에는 이렇게 적혀 있었어요.
가. 이 자료를 활용하는 경우 비공개·공개제한 시설을 추가하거나 인터넷, 내비게이션, 모바일 등을 통해 좌표를 표시할 수 없음 나. 이 자료는 국외로 반출할 수 없음
이어서 도로명주소법, 국가공간정보기본법, 공간정보의 구축 및 관리 등에 관한 법률, 행정안전부 공간정보 보안관리 규정 등 관련 법령을 지키겠다는 보안각서에도 동의해야 해요.
서버가 해외에 있으면 API 응답을 받는 순간 자료가 국외에 있게 되니, '나' 항목을 지키면서 쓰는 방법을 찾지 못했어요. '가' 항목은 비공개 시설의 좌표 표시를 막는 뜻으로도, 인터넷 지도에 좌표를 표시하는 것 전반을 막는 뜻으로도 읽혀서, 문장만으로는 범위가 분명하지 않아요.
도로명주소법 조문만 보면 금지 대상은 더 좁아요. 제25조 제10항은 "「국가공간정보 기본법」에 따라 공개가 제한되는 정보가 포함된 주소정보기본도 및 주소정보안내도"를 허가 없이 국외로 반출하는 것을 금지하고, 제34조 제2항이 이를 2년 이하의 징역 또는 2천만원 이하의 벌금으로 처벌해요(2025년 2월 21일 시행본 기준). 다만 서약은 승인 조건이라 조문보다 넓게 적용될 수 있고, 공간정보 관련 다른 법령은 검토하지 않았어요. 이 부분은 개발자가 읽은 기록이지 법률 자문이 아니에요. 저희는 승인키를 받은 뒤 한 번도 호출하지 않았어요. 해외 서버에서 써도 되는지는 주소정보누리집 문의 게시판이나 대표전화(1588-0061)로 확인하는 것이 정확해요.
위치정보를 API가 아닌 파일로 받는 길도 있어요. 도로명주소법 시행령 제46조(2026년 1월 2일 시행본)에 따라 이용 목적, 보호 대책과 보안에 관한 사항을 적어 요청하면, 기관이 목적의 적정성을 검토해 10일(장관에게 시스템 연계를 요청하면 30일) 안에 제공 여부를 정해요. 국가안보나 비공개 사항에 해당하는 내용은 빼거나 사용 범위를 제한해 제공할 수 있고(법 제25조 제6항), 원칙적으로 유상이에요(제7항). 개인 프로젝트에 바로 쓸 수 있는 경로는 아니에요.
카카오 로컬은 실시간 호출만 되고, 좌표를 남길 수 없어요
카카오 로컬은 해외에서도 응답하고(키가 없으면 401, cannot find Authorization : KakaoAK header), 하루 무료 한도도 커요. 카카오디벨로퍼스 쿼터 문서 기준으로 주소로 좌표 변환과 키워드로 장소 검색이 각각 하루 100,000건이에요. 이 무료 쿼터는 개발자 계정에서 카카오맵 API를 처음 활성화한 앱 하나에만 주고, 두 번째 앱부터나 한도를 넘길 때는 비즈월렛을 연결해 유료로 써야 해요.
걸리는 것은 저장이에요. DevTalk의 공식 FAQ는 "로컬 API 등을 호출하여 응답받은 결과 데이터를 별도로 저장하여 사용하는 것은 허용하지 않습니다"라고 적고 있고, 카카오 지도·로컬 담당자의 답변은 이 원칙을 엄격하게 적용해요. 날짜는 한국 시간 기준이에요.
| 질문 | 카카오 답변 (DevTalk, 2026년) |
|---|---|
| 카카오맵 SDK가 아닌 다른 지도 위에 로컬 API 결과를 표시 | 약관상 이슈 없음, 실시간 호출만 가능 (6월 29일) |
| 검색 결과를 한 세션 동안 최대 20분 임시 저장 | 허용하지 않음 (8월 24일) |
| 사용자가 직접 저장한 거래처의 좌표 저장 | 허용하지 않음 (9월 4일) |
| 사용자가 고른 매물의 주소와 좌표 저장 | 좌표 저장은 불가, 장소 ID와 URL은 저장 가능 (9월 28일) |
| 응답의 상호명·주소로 다른 회사 지도 검색 링크 만들기 | 운영정책 위배 (9월 7일) |
| 지도 JavaScript SDK를 AdSense 광고가 있는 사이트에서 사용 | 약관 위반 아님, 상업 목적이면 비즈앱 전환 요청 (2월 3일) |
| 상용 앱에서 로컬 API를 쓰려면 비즈앱 전환이 필요한가 | 무료 쿼터 안이면 필요 없음 (8월 25일) |
비즈앱 전환은 지도 SDK 질문과 로컬 API 질문에서 답이 달랐으니, 상업 서비스라면 출시 전에 자기 앱 키를 등록한 계정으로 직접 물어보는 것이 안전해요. FAQ도 문의는 앱 키를 등록한 계정으로 해야 정확한 안내가 가능하다고 적고 있어요.
장소 ID만 저장하는 방법에도 함정이 있어요. 20분 임시 저장을 물은 같은 글에서 담당자는 장소 ID만 기록하는 방향은 허용 가능하다고 하면서도 "로컬 API는 ID 기반 단건 조회 API를 제공하지 않아" 다시 불러오는 방법은 서비스가 직접 설계해야 한다고 답했어요(8월 26일). 주소를 좌표로 바꾸는 응답에는 장소 ID도 없으니, 지오코딩 결과로 남길 수 있는 것은 사실상 없어요. 카카오 로컬은 사용자가 입력할 때마다 부르는 검색창에는 쓸 수 있지만, 이미 가진 데이터의 좌표를 고쳐 저장하는 데는 쓸 수 없어요.
브이월드는 연결 뒤에 끊겼어요
브이월드 지오코더(api.vworld.kr)는 TLS 연결까지 되고 인증서 검증도 통과했지만, 요청을 보내면 응답이 오지 않았어요. 응답 확인 스크립트로 세 번 부르니 두 번은 502 Bad Gateway, 한 번은 응답 없이 연결이 끊겼고, 같은 날 curl -v로 다시 보면 HTTP/2 요청이 거절된 뒤 다섯 번 재시도하고 포기해요.
* SSL certificate verify ok.
> GET /req/address?service=address&request=getcoord&key=INVALID&address=test&type=road HTTP/2
* REFUSED_STREAM, retrying a fresh connect
* Connection died, tried 5 times before giving up
키가 틀렸다는 오류조차 오지 않으니 키 문제는 아니에요. 원인이 해외 IP 제한인지 다른 것인지는 확인하지 못했어요. www.vworld.kr도 같은 상태라 저희 서버에서는 약관 페이지도 열 수 없었고, 그래서 표의 약관 칸을 비워 두었어요.
SGIS는 하루 5만 회, 영업활동이면 사전 승낙부터
국가데이터처 SGIS의 API는 해외에서도 응답했어요(가짜 키로 인증을 요청하면 {"errCd":-401,"errMsg":"인증정보가 존재하지 않습니다"}). API 문서를 보면 지오코딩 결과 좌표는 UTM-K라서 웹 지도에 올리려면 WGS84로 변환해야 해요.
약관에서 확인할 것은 두 조항이에요.
- 제4조 제2항: 하나의 키당 1일 50,000회 이하로 제한하며, 초과하면 서비스가 중지될 수 있어요.
- 제7조 제4항: 회원은 "사전 승낙 없이 서비스를 이용하여 영업활동을 할 수 없으며". 승낙하는 기관은 화면에는 국가데이터처로, 페이지 원본에는 개편 전 이름인 통계청으로 적혀 있어요.
광고를 붙인 사이트가 영업활동에 해당하는지는 약관에 정의가 없어요. 결과 저장을 막는 조항은 찾지 못했어요. 저희는 승낙 절차를 밟기 전에 외부 지오코딩을 쓰지 않기로 정해서, 키를 받아 결과 품질을 시험하지는 않았어요.
OpenStreetMap과 Overture에는 건물 번호가 드물어요
라이선스 조건이 분명한 공개 데이터도 시험했어요. 행정안전부 전국CCTV표준데이터에서 좌표가 소수점 다섯 자리 이상으로 적혀 있고 주소가 시·도 이름으로 시작하는 행의 도로명주소 45,929개 가운데 20개를 고정된 시드로 뽑아, 주소 전체를 Photon으로 검색했어요. 상위 5개 결과 중 도로명과 건물 번호가 모두 맞는 결과가 나온 것은 20건 중 2건이었어요. 맞은 두 건은 미용실과 파출소처럼 이름이 붙은 건물이었고, 나머지는 도로 이름, 번호가 다른 건물, 동 이름이 나오거나 결과가 없었어요.
이름이 없는 건물은 다르게 와요. 따로 시험한 서귀포시 서성일로 74와 강서구 화곡로41길 30은 건물 번호까지 맞았는데, 결과의 type이 house이고 name이 비어 있었어요. 검색 결과를 이름으로 거르는 코드라면 이런 결과가 모르는 사이에 빠지니, 건물 번호 결과를 살리고 싶다면 name이 없는 house 결과를 따로 다뤄야 해요.
Overture Maps는 2026-09-23.1 릴리스의 주소 데이터를 서울 종로, 인천 미추홀구, 부산 해운대 세 구역에서 받아 보니 모두 0건이었어요. 같은 방법으로 뉴질랜드 오클랜드 도심을 받으면 33,093건이 나와서, 도구가 아니라 데이터에 이 구역들의 주소가 없는 거예요. Overture 문서는 주소 테마가 현재 41개 나라를 다룬다고 적고 있어요.
보는지도는 공개된 좌표를 그대로 써요
보는지도는 지자체가 공개한 좌표를 다시 찾지 않고, 좌표가 거친 위치는 점을 흐리게 그리고 촬영 범위를 표시하지 않아요. 그래서 2026년 10월 14일 기준 촬영 범위를 그리는 지점은 238,982곳이에요. 거친 좌표가 얼마나 되는지는 공공데이터 CCTV 개수 분석 글의 좌표 자릿수 항목에 정리했어요. 검색은 계속 OpenStreetMap 기반 Photon으로 장소와 도로 이름을 찾고, 건물 번호가 붙은 주소를 입력하면 건물 번호는 찾지 못한다는 안내를 보여 줘요. 서버를 국내로 옮기거나, 행정안전부가 해외 서버 이용에 대해 답을 주거나, 저장할 수 있는 국내 주소 좌표 데이터가 생기면 다시 검토할 생각이에요.
시험 방법
- 응답 확인: 2026년 10월 14일 11:47(UTC), 프랑스에 있는 서버에서 서비스마다 키 없이 또는 가짜 키로 세 번씩 호출했어요. 서비스 자신의 오류 메시지가 오면 '응답함', 게이트웨이 오류나 연결 끊김이면 '응답 없음'으로 봤어요. 브이월드는 12:31(UTC)에
curl -v로 한 번 더 확인했어요. - 건물 번호: 2026년 9월 20일 내려받은 전국CCTV표준데이터에서 위 조건에 맞는 도로명주소를 중복 없이 모아 시드 20261014로 20개를 뽑고, Photon 공개 서버에 주소 전체로 검색했어요. OSM은 계속 바뀌니 다시 돌리면 숫자가 달라질 수 있어요.
- 이름 없는 건물 사례: 같은 데이터의 주소 다섯 개를 Photon에 검색한 별도 시험에서 나왔어요.
- Overture: 공식
overturemaps명령줄 도구로 구역별 주소 데이터를 받아 개수를 셌어요. - 약관과 답변은 바뀔 수 있어요. 아래 출처는 모두 2026년 10월 14일에 확인했어요.
출처
- 주소정보누리집, 좌표제공 검색 API 안내
- 국가법령정보센터, 도로명주소법 제25조, 제34조, 도로명주소법 시행령 제46조
- 카카오디벨로퍼스, 쿼터, 카카오맵 이해하기
- 카카오 DevTalk, 카카오맵 API (지도/로컬) 문의 전 꼭 읽어 주세요 및 위 표의 각 답변
- SGIS 오픈플랫폼, API 이용약관, API 상세
- OpenStreetMap, 저작권 및 라이선스
- komoot, Photon 이용 조건
- Overture Maps, Addresses guide
자주 묻는 질문
한국 안에 서버가 있으면 도로명주소 좌표 API를 써도 되나요?
국외 반출 항목에는 걸리지 않는 것으로 보이지만, 안내사항의 다른 항목(비공개·공개제한 시설, 좌표 표시)과 보안각서는 그대로 적용돼요. 지도 서비스에 좌표를 표시하려는 경우라면 승인 전에 주소정보누리집에 용도를 설명하고 확인받는 것이 좋아요.