# Responseformaat: elk veld van een zoekopdracht, uitgelegd

> Responseformaat zoek-API: elk veld van /search en /extract, de acht content_status-waarden en target_status, met voorbeeld. Zonder KYC, betalen met crypto.

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

Een zoekantwoord is één JSON-object: een paar velden over de aanroep, dan een gerangschikte `results`-array. Elk resultaat zegt of de webpagina is gelezen en bevat zo ja de hoofdinhoud. Hier is elk veld, met de statussen die een agent moet afhandelen.

**Snel antwoord — Wat retourneert de LLMWebSearch API voor een zoekopdracht?**

**LLMWebSearch** retourneert JSON met de `query`, `created_at`, `credits_used` en een gerangschikte `results`-array. Elk resultaat heeft zijn positie, titel, URL, host en snippet, en een `content_status`; als die `ok` is, staat de hoofdinhoud van de webpagina in `content` met een `word_count`. Eén zoekopdracht met maximaal 3 gelezen pagina's kost 1 credit, vanaf US$ 1,20/1K zoekopdrachten per oktober 2026. Zonder KYC; betalen met crypto.

## Welke velden beschrijven de aanroep?

Topniveau van een `/search`-response.

| Field | Type | Betekenis |
| --- | --- | --- |
| `query` | string | De zoekopdracht zoals wij die hebben uitgevoerd, na het trimmen van spaties |
| `created_at` | string | Wanneer de zoekopdracht liep, ISO 8601 in UTC |
| `credits_used` | integer | Wat de aanroep kostte: 1, of 2 wanneer `read` 4 tot 10 was |
| `results` | array | Gerangschikte resultaten, beste eerst, maximaal `max_results` items |

## Welke velden bevat elk resultaat?

Een veld dat de webpagina of het zoekresultaat niet levert, wordt weggelaten in plaats van leeg verzonden.

| Field | Type | Indien aanwezig | Betekenis |
| --- | --- | --- | --- |
| `position` | integer | Altijd | Positie in de zoekopdracht, beginnend bij 1 |
| `title` | string | Altijd | Titel van het resultaat |
| `url` | string | Altijd | Adres van de webpagina |
| `host` | string | Altijd | Hostnaam van de webpagina, handig voor groeperen of citeren |
| `snippet` | string | Altijd | Korte samenvatting die de zoekopdracht toont |
| `published_at` | string | Wanneer een datum bekend is | Publicatiedatum van de pagina of het zoekresultaat |
| `content_status` | string | Altijd | Of de pagina is gelezen, en zo niet, waarom |
| `content` | string | Wanneer `content_status` `ok` is | Hoofdinhoud als Markdown of platte tekst, afgekapt op `max_chars` |
| `word_count` | integer | Wanneer `content_status` `ok` is | Woorden in de hele geëxtraheerde tekst, geteld vóór het afkappen |
| `target_status` | integer | Met `target_refused` | De HTTP-status die de site antwoordde, zoals 403 of 429 |

## Wat betekent elke content_status?

Geen van deze verandert de prijs van de zoekopdracht. Ze beschrijven één pagina, nooit de hele call.

| `content_status` | Betekenis | Wat een agent moet doen |
| --- | --- | --- |
| `ok` | De pagina is gelezen; `content` bevat de hoofdtekst | Gebruik het en citeer de `url` |
| `not_requested` | Het resultaat valt buiten het aantal van `read` | Verhoog `read`, of lees het indien nodig via `/extract` |
| `blocked_by_robots` | De robots.txt van de site staat onze reader niet toe op deze pagina | Vertrouw op het snippet of een andere bron |
| `blocked_by_site_policy` | De site verklaart `Content-Signal: ai-input=no` | Vertrouw op het snippet of een andere bron |
| `target_refused` | De site weigerde het verzoek; zie `target_status` | Probeer de pagina niet opnieuw; gebruik een andere bron |
| `fetch_failed` | DNS-, TLS- of verbindingsfout, of de pagina bestaat niet meer | Probeer een ander resultaat; een latere poging kan werken |
| `fetch_timeout` | De pagina antwoordde niet binnen 15 seconden | Probeer een ander resultaat; een latere poging kan werken |
| `unsupported_content` | De link is een bestand dat we niet naar tekst kunnen omzetten | Gebruik het snippet of een ander resultaat |

