Scraper Hub API

구글 트렌드 탐색 (윈도우 수집기)

플레이그라운드에서 수집 →

채널 코드 google_trends_explore · 수집 환경 windows

구글 트렌드 탐색(trends.google.co.kr/explore) 화면에서 검색어의 관심도 변화를 수집합니다 — 시간 흐름(0~100) · 검색어별 평균/최근/최고 · 지역별 관심도 · 지역별 비교 · 관련 검색어/주제(인기 · 급상승). 비교(compare)는 검색어 최대 5개를 한 차트에, 개별(separate)은 검색어마다 따로 검색해 검색 1번 = 결과 1건(extra 에 그래프 값 전체). 사무실 윈도우 PC 의 트렌드 수집기 앱이 Chrome 화면에서 지역 · 기간 · 카테고리를 고르고 검색어를 사람처럼 입력하므로 비교 1건은 약 30~40초, 개별은 검색어당 약 15~25초 + 쉬는 시간(50개면 30~40분)이 걸리고, 한 서버는 한 번에 한 요청만 처리합니다. server 를 비우면 허브가 지금 가능한 트렌드 수집 서버를 골라 배정합니다. ⚠️ 구글 보안 확인(캡차)·쿠키 동의 화면이 뜨면 기다리지 않고 failed 로 끝나고(재시도 없음 — 수집 PC 의 Chrome 에서 사람이 푼 뒤 다시 요청), 구글이 요청을 잠시 거절(429)하면 수집 PC 가 쉬었다가 다시 하고, 그래도 안 되면 그 요청만 실패해 약 10분 뒤 자동으로 다시 시도합니다(막힘 아님).

요청 파라미터

아래 값들을 POST /api/v1/collect 의 params 객체에 담아 보냅니다.

키타입필수기본설명
server text — — 비우면 허브가 지금 구글 트렌드 수집이 가능한 서버(온라인 · 접속 막힘 아님 · 대기 작업 적은 순)를 골라 배정하고, 응답의 server 로 알려줌. 특정 서버로 보내려면 그 서버 ID(GET /trends-servers 로 조회)
keywords text 예 — 배열(["a","b"]) 또는 줄바꿈 · 쉼표 · 탭 · 세미콜론 구분 문자열. 앞뒤·연속 공백은 정리, 대소문자만 다른 중복은 하나로, # 으로 시작하는 항목은 무시. 비교 최대 5개 · 개별 최대 50개, 검색어당 100자
mode enum — — 비우면 검색어 5개 이하는 compare, 넘으면 separate. compare 에 6개 이상은 422
geo text — KR 코드 또는 이름 — KR · KR-11 · US · US-CA · 대한민국 · 서울특별시 · WORLD(전 세계). 비우면 KR. 이름이 여러 곳이면 코드로
period enum — today 12-m 맞춤 기간(start_date · end_date)을 주면 이 값은 무시
start_date date (YYYY-MM-DD) — — end_date 와 함께 주면 period 대신 맞춤 기간 (2004-01-01 ~ 오늘, 한국 시간)
end_date date (YYYY-MM-DD) — — start_date 와 함께. 오늘(한국 시간)까지
category text — 0 탐색 카테고리 ID 또는 이름 (0 = 모든 카테고리, 71 = 식음료, 917 = 음식점 안내 …). 이름이 여러 가지에 있으면 ID 로
property enum — web 검색 유형

선택 칸 값 목록

아래 칸은 이 값만 받습니다(그 밖의 값은 422 invalid_params). 비우면 기본값입니다.

