🎁 신규 무료 가입, 10회 호출 제공. 최대 $1, 카드 불필요.
웹 검색 API와 웹 가져오기 API: 동작 방식과 $0.01의 비용

웹 검색 API와 웹 가져오기 API: 동작 방식과 $0.01의 비용

목차
  1. 모델에 웹 검색과 웹 가져오기가 필요한 이유
  2. 서버 측 웹 검색은 실제로 어떻게 동작하나?
  3. 검색 한 번의 실제 비용
  4. Token 비용을 결정하는 세 가지 변수
  5. 다음 턴에서 검색 결과는 어떻게 처리되나?
  6. Anthropic과 OpenAI의 요금과 도구 실행 위치
  7. FAQ

주요 서버 측 웹 검색 도구는 이제 모두 검색당 $0.01을 받는다. 하지만 청구서에서 이 금액은 별로 중요하지 않다. 측정 결과, 검색할 때마다 결과 token 1,500-3,100개가 요청에 추가됐고, 이 token에는 라우팅한 모델의 요율이 적용됐다. 후속 턴의 동작은 대부분의 팀이 확인하지 않는 프로토콜 설계 차이에 따라 달라진다. endpoint가 검색 근거를 다음 턴까지 전달하는지, 아니면 이를 조용히 버려 모델이 사용자 비용으로 다시 검색하게 만드는지의 차이다. 네 가지 모델 계열에서 Synthorai의 synthorai:web_searchsynthorai:web_fetch를 측정하고, Anthropic과 OpenAI가 공개한 자체 호스팅 검색 요금과 비교했다.

TL;DR

  • Synthorai, Anthropic, OpenAI 모두 검색당 요금은 $0.01이며, 과금 내역에는 $0.0100으로 표시된다.
  • 검색 한 번에 결과 token 1,500-3,100개가 모델의 입력 요율로 추가된다. 저가 모델에서는 검색 요금이 대부분을 차지하고, 고가 모델에서는 token 비용이 절반까지 차지한다.
  • max_uses는 할당량이 아니라 상한이다. 10회까지 허용해도 모델은 3회에서 멈췄으며, 요금은 실제 검색 횟수에 비례한다.
  • 두 번째 턴의 동작은 endpoint에 따라 갈린다. /v1/messages는 결과를 다시 전달하고(약 3,900 token, 추가 요금 없음), /v1/chat/completions는 결과를 버리므로 근거가 필요한 후속 요청에서 새 검색 비용이 발생한다.

모델에 웹 검색과 웹 가져오기가 필요한 이유

모델의 지식은 학습 데이터의 cutoff 시점에서 멈추지만, 프로덕션 환경의 질문은 대부분 그렇지 않기 때문이다. 가격, release note, 환율, 스포츠 경기 결과, 사용자가 방금 붙여 넣은 URL의 내용은 모델 가중치에 없다. 그런데도 확신에 차서 답하면 환각으로 생성한 “최신” 정보가 사용자에게 전달된다. 웹 검색은 답이 어디 있는지 모를 때 찾는 용도이고, 웹 가져오기는 정확한 페이지를 알고 있으며 그 내용을 읽어야 할 때 쓰인다. 검색 API, scraper, tool-calling loop로 둘 다 직접 구축할 수 있고 실제로 그렇게 하는 팀도 있다. 서버 측 버전이 존재하는 이유는 이 loop가 차별화 요소 없는 기반 코드이기 때문이다. provider 내부에서 실행하면 왕복 요청, parsing 코드, 운영 대상이 사라진다. 그 대가로 드는 요금은 어느 서비스든 같다.

서버 측 웹 검색은 실제로 어떻게 동작하나?

핵심은 하나의 API 요청 안에서 loop 전체가 실행된다는 점이다. client-side tool에서는 모델이 애플리케이션 코드에 검색을 요청하고, 코드가 결과를 다시 전달한다. 각 단계마다 전체 대화도 다시 전송된다. server tool은 애플리케이션 코드를 이 과정에서 제외한다. tools{"type": "synthorai:web_search"}를 선언하면 모델이 query를 생성하고, gateway가 전용 검색 provider로 전달한다. 반환된 결과는 모델 context에 주입되며, 모델은 이를 읽고 답변한다. 필요하면 max_uses 한도까지 다시 검색한다. 요청 한 번에 답변, citation, 과금 내역까지 모두 반환된다.

