# Extract endpoint: lees de URL's die je agent al heeft

> URL extract endpoint: stuur 1 tot 20 URL's en krijg de hoofdinhoud van elke pagina als Markdown, 1 credit per 3. Zonder KYC, met crypto.

- URL: https://llmwebsearch.com/nl/docs/extract/
- Laatst bijgewerkt: 2026-10-22
- Uitgever: LLMWebSearch (https://llmwebsearch.com)

Soms heeft de agent de links al: een gebruiker heeft ze geplakt, een eerdere zoekopdracht heeft ze opgesomd, of een document citeert ze. `/extract` leest die pagina's en geeft hun hoofdinhoud terug, met dezelfde reader en dezelfde regels als `/search`.

**Snel antwoord — Hoe lees ik webpagina's waarvan ik de URL's al heb?**

Stuur tot 20 URL's naar `POST https://llmwebsearch.com/api/v1/extract`. **LLMWebSearch** leest elke openbare pagina en geeft de hoofdinhoud terug als Markdown of platte tekst, met een status per URL. Facturatie is 1 credit voor elke begonnen groep van 3 gelezen pagina's, vanaf US$ 1,20/1K zoekopdrachten per zoekopdracht-credit per oktober 2026. robots.txt wordt gerespecteerd. Zonder KYC; betalen met crypto.

## /extract at a glance

| Attribuut | Waarde |
| --- | --- |
| Methode | `POST` met een JSON-body |
| URL | `https://llmwebsearch.com/api/v1/extract` |
| Input | `urls`: 1 tot 20 http- of https-adressen |
| Uitvoer | Hoofdinhoud per URL, in `markdown` (standaard) of `text` |
| Facturering | Het lezen van pagina's waarvan je de URL's al hebt, kost 1 credit per begonnen groep van 3 pagina's die met inhoud worden teruggegeven, tot 20 URL's per call; geweigerde of mislukte URL's tellen niet mee |
| robots.txt | Onze reader respecteert robots.txt: hij stelt zich voor als LLMWebSearch, volgt de regels die een site voor hem of voor alle robots schrijft, en laat de inhoud weg van elke pagina die hij niet mag lezen |
| Pagina-lezer | `LLMWebSearch/1.0 (+https://llmwebsearch.com/bot/)` |

## Een lijst URL's lezen

`POST /api/v1/extract`

Haalt elke URL parallel op en geeft de hoofdinhoud terug, in de volgorde waarin je ze hebt gestuurd. Elk item heeft zijn eigen `content_status`, zodat één geweigerde pagina de call niet laat mislukken. Het voorbeeld leest drie pagina's; titels en waarden zijn illustratief.

Authenticatie: API-sleutel in de header `Authorization: Bearer API_KEY`.

**Request body**

| Field | Type | Vereist | Beschrijving |
| --- | --- | --- | --- |
| `urls` | string[] | Ja | 1 tot 20 http- of https-adressen. Privé-, lokale en cloud-metadata-adressen worden geweigerd. |
| `format` | string | Nee | `markdown` (standaard) of `text`. |
| `max_chars` | integer | Nee | Lengtelimiet van de inhoud van elke pagina, 500 tot 50.000 tekens. Standaard 6.000. |

*Voorbeeld: 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);
```

## Wanneer gebruik ik extract in plaats van read in een zoekopdracht?

Gebruik extract wanneer de URL's niet uit de zoekopdracht komen die je uitvoert. Een gebruiker plakt een link, een document citeert drie bronnen, of een eerste zoekopdracht met `read=0` liet het model kiezen welke pagina's een volledige lezing verdienen.

Gebruik `read` binnen `/search` als je gewoon de topresultaten in dezelfde call gelezen wilt hebben. Het is één verzoek in plaats van twee, en tot 3 pagina's zitten in de ene credit van de zoekopdracht.

## Hoe worden extract-calls gefactureerd?

Eén credit voor elke begonnen groep van 3 gelezen pagina's. De telling gebruikt de pagina's die met inhoud terugkomen: een URL die door robots.txt of door de site wordt geweigerd, of die niet laadt, wordt niet meegeteld.

| Gelezen pagina's | Credits |
|---|---|
| 1 tot 3 | 1 |
| 4 tot 6 | 2 |
| 7 tot 9 | 3 |
| 19 of 20 | 7 |

Het antwoord vermeldt altijd het totaal in `credits_used`. Een call waarbij geen enkele pagina gelezen kon worden kost niets.

## Wat vertelt elk item van het antwoord me?

Elk item herhaalt de `url` die je hebt gestuurd en geeft een `content_status`. Met `ok` krijg je ook de pagina `title`, de `content` en de `word_count` ervan. Anders noemt de status de reden: `blocked_by_robots`, `blocked_by_site_policy`, `target_refused` met de `target_status`, `fetch_failed`, `fetch_timeout` of `unsupported_content` van de site.

Items houden de volgorde van je `urls`-lijst aan, zodat je ze zowel op index als op URL kunt matchen. De [response format](https://llmwebsearch.com/nl/docs/response/)-pagina beschrijft elke status.

## Welke URL's worden geweigerd voordat er iets wordt opgehaald?

Adressen die naar privénetwerken, naar de lokale machine of naar cloud-metadataservices wijzen, worden geweigerd. Zo kan niemand onze reader gebruiken om interne systemen te bereiken. Een redirect die naar zo'n adres leidt, wordt ook geweigerd, en er worden maximaal 5 redirects gevolgd.

Het adres moet `http` of `https` gebruiken. Een aanroep waarbij `urls` leeg is, meer dan 20 entries bevat of een misvormd adres bevat, geeft `400 invalid_parameter`, gratis.

## Volgt extract dezelfde regels als search?

Ja. Het is dezelfde reader, die zich voorstelt als `LLMWebSearch/1.0 (+https://llmwebsearch.com/bot/)`. Een site die Content-Signal: ai-input=no in zijn robots.txt zet, houdt zijn pagina's buiten de inhoud van je resultaten. Wanneer een site onze reader weert, komt het resultaat terug zonder inhoud en met de status van de site: we lossen nooit CAPTCHA's op, loggen nooit in op accounts en werken nooit om een blokkade of een paywall heen.

Pagina's waarvoor je moet inloggen, of die achter een paywall zitten, komen terug zonder inhoud. Wijs de agent op een andere bron, of op een pagina die je met je eigen browsersessie mag lezen.

## Extract endpoint: veelgestelde vragen

### Welke soorten bestanden kan het lezen?

Webpagina's zijn waar het voor gebouwd is. Een link naar een video, een archief of een ander bestand zonder leesbare tekst komt terug als `unsupported_content`, en die URL wordt niet in de prijs meegerekend.

### Wordt een URL die twee keer wordt gestuurd twee keer gelezen?

Stuur elke URL één keer. Als een lijst duplicaten kan bevatten, verwijder ze dan eerst aan jouw kant, zodat de resultaten één-op-één overeenkomen met je lijst.

### Kost JavaScript-rendering extra?

Nee. Wanneer een pagina een browser nodig heeft om de tekst te tonen, wordt die gerenderd zonder extra kosten.

### Kan extract een pagina lezen waarop ik ben ingelogd?

Nee. De reader logt nooit in op accounts en stuurt geen cookies van jou mee. Wanneer een site onze reader weert, komt het resultaat terug zonder inhoud en met de status van de site: we lossen nooit CAPTCHA's op, loggen nooit in op accounts en werken nooit om een blokkade of een paywall heen.

---

LLMWebSearch: LLMWebSearch is een webzoek-API voor AI-agents die gerangschikte resultaten teruggeeft met de inhoud van de belangrijkste pagina's als Markdown, betaald met crypto zonder ID-upload. Voorafbetaalde credits vanaf US$ 1,20/1K zoekopdrachten verlopen nooit. Zonder KYC — geen ID, geen selfie, geen documenten. Betalen met crypto.
