Zonder KYC — geen ID, geen selfie, geen documenten. Betalen met crypto: BTC, USDT, USDC, ETH, SOL, LTC
Taal: Nederlands
Vraag een API-sleutel aan

Docs · response

Read API-responsformaat, veld voor veld

Elke /read-aanroep geeft één JSON-object terug: de inhoud van de pagina in het formaat dat je hebt gevraagd, de metadata en drie velden die vertellen wat er is gebeurd en wat het heeft gekost. Resultaten van jobs hergebruiken hetzelfde object.

Laatst bijgewerkt: · 5 min leestijd

Kort antwoord

Wat bevat de read-respons van WebReaderAPI?

Een WebReaderAPI /read-respons bevat de paginainhoud in markdown (of text of html), de metadata (title, description, author, published_at, language, site_name, word_count) en de feiten van de fetch: final_url, status_code, rendered en credits_used. Een gewone pagina kost 1 credit, vanaf US$ 0,07/1K pagina's per oktober 2026. Zonder KYC; betalen met crypto.

Welke velden beschrijven de fetch?

Deze velden staan altijd in een geslaagde respons.

FieldTypeBetekenis
urlstringHet adres dat je hebt gestuurd
final_urlstringHet adres dat daadwerkelijk is gelezen, na redirects (maximaal 5)
status_codeintegerDe HTTP-status die de site voor het uiteindelijke adres teruggaf, normaal 200
fetched_atstringTijdstip van de fetch, ISO 8601 in UTC
renderedbooleantrue wanneer een headless browser de pagina heeft opgebouwd
credits_usedintegerCredits die voor deze pagina in rekening worden gebracht: 1, 2 met een browser, plus 10 met country; PDF's 1 per begonnen 10 pagina's

Welke velden beschrijven de pagina?

Metadata komt van de pagina zelf: de title tag, meta tags, structured data en zichtbare byline. Een veld dat de pagina niet levert, ontbreekt, dus test erop voordat je het gebruikt.

FieldTypeBetekenis
titlestringDe titel van de pagina of het artikel
descriptionstringDe samenvatting die de pagina van zichzelf geeft
languagestringTaalcode van de inhoud, zoals en of de
authorstringDe auteur die op de pagina wordt genoemd
published_atstringPublicatiedatum die de pagina vermeldt
site_namestringDe eigen naam van de site
word_countintegerWoorden in de teruggegeven inhoud, na extractie en vóór max_chars

Waar staat de inhoud zelf?

Er wordt één inhoudsveld teruggegeven, genoemd naar de format die je hebt gekozen.

FieldWanneerInhoud
markdownformat=markdown (standaard)Koppen, paragrafen, lijsten, tabellen en links in Markdown; ook afbeeldingen met include_images=true
textformat=textPlatte tekst, paragrafen gescheiden door lege regels
htmlformat=htmlOpgeschoonde HTML van de hoofdinhoud, zonder scripts, styles of advertenties
linksinclude_links=trueLijst met {url, text} voor de links die op de pagina zijn gevonden, absolute URL's
Een volledig antwoord (waarden zijn ter illustratie)
{
  "url": "https://example.com/guides/compost",
  "final_url": "https://example.com/guides/compost-at-home",
  "status_code": 200,
  "fetched_at": "2026-10-22T10:02:44Z",
  "rendered": false,
  "credits_used": 1,
  "title": "Compost at home: a beginner's guide",
  "description": "What to put in a compost bin, and what to leave out.",
  "language": "en",
  "author": "Sam Rivera",
  "published_at": "2026-09-14",
  "site_name": "Example Garden",
  "markdown": "# Compost at home: a beginner's guide\n\nA compost bin turns kitchen scraps into soil...\n\n## What goes in\n\n- Fruit and vegetable peels\n- Coffee grounds\n\nSee also [Choosing a bin](https://example.com/guides/bins).",
  "word_count": 1184,
  "links": [
    { "url": "https://example.com/guides/bins", "text": "Choosing a bin" }
  ]
}

