# 웹 검색 API 빠른 시작: 2분 만에 첫 검색

> 웹 검색 API 빠른 시작: 키를 발급받고 curl, Python 또는 Node.js로 첫 검색을 실행한 뒤, 상위 페이지를 Markdown으로 읽으세요. KYC 없이, 암호화폐 결제.

- URL: https://llmwebsearch.com/ko/docs/
- 마지막 업데이트: 2026-10-22
- 발행자: LLMWebSearch (https://llmwebsearch.com)

endpoint 하나가 모든 일을 합니다: `/search`에 질문을 보내면 순위가 매겨진 결과가 돌아오고, 첫 페이지들은 이미 읽혀서 Markdown으로 정리되어 있습니다. 이 페이지는 잔액이 비어 있는 상태에서 동작하는 호출까지 안내한 뒤, 문서의 다른 모든 페이지로 이어집니다.

**빠른 답변 — AI 에이전트를 위한 웹 검색 API로 첫 검색을 어떻게 실행하나요?**

API 키를 Bearer 토큰으로 넣어 질문을 `POST https://llmwebsearch.com/api/v1/search`에 보내세요. **LLMWebSearch**은 실시간 웹 검색을 실행하고 최대 20개의 순위 결과를 반환하며, 첫 3페이지는 읽혀서 Markdown으로 함께 돌아옵니다. 2026년 10월 기준 US$1.20/1K 검색부터, 이 호출 전체가 1크레딧입니다. KYC 없이; 암호화폐로 결제하세요.

## 한 장으로 보는 API

| 속성 | 값 |
| --- | --- |
| 기본 URL | `https://llmwebsearch.com/api/v1` |
| 검색 | `POST` 또는 `GET https://llmwebsearch.com/api/v1/search` |
| 이미 가지고 있는 URL 읽기 | `POST https://llmwebsearch.com/api/v1/extract` |
| 남은 크레딧 | `GET https://llmwebsearch.com/api/v1/credits`, 무료 |
| 인증 | Authorization 헤더에 Bearer 토큰으로 API 키를 전달하거나, api_key 쿼리 파라미터로 전달하세요 |
| 과금 | 크레딧 1개로 검색 1회를 이용할 수 있습니다. 최대 20개의 순위 결과를 받고, 상위 3개 페이지의 본문을 읽어 Markdown으로 반환합니다. 4~10개 페이지를 읽으면 크레딧 2개가 됩니다. 오류로 끝난 호출에는 비용이 청구되지 않습니다 |
| 저희 페이지 리더 | `LLMWebSearch/1.0 (+https://llmwebsearch.com/bot/)`, robots.txt 토큰 `LLMWebSearch` |
| 가장 작은 팩 | 검색 5,000회에 US$9.25; 크레딧은 만료되지 않습니다 |

## API 키는 어떻게 발급받나요?

가입 양식은 없습니다. 가장 오래 걸리는 단계는 블록체인이 충전을 확정할 때까지 기다리는 것입니다.

1. **암호화폐로 잔액 충전하기** — BTC, USDT, USDC, ETH, SOL, LTC로 최소 US$25을 보내세요. 계정 번호로 로그인합니다. 이메일 주소는 선택 사항입니다.
2. **검색 팩 구매하기** — 검색 5,000회에 US$9.25이면 하나의 에이전트에 검색을 연결하고 모든 옵션을 시험해 보기에 충분합니다.
3. **키 복사하기** — 암호화폐 충전이 확인되고 팩을 구매하면 API 키가 대시보드에 준비되어 있습니다. LLMWEBSEARCH_API_KEY라는 환경 변수에 보관하세요.

## 첫 검색은 어떻게 이루어지나요?

작은 JSON 본문과 함께 보내는 HTTPS POST 한 번입니다. 필수 항목은 `q` 하나뿐입니다. 사람이 입력하듯이 작성한 질문이나 키워드입니다. 기본값은 대부분의 에이전트에 이미 적합합니다. 순위가 매겨진 결과 5개를 받고, 처음 3개 뒤에 있는 페이지는 읽혀서 각각 최대 6,000자의 Markdown으로 반환됩니다.

아래 세 스니펫은 동일한 검색을 보냅니다. 여러분의 스택에 맞는 것을 고르고, 셸에서 `LLMWEBSEARCH_API_KEY`를 설정한 뒤 실행하세요.

*curl: 검색 한 번, 상위 3개 페이지 읽기*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "how to rotate api keys without downtime", "max_results": 5, "read": 3}'
```

*Python: 소스와 각 크기 나열하기*

```python
import os

