# Extract-Endpoint: die URLs lesen, die Ihr Agent bereits hat

> Extract-Endpoint: Senden Sie 1 bis 20 URLs und erhalten Sie den Hauptinhalt jeder Seite als Markdown, 1 Credit pro 3. Ohne KYC, per Krypto.

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

Manchmal hat der Agent die Links schon: Ein Nutzer hat sie eingefügt, eine frühere Suche hat sie gelistet, oder ein Dokument zitiert sie. `/extract` liest diese Seiten und gibt ihren Hauptinhalt zurück, mit demselben Reader und denselben Regeln wie `/search`.

**Kurze Antwort — Wie lese ich Webseiten, deren URLs ich bereits habe?**

Senden Sie bis zu 20 URLs an `POST https://llmwebsearch.com/api/v1/extract`. **LLMWebSearch** liest jede öffentliche Seite und gibt ihren Hauptinhalt als Markdown oder reinen Text zurück, mit einem Status pro URL. Die Abrechnung beträgt 1 Credit für jede begonnene Gruppe von 3 gelesenen Seiten, aus 1,20 $/1K Suchanfragen pro Such-Credit Stand Oktober 2026. robots.txt wird respektiert. Ohne KYC; mit Krypto bezahlen.

## /extract at a glance

| Attribut | Wert |
| --- | --- |
| Methode | `POST` mit einem JSON-Body |
| URL | `https://llmwebsearch.com/api/v1/extract` |
| Eingabe | `urls`: 1 bis 20 http- oder https-Adressen |
| Ausgabe | Hauptinhalt pro URL, in `markdown` (Standard) oder `text` |
| Abrechnung | 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 |
| robots.txt | Unser Reader respektiert robots.txt: Er stellt sich als LLMWebSearch vor, befolgt die Regeln, die eine Website für ihn oder für alle Roboter schreibt, und lässt den Inhalt jeder Seite aus, die er nicht lesen darf |
| Page Reader | `LLMWebSearch/1.0 (+https://llmwebsearch.com/bot/)` |

## Eine Liste von URLs lesen

`POST /api/v1/extract`

Ruft jede URL parallel ab und gibt ihren Hauptinhalt in der Reihenfolge zurück, in der Sie sie gesendet haben. Jedes Element hat seinen eigenen `content_status`, sodass eine abgelehnte Seite den Aufruf nicht scheitern lässt. Das Beispiel liest drei Seiten; Titel und Werte sind beispielhaft.

Authentifizierung: API-Schlüssel im Header `Authorization: Bearer API_KEY`.

**Request body**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `urls` | string[] | Ja | 1 bis 20 http- oder https-Adressen. Private, lokale und Cloud-Metadaten-Adressen werden abgelehnt. |
| `format` | string | Nein | `markdown` (Standard) oder `text`. |
| `max_chars` | integer | Nein | Längenbegrenzung für den Inhalt jeder Seite, 500 bis 50.000 Zeichen. Standard 6.000. |

*Beispiel: three pages, longer content*

```json
{
  "urls": [
    "https://docs.example.com/security/key-rotation",
    "https://blog.example.org/key-rotation-checklist",
    "https://example.com/changelog"
  ],
  "max_chars": 20000
}
```

**Response** `200`

```json
{
  "credits_used": 1,
  "results": [
    {
      "url": "https://docs.example.com/security/key-rotation",
      "title": "Rotating API keys",
      "content_status": "ok",
      "content": "# Rotating API keys\n\n## Zero-downtime rotation\n\n1. Create a second key...",
      "word_count": 948
    },
    {
      "url": "https://blog.example.org/key-rotation-checklist",
      "content_status": "blocked_by_robots"
    },
    {
      "url": "https://example.com/changelog",
      "title": "Changelog",
      "content_status": "ok",
      "content": "# Changelog\n\n## 2026-10-20\n\n- New export format...",
      "word_count": 2204
    }
  ]
}
```

*curl*

```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"], "max_chars": 20000}'
```

*Python*

```python
import os
import requests

resp = requests.post(
    "https://llmwebsearch.com/api/v1/extract",
    headers={"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]},
    json={"urls": ["https://docs.example.com/security/key-rotation", "https://example.com/changelog"]},
    timeout=60,
)
for page in resp.json()["results"]:
    print(page["url"], page["content_status"], page.get("word_count", 0))
```

*Node.js*

```javascript
const res = await fetch('https://llmwebsearch.com/api/v1/extract', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.LLMWEBSEARCH_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ urls: ['https://docs.example.com/security/key-rotation', 'https://example.com/changelog'] }),
});
for (const page of (await res.json()).results) console.log(page.url, page.content_status);
```

## Wann sollte ich extract statt read in einer Suche verwenden?