키값뜻
mode(비움)자동 — 5개 이하 비교, 넘으면 개별
compare비교 — 한 차트에 함께(최대 5개)
separate개별 — 검색어마다 따로(최대 50개)
periodnow 1-H지난 1시간
now 4-H지난 4시간
now 1-d지난 1일
now 7-d지난 7일
today 1-m지난 30일
today 3-m지난 90일
today 12-m지난 12개월 — 기본
today 5-y지난 5년
all2004 - 현재
propertyweb웹 검색 — 기본
images이미지 검색
news뉴스 검색
shoppingGoogle 쇼핑
youtubeYouTube 검색
기간 — period 또는 맞춤 기간 — start_date · end_date 를 둘 다 주면 period 대신 그 기간입니다(2004-01-01 ~ 오늘(한국 시간), 시작 ≤ 끝 — 하나만 주거나 범위를 벗어나면 422). 그래프 한 점의 단위(시간 · 일 · 주 · 월)는 기간 길이에 따라 구글이 정하며 extra.time.resolution 에 옵니다 — 시간 단위면 timeline[].date 에 시각이 붙습니다.
값 읽는 법 — 0~100 은 검색 수가 아니라 그 검색 안의 상대 관심도입니다(그 기간 · 지역에서 가장 높은 점 = 100). 비교(compare)는 한 그래프에 함께 그려 검색어끼리 견줄 수 있지만, 개별(separate)은 검색어마다 따로 100 을 기준으로 하므로 서로 견주면 안 됩니다. partial: true 인 마지막 점은 아직 끝나지 않은 구간이라 낮게 나올 수 있습니다. regions_compare 는 지역마다 검색어끼리 나눈 비중(%)입니다.

요청 예시

curl -X POST https://scraper.conbus.co.kr/api/v1/collect \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "channel": "google_trends_explore", "params": { "keywords": [ "파리바게트", "뚜레쥬르" ], "mode": "compare", "geo": "KR", "period": "today 3-m", "category": "0", "property": "web" } }'

응답 (202 Accepted)

요청은 즉시 큐에 적재되고 request_id 를 돌려줍니다. 실제 수집은 워커가 비동기로 처리합니다.

{ "success": true, "data": { "request_id": 42, "channel": "google_trends_explore", "status": "pending", "status_url": "https://scraper.conbus.co.kr/api/v1/requests/42" } }

결과 조회 — GET /requests/{id}

같은 API 키로 request_id 를 조회합니다. 상태에 따라 응답이 달라집니다. 결과(items)는 요청별로 보관되므로 같은 글이 다른 요청(다른 키워드·재수집)에 겹쳐도 이 요청의 결과는 그대로입니다 — 여러 요청에 걸친 중복 정리는 post_id로 호출 쪽에서 하세요. 보존 기간은 완료 후 7일입니다. 이 채널은 '지금 상태'가 중요한 데이터라 짧게 보관합니다 — 결과는 받은 즉시 저장하세요. 보존 기간이 지나면 items 는 빈 배열이고 items_expired: true, items_keep_days 가 함께 옵니다(status 는 그대로 done).

진행 중 (pending / running)

아직 끝나지 않았으면 progress 로 진행 상황만 옵니다(items 없음).

{ "success": true, "data": { "request_id": 42, "channel": "google_trends_explore", "status": "running", "external_ref": null, "result_count": null, "started_at": "2026-10-14T13:18:21+09:00", "finished_at": null, "duration_ms": null, "duration_sec": null, "created_at": "2026-10-14T13:18:20+09:00", "updated_at": "2026-10-14T13:18:51+09:00", "progress": { "count": 0, "phase": "explore" }, "elapsed_ms": 30000, "server": "win-trends-01", "server_online": true } }

progress.count 는 끝낸 검색 수입니다(비교는 0 → 1, 개별은 검색어 수까지). 고정 배정 채널이라 server(배정된 수집 서버)와 server_online 이 함께 옵니다 — 대기가 길면 수집 서버가 온라인인지 확인하세요. 구글 요청 제한(429)으로 실패해 다시 시도를 기다리는 동안에도 pending 으로 보입니다(수집 PC 가 429 로 잠깐 쉬는 동안은 running).

완료 (done)

status 가 done 이면 data.items[] 에 결과가 담깁니다. 실패 시엔 status: "failed" 와 error 가 옵니다.