일반 요청에 한 줄만 추가하면 된다. loop 코드나 callback은 필요 없다.

curl https://synthorai.io/v1/chat/completions \
  -H "Authorization: Bearer $SYNTHORAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-flash-0731",
    "messages": [{"role": "user", "content": "What is one AI news headline from this week? Name the source."}],
    "tools": [{"type": "synthorai:web_search", "max_uses": 1}]
  }'

웹 가져오기도 type만 다르게 선언하면 된다. message에 URL을 넣으면 gateway가 해당 페이지를 가져온다.

"messages": [{"role": "user", "content": "Fetch https://example.com/pricing and summarize the tiers."}],
"tools": [{"type": "synthorai:web_fetch", "max_uses": 1}]

3단계 흐름: 요청에서 도구를 무료로 선언한다. 서버 측 loop가 검색을 실행하고 결과를 과금 대상 입력 token으로 주입하며 검색당 $0.01이 부과된다. 응답에는 답변과 함께 입력 token 2,059개, 출력 token 169개, 검색 1회, $0.0104를 표시한 측정값이 반환된다.

이 그림은 deepseek-v4-flash-0731에서 측정한 위 검색 요청의 처리 과정을 그대로 보여준다. 측정값은 입력 token 2,059개(질문 30 token과 주입된 결과 약 2,000 token), 출력 token 169개, 총비용 $0.0104였다. 검색 요금 $0.01과 token 비용 약 $0.0004를 합한 값이다. 과금 항목은 정확히 두 가지다. 검색이 실행될 때 부과되는 요금과, 검색 결과 token에 적용되는 모델의 일반 입력 요율이다. 웹 가져오기도 동일하게 과금되며, 검색 snippet 대신 가져온 페이지가 주입된다.

도구 선언 자체에는 비용이 들지 않는다. 도구를 선언했지만 검색하지 않은 요청에는 요금이 부과되지 않는다. catalog의 모든 모델에서 사용할 수 있다는 점도 first-party 대안과 구조적으로 다르다. Anthropic의 호스팅 검색은 Claude 모델, OpenAI의 검색은 OpenAI 모델만 지원하지만, gateway-level tool은 라우팅하는 모든 모델에서 동작한다.

검색 한 번의 실제 비용

검색 요금은 $0.01이고 여기에 token 비용이 추가된다. 모델이 비쌀수록 비용에서 더 큰 비중을 차지하는 항목이 검색 요금에서 token으로 바뀐다. 네 가지 모델 계열에서 동일한 뉴스 질문을 모델별로 세 번씩 검색했다. 도구를 쓰지 않은 baseline으로 각 모델의 정확한 token 요율을 계산하고, 총비용에서 token 비용을 뺀 잔여분으로 검색 요금을 구했다.

모델주입된 결과 tokenToken 비용요금 잔여분총비용 중 요금 비중
deepseek-v4-flash-0731약 2,020$0.0003$0.010197%
gpt-5.6-luna약 1,500$0.002$0.010483%
qwen3.8-max약 1,780-2,060$0.005-0.012$0.0112-0.011649-68%
claude-sonnet-5약 2,700-3,090$0.008-0.010$0.0118-0.012154-59%

가장 저렴한 모델에서는 검색 요금이 호출 비용의 97%를 차지한다. 고가 모델에서는 주입된 token이 비용의 절반을 차지한다. 요금은 추정값이 아니다. 과금 내역에는 도구 요금이 호출당 정확히 $0.0100으로 별도 표시되며, 도구가 주입한 token 수도 따로 기록된다. 실제 웹 가져오기 호출 하나에서는 입력 token 3,836개 중 3,454개가 도구로 주입됐다. 실측한 검색 한 번의 총비용은 실행 모델에 따라 $0.010-$0.012였다. 이 구간의 상단을 예산으로 잡으면 예상 밖의 비용이 발생하지 않는다. 서버 측 검색을 저가 모델과 조합하면 사실상 검색에만 비용을 내고 모델은 거의 무료로 쓰는 셈이다.

