Kurze Antwort
Welche Parameter nimmt der LLMWebSearch-Search-Endpoint an?
Der /search-Endpoint von LLMWebSearch benötigt nur q. Optionale Parameter legen fest, wie viele Ergebnisse zurückkommen (max_results), wie viele Seiten gelesen werden (read), das Inhaltsformat und die Länge, News oder Web, einen Zeitraum, Land und Sprache sowie Domains, die beibehalten oder verworfen werden. Bis zu 3 Seiten lesen kostet 1 Credit, ab 1,20 $/1K Suchanfragen Stand Oktober 2026. Ohne KYC; mit Krypto bezahlen.
/search at a glance
| Methoden | POST mit einem JSON-Body oder GET mit denselben Namen im Query String |
|---|---|
| URL | https://llmwebsearch.com/api/v1/search |
| Required | q: 1 bis 400 Zeichen; Suchoperatoren werden unverändert übergeben |
| Standardwerte | 5 Ergebnisse, die ersten 3 gelesen, Markdown bis 6.000 Zeichen pro Seite |
| Abrechnung | Ein Credit bezahlt eine Suchanfrage: bis zu 20 gerankte Ergebnisse, wobei die Seiten der ersten 3 gelesen und als Markdown zurückgegeben werden. Werden 4 bis 10 Seiten gelesen, sind es 2 Credits. Ein Aufruf, der mit einem Fehler endet, kostet nichts |
| Ergebnisse | Die Ergebnisse stammen aus einer Live-Websuche, die im Moment Ihres Aufrufs ausgeführt wird, in der Reihenfolge, in der die Suchmaschine sie rankt; nichts wird aus einem alten Index geliefert |
| Filter | Wählen Sie Land und Sprache der Ergebnisse, einen Zeitraum (letzter Tag, Woche, Monat oder Jahr), Web- oder News-Ergebnisse sowie Domains, die ein- oder ausgeschlossen werden sollen |
| Page Reader | LLMWebSearch/1.0 (+https://llmwebsearch.com/bot/) |
Im Web suchen und die Top-Ergebnisse lesen (POST)
POST/api/v1/search
Führt eine Live-Websuche aus und gibt gerankte Ergebnisse zurück. Die Seiten der ersten read Ergebnisse werden parallel abgerufen und ihr Hauptinhalt wird in content zurückgegeben. Das Beispiel fragt, wie man API-Schlüssel rotiert; Titel, Daten und Werte sind illustrativ.
Authentifizierung: API-Schlüssel im Header Authorization: Bearer API_KEY.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
q | string | Ja | Die Suchanfrage, 1 bis 400 Zeichen. Anführungszeichen und Operatoren wie site: bleiben unverändert. |
max_results | integer | Nein | Anzahl der gerankten Ergebnisse, 1 bis 20. Standard 5. |
read | integer | Nein | Wie viele der ersten Ergebnisse gelesen und mit ihrem Inhalt zurückgegeben werden, 0 bis 10. Standard 3. Ab 4 aufwärts kostet der Aufruf 2 Credits. |
format | string | Nein | markdown (Standard) oder text für den Seiteninhalt. |
max_chars | integer | Nein | Längenbegrenzung für den Inhalt jeder Seite, 500 bis 50.000 Zeichen. Standard 6.000. |
topic | string | Nein | web (Standard) oder news. |
time_range | string | Nein | day, week, month oder year. Kein Standardwert: jedes Datum. |
country | string | Nein | Zweistelliger Ländercode (ISO 3166-1 alpha-2) für den Ort, an dem die Suche läuft. Standard us. |
language | string | Nein | Sprache der Ergebnisse, etwa en, de oder pt-BR. Standard en. |
include_domains | string[] | Nein | Bis zu 20 Domains; nur Ergebnisse von diesen Domains und ihren Subdomains werden beibehalten. |
exclude_domains | string[] | Nein | Bis zu 20 Domains, deren Ergebnisse verworfen werden. |
{
"q": "how to rotate api keys without downtime",
"max_results": 5,
"read": 3,
"max_chars": 6000
}{
"q": "open source license change",
"topic": "news",
"time_range": "week",
"include_domains": [
"news.example.com",
"example.org"
],
"read": 0
}Response 200
{
"query": "how to rotate api keys without downtime",
"created_at": "2026-10-22T10:15:04Z",
"credits_used": 1,
"results": [
{
"position": 1,
"title": "Rotating API keys",
"url": "https://docs.example.com/security/key-rotation",
"host": "docs.example.com",
"snippet": "Create a second key, deploy it everywhere, then revoke the first one.",
"published_at": "2026-09-30",
"content_status": "ok",
"content": "# Rotating API keys\n\n## Zero-downtime rotation\n\n1. Create a second key.\n2. Deploy it to every service.\n3. Revoke the old key.",
"word_count": 948
},
{
"position": 2,
"title": "Key rotation checklist",
"url": "https://blog.example.org/key-rotation-checklist",
"host": "blog.example.org",
"snippet": "Keep two keys active during the switch and alert on the old one.",
"content_status": "blocked_by_robots"
},
{
"position": 3,
"title": "Secrets management basics",
"url": "https://security.example.net/secrets-basics",
"host": "security.example.net",
"snippet": "Never commit keys to a repository.",
"published_at": "2026-06-12",
"content_status": "ok",
"content": "# Secrets management basics\n\n**Never** commit keys to a repository...",
"word_count": 1310
},
{
"position": 4,
"title": "API key best practices",
"url": "https://dev.example.com/api-key-best-practices",
"host": "dev.example.com",
"snippet": "Scope each key to one service and one environment.",
"content_status": "not_requested"
}
]
}Codebeispiele
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}'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()
for r in resp.json()["results"]:
print(r["position"], r["content_status"], r["url"])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 { results } = await res.json();
for (const r of results) console.log(r.position, r.content_status, r.url);Im Web suchen (GET)
GET/api/v1/search
Dieselbe Suche mit den Parametern im Query String, URL-kodiert. Listen wie include_domains werden als ein durch Kommas getrennter Wert geschrieben. Praktisch für einen schnellen Test oder für Tools, die nur GET-Requests senden. Das Beispiel fragt nur nach Ergebnissen (read=0).
Authentifizierung: API-Schlüssel im Header Authorization: Bearer API_KEY.
Parameter
| Name | In | Type | Required | Description |
|---|---|---|---|---|
q | query | string | Ja | Die Suchanfrage, URL-kodiert, 1 bis 400 Zeichen. |
max_results | query | integer | Nein | 1 bis 20. Standard 5. |
read | query | integer | Nein | 0 bis 10. Standard 3; 4 oder mehr kostet 2 Credits. |
format | query | string | Nein | markdown (Standard) oder text. |
max_chars | query | integer | Nein | 500 bis 50.000 pro Seite. Standard 6.000. |
topic | query | string | Nein | web (Standard) oder news. |
time_range | query | string | Nein | day, week, month oder year. |
country | query | string | Nein | ISO 3166-1 alpha-2-Code. Standard us. |
language | query | string | Nein | Sprachcode. Standard en. |
include_domains | query | string | Nein | Kommagetrennte Liste, bis zu 20 Domains. |
exclude_domains | query | string | Nein | Kommagetrennte Liste, bis zu 20 Domains. |
api_key | query | string | Nein | Ihr Schlüssel, wenn Sie den Header Authorization nicht senden. |
Response 200
{
"query": "postgres connection pooling",
"created_at": "2026-10-22T10:21:47Z",
"credits_used": 1,
"results": [
{
"position": 1,
"title": "Connection pooling explained",
"url": "https://docs.example.com/db/pooling",
"host": "docs.example.com",
"snippet": "A pool keeps a few database connections open and lends them to requests.",
"content_status": "not_requested"
},
{
"position": 2,
"title": "Sizing a connection pool",
"url": "https://blog.example.org/pool-size",
"host": "blog.example.org",
"snippet": "Start small: the right size depends on cores and disk, not on traffic.",
"published_at": "2026-03-04",
"content_status": "not_requested"
}
]
}Codebeispiele
curl -sG "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
--data-urlencode "q=postgres connection pooling" \
-d max_results=10 -d read=0import os
import requests
resp = requests.get(
"https://llmwebsearch.com/api/v1/search",
headers={"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]},
params={"q": "postgres connection pooling", "max_results": 10, "read": 0},
timeout=60,
)
print([r["url"] for r in resp.json()["results"]])const params = new URLSearchParams({ q: 'postgres connection pooling', max_results: '10', read: '0' });
const res = await fetch(`https://llmwebsearch.com/api/v1/search?${params}`, {
headers: { Authorization: `Bearer ${process.env.LLMWEBSEARCH_API_KEY}` },
});
console.log((await res.json()).results.map((r) => r.url));Wie erhalte ich Ergebnisse ohne Seiteninhalt?
Setzen Sie read auf 0. Jedes Ergebnis kommt dann mit Titel, URL, Host, Snippet und Datum zurück sowie content_status: "not_requested". Die Antwort ist deutlich kleiner, was hilft, wenn der Agent nur entscheiden muss, welche Links relevant sind.
Der Preis bleibt bei 1 Credit, genau wie beim Lesen von bis zu 3 Seiten. Ein übliches Muster ist eine read=0-Suche zur Vorauswahl, dann ein extract-Aufruf für die zwei oder drei URLs, die das Modell ausgewählt hat.
Wann kostet eine Suche 2 Credits?
Wenn read zwischen 4 und 10 liegt. Mehr Seiten zu lesen bedeutet mehr Arbeit auf unserer Seite, daher verdoppelt sich der Preis einmal und bleibt bis zum Maximum von 10 Seiten bei 2 Credits.
credits_used in jeder Antwort zeigt, was der Aufruf gekostet hat. Eine Seite, die nicht gelesen werden konnte, wegen einer robots.txt-Regel oder einer Ablehnung, senkt oder erhöht diesen Preis nicht. Wenn Sie meist nur wenige vollständige Seiten brauchen, lassen Sie read bei 3 und rufen /extract für die seltene zusätzliche Seite auf.
Wie suche ich aktuelle Nachrichten?
Senden Sie topic: "news" und eine time_range. Die Ergebnisse stammen dann aus Nachrichtenartikeln, und time_range behält nur die aus den vergangenen day, week, month oder year. published_at wird ausgefüllt, wenn der Artikel oder das Suchergebnis ein Datum angibt.
Derselbe Aktualitätsfilter funktioniert mit topic: "web". Er ist nützlich für Fragen wie aktuelle Releases oder Preisänderungen, bei denen eine alte Seite das Modell in die Irre führen würde.
curl -s "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q": "database release security fix", "topic": "news", "time_range": "week", "read": 3}'Wie beschränke ich Ergebnisse auf bestimmte Websites?
Listen Sie sie in include_domains auf, bis zu 20 Einträge. Nur Ergebnisse, deren Host eine dieser Domains oder eine ihrer Subdomains ist, werden behalten: example.com passt auch auf docs.example.com. Verwenden Sie exclude_domains umgekehrt, zum Beispiel um Ihre eigene Website aus den Ergebnissen zu entfernen.
In einem POST-Body sind beide Felder JSON-Arrays. In einer GET-Anfrage schreiben Sie sie als einen kommagetrennten Wert. Die Suchanfrage selbst kann auch einen site:-Operator enthalten; er wird unverändert an die Suche weitergegeben.
Was ändern Land und Sprache?
country legt fest, wo die Suche läuft, mit einem zweibuchstabigen Code wie us, de oder br. Rankings unterscheiden sich je nach Land, besonders bei lokalen Diensten, Preisen und Vorschriften. language legt die Sprache der Ergebnisse fest, etwa en, fr oder pt-BR.
Beide sind standardmäßig auf Vereinigte Staaten und Englisch gesetzt. Setzen Sie sie gemeinsam, wenn der Agent für Nutzer in einem Markt arbeitet: Ein deutscher Nutzer, der nach Steuerregeln fragt, möchte country: "de" und language: "de".
Wie viel Seitentext kommt zurück?
Bis zu max_chars Zeichen pro Seite, standardmäßig 6.000 und zwischen 500 und 50.000. Die Obergrenze schützt das Kontextfenster des Modells: drei Seiten mit 6.000 Zeichen sind etwa 4.500 Tokens Englisch.
word_count zählt den gesamten extrahierten Text, vor dem Kürzen, sodass Sie erkennen können, wann eine Seite gekürzt wurde. Wenn eine Antwort ein langes Dokument braucht, suchen Sie zuerst mit einer niedrigen Obergrenze und rufen dann diese Seite allein über /extract mit einer höheren ab. Auf eine langsame Seite wird nicht unbegrenzt gewartet: Nach 15 Sekunden kommt sie als fetch_timeout zurück, ohne Inhalt.
Search-Endpoint: häufige Fragen
Sollte ich POST oder GET verwenden?
POST im Code, weil JSON-Arrays und lange Suchanfragen in einem Body einfacher sind. GET eignet sich für einen schnellen Test im Terminal oder für ein Tool, das nur Query-Strings sendet. Beide liefern dieselbe Antwort und kosten gleich viel.
Kann ich mehr als 20 Ergebnisse anfordern?
Nein. 20 ist das Maximum pro Aufruf. Agents brauchen selten mehr: Eine zweite Suche mit umformulierter Anfrage liefert meist bessere Quellen als eine lange Liste.
Werden die Seiten nacheinander gelesen?
Nein, parallel. Eine Seite, die nicht innerhalb von 15 Sekunden antwortet, wird ohne Inhalt als fetch_timeout zurückgegeben, sodass eine langsame Website nicht die gesamte Antwort aufhält.
Welche Suchmaschine liefert die Ergebnisse?
Die Ergebnisse stammen aus einer Live-Websuche, die im Moment Ihres Aufrufs ausgeführt wird, in der Reihenfolge, in der die Suchmaschine sie rankt; nichts wird aus einem alten Index geliefert. Wir veröffentlichen nicht, welche Upstream-Anbieter die Suche ausführen.