{ "success": true, "data": { "request_id": 42, "channel": "google_trends_explore", "status": "done", "external_ref": null, "result_count": 1, "started_at": "2026-10-14T13:18:21+09:00", "finished_at": "2026-10-14T13:19:02+09:00", "duration_ms": 41000, "duration_sec": 41, "created_at": "2026-10-14T13:18:20+09:00", "updated_at": "2026-10-14T13:19:02+09:00", "items": [ { "post_id": "explore|파리바게트+뚜레쥬르|KR|today 3-m|0|web", "url": "https://trends.google.co.kr/trends/explore?date=today%203-m&geo=KR&q=%ED%8C%8C%EB%A6%AC%EB%B0%94%EA%B2%8C%ED%8A%B8,%EB%9A%9C%EB%A0%88%EC%A5%AC%EB%A5%B4&hl=ko", "title": "파리바게트 vs 뚜레쥬르", "author": null, "posted_at": "2026-10-14T13:19:01+09:00", "posted_at_raw": "2026-10-14T13:19:01+09:00", "views": null, "comment_count": null, "recommends": null, "body": "지역 대한민국 · 지난 90일 (2026-07-14 2026-10-14, DAY) · 모든 카테고리 · 웹 검색\n파리바게트: 평균 41 · 최근 48 (2026-10-13) · 최고 100 (2026-08-21)\n뚜레쥬르: 평균 18 · 최근 20 (2026-10-13) · 최고 44 (2026-08-15)\n지역별 비교: 충청남도 파리바게트 74%/뚜레쥬르 26%\n[파리바게트] 상위 지역: 서울특별시 100\n[뚜레쥬르] 관련 검색어(인기): 뚜레쥬르 케이크(100)\n[뚜레쥬르] 관련 검색어(급상승): 뚜레쥬르 spc(+190%)", "source": "Google 트렌드 탐색 · 대한민국 · 지난 90일", "extra": { "kind": "trends_explore", "source_kind": "google_trends_explore", "query": "파리바게트 vs 뚜레쥬르", "keywords": [ "파리바게트", "뚜레쥬르" ], "status": "ok", "geo": { "code": "KR", "name": "대한민국", "path": [ "대한민국" ] }, "time": { "code": "today 3-m", "label": "지난 90일", "range": "2026-07-14 2026-10-14", "resolution": "DAY" }, "category": { "id": 0, "name": "모든 카테고리", "path": [] }, "property": { "code": "", "key": "web", "name": "웹 검색" }, "keyword_stats": [ { "keyword": "파리바게트", "has_data": true, "average": 41, "average_source": "google", "latest": 48, "latest_date": "2026-10-13", "peak": 100, "peak_date": "2026-08-21", "points": 93 }, { "keyword": "뚜레쥬르", "has_data": true, "average": 18, "average_source": "google", "latest": 20, "latest_date": "2026-10-13", "peak": 44, "peak_date": "2026-08-15", "points": 93 } ], "timeline": [ { "time": 1783987200, "date": "2026-07-14", "label": "2026. 7. 14.", "values": [ 35, 18 ], "has_data": [ true, true ], "partial": false }, { "time": 1792022400, "date": "2026-10-14", "label": "2026. 10. 14.", "values": [ 44, 19 ], "has_data": [ true, true ], "partial": true } ], "regions_compare": { "resolution": "provinces", "mode": "PERCENTAGES", "rows": [ { "code": "KR-44", "name": "충청남도", "values": [ 74, 26 ], "formatted": [ "74%", "26%" ] } ] }, "regions": [ { "keyword": "파리바게트", "resolution": "provinces", "rows": [ { "code": "KR-11", "name": "서울특별시", "value": 100, "values": [ 100 ], "formatted": [ "100" ] } ] } ], "related_topics": [], "related_queries": [ { "keyword": "뚜레쥬르", "top": [ { "rank": 1, "query": "뚜레쥬르 케이크", "value": 100, "formatted": "100", "link": "https://trends.google.co.kr/trends/explore?q=%EB%9A%9C%EB%A0%88%EC%A5%AC%EB%A5%B4%20%EC%BC%80%EC%9D%B4%ED%81%AC&date=today%203-m&geo=KR" } ], "rising": [ { "rank": 1, "query": "뚜레쥬르 spc", "value": 190, "formatted": "+190%", "link": "https://trends.google.co.kr/trends/explore?q=%EB%9A%9C%EB%A0%88%EC%A5%AC%EB%A5%B4%20spc&date=today%203-m&geo=KR" } ] } ], "widgets_missing": [], "searched_at": "2026-10-14T13:19:01+09:00", "url": "https://trends.google.co.kr/trends/explore?date=today%203-m&geo=KR&q=%ED%8C%8C%EB%A6%AC%EB%B0%94%EA%B2%8C%ED%8A%B8,%EB%9A%9C%EB%A0%88%EC%A5%AC%EB%A5%B4&hl=ko" } } ] } }

