# curl- und jq-Rezepte für die Web Search API

> Web Search API: suchen, Quellen auflisten und Seiten als Markdown speichern. Ohne KYC, mit Krypto bezahlen.

- URL: https://llmwebsearch.com/de/docs/curl/
- Zuletzt aktualisiert: 2026-10-22
- Herausgeber: LLMWebSearch (https://llmwebsearch.com)

Jede Funktion der API funktioniert vom Terminal aus. Diese Rezepte rufen sie mit `curl` auf und formen das JSON mit `jq`: nützlich, um eine Suchanfrage vor dem Coden zu testen, für Shell-Skripte und für Cron-Jobs.

**Kurze Antwort — Wie verwende ich eine Web Search API von der Kommandozeile aus?**

Senden Sie einen JSON-Body mit `curl -d` an `https://llmwebsearch.com/api/v1/search`, Ihren API-Schlüssel in einem `Authorization: Bearer`-Header, und leiten Sie die Antwort an `jq` weiter. **LLMWebSearch** liefert gerankte Ergebnisse mit den besten 3 Seiten als Markdown, sodass eine Zeile Quellen auflisten oder Seiten in Dateien speichern kann. Eine Suchanfrage kostet 1 Credit, ab 1,20 $/1K Suchanfragen Stand Oktober 2026. Ohne KYC; mit Krypto bezahlen.

## Wie richte ich das Terminal einmalig ein?

Exportieren Sie Ihren API-Schlüssel in der Shell, damit er weder in den getippten Befehlen noch in Ihrer History landet. Die folgenden Rezepte lesen ihn als `$LLMWEBSEARCH_API_KEY`. Sie brauchen außerdem `jq`, das die meisten Paketmanager unter diesem Namen installieren.

Alle Rezepte setzen eine POSIX-Shell wie bash oder zsh voraus. Auf Windows laufen sie unverändert in Git Bash oder WSL.

*API-Schlüssel setzen und Guthaben prüfen (kostenlos)*

```bash
export LLMWEBSEARCH_API_KEY="your-key"

curl -s "https://llmwebsearch.com/api/v1/credits" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" | jq .
```

## Wie liste ich die Quellen einer Suchanfrage auf?

Führen Sie die Suchanfrage mit `read` auf `0` gesetzt aus und geben Sie pro Ergebnis eine Zeile aus: Position, Host und URL. Das kostet 1 Credit und zeigt Ihnen in einer Sekunde, welche Quellen eine Frage hervorbringt. So können Sie die Formulierung einer Suchanfrage gut abstimmen, bevor ein Agent sie verwendet.

*Eine Zeile pro Ergebnis*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "postgres connection pool size", "max_results": 10, "read": 0}' \
  | jq -r '.results[] | "\(.position)\t\(.host)\t\(.url)"'
```

## Wie speichere ich die gelesenen Seiten?

Behalten Sie die Ergebnisse, deren `content_status` `ok` ist, und schreiben Sie jede `content` in ihre eigene Datei. Das folgende Rezept speichert `01.md`, `02.md` und so weiter, jeweils beginnend mit ihrer Quell-URL. jq wählt die Ergebnisse aus und die Shell-Schleife schreibt die Dateien.

*Jede Seite als Markdown speichern*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "postgres connection pool size", "read": 3}' > search.json

jq -r '.results[] | select(.content_status == "ok") | .position' search.json | while read -r pos; do
  jq -r --argjson p "$pos" '.results[] | select(.position == $p) | "Source: " + .url + "\n\n" + .content' \
    search.json > "$(printf '%02d' "$pos").md"
done
ls -1 ./*.md
```

## Wie suche ich News von einigen wenigen Seiten?

Fügen Sie `topic`, `time_range` und `include_domains` zum Body hinzu. Das Rezept behält News der letzten Woche auf zwei Domains und gibt das Datum neben jedem Titel aus, was genügt, um ein Thema über einen Cron-Job zu beobachten.

