Structuration à la volée pour agents autonomes. Version 1.0 — 03/11/2026. Service en ligne, sans modèle, sans navigateur, cache partagé.
Problème : un agent qui navigue le web reçoit du HTML — verbeux, profondément imbriqué, écrit pour un navigateur, pas pour une machine. Chaque agent réinvente sa propre extraction : lente, fragile, inconsistante.
Solution : FireScrap propose un service de structuration partagé : une URL entre, un document JSONL par sections sémantiques sort. La page est traduite une fois, puis servie à tous les agents qui la demandent (cache partagé). Aucun modèle de langage, aucun navigateur intégré — juste une classification déterministe du DOM.
raw_html_snippet d'origine pour vérification sans retour au site source. Erreurs typées explicites (400/415/502/503/504), jamais document vide présenté comme succès.
FireScrap poursuit un seul objectif : donner aux agents un accès structuré au web, sans qu'ils n'aient à réécrire l'extraction.
Objectifs mesurables pour l'agent client :
raw_html_snippet). L'agent n'a pas besoin de re-fetch pour valider.robots.txt, entêtes politesse.Même URL + mêmes entêtes = même document. Pas de modèle, pas d'aléa. La classification DOM est purement structurelle (sélecteurs CSS, heuristiques de densité texte).
Clé de cache = URL normalisée + entêtes pertinentes (Accept-Language, etc.). Une page traduite = servie à tous. TTL adaptatif selon fréquence de changement détectée.
Chaque section : _type, position_in_document, raw_html_snippet. L'agent reconstruit, vérifie, filtre sans dépendre du service.
| Type | Description | Champs clés |
|---|---|---|
article_header | Titres h1–h6 | heading_text, level |
article_paragraph | Paragraphes de texte | text_normalized |
article_list | Listes ul/ol | items[], ordered |
article_code_block | Blocs <pre><code> | language, code |
article_table | Tableaux HTML | headers[], rows[][] |
article_media | Images, vidéos, iframes | src, alt, type |
article_blockquote | Citations | text_normalized, cite |
article_separator | hr, sauts thématiques | — |
Chaque section porte position_in_document (ordre global) et raw_html_snippet (extrait source tronqué à 500 caractères).
Un seul objet interne → cinq formats, sans divergence :
jsonl (défaut)yamltomlmarkdownndjson_mdmarkdown par section.Endpoint principal : POST /api/v1/translate
curl -X POST https://firescrap.services4agents.fyi/api/v1/translate \ -H 'Content-Type: application/json' \ -d '{"url":"https://exemple.fr","format":"jsonl"}'En-têtes de réponse utiles : X-Cache-Hit (bool), X-Quota-Remaining (int), X-FireScrap-Session (session payée, 90 j).
Tarification x402 (USDC sur Base) :
| Code | Signification | Action agent |
|---|---|---|
400 | URL invalide (schéma, encodage) | Corriger l'URL, réessayer |
415 | Contenu non-HTML (PDF, image, binaire) | Ignorer, pas réessayable |
502 | Hôte injoignable (DNS, TCP, TLS) | Réessayer plus tard (backoff) |
503 | Non exploitable (JS pur, vide, erreur HTTP) | Ignorer, raison dans detail |
504 | Timeout (>>10 s ou >2 Mo) | Réessayer ou marquer comme lent |
Un défaut de conformité du document de sortie au schéma = 500 incident serveur, jamais réponse partielle envoyée au client.
On-the-fly structuring for autonomous agents. Version 1.0 — 03/11/2026. Live service, no model, no browser, shared cache.
Problem: an agent browsing the web receives HTML — verbose, deeply nested, written for a browser, not a machine. Every agent reinvents its own extraction: slow, brittle, inconsistent.
Solution: FireScrap offers a shared structuring service: a URL goes in, a JSONL document of semantic sections comes out. The page is translated once, then served to every agent that asks for it (shared cache). No language model, no built-in browser — just deterministic DOM classification.
raw_html_snippet for verification without re-fetching the source site. Explicit typed errors (400/415/502/503/504), never an empty document passed off as success.
FireScrap pursues a single objective: give agents structured access to the web without them having to rewrite extraction.
Measurable objectives for the client agent:
raw_html_snippet). The agent doesn't need to re-fetch to validate.robots.txt, polite headers.Same URL + same headers = same document. No model, no randomness. DOM classification is purely structural (CSS selectors, text-density heuristics).
Cache key = normalized URL + relevant headers (Accept-Language, etc.). A translated page = served to all. Adaptive TTL based on detected change frequency.
Every section: _type, position_in_document, raw_html_snippet. The agent rebuilds, verifies, filters without depending on the service.
| Type | Description | Key fields |
|---|---|---|
article_header | Headings h1–h6 | heading_text, level |
article_paragraph | Text paragraphs | text_normalized |
article_list | ul/ol lists | items[], ordered |
article_code_block | Pre/code blocks | language, code |
article_table | HTML tables | headers[], rows[][] |
article_media | Images, videos, iframes | src, alt, type |
article_blockquote | Blockquotes | text_normalized, cite |
article_separator | hr, thematic breaks | — |
Each section carries position_in_document (global order) and raw_html_snippet (source excerpt truncated to 500 chars).
One internal object → five formats, no divergence:
jsonl (default)yamltomlmarkdownndjson_mdmarkdown field per section.Main endpoint: POST /api/v1/translate
curl -X POST https://firescrap.services4agents.fyi/api/v1/translate \ -H 'Content-Type: application/json' \ -d '{"url":"https://example.com","format":"jsonl"}'Useful response headers: X-Cache-Hit (bool), X-Quota-Remaining (int), X-FireScrap-Session (paid session, 90 days).
x402 pricing (USDC on Base):
| Code | Meaning | Agent action |
|---|---|---|
400 | Invalid URL (scheme, encoding) | Fix URL, retry |
415 | Non-HTML content (PDF, image, binary) | Ignore, not retryable |
502 | Host unreachable (DNS, TCP, TLS) | Retry later (backoff) |
503 | Not usable (pure JS, empty, HTTP error) | Ignore, reason in detail |
504 | Timeout (>10 s or >2 MB) | Retry or mark as slow |
Output document schema non-conformance = 500 server incident, never partial response sent to client.