result_count 는 받은 검색 수입니다(비교는 1, 개별은 검색어 수 — 데이터 없음 포함, 실패한 검색 제외). 결과에 없는 검색이 있으면 같은 층에 warnings 가 붙습니다 — 값은 검색 이름(비교는 a vs b). 예(개별 모드 검색어 4개 중 1개 실패 · 2개는 시간 상한으로 못 돌림):

"warnings": { "search_failed": ["뚜레쥬르"], "not_run": { "keywords": ["성심당", "던킨"], "reason": "timeout" } }

search_failed = 검색에 실패해 뺀 검색(이전 결과를 빈 값으로 덮지 않으려고) · not_run = 시간 상한(timeout)이나 연속 실패(errors)로 돌리지 못한 검색 — 그 검색만 다시 요청하세요.

실패 (failed)

status 가 failed 면 error 에 사유가 옵니다(items 없음). 실패는 두 가지입니다 — 사람이 처리해야 하거나 다시 해도 같은 결과인 것은 바로 failed, 잠시 뒤 풀릴 수 있는 것은 자동으로 다시 시도합니다(요청당 3번까지 — 그동안 pending 으로 보이고, 다 쓰면 마지막 사유 + 시도 3회 모두 실패해 종결했습니다).

error 의 시작뜻재시도
구글 트렌드 보안 확인(캡차) 화면이 떠 수집을 멈췄습니다 …수집 중 구글 보안 확인(쿠키 동의 화면도 같은 꼴) — 수집 PC 에서 사람이 처리할 때까지 그 서버는 새 요청을 409 account_blocked 로 거절없음
[blocked] 구글 트렌드 보안 확인(캡차)으로 멈춘 상태라 …막힌 동안 수집 서버가 받은 요청 — 구글에 접속하지 않고 돌려보냄없음
구글 트렌드 보안 확인 필요 — 수집 서버 …막힌 서버에 배정돼 기다리던 요청을 허브가 끝냄(쿠키 동의면 구글 트렌드 쿠키 동의 필요 — …)없음
[invalid_payload] …수집 PC 가 요청 값을 받지 못함 — 예: 알 수 없는 지역입니다: '…' · 위치 이름 '…' 이 여러 곳입니다 · 알 수 없는 카테고리입니다: '…' — 코드 · ID 로 다시 요청없음
결과가 허브 본문 한도를 넘었습니다(413, …)결과가 너무 큼 — 검색어 수 · limit 을 줄여 다시 요청없음
수집 서버(로컬)에서 취소됨수집 PC 에서 사람이 취소없음
연속 실패로 멈춤 … / 모든 검색이 실패했습니다 …구글이 요청을 계속 거절(429 — 쉬었다가 다시 해도 같음, 문구에 429: 예 연속 실패로 멈춤(구글이 요청을 거절(429) — 쉬었다가 다시 해도 같음) — …) 또는 화면 변경 · 일시 오류 의심 — 받은 검색이 하나라도 있으면 failed 가 아니라 done + warnings10분 뒤
수집용 Chrome 문제 — …수집 PC 의 수집용 Chrome 실행 · 연결 문제5분 뒤
작업 시간 상한(…분) 초과로 중단 — 모은 결과 없음수집 PC 의 시간 상한(기본 60분)까지 아무것도 받지 못함(받은 검색이 있으면 done + warnings.not_run)잠시 뒤
{ "success": true, "data": { "request_id": 42, "channel": "google_trends_explore", "status": "failed", "external_ref": null, "result_count": 0, "started_at": "2026-06-16T09:00:05+09:00", "finished_at": "2026-06-16T09:00:16+09:00", "duration_ms": 11000, "duration_sec": 11, "created_at": "2026-06-16T09:00:00+09:00", "updated_at": "2026-06-16T09:00:16+09:00", "error": "구글 트렌드 보안 확인(캡차) 화면이 떠 수집을 멈췄습니다(기다리지 않음) — 수집 PC 의 수집용 Chrome 에서 사람이 확인한 뒤 앱의 [이상 없음 확인] 을 누르고 다시 요청하세요 (Google 보안 확인(캡차)이 떠서 수집을 멈췄습니다(실패) — 수집용 Chrome 창에서 직접 확인을 끝낸 뒤 앱에서 [이상 없음 확인] 을 누르세요)" } }