import requests

resp = requests.post(
    "https://llmwebsearch.com/api/v1/search",
    headers={"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]},
    json={"q": "how to rotate api keys without downtime", "max_results": 5, "read": 3},
    timeout=60,
)
resp.raise_for_status()
data = resp.json()
print("credits used:", data["credits_used"])
for r in data["results"]:
    size = r.get("word_count", 0)
    print(r["position"], r["title"], r["url"], r["content_status"], size, "words")

```

*Node.js 18+: 읽힌 첫 페이지 출력하기*

```javascript
const res = await fetch('https://llmwebsearch.com/api/v1/search', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.LLMWEBSEARCH_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ q: 'how to rotate api keys without downtime', max_results: 5, read: 3 }),
});
const data = await res.json();
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`);
const first = data.results.find((r) => r.content_status === 'ok');
console.log(first ? `${first.title}\n${first.url}\n\n${first.content.slice(0, 600)}` : 'No page could be read.');

```

## 무엇이 반환되나요?

여러분의 `query`, 호출 시각을 `created_at`로, 가격을 `credits_used`으로, 그리고 순위 순서대로 정렬된 `results` 배열을 담은 JSON 객체입니다. 모든 결과에는 `position`, `title`, `url`, `host`, `snippet`가 있고, 날짜를 알 수 있으면 `published_at`도 있습니다.

