API

AI를 위한 검색 API

HTTP 요청 한 번으로 구조화된 검색 결과 — AI 앱, RAG, 에이전트용 실시간 웹 검색. 대안: Firecrawl · Exa · Tavily.

빠른 시작

GET /api/v1/search
curl "https://tutusoo.com/api/v1/search?q=rust&limit=5"

쿼리 파라미터

파라미터타입설명
q*string검색어(필수); 여러 단어는 기본 AND(모두 일치해야 함)
limitint결과 수, 기본 10, 최대 100
offsetint페이지네이션 오프셋, 기본 0, 최대 990
langstring언어 필터, 예 zh / en
time_rangestring색인 시간 범위: 1d/7d/30d/1y/all (crawled_at 기준)
sitestring사이트 도메인으로 제한
lang_prioritystring언어 우선(소프트 부스트, 하드 필터 아님): 예 zh는 일치 언어 결과를 올리되 다른 것을 숨기지 않음; lang과 독립

쿼리 연산자(q 안에 작성)

site:domain사이트로 제한, 예 site:github.com rust
intitle:word해당 단어가 포함된 제목만 일치
"exact phrase"구문의 모든 단어가 나타나야 함
-exclude해당 단어 포함 결과 제외, 예 rust -tutorial
A OR B둘 중 하나 일치, 예 rust OR golang
filetype:type파일 형식으로 필터(pdf/doc/ppt/xls), 예 filetype:pdf

응답

{
  "total": 586,
  "took_ms": 142,
  "results": [
    {
      "id": "a1b2c3d4-…",         // page id for local results; may be empty for external fallback
      "url": "https://rust-lang.org/",
      "title": "Rust Programming Language",
      "snippet": "A language empowering everyone to build reliable software…",
      "domain": "rust-lang.org",
      "site_name": "Rust Programming Language", // display name (optional; client falls back to domain)
      "lang": "en",
      "score": 12.4,
      "source": "local",          // local (our index) | brave (web fallback)
      "has_llms_txt": true,
      "published_at": "2010-01-25T…", // article publish time (nullable; returned when known; RAG freshness/date)
      "crawled_at": "2026-07-18T…" // crawl time (freshness; time_range filters on this)
    }
  ]
}

site_name: 표시 이름; 생략될 수 있음 — domain으로 대체. source: local = 자체 색인 / brave = 로컬 결과 부족 시 웹 폴백. has_llms_txt: 대상 사이트가 llms.txt를 제공하는지(AI 친화적).

전문 가져오기 (RAG)

GET /api/v1/content/{id}

검색 결과가 source=local이고 id가 비어 있지 않으면 본문 전문을 가져와 LLM에 넣으세요. 외부 폴백 결과는 로컬 본문이 없어 이 엔드포인트를 쓸 수 없습니다.

curl "https://tutusoo.com/api/v1/content/<local_page_id>"

# Response (RAG-relevant fields only, no internal columns):
{
  "id": "…",
  "url": "https://rust-lang.org/",
  "title": "Rust Programming Language",
  "body_text": "…full article text…",
  "author": "Jane Doe",        // author (nullable; RAG citation/byline)
  "published_at": "2026-01-…", // original publish time (nullable; freshness)
  "lang": "en",
  "word_count": 1200,
  "crawled_at": "2026-07-18T…",
  "has_llms_txt": true
}

접근 및 속도 제한

공개 검색·콘텐츠 엔드포인트는 로그인이나 API 키 없이 바로 사용해 볼 수 있습니다. 공개 계층은 클라이언트 IP별로 공정한 속도 제한을 적용하며 초과 시 429를 반환합니다. 전용 API 키는 확인된 통합에 대해 운영자가 발급합니다. 이 사이트는 존재하지 않는 셀프서비스 신청 창구를 표시하지 않습니다.

전용 키 응답은 X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset를 반환합니다. 429가 발생하면 응답 안내에 따라 백오프하고, 제한 없이 즉시 재시도하지 마세요.