API

API de recherche pour l’IA

Une requête HTTP renvoie des résultats structurés — récupération web en temps réel pour applis d’IA, RAG et agents. Une alternative à Firecrawl · Exa · Tavily.

Démarrage rapide

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

Paramètres de requête

ParamètreTypeDescription
q*stringRequête de recherche (obligatoire) ; plusieurs mots utilisent AND par défaut (tous doivent correspondre)
limitintNombre de résultats, défaut 10, max 100
offsetintDécalage de pagination, défaut 0, max 990
langstringFiltre de langue, p. ex. zh / en
time_rangestringPlage de temps indexé : 1d/7d/30d/1y/all (par crawled_at)
sitestringRestreindre à un domaine de site
lang_prioritystringPriorité de langue (boost léger, pas un filtre strict) : p. ex. zh remonte les résultats de la langue correspondante sans cacher les autres ; indépendant de lang

Opérateurs de requête (à écrire dans q)

site:domainRestreindre à un site, p. ex. site:github.com rust
intitle:wordNe correspond qu’aux titres contenant le mot
"exact phrase"Chaque mot de la phrase doit apparaître
-excludeExclure les résultats contenant le mot, p. ex. rust -tutorial
A OR BCorrespond à l’un ou l’autre, p. ex. rust OR golang
filetype:typeFiltrer par type de fichier (pdf/doc/ppt/xls), p. ex. filetype:pdf

Réponse

{
  "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 : nom affiché ; peut être omis — repli sur domain. source : local = notre index / brave = repli web quand les résultats locaux sont insuffisants. has_llms_txt : si le site cible fournit un llms.txt (compatible IA).

Récupérer le texte complet (RAG)

GET /api/v1/content/{id}

Quand un résultat a source=local et un id non vide, récupérez son texte complet pour un LLM. Les résultats de repli externe n’ont pas de corps local et ne peuvent pas utiliser ce point d’accès.

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
}

Accès et limites de débit

Les points de terminaison publics de recherche et de contenu ne nécessitent ni connexion ni clé d’API — essayez-les directement ; la couche publique applique une limitation de débit équitable par IP client et renvoie 429 en cas de dépassement. Les clés d’API dédiées sont fournies par l’opérateur pour les intégrations confirmées ; ce site n’affiche pas d’inscription en libre-service qui n’existe pas.

Les réponses avec clé dédiée renvoient X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset. En cas de 429, patientez selon les indications de la réponse — ne réessayez pas immédiatement sans limite.