Hoe zie ik of een pagina gerenderd is of niet?

Kijk naar rendered. Met render=auto leest de API eerst de ruwe HTML; pas als die HTML te weinig tekst bevat, start hij een browser, en dan zet hij rendered op true en credits_used op 2. Als een site die je vaak leest altijd gerenderd terugkomt, stuur dan vanaf het begin render=true mee: de kosten zijn hetzelfde en je slaat een verspilde eerste stap over.

Komt een pagina ongerenderd maar met weinig tekst terug, vergelijk dan word_count met wat je in een browser ziet. Een laag aantal betekent meestal dat de inhoud JavaScript nodig heeft; probeer het nog één keer met render=true.

Waarom kan final_url afwijken van url?

Omdat sites doorverwijzen. Een korte link, een oud adres, een ontbrekende slash aan het eind of een taalwissel sturen je ergens anders heen. De API volgt tot 5 redirects en rapporteert het adres dat hij uiteindelijk heeft gelezen in final_url.

Sla final_url op als de canonieke bron van een document in een RAG-index. Twee verschillende url-waarden die op dezelfde final_url uitkomen, zijn dezelfde pagina, dus je kunt het duplicaat weggooien voordat je het embed.

Hoe ziet een job-resultaat eruit?

GET https://webreaderapi.com/api/v1/jobs/{job_id} retourneert job_id, status (queued, running of done), results, next_cursor en de lopende credits_used van de job. Elk item van results heeft een van twee vormen:

  • een volledig /read-antwoord, precies zoals hierboven beschreven, voor een pagina die is gelezen;
  • {url, error} voor een pagina die dat niet is, waarbij error dezelfde code en message heeft als een API-fout.

next_cursor is aanwezig zolang er meer resultaten klaarstaan; stuur het terug als cursor om ze op te halen. De batch- en crawl-pagina heeft een complete polling-loop.

Een job-resultaatpagina (waarden zijn ter illustratie)
{
  "job_id": "job_5c1e8a90d2",
  "status": "done",
  "results": [
    { "url": "https://example.com/blog/post-1", "final_url": "https://example.com/blog/post-1", "status_code": 200, "rendered": false, "credits_used": 1, "title": "Post one", "markdown": "# Post one\n\n...", "word_count": 802 },
    { "url": "https://example.org/members/area", "error": { "code": "target_refused", "message": "The site refused the request.", "target_status": 403 } }
  ],
  "credits_used": 1
}

Hoe ziet een foutantwoord eruit?

Een fout komt terug met een HTTP-status van 400 of hoger en een JSON-body {"error": {"code", "message"}}. Als de site zelf het verzoek weigerde, geeft target_status de status die de site stuurde. Geen enkele fout wordt gefactureerd. De foutenpagina somt elke code op met de oorzaak en of een nieuwe poging kan helpen.

Antwoordformaat: veelgestelde vragen

Wordt de Markdown afgekapt als ik max_chars instel?

Ja. Het content-veld stopt bij dat aantal tekens. word_count beschrijft nog steeds de volledig geëxtraheerde inhoud, zodat je kunt zien hoeveel er is weggelaten.

Waarom ontbreken author of published_at?

Omdat de pagina het niet vermeldt op een manier die leesbaar is. Veel pagina's geven geen auteur of datum. Ontbrekende velden worden weggelaten in plaats van leeg teruggegeven.

Links in de links-lijst zijn absoluut. Schrijf je code zo dat beide vormen in de Markdown-body worden geaccepteerd, en los relatieve links op tegen final_url.

Kan ik de ruwe HTML van de hele pagina krijgen?

Het dichtst in de buurt komt format=html met main_content=false, dat de hele pagina teruggeeft, ontdaan van scripts en styles. De originele byte-voor-byte HTML maakt geen deel uit van v1.

Vanaf US$ 0,07/1K pagina's · zonder KYC

Vraag een API-sleutel aan