Lancer l'extraction d'une page web
const url = 'https://api.extentapi.example/v1/scraper/jobs';const options = { method: 'POST', headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'}, body: '{"url":"https://example.com","priority":1,"webhookUrl":"https://example.com","webhookSecret":"example","escalation":[{"engine":"fast","attempts":1,"timeoutMs":1}],"screenshot":{"format":"png","quality":1,"fullPage":true,"loadResources":"images","declutter":true},"forceRefresh":true}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.extentapi.example/v1/scraper/jobs \ --header 'Content-Type: application/json' \ --header 'x-api-key: <x-api-key>' \ --data '{ "url": "https://example.com", "priority": 1, "webhookUrl": "https://example.com", "webhookSecret": "example", "escalation": [ { "engine": "fast", "attempts": 1, "timeoutMs": 1 } ], "screenshot": { "format": "png", "quality": 1, "fullPage": true, "loadResources": "images", "declutter": true }, "forceRefresh": true }'Récupérez le contenu d’une URL, même protégée. La requête est traitée de façon asynchrone (201) — récupérez le résultat par polling ou webhook. Idempotent via le header Idempotency-Key (24 h).
Cache de résultat : si la même URL a été crawlée avec succès récemment (< 6 h par défaut), le résultat est servi immédiatement — réponse 200 cache_hit (job déjà done, cache.hit=true) au lieu de re-crawler, facturée au tarif réduit. Passez forceRefresh: true pour forcer un nouveau crawl. Les requêtes avec screenshot ne sont jamais servies depuis le cache.
Authorizations
Section intitulée « Authorizations »Request Body required
Section intitulée « Request Body required »object
object
Responses
Section intitulée « Responses »Cache hit — résultat d’un crawl récent réutilisé.
object
object
object
object
object
Example
{ "status": "success", "data": { "status": "queued" }}Job créé et enqueué.
object
object
object
object
object
Example
{ "status": "success", "data": { "status": "queued" }}Requête mal formée (validation_error, invalid_idempotency_key, invalid_sort_field, invalid_filter).
object
object
object
Example
{ "status": "error"}Authentification manquante ou invalide.
object
object
object
Example
{ "status": "error"}Scope insuffisant (forbidden, no_active_plan, service_disabled_on_plan).
object
object
object
Example
{ "status": "error"}Validation métier KO (unsafe_url, invalid_bulk_body).
object
object
object
Example
{ "status": "error"}Rate-limit dépassé. Header Retry-After retourné.
object
object
object
Example
{ "status": "error"}