Token 비용을 결정하는 세 가지 변수

검색 횟수, 결과 길이, 페이지 크기가 비용을 결정하며, 나머지는 반올림 오차 수준이다. 세 변수 모두 직접 측정할 수 있고 그중 두 가지는 직접 설정할 수 있다.

첫 번째 변수: 검색 실행 횟수. max_uses는 목표치가 아니라 상한이다. 5개 vendor의 가격을 묻는 질문에서 검색을 1회, 2회, 3회 허용했을 때 비용은 각각 $0.0106, $0.0216, $0.0319였다. 실제 실행된 검색마다 $0.01이 선형으로 추가됐다. 5회나 10회까지 허용해도 결과는 달라지지 않았다. 모델이 스스로 3회에서 검색을 멈췄기 때문이다. 사용하지 않은 여유분에는 비용이 들지 않는다. reasoning 모델에서 측정한 thinking budget과 같다. 기본값은 3이고 최대 상한은 10이다. 별도 설정 없이 검색을 적극적으로 수행하는 질문을 보내면 최악의 경우 검색 요금 3회와 결과 주입 3회가 발생한다. 단일 사실을 묻는 route에는 max_uses: 1을 지정해야 한다.

두 번째 변수: 검색 결과 길이. 주입되는 결과의 크기는 우연이 아니라 질문 범위에 따라 달라진다. deepseek-v4-flash-0731에서 검색 1회짜리 요청 12건을 실행한 결과는 다음과 같다.

Query 유형주입된 결과 token(3회 실행)
단일 사실1,650(실행 간 차이 1 token 이내)
기술 문서 조회1,920-1,950
최신 뉴스1,790-1,990
여러 항목 비교2,060-2,410

범위가 좁은 질문은 간결한 결과를 가져오고, 비교 질문은 더 넓은 결과를 가져온다. 비교 질문의 결과는 단일 사실 질문보다 약 45% 크다. 예산을 잡을 때 검색당 2,000 token에 20%의 오차 범위를 적용하면 측정한 모든 사례를 포함한다. 일반적인 모델 요율에서는 검색 한 번의 token 비용이 $0.01 요금의 20분의 1에서 절반 정도다.

세 번째 변수: 가져오는 페이지의 크기. 웹 가져오기 요금은 고정이고 나머지 비용은 페이지가 결정한다. 동일한 모델로 측정한 결과는 다음과 같다.

페이지주입된 token총비용(DeepSeek)$2/1M 모델에서 동일 페이지를 가져올 때
최소 테스트 페이지209$0.0101$0.0104
가벼운 홈페이지1,421$0.0103$0.0128
장문 가이드3,460$0.0106$0.0169
데이터가 많은 게시물5,196$0.0108$0.0204
긴 Wikipedia 문서27,380$0.0139$0.0648

저가 모델에서는 긴 Wikipedia 문서도 1.5센트 정도지만, 같은 페이지를 100만 token당 $2인 모델로 처리하면 비용은 6.5센트다. 고정 요금의 5배다. 예산 산정 시 고려할 사실이 하나 더 있다. 같은 페이지라도 모델 계열마다 token 수가 다르다. 데이터가 많은 게시물은 DeepSeek에서 5,196 token, qwen3.8-max에서 5,508 token이었다. tokenizer 때문에 6% 더 많았고, 이는 token 밀도 측정 결과와도 일치한다.

다음 턴에서 검색 결과는 어떻게 처리되나?