Verwenden Sie extract, wenn die URLs nicht aus der Suche stammen, die Sie gerade ausführen. Ein Nutzer fügt einen Link ein, ein Dokument zitiert drei Quellen, oder eine erste Suche mit `read=0` hat das Modell auswählen lassen, welche Seiten ein vollständiges Lesen verdienen.

Verwenden Sie `read` innerhalb von `/search`, wenn Sie die Top-Ergebnisse einfach im selben Aufruf gelesen haben möchten. Das ist eine Anfrage statt zwei, und bis zu 3 Seiten sind im einzelnen Credit der Suche enthalten.

## Wie werden extract-Aufrufe abgerechnet?

Ein Credit für jede begonnene Gruppe von 3 gelesenen Seiten. Gezählt werden die Seiten, die mit Inhalt zurückkommen: Eine URL, die von robots.txt oder von der Webseite abgelehnt wird, oder eine, die nicht geladen werden kann, wird nicht gezählt.

| Gelesene Seiten | Credits |
|---|---|
| 1 bis 3 | 1 |
| 4 bis 6 | 2 |
| 7 bis 9 | 3 |
| 19 oder 20 | 7 |

Die Antwort gibt die Summe immer in `credits_used` an. Ein Aufruf, bei dem keine Seite gelesen werden konnte, kostet nichts.

## Was sagt mir jedes Element der Antwort?

Jedes Element wiederholt die von Ihnen gesendete `url` und liefert eine `content_status`. Mit `ok` erhalten Sie außerdem die Seite `title`, ihren Hauptinhalt `content` und ihr `word_count`. Andernfalls nennt der Status den Grund: `blocked_by_robots`, `blocked_by_site_policy`, `target_refused` mit dem `target_status` der Webseite, `fetch_failed`, `fetch_timeout` oder `unsupported_content`.

Die Elemente behalten die Reihenfolge Ihrer `urls`-Liste, sodass Sie sie sowohl über den Index als auch über die URL zuordnen können. Die Seite [response format](https://llmwebsearch.com/de/docs/response/) beschreibt jeden Status.

## Welche URLs werden vor jedem Abruf abgelehnt?

Adressen, die auf private Netzwerke, den lokalen Rechner oder Cloud-Metadata-Dienste verweisen, werden abgelehnt. So kann niemand unseren Reader nutzen, um interne Systeme zu erreichen. Auch eine Weiterleitung, die zu einer solchen Adresse führt, wird abgelehnt, und es werden höchstens 5 Weiterleitungen verfolgt.

Die Adresse muss `http` oder `https` verwenden. Ein Aufruf, bei dem `urls` leer ist, mehr als 20 Einträge enthält oder eine fehlerhafte Adresse enthält, liefert `400 invalid_parameter`, kostenlos.

## Befolgt extract dieselben Regeln wie search?

Ja. Es ist derselbe Reader, der sich als `LLMWebSearch/1.0 (+https://llmwebsearch.com/bot/)` vorstellt. Eine Website, die in ihrer robots.txt Content-Signal: ai-input=no setzt, hält ihre Seiten aus dem Inhalt Ihrer Ergebnisse heraus. Wenn eine Website unseren Reader abweist, kommt das Ergebnis ohne Inhalt und mit dem Status der Website zurück: Wir lösen niemals CAPTCHAs, melden uns nicht in Konten an und umgehen weder eine Sperre noch eine Paywall.

Seiten, die einen Login benötigen oder hinter einer Paywall liegen, kommen ohne Inhalt zurück. Verweisen Sie den Agenten auf eine andere Quelle oder auf eine Seite, die Sie mit Ihrer eigenen Browser-Session lesen dürfen.

## Extract endpoint: häufige Fragen

### Welche Arten von Dateien kann er lesen?

Webseiten sind der Zweck, für den er gebaut ist. Ein Link zu einem Video, einem Archiv oder einer anderen Datei ohne lesbaren Text kommt als `unsupported_content` zurück, und diese URL wird nicht im Preis gezählt.

### Wird eine zweimal gesendete URL zweimal gelesen?

Senden Sie jede URL einmal. Kann eine Liste Duplikate enthalten, entfernen Sie sie zuerst auf Ihrer Seite, damit die Ergebnisse eins zu eins zu Ihrer Liste passen.

### Ist JavaScript-Rendering extra?

Nein. Wenn eine Seite einen Browser braucht, um ihren Text anzuzeigen, wird sie ohne zusätzliche Kosten gerendert.

### Kann extract eine Seite lesen, in der ich eingeloggt bin?

Nein. Der Reader meldet sich nie bei Konten an und sendet keine Cookies von Ihnen. Wenn eine Website unseren Reader abweist, kommt das Ergebnis ohne Inhalt und mit dem Status der Website zurück: Wir lösen niemals CAPTCHAs, melden uns nicht in Konten an und umgehen weder eine Sperre noch eine Paywall.

---

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.