## Hoe ziet een volledig response eruit?

Het onderstaande voorbeeld vroeg 5 resultaten aan waarvan de eerste 4 werden gelezen, dus het kostte 2 credits. Resultaten 1 en 3 werden gelezen. Resultaat 2 hoort bij een site waarvan de robots.txt onze reader buiten houdt, resultaat 4 weigerde het verzoek, en resultaat 5 valt buiten `read`. Titels, URL's en waarden zijn illustratief.

*POST /search response (illustratief)*

```json
{
  "query": "how to rotate api keys without downtime",
  "created_at": "2026-10-22T10:15:04Z",
  "credits_used": 2,
  "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.",
      "content_status": "ok",
      "content": "# Secrets management basics\n\n**Never** commit keys to a repository.",
      "word_count": 1310
    },
    {
      "position": 4,
      "title": "Key management service guide",
      "url": "https://cloud.example.com/kms-guide",
      "host": "cloud.example.com",
      "snippet": "Store keys in a managed vault and rotate them on a schedule.",
      "content_status": "target_refused",
      "target_status": 403
    },
    {
      "position": 5,
      "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"
    }
  ]
}
```

## Welke resultaten krijgen een paginastatus anders dan not_requested?

Alleen de eerste `read` resultaten, en elk item van een `/extract`-aanroep. Dat zijn de pagina's die onze reader daadwerkelijk heeft geprobeerd. Alles na de `read`-telling blijft `not_requested`, wat de site ook zou hebben geantwoord.

De volgorde verandert nooit: de reader werkt op posities 1, 2, 3 enzovoort, nooit op een later resultaat in plaats van een eerder resultaat dat mislukte. Als een agent een vervanging nodig heeft voor een geweigerde pagina, kan het het volgende resultaat lezen via `/extract`.

## Hoe ziet een extract-respons eruit?

`/extract` retourneert `credits_used` en een `results`-array in de volgorde van de URL's die je hebt verzonden. Elk item heeft de `url` en een `content_status`; met `ok` voegt het `title`, `content` en `word_count` toe, en met `target_refused` voegt het `target_status` toe. Er is geen `position`, `host` of `snippet`, omdat er geen zoekopdracht is uitgevoerd.

De [extract-referentie](https://llmwebsearch.com/nl/docs/extract/) toont een compleet voorbeeld en legt uit hoe de credits worden geteld.

## Hoe zet ik resultaten om in context voor een model?

Nummer de bronnen, houd de URL bij elk ervan en geef alleen door wat het model nodig heeft. Een compacte opzet werkt goed: `[1] title — url`, dan de inhoud van die pagina, dan de volgende bron. Vraag het model om te citeren met dezelfde nummers.

Als een resultaat geen inhoud heeft, geef het model dan de snippet en zeg dat het alleen een snippet is. Zo voorkom je antwoorden die zijn gebaseerd op een pagina die het model nooit heeft gezien. De [Python-pagina](https://llmwebsearch.com/nl/docs/python/) heeft een korte loop die dit allemaal doet binnen een tokenbudget.

## Responsformaat: veelgestelde vragen

### Is de inhoud altijd Markdown?

Standaard Markdown. Stuur `format: "text"` om platte tekst zonder opmaak te krijgen, bijvoorbeeld als je alleen woorden telt of pagina's classificeert. De veldnaam blijft `content`.

### Waarom ontbreekt published_at bij sommige resultaten?

Veel pagina's vermelden geen datum, en sommige zoekresultaten tonen er ook geen. In dat geval wordt het veld weggelaten, dus controleer of het aanwezig is voordat je het gebruikt.

### Kunnen er later nieuwe velden verschijnen?

Ja. In versie 1 kunnen velden worden toegevoegd, maar ze worden nooit hernoemd of verwijderd. Schrijf je parser zo dat velden die hij niet kent worden genegeerd.

### Wordt de inhoud aan jullie kant opgeslagen?

Nee. We trainen geen enkel model op je zoekopdrachten of op wat de API teruggeeft, en we voegen geen eigen regel toe tegen het opslaan van resultaten; de rechten van de sites waarvan je pagina's leest, gelden nog steeds. Ons requestlog bewaart alleen een korte trace van elke aanroep, beschreven op de [privacy-pagina](https://llmwebsearch.com/nl/privacy/).

---

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.