두 API 프로토콜의 설계 차이가 후속 턴 비용을 결정한다. /v1/messages 프로토콜에서는 assistant turn을 content block 목록으로 정의한다. 따라서 server tool 실행 기록도 공식 turn에 포함된다. response에 server_tool_use, web_search_tool_result, text가 차례로 들어가며, 프로토콜은 다음 턴에서 이 block들을 다시 보내도록 요구한다. 검색 근거는 설계상 입력 token으로 다음 턴까지 전달된다. 반면 /v1/chat/completions 프로토콜은 assistant message를 단일 content 문자열로 정의하며 server tool 결과를 담을 공간이 없다. 주입된 결과는 서버 내부에서 소비되고, 보이는 답변만 history에 들어간다. 검색 근거는 사라진다.

claude-sonnet-5에서 동일한 검색과 후속 질문을 두 API로 실행했다. /v1/messages의 후속 요청은 입력 token 3,911개와 $0.0109가 청구됐으며 전부 token 비용이었다. 모델이 기존 결과를 계속 참조할 수 있어 새 검색은 없었다. /v1/chat/completions의 후속 요청은 $0.0204가 청구돼 replay 방식보다 비쌌다. 모델에는 자체적으로 작성한 한 줄 요약만 남아 있었고, 결국 새로 검색했다. 검색 요금 $0.01과 새로운 결과 주입 비용이 추가된 것이다. 그러나 반드시 재검색하는 것은 아니다. 같은 흡수 방식의 후속 질문을 앞서 deepseek-v4-flash-0731에서 실행했을 때는 요약만으로 답했고, 입력 token 460개에 $0.00009가 들었다. 결과를 흡수하는 방식에서는 후속 턴 비용이 두 가지로 갈린다. 요약만으로 충분하면 거의 무료이고, 모델이 다시 웹 검색이 필요하다고 판단하면 검색 요금과 결과 주입 비용이 발생한다.

따라서 어느 endpoint가 더 저렴하다고 단정할 수는 없다. 비용이 발생하는 지점이 다를 뿐이다. block 방식은 매 턴 예측 가능한 token 비용을 내는 대신 이미 확보한 근거를 다시 구매하지 않는다. 흡수 방식은 후속 질문에 근거가 필요하지 않을 것이라고 가정하고, 그 가정이 틀릴 때마다 새 검색 요금을 낸다. 후속 질문이 단순하고 턴이 많은 chat에는 /v1/chat/completions가 적합하다. 출처를 반복해서 검토하는 research agent에는 /v1/messages가 적합하며, 전달된 검색 결과에도 다른 대용량 context와 마찬가지로 prompt cache 계층화 방식을 적용할 수 있다.

Anthropic과 OpenAI의 요금과 도구 실행 위치

비교는 간단하다. 모두 검색당 $0.01을 받고, 나머지는 모델의 token 요금이다. Anthropic은 검색 1,000회당 $10을 받고 결과는 입력 token으로 과금한다. 웹 가져오기는 별도 요금 없이 token 비용만 부과한다. OpenAI도 1,000회당 $10을 받으며, token 처리 방식은 모델 tier에 따라 다르다. 검색 요금은 동일하고, 1,500-3,100개의 주입 token에 적용되는 모델 입력 요율만 달라진다.

SynthoraiAnthropicOpenAI
검색당 요금$0.01$0.01$0.01
결과 token모델의 입력 요율모델의 입력 요율모델의 입력 요율(tier별 차이)
웹 가져오기 요금$0.01없음-
지원 모델catalog의 모든 모델Claude만OpenAI만

세 서비스를 실제로 구분하는 요소는 요금표가 아니라 도구의 실행 위치다. First-party server tool은 각 vendor의 자체 agent stack에 맞춰져 있어 first-party 환경 안에서만 동작한다. Anthropic 문서에 따르면 웹 검색은 Amazon Bedrock에서 사용할 수 없고, Google Cloud에서는 기본 검색만 지원되며, Microsoft Foundry에서는 Anthropic 호스팅 배포가 필요하다. 웹 가져오기는 Bedrock과 Google Cloud 모두 지원하지 않는다. OpenAI의 검색은 Responses API에 묶여 있다. workload를 다른 cloud나 모델 계열로 옮기면 first-party tool은 따라오지 않는다. gateway가 이런 도구를 그대로 전달하지 않는 이유도 같다. traffic을 따라갈 수 없기 때문이다. gateway-level tool은 반대쪽을 택한다. 한 번 선언하면 모델을 바꾸거나 platform을 옮겨도 그대로 사용할 수 있다.

