Claude Opus 5.5을(를) SeedRouter에서 사용할 수 있습니다

DeepSeek Search API: 가격과 Python 검색 후 Fetch 호출 예제

공식 문서를 바탕으로 DeepSeek Search API의 Python 예제, Search와 Fetch의 차이, 요청별 요금, 무료 기간의 범위와 요청 처리를 설명합니다.

Markdown으로 읽기

2026년 10월 20일에 문서를 확인했습니다. 아래 예제는 픽스처를 사용해 로컬에서 검사했으며, 유료 실서비스 엔드포인트에 대해 실행하지 않았습니다.

DeepSeek Search API는 애플리케이션이 웹 검색 결과를 가져올 수 있게 합니다. 함께 제공되는 Fetch API는 개별 페이지를 Markdown으로 가져옵니다. DeepSeek는 2026년 10월 17일 두 인터페이스를 공개했으며, 각각 호출별로 별도 과금합니다. 공개된 USD 요금표에 따르면 과금 대상 요청 1,000건당 각각 $0.75입니다. DeepSeek API 키와 공식 api.deepseek.com 주소를 사용합니다. 출처: 출시 발표, 가격.

이 가이드는 한 번 검색한 뒤 필요에 따라 페이지를 가져오는 과정을 보여 줍니다. 예제는 DeepSeek 자체 서비스를 사용하며, SeedRouter가 제공하는 Search 또는 Fetch 엔드포인트를 설명하는 것이 아닙니다.

DeepSeek Search API와 Fetch API의 차이

Search는 후보 페이지를 찾습니다. Fetch는 선택한 페이지를 읽습니다.

작업공식 엔드포인트유용한 출력
SearchPOST https://api.deepseek.com/v1/tools/search페이지 URL과 설명 필드가 담긴 results 배열입니다.
FetchPOST https://api.deepseek.com/v1/tools/fetch페이지 제목과 Markdown 형식의 본문입니다.

둘 다 JSON을 받고 Bearer 인증을 사용합니다. 독립형 검색 요청에는 query가, 페이지 가져오기 요청에는 url이 들어갑니다. 이는 별개의 요청이며, 모든 채팅 완성 요청에 웹 접근을 자동으로 추가하는 설정이 아닙니다. 공식 Search & Fetch 가이드에 두 인터페이스가 문서화되어 있습니다.

Search는 need_content도 받습니다. 이 값이 true이면 검색 결과에 페이지 본문이 포함될 수 있습니다. 추가 요청을 하기 전에 반환된 본문을 확인합니다. 필요한 내용이 이미 들어 있다면 별도의 Fetch 호출이 필요하지 않을 수 있습니다.

Python 예제를 실행하기 전에

Python 3, 외부로 나가는 HTTPS 연결, 필요한 계정 이용 권한을 갖춘 DeepSeek API 키가 필요합니다. 스크립트를 실행할 터미널에서 키를 환경 변수에 넣습니다.

export DEEPSEEK_API_KEY="your-deepseek-api-key"

예제는 Python 표준 라이브러리를 사용하므로 패키지를 설치할 필요가 없습니다. Search 요청을 한 번 보냅니다. 결과가 있으면 첫 번째 결과의 제목과 URL을 출력한 뒤 해당 페이지를 가져옵니다. 실행하면 요금이 발생할 수 있으며, 키는 출력하지 않습니다.

Python 예제: 검색 후 결과를 선택해 본문 가져오기

다음 코드를 deepseek_search.py로 저장합니다. 실행하기 전에 QUERY를 필요한 정보에 맞게 바꿉니다.

import json
import os
import urllib.error
import urllib.request

BASE_URL = "https://api.deepseek.com"
QUERY = "Python documentation pathlib"


def call(path, payload):
    request = urllib.request.Request(
        BASE_URL + path,
        data=json.dumps(payload).encode("utf-8"),
        headers={
            "Authorization": "Bearer " + os.environ["DEEPSEEK_API_KEY"],
            "Content-Type": "application/json",
        },
        method="POST",
    )
    try:
        with urllib.request.urlopen(request, timeout=30) as response:
            return json.load(response)
    except urllib.error.HTTPError as error:
        raise RuntimeError(f"DeepSeek returned HTTP {error.code}") from None


def main():
    search = call(
        "/v1/tools/search",
        {"query": QUERY, "count": 5, "need_content": False},
    )
    results = search.get("results", [])
    if not results:
        print("No search results; no Fetch request was made.")
        return

    selected = results[0]
    print(selected.get("title", "Untitled result"))
    print(selected["url"])

    page = call("/v1/tools/fetch", {"url": selected["url"]})
    content = page.get("content", "")
    if not content:
        print("The selected page returned no content.")
        return
    print(page.get("title", ""))
    print(content)


if __name__ == "__main__":
    main()

다음 명령으로 실행합니다.

python3 deepseek_search.py

