Structuration à la volée pour agents autonomes. HTML verbeux → sections sémantiques typées. Cache partagé, sans modèle, sans navigateur.
FireScrap — une URL, un document JSONL structuré, vérifiable par son extrait source.
raw_html_snippet). L'agent valide sans re-fetch.robots.txt, entêtes politesse.Un agent qui navigue reçoit du HTML écrit pour un navigateur — verbeux, imbriqué, non structuré. Chaque agent réécrit sa propre extraction, fragile et lente.
FireScrap normalise ce flux : une URL entre, un document JSONL par sections sémantiques sort. Chaque section porte son extrait source (raw_html_snippet) pour vérification.
Sans compte, sans clé. Paiement x402 · USDC sur Base · session 90 j.
Un seul chemin court, sans dépendance externe :
url ──▶ récupération HTTP ──▶ arbre DOM ──▶ sections sémantiques ──▶ JSONL
│
cache (clé = url + entêtes)
Asynchrone, timeout 10 s, bornée à 2 Mo (troncature signalée). Respect du robots.txt et entêtes politesse.
Chaque nœud notable → section typée : article_header, article_paragraph, article_code_block, article_table…
Une page déjà traduite n'est pas re-fetchée. Courtoisie envers le site source, vitesse pour le client.
ndjson_md. Aucune divergence possible.
{
"_type": "page_translation",
"_source_url": "https://exemple.fr/article",
"_cache_hit": false,
"page_metadata": {
"title": "…",
"language_original": "fr-FR",
"charset_detected": "utf-8"
},
"sections": [
{ "_type": "article_header", "position_in_document": 0,
"heading_text": "Bienvenue",
"raw_html_snippet": "Bienvenue
" },
{ "_type": "article_paragraph", "position_in_document": 1,
"text_normalized": "Le texte exploitable, sans balises…" }
],
"_processing_stats": {
"total_sections_extracted": 43,
"time_to_parse_ms": 87
}
}
Deux ancres de confiance : raw_html_snippet (extrait source pour vérifier) et position_in_document (reconstituer l'ordre).
400 URL invalide415 Non-HTML502 Injoignable503 Non exploitable504 Trop lentChaque erreur porte sa raison explicite. Un défaut de conformité au schéma = incident serveur, jamais réponse partielle.
On-the-fly structuring for autonomous agents. Verbose HTML → typed semantic sections. Shared cache, no model, no browser.
FireScrap — one URL, one structured JSONL document, verifiable by its source snippet.
raw_html_snippet). The agent validates without re-fetch.robots.txt, polite headers.An agent browsing the web receives HTML written for a browser — verbose, deeply nested, unstructured. Every agent rewrites its own extraction, brittle and slow.
FireScrap normalises this flow: a URL goes in, a JSONL document of semantic sections comes out. Each section carries its source snippet (raw_html_snippet) for verification.
No account, no key. x402 payment · USDC on Base · 90-day session.
One short path, no external dependency:
url ──▶ HTTP fetch ──▶ DOM tree ──▶ semantic sections ──▶ JSONL
│
cache (key = url + headers)
Async, 10 s hard timeout, bounded 2 MB (truncation reported). Respects robots.txt and polite headers.
Every notable node → typed section: article_header, article_paragraph, article_code_block, article_table…
A page already translated is never re-fetched. Courtesy towards the source site, speed for the client.
ndjson_md. They cannot diverge.
{
"_type": "page_translation",
"_source_url": "https://example.com/article",
"_cache_hit": false,
"page_metadata": {
"title": "…",
"language_original": "en-US",
"charset_detected": "utf-8"
},
"sections": [
{ "_type": "article_header", "position_in_document": 0,
"heading_text": "Welcome",
"raw_html_snippet": "Welcome
" },
{ "_type": "article_paragraph", "position_in_document": 1,
"text_normalized": "The usable text, without markup…" }
],
"_processing_stats": {
"total_sections_extracted": 43,
"time_to_parse_ms": 87
}
}
Two trust anchors: raw_html_snippet (source excerpt to verify) and position_in_document (rebuild in order).
400 Invalid URL415 Non-HTML502 Unreachable503 Not usable504 Too slowEvery error carries an explicit reason. Schema compliance defect = server incident, never partial response.