*News der letzten Woche von zwei Domains*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "database security release", "topic": "news", "time_range": "week", "include_domains": ["news.example.com", "example.org"], "read": 0}' \
  | jq -r '.results[] | "\(.published_at // "no date")  \(.title)  \(.url)"'
```

## Wie verwende ich die GET-Form?

Verwenden Sie `curl -G` mit `--data-urlencode` für die Suchanfrage, damit Leerzeichen und Symbole für Sie kodiert werden. Listen wie `include_domains` werden zu einem kommagetrennten Wert. GET ist praktisch für einen schnellen Test; Skripte, die wachsen, sollten zu POST wechseln.

*GET /search*

```bash
curl -sG "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  --data-urlencode "q=pgbouncer transaction mode" \
  -d read=1 -d max_chars=3000 -d include_domains=example.com,example.org \
  | jq -r '.results[0].content // .results[0].snippet'
```

## Wie lese ich URLs, die ich bereits habe?

Senden Sie sie als JSON-Array aus 1 bis 20 Adressen an `/extract`. Das Lesen von Seiten, deren URLs Sie bereits haben, kostet 1 Credit für jede angefangene Gruppe von 3 Seiten, die mit Inhalt zurückgegeben werden, bis zu 20 URLs pro Aufruf; abgelehnte oder fehlgeschlagene URLs werden nicht gezählt. Das Rezept gibt jede URL mit ihrem Status und ihrer Wortzahl aus, was auf einen Blick zeigt, welche Seiten eine Website uns zu lesen erlaubte.

*POST /extract*

```bash
curl -s "https://llmwebsearch.com/api/v1/extract" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"urls": ["https://docs.example.com/security/key-rotation", "https://example.com/changelog"]}' \
  | jq -r '"credits: \(.credits_used)", (.results[] | "\(.content_status)\t\(.word_count // 0)\t\(.url)")'
```

## Wie sehe ich den Fehler, wenn ein Aufruf fehlschlägt?

Geben Sie den HTTP-Status mit `-w` aus und behalten Sie den Body: Fehler kommen als JSON mit einem `code` und einem `message` zurück. Ein Skript kann dann nach dem Status verzweigen, zum Beispiel nur bei `429`, `502` oder `504` warten und erneut versuchen. Keiner dieser Fehler verbraucht ein Credit.

*Statuscode und Fehler-Body*

```bash
status=$(curl -s -o body.json -w '%{http_code}' "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "test query"}')
if [ "$status" != "200" ]; then
  echo "HTTP $status: $(jq -r '.error.code + " - " + .error.message' body.json)"
fi
```

## curl: häufige Fragen

### Warum schlägt mein JSON-Body mit invalid_parameter fehl?

Meist ein Quoting-Problem. Setzen Sie den Body in bash in einfache Anführungszeichen, damit die doppelten Anführungszeichen darin erhalten bleiben, und prüfen Sie ihn mit `echo '…' | jq .`, bevor Sie ihn senden.

### Kann ich den API-Schlüssel in der URL übergeben?

Ja, mit `-d api_key=…` bei der GET-Form. Der Header ist sicherer, weil Shell-History und Proxy-Logs URLs aufzeichnen.

### Kostet ein fehlgeschlagener curl-Aufruf ein Credit?

Nein. HTTP-Fehler verbrauchen nie Credits. Nur eine Suchanfrage, die Ergebnisse liefert, wird berechnet, wie `credits_used` zeigt.

---

LLMWebSearch: LLMWebSearch ist eine Websuch-API für KI-Agenten, die gerankte Ergebnisse mit dem Inhalt der Top-Seiten als Markdown liefert, bezahlt mit Krypto ohne Ausweis-Upload. Vorausbezahlte Credits ab 1,20 $/1K Suchanfragen verfallen nie. Ohne KYC — kein Ausweis, kein Selfie, keine Dokumente. Mit Krypto bezahlen.