FAQ

웹 검색 API의 요청당 비용은 얼마인가?

실행된 검색당 $0.01이며, 과금 내역에 별도 항목으로 표시된다. 여기에 주입된 결과가 모델의 입력 token 요율로 과금된다. 측정에서는 검색당 1,500-3,100 token이었다. 도구를 선언했지만 검색을 실행하지 않은 요청에는 요금이 부과되지 않는다. 일반적인 모델에서는 검색당 총비용을 $0.010-$0.012로 잡으면 된다. 매우 저렴한 모델에서는 검색 요금이 총비용의 97%를 차지한다.

이후 대화 턴에서 검색 결과가 다시 과금되나?

Endpoint에 따라 다르다. /v1/messages에서는 결과 block이 history와 함께 replay되며, 측정 기준 턴당 약 3,900개의 입력 token 비용이 발생하지만 새 검색 요금은 없다. /v1/chat/completions에서는 해당 턴이 끝나면 결과가 흡수된다. 모델이 요약만으로 답하면 후속 요청은 거의 무료였지만 한 측정에서는 $0.00009였다. 다시 검색하면 새 검색 요금과 결과 주입 비용이 발생하며 다른 측정에서는 $0.0204였다. Anthropic의 first-party 검색 문서에서는 replay 방식을 표준 동작으로 설명한다. 이 경우 결과는 매 턴 다시 과금된다.

요청별 웹 검색 비용을 어떻게 제한하나?

max_uses를 사용한다. 모델이 넘을 수 없는 hard limit이며 기본값은 3, 최대값은 10이다. 요금은 실제로 실행된 검색에만 비례하고, 사용하지 않은 여유분은 무료다. 단일 사실을 묻는 route에서는 max_uses: 1로 설정하면 최악의 경우에도 검색 요금 1회와 결과 주입 1회만 발생한다.

웹 검색 대신 웹 가져오기는 언제 사용해야 하나?

URL을 이미 알고 있고 전체 페이지가 필요하면 웹 가져오기를 사용한다. 정보를 찾는 과정부터 필요하면 웹 검색을 사용한다. gateway에서는 둘 다 사용당 $0.01이지만, 웹 가져오기는 페이지 전체를 주입한다. 측정에서는 최소 페이지가 209 token, 긴 문서가 27,380 token이었다. 웹 검색은 여러 출처의 snippet을 주입한다. 특히 Claude 모델로 페이지를 읽고 요약하는 pipeline을 구축한다면, 별도 요금이 없는 Anthropic 자체 웹 가져오기 도구가 더 저렴하다.

2026-08-10에 Synthorai gateway를 통해 deepseek-v4-flash-0731, gpt-5.6-luna, qwen3.8-max, claude-sonnet-5에서 synthorai:web_searchsynthorai:web_fetch를 측정했다. 도구를 사용하지 않은 2-point baseline으로 모델별 token 요율을 계산하고, 과금액에서 token 비용을 뺀 잔여분으로 검색 요금을 구했다(모델별 n=3). max_uses 단계별 측정, query 유형별 결과 크기 측정(4개 유형 x 3회), 동일한 질문으로 두 endpoint의 후속 턴 측정, 5개 페이지의 웹 가져오기 측정도 수행했다. 페이지는 자체 페이지 3개, 최소 외부 페이지 1개, 긴 문서 1개로 구성했다. 요금은 총액만으로 추정하지 않고, 호출별 도구 요금과 도구가 주입한 token이 표시된 상세 과금 내역으로 확인했다. Anthropic과 OpenAI 수치는 게시 시점의 공식 문서 요금이다. 그림의 수치는 편집하지 않은 실제 호출 한 건의 측정값이다. 요금과 동작은 바뀔 수 있으므로 자체 사용 내역으로 확인해야 한다.

← 블로그로 돌아가기