주목할 필드는 `content_status`입니다. 값이 `ok`이면 페이지를 읽었고 본문이 `content`에 담겨 있으며 `word_count`도 함께 있습니다. `read`를 넘는 결과는 `not_requested`이라고 표시됩니다. 읽지 못한 페이지는 그 이유를 알려주며, 예를 들어 `blocked_by_robots`과 같습니다. [응답 형식](https://llmwebsearch.com/ko/docs/response/) 페이지에서 모든 필드를 설명합니다.

## 가장 자주 바꿀 파라미터는 무엇인가요?

여섯 개의 파라미터로 거의 모든 에이전트를 커버합니다. 모두 선택 사항입니다.

| 파라미터 | 바꾸는 것 |
|---|---|
| `max_results` | 반환되는 순위 결과 수, 1에서 20까지 |
| `read` | 처음 몇 개의 결과를 읽을지, 0에서 10까지 |
| `max_chars` | 각 페이지 콘텐츠의 길이 상한, 500에서 50,000자 |
| `topic`와 `time_range` | 웹페이지 대신 뉴스, 그리고 최신성 기간 |
| `include_domains` | 지정한 사이트의 결과만 |
| `country`와 `language` | 검색이 실행되는 위치와 언어 |

[검색 레퍼런스](https://llmwebsearch.com/ko/docs/search/)에서 각 항목을 예제와 함께, 그리고 `format`와 `exclude_domains`까지 문서화합니다.

## 호출 한 번에 크레딧이 얼마나 드나요?

대부분의 호출은 1 크레딧을 씁니다. 전체 규칙은 다음과 같습니다:

- **0~3개 페이지를 읽는 검색: 1 크레딧.** 순위 결과 최대 20개가 포함됩니다.
- **4~10개 페이지를 읽는 검색: 2 크레딧.**
- **Extract:** 이미 URL을 알고 있는 페이지를 읽는 경우, 콘텐츠와 함께 반환되는 3개 페이지 단위로 크레딧 1개가 청구되며, 호출당 최대 20개 URL까지 가능합니다. 거부되거나 실패한 URL은 집계되지 않습니다.
- **오류: 0 크레딧.** 잘못된 파라미터, 잘못된 키, 잔액 부족, 실패한 검색에는 비용이 들지 않습니다.
- 성공한 검색 안에서 **읽지 못한 페이지**가 있어도 가격은 바뀌지 않습니다.
- `GET https://llmwebsearch.com/api/v1/credits`로 **잔액을 확인하는 것**은 무료입니다.

검색 크레딧에는 만료일이 없습니다. 이번 달에 사용하지 않은 크레딧은 내년에도 그대로 남아 있습니다.

## 사이트가 읽히기를 원하지 않으면 어떻게 되나요?

결과는 제목, URL, 스니펫과 함께 그대로 나타나지만 페이지 콘텐츠는 없습니다. 저희 리더는 robots.txt를 준수합니다. 자신을 LLMWebSearch로 소개하고, 사이트가 리더를 위해 또는 모든 로봇을 위해 작성한 규칙을 따르며, 읽기가 허용되지 않은 페이지의 콘텐츠는 제외합니다. robots.txt에 Content-Signal: ai-input=no를 설정한 사이트는 해당 페이지의 콘텐츠가 결과에 포함되지 않습니다.

사이트가 리더에게 거부로 응답하면 그 결과에는 `content_status: "target_refused"`와 사이트 자체의 HTTP 상태 코드가 `target_status`에 담깁니다. 사이트가 저희 리더를 거부하면, 결과는 콘텐츠 없이 해당 사이트의 상태와 함께 반환됩니다. 저희는 CAPTCHA를 풀거나 계정에 로그인하거나 차단 또는 페이월을 우회하지 않습니다. [오류 페이지](https://llmwebsearch.com/ko/docs/errors/)에서 모든 상태 코드와 재시도를 시도할 만한 것들을 나열합니다.

## 다음은 어디로 가야 하나요?

- [검색 endpoint](https://llmwebsearch.com/ko/docs/search/) — /search의 모든 파라미터와 예제
- [추출 endpoint](https://llmwebsearch.com/ko/docs/extract/) — 이미 가지고 있는 1~20개 URL 읽기
- [응답 형식](https://llmwebsearch.com/ko/docs/response/) — 각 필드와 모든 content_status
- [오류](https://llmwebsearch.com/ko/docs/errors/) — HTTP 오류, 페이지 상태, 재시도 규칙
- [Python](https://llmwebsearch.com/ko/docs/python/) — requests, async httpx, 인용이 포함된 답변
- [Node.js](https://llmwebsearch.com/ko/docs/node/) — fetch, 작은 풀, 동일한 인용 루프
- [curl과 jq](https://llmwebsearch.com/ko/docs/curl/) — 터미널 레시피
- [MCP 서버](https://llmwebsearch.com/ko/docs/mcp/) — Claude Code와 Claude Desktop용 search_web
- [LangChain 및 LlamaIndex](https://llmwebsearch.com/ko/docs/langchain/) — 도구와 리트리버
- [OpenAI function calling](https://llmwebsearch.com/ko/docs/openai/) — 도구 스키마, 루프, Agents SDK
- [n8n](https://llmwebsearch.com/ko/docs/n8n/) — AI Agent용 HTTP Request 도구
- [OpenClaw](https://llmwebsearch.com/ko/docs/openclaw/) — MCP를 통한 검색

## 빠른 시작: 자주 묻는 질문

### SDK가 필요한가요?

아니요. LLMWebSearch는 일반 HTTPS API이므로 어떤 HTTP 클라이언트든 사용할 수 있습니다. 이 문서에는 Python, Node.js, curl용 복사-붙여넣기 코드와 MCP, LangChain, LlamaIndex, OpenAI function calling, n8n, OpenClaw용 도구 정의가 있습니다. 패키지는 배포하지 않습니다.

### API가 답변을 대신 작성해 주나요?

아니요. API는 작성된 답변이 아니라 출처를 반환합니다. 자체 모델이 페이지를 읽고 답변을 작성하며 URL을 인용합니다. 덕분에 모델, 프롬프트, 인용 스타일을 자유롭게 선택할 수 있습니다.

### API 키를 URL에 넣어도 되나요?

네, `GET /search`의 `api_key` 쿼리 파라미터로 넣을 수 있습니다. `Authorization` 헤더가 더 안전한데, URL은 로그와 셸 기록에 남기 때문입니다. 에이전트, 앱, 팀원별로 API 키를 하나씩 만들고, 다른 키는 건드리지 않고 대시보드에서 각각 폐기하세요.

### 무료로 써볼 수 있는 요금제가 있나요?

아니요. 무료 티어는 없습니다. 5,000회 검색 팩이 체험 방법이며, 최소 충전 금액부터 구매할 수 있습니다. 최소 금액에 도달하기 위해서만 추가한 금액은 사용되지 않은 상태라면 30일 이내에 요청 시 USDT 또는 USDC로 돌려드립니다.

---

LLMWebSearch: LLMWebSearch는 AI 에이전트를 위한 웹 검색 API로, 순위가 매겨진 결과와 함께 상위 페이지의 본문을 Markdown으로 반환하며, 신분증 업로드 없이 암호화폐로 결제합니다. US$1.20/1K 검색부터 시작하는 선불 크레딧은 만료되지 않습니다. KYC 없이 — 신분증도, 셀피도, 서류도 필요 없습니다. 암호화폐로 결제하세요.