최상위 data에는 항상 request_id·channel·status·external_ref·result_count·started_at·finished_at·duration_ms·duration_sec·created_at·updated_at이 포함되고, 상태에 따라 items(done)·progress+elapsed_ms(진행 중)·error(failed/cancelled)가 추가됩니다. duration_*는 허브가 잰 수집 소요 시간(시작~종료) — 자세히는 비동기 & 콜백. 요청을 잘못 시작했다면 취소 API로 중단할 수 있습니다.

결과 필드 (items[])

필드설명
post_id검색 조건 묶음 — explore|검색어+검색어|지역코드|기간코드|카테고리ID|검색유형(전 세계는 WORLD, 190자가 넘으면 앞 150자 + | + sha1 앞 20자). 결과는 검색 1번 = 1건 — 비교 모드는 1건(검색어 최대 5개가 한 결과에), 개별 모드는 검색어마다 1건. 허브 축적본에서는 같은 검색이 가장 최근 결과로 바뀌고, 요청별 결과(GET /requests/{id})는 요청마다 따로 남습니다
url결과 화면(트렌드 탐색) 주소 — extra.url 과 같음
title / bodytitle=비교 모드는 검색어 vs 검색어, 개별 모드는 검색어 / body=사람이 읽는 요약(여러 줄 — 조건 · 검색어별 평균/최근/최고 · 지역별 비교 · 상위 지역 · 관련 검색어/주제 각 5개, 데이터 없음이면 그 안내). 프로그램에서는 extra 를 쓰세요
author항상 null
posted_at작성 시각 (ISO8601, KST) — 이 채널은 검색(수집) 시각입니다(extra.searched_at · posted_at_raw 와 같음)
views / comment_count항상 null
recommends항상 null
sourceGoogle 트렌드 탐색 · 지역 이름 · 기간 이름
extra.kind / source_kindtrends_explore / google_trends_explore
extra.query / keywords / status검색 이름(비교는 a vs b) · 검색어 배열(이 순서가 아래 values 순서) · ok 또는 no_data(검색량이 부족해 그래프가 없음 — 데이터 없음도 한 건으로 옴)
extra.geo / time / category / property실제로 검색한 조건 — geo{code, name, path} · time{code, label, range, resolution}(resolution = 그래프 한 점의 단위 HOUR·DAY·WEEK·MONTH …) · category{id, name, path} · property{code, key, name}
extra.keyword_stats[]검색어별 숫자 {keyword, has_data, average, average_source, latest, latest_date, peak, peak_date, points} — average_source 는 google(비교 모드에서 구글이 준 평균) 또는 calc(그래프 값으로 계산)
extra.timeline[]시간 흐름(그래프) {time(epoch 초), date, label, values[], has_data[], partial} — values 는 0~100(기간 안 최고점 = 100, 검색어 순서), partial=true 는 아직 끝나지 않은 마지막 구간. 시간 단위 기간이면 date 에 시각(2026-10-14T05:00+09:00)
extra.regions_compare지역별 비교 — 검색어 2개 이상일 때만(1개면 null). 지역마다 검색어끼리 나눈 비중 {resolution, mode, rows[{code, name, values[], formatted[]}]}
extra.regions[]검색어별 지역 관심도(그 검색어에서 가장 높은 지역 = 100) {keyword, resolution, rows[{code, name, value, values, formatted}]}
extra.related_queries[] / related_topics[]검색어별 관련 검색어 · 주제 {keyword, top[], rising[]} — 항목 {rank, query(주제는 title · type · mid), value, formatted, link}, 급상승의 formatted 는 +190% 꼴. 관련 주제는 검색어 1개일 때만(비교 화면에는 없음), 구글이 빈 목록을 줄 때도 많습니다
extra.widgets_missing[]받지 못한 화면 부분(있으면 그 부분만 빈 값)
extra.searched_at / url검색 시각(KST) · 결과 화면 주소
채널 참고
  • 수집 서버 자동 선택 — server 는 선택입니다. 비우면 허브가 지금 구글 트렌드 수집이 가능한 서버(온라인 · 접속 막힘 아님 · 대기 작업 적은 순)를 골라 배정하고 202 응답의 server 로 알려줍니다. 가능한 서버가 없으면 409 no_trends_server(서버별 이유 포함). 특정 서버로 보내려면 GET /trends-servers 의 서버 이름을 넣으세요 — 오프라인이면 409 server_offline, 구글 접속이 막힌 상태면 409 account_blocked, 트렌드 수집기가 없는 서버면 422 not_trends_server. 배정은 요청 시점에 고정됩니다.
  • keywords 는 배열(["a","b"]) 또는 줄바꿈 · 쉼표 · 탭 · 세미콜론으로 나눈 문자열입니다. 앞뒤·연속 공백은 정리하고, 대소문자만 다른 중복은 하나로 합치며, # 으로 시작하는 항목은 무시합니다. 비교(compare) 최대 5개 · 개별(separate) 최대 50개 · 검색어당 100자 — 넘으면 요청 단계에서 422 invalid_params. mode 를 비우면 5개 이하는 비교, 넘으면 개별입니다(정한 값은 요청의 mode 로 남음).
  • 지역 · 카테고리는 코드(KR · KR-11 · US-CA · 카테고리 ID)나 화면 이름(대한민국 · 서울특별시 · 식음료)으로 넣습니다. 이름은 수집 PC 의 트렌드 목록으로 해석합니다 — 여러 곳에 있는 지역 이름은 그중 나라가 하나뿐이면 그 나라(조지아 → GE)이고, 모르는 이름이거나 그래도 하나로 정해지지 않는 이름(여러 카테고리에 있는 카테고리 이름 포함)이면 그 요청은 failed([invalid_payload] …, 재시도 없음) — 코드로 다시 요청하세요. 전 세계는 WORLD, 비우면 KR. 탐색 카테고리 ID 는 실시간 인기 카테고리 ID 와 다른 목록입니다(예: 탐색 71 = 식음료).
  • 오래 걸립니다 — 수집 PC 의 Chrome 이 트렌드 화면에서 지역 · 기간 · 카테고리를 고르고 검색어를 사람처럼 입력하므로 비교 1건은 약 30~40초, 개별은 검색어당 약 15~25초 + 쉬는 시간(검색 사이 8~20초 · 10개마다 1~3분), 50개면 30~40분입니다. 한 서버는 한 번에 한 요청만 처리하므로 뒤에 온 요청은 앞 요청이 끝날 때까지 pending 으로 기다립니다(서버가 작업 중이면 대기 시간 상한으로 끊지 않음).
  • 결과에 없는 검색 — 검색량이 부족한 검색은 extra.status = "no_data" 인 한 건으로 옵니다. 검색에 실패한 검색(일시 오류 등)은 이전 결과를 빈 값으로 덮지 않도록 items 에서 빠지고 warnings.search_failed(검색 이름 배열)에 남습니다. 한 요청의 시간 상한(수집 PC 설정, 기본 60분)에 닿거나 연속 3번 실패하면 그때까지 받은 검색으로 done 하고 못 돌린 검색은 warnings.not_run({keywords, reason} — timeout · errors)입니다 — 그 검색만 다시 요청하세요. 하나도 받지 못했으면 failed(자동 재시도)입니다.
  • 구글이 막을 때 — 보안 확인(캡차) · 쿠키 동의 화면이 뜨면 기다리지 않고 failed(재시도 없음)로 끝나고, 그 서버는 사람이 수집 PC 의 Chrome 에서 처리할 때까지 요청을 받지 않습니다(409 account_blocked — 막힌 종류·시각은 GET /trends-servers 의 blocked_kind · blocked_since). 구글이 요청을 잠시 거절(HTTP 429)하는 것은 막힘이 아닙니다 — 수집 PC 가 25~45초(다음엔 1~2분) 쉬었다가 그 검색을 처음부터 다시 하고(최대 2번, 그만큼 오래 걸림), 그래도 안 되면 그 검색만 warnings.search_failed 로 남깁니다. 연속 3번이면 남은 검색은 warnings.not_run, 받은 검색이 하나도 없으면 failed 로 끝나 약 10분 뒤 자동으로 다시 시도합니다(요청당 3번까지). 서버는 막힘이 되지 않아 새 요청을 계속 받습니다.
  • 결과 크기는 비교 1건 약 15~60KB(시간 단위 기간이면 그래프 점이 많음), 개별 50개면 약 1~3MB 입니다.

결과 수신(폴링·콜백) 방식은 비동기 & 콜백을 참고하세요.