간단한 예제이므로 첫 번째 결과를 선택합니다. 실제 애플리케이션에서는 질문에 맞는 페이지를 선택하고, 도메인과 게시 맥락을 검토하며, 추출한 텍스트와 함께 URL을 보관합니다. 검색 상위 결과라도 작성하려는 답변과 관련이 있는지 확인해야 합니다.

요청 형식은 DeepSeek의 Search 참조 문서와 Fetch 참조 문서를 따릅니다. 로컬 구문 검사와 픽스처 검사는 프로그램의 요청 구성과 분기 처리를 검증할 수 있습니다. 실서비스 계정의 이용 가능 여부, 응답 속도, 검색·수집 품질을 입증할 수는 없습니다.

DeepSeek Search API 가격: 어떤 요청에 요금이 부과됩니까?

공개된 USD 가격은 Search가 성공한 과금 대상 요청 1,000건당 $0.75이며, Fetch도 같습니다. 결과가 없는 검색에는 요금이 부과되지 않으며, Fetch는 본문을 성공적으로 가져왔을 때 과금됩니다. count로 요청한 결과 개수는 검색 한 번의 가격을 바꾸지 않습니다. 과금 조건은 현재 가격표를 확인합니다.

예를 들어 과금 대상 검색 1,000건 이후 과금 대상 Fetch 요청을 1,000건 실행하면 검색·수집 요금은 $1.50입니다. 이는 명시된 요금으로 계산한 값이며, 실제 측정한 청구액이나 특정 검색어가 반환할 결과에 대한 약속이 아닙니다. 나중에 해당 페이지를 요약하는 데 사용하는 모델 토큰 비용은 별도입니다.

한시적 무료 기간의 적용 범위는 더 좁습니다. DeepSeek는 자사 API 사용자가 DeepSeek Harness, Claude Code, Codex의 서버 측 도구를 통해 호출하는 Search/Fetch에 한시적으로 요금을 부과하지 않는다고 설명합니다. 해당 사용량의 과금은 2026년 10월 31일 16:00 UTC에 시작하며, 이는 베이징 시간으로 11월 1일 00:00입니다. 이 발표가 가이드의 독립형 Python 요청을 모두 무료로 만든다는 뜻은 아닙니다. 공식 발표.

고려해야 할 매개변수와 실패 상황

문서에 명시된 검색어 길이는 Unicode 문자 1–128자입니다. count의 기본값은 10이며, 1–50을 허용합니다. Python 예제에서는 의도적으로 결과 다섯 개를 요청하고, 페이지 본문 가져오기는 이후의 Fetch 요청에 맡깁니다. 다른 필드로 요청을 확장하기 전에 Search 참조 문서를 확인합니다.

빈 결과 배열은 일치하는 결과가 없는 성공한 검색입니다. 예제는 그 지점에서 멈춥니다. HTTP 오류는 별도로 처리하고, 시간 초과가 발생하면 자동으로 추가 요청을 만들지 않고 실행을 중단하도록 합니다. 더 큰 애플리케이션에서는 재시도 한도와 추가 지출을 명시적으로 정해야 합니다.

가져온 Markdown은 외부 출처 자료입니다. 원본 URL을 보존하고, 본문이 질문에 답하는지 검토하며, 가져온 페이지에 포함된 지시를 애플리케이션에 대한 지시가 아닌 페이지 내용으로 취급합니다. 본문을 언어 모델에 전달한다면 프롬프트에서도 이 구분을 유지하고, 결과 답변에 출처 인용을 남겨야 합니다.

자주 묻는 질문

DeepSeek API로 웹 검색을 할 수 있습니까?

그렇습니다. 독립형 Search와 Fetch 인터페이스가 문서화되어 있습니다. 일반 채팅 엔드포인트 호출과 이러한 검색·수집 엔드포인트 호출은 서로 다른 작업입니다. 구축하려는 워크플로에 해당하는 규격을 따라야 합니다.

DeepSeek Search API에 무료 요금제가 있습니까?

인용한 발표는 특정 코딩 에이전트 연동에서 서버 측 도구를 한시적으로 무료 이용할 수 있다고 설명합니다. 모든 독립형 Search 또는 Fetch 요청에 적용되는 일반 무료 요금제가 있다는 뜻은 아닙니다. 일괄 실행 전에 현재 과금 페이지를 확인해야 합니다.

검색할 때마다 Fetch도 호출해야 합니까?

아닙니다. 검색만으로 충분한 정보를 얻을 수 있으며, 특히 need_content: true로 사용 가능한 본문이 반환되면 그렇습니다. 선택한 페이지를 별도로 가져와야 할 때 Fetch가 유용합니다.

하나의 검색·수집 경로부터 시작합니다

DeepSeek Search API는 출처를 찾고, Fetch는 선택한 페이지를 가져옵니다. 검색어 하나로 시작해 결과와 본문을 확인한 다음, 애플리케이션에 추가 페이지나 모델이 생성한 요약이 필요한지 결정합니다. 같은 날 발표된 별도의 모델 업데이트는 10월 17일 체크포인트 업데이트: 벤치마크와 변경 사항을 참고합니다.

관련 가이드