seed ▸ crawl opened 0

Transformez tout un site
en données propres.

Pointez Writ vers une URL. Il cartographie le site, répartit le crawl sur toute votre flotte (best-first, en parallèle), et vous rend chaque page en Markdown propre ou en JSON structuré. Scrapez une page ou crawlez-en un million.

compte gratuit pour démarrer · $0.0005 / page en cloud · open-core auto-hébergeable
playground.usewrit.app sans clé
https://
Markdown + frontmatter JSON structuré sitemap + liens découverts
fetch ▸ page scraped 1
01
extraction

Une page en entrée, du Markdown propre en sortie.

Writ retire l’habillage (navigation, bandeaux de cookies, pubs, boilerplate) et garde le contenu, pour qu’un LLM lise la page, pas la mise en page. Appuyez sur Scrape :

tech.example/article
Raw page
nav · menu linkschrome
cookie consent bannerchrome
▓ sponsored · Surfsharkad
# Tech news & reviewscontent
article body · 1,240 wordscontent
newsletter signupchrome
footer · social · legalchrome
Markdown · 100% tokens
press Scrape to extract clean Markdown
map ▸ urls discovered 12
02
cartographie

Chaque URL découvrable, en quelques secondes.

Map fusionne le sitemap avec les liens que Writ découvre en direct, vous voyez donc toute la surface avant de dépenser un seul crawl de page. Choisissez vos seeds, puis crawlez seulement ce qui compte.

map tech.example
0 urlssitemap + discovered0.0s
net ▸ frontier draining 1,240
03
harvest · crawl distribué

Un crawl, toute votre flotte.

Un crawl, ce n’est pas une seule machine qui écoule une file. Writ partage une frontière unique entre tous les agents (best-first, pour que les pages les plus pertinentes reviennent en premier) et passe à l’échelle linéairement à mesure que vous ajoutez des workers. Ajoutez des agents :

agents 4frontier 2,914 · pg/s
auth ▸ wall opened 1,650
04
harvest · derrière la connexion

La frontière dépend de qui est connecté.

Un crawler public s’arrête net au mur de connexion. Attachez une persona et la même URL de départ s’ouvre sur les pages que seul votre compte peut voir - historique de commandes, factures, pages membres absentes de tout sitemap - et la carte elle-même s’agrandit. Basculez la session :

/ /about /pricing /docs /login /account /account/orders /account/invoices /orders/8841 /orders/8842 /invoices/2291 mur de connexion
5 URL atteignables depuis une seule graine

Sans session, la frontière s’arrête à /login. Tout ce qui est au-delà est indécouvrable — pas lent à atteindre, indécouvrable : ces URL ne figurent dans aucun sitemap et rien du site public n’y renvoie.

Topologie illustrative. Un vrai Harvest s’exécute dans le périmètre que vous fixez — inclusions, exclusions et plafonds de débit — et respecte robots.txt.

tgt ▸ urls scored 1,980
05
ciblage

Crawlez ce que vous visez, pas tout.

Décrivez l’intention et Writ note chaque URL en fonction, suivant celles qui correspondent et ignorant le reste. Vous payez les pages voulues, pas tout le site. Choisissez une cible :

ext ▸ content extracted 2,400
06
rendu & extraction

HTML, JS, PDF, images : tout devient lisible.

Writ route chaque ressource vers la voie la moins coûteuse qui fonctionne : HTTP direct pour les pages statiques, un vrai navigateur pour les apps JS, doc-extract pour les PDF et fichiers bureautiques, OCR hors ligne pour les images. Vous obtenez du texte dans tous les cas.

Ce qu’un crawl sait lire
HTML statique http direct récupéré et lu nativement - la voie rapide et économique
App rendue en JS navigateur un vrai navigateur rend la page quand le contenu n’existe qu’après l’exécution des scripts
Documents PDF doc-extract lus depuis la couche texte quand elle existe ; les pages scannées basculent vers l’OCR. Les fichiers bureautiques (DOCX, XLSX, PPTX) et JSON/CSV s’extraient nativement aussi
Images et scans ocr OCR hors ligne - aucun service OCR tiers - avec un score de confiance rapporté par page
Derrière une connexion persona exige une Persona : le crawler rejoue sa session enregistrée, et n’effectue jamais de connexion lui-même
Tout le reste signalé une page que Writ ne sait pas lire revient étiquetée avec son type et sa raison - jamais abandonnée en silence
Auto par défaut : chaque URL est sondée puis routée vers la voie la moins coûteuse qui fonctionne. Les pages navigateur et OCR sont mesurées à 2× l’unité de page de base.
out ▸ shaped 2,900
07
sortie

Markdown, JSON, ou un jeu de données interrogeable.

Prenez du Markdown propre, ou donnez un schéma à Writ et obtenez du JSON structuré par page. Chaque crawl atterrit dans un jeu de données que vous pouvez interroger, sans re-crawl pour répondre à la question suivante.

bill ▸ metered per page 8,900
08
tarifs

Un vingtième de cent par page. Gratuit pour démarrer.

Les crawls s’exécutent sur la flotte Writ - un compte gratuit suffit pour démarrer, sans carte bancaire. Les pages sont facturées depuis votre pool, et les voies navigateur et OCR pèsent plus lourd car elles coûtent plus cher à exécuter. En auto-hébergeant l’open-core, vos propres agents crawlent sans aucun frais de notre part. Faites glisser vos pages mensuelles :

pages / mois 50 000
est. $25.00/mois en cloud· auto-hébergé · vos agents · $0 pour nous
le plus petit plan qui couvre
Freeconcurrence 3 · jusqu’à 1 000 pages par crawl$0
Starterconcurrence 5 · jusqu’à 10 000 pages par crawl$15
Proconcurrence 10 · jusqu’à 25 000 pages par crawl$49
Growthconcurrence 25 · jusqu’à 50 000 pages par crawl$199
Scaleconcurrence 75 · jusqu’à 50 000 pages par crawl$499
dev ▸ crawl kicked off 8,900
09
développeurs

Lancez un crawl en un seul appel.

Lancez un crawl, interrogez son statut, streamez les résultats via REST, un outil MCP ou le SDK. Choisissez :

Un crawl de site complet, c’est un seul POST avec une clé. Writ répartit la graine sur la flotte et livre le résultat comme un jeu de données appelable.

# No account, no key — a few same-domain pages, one level deep.
curl -X POST https://api.usewrit.app/v1/keyless/crawl \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "limit": 3}'

# With a key: the whole site, as a job you poll.
curl -X POST https://api.usewrit.app/api/crawl \
  -H "Authorization: Bearer $WRIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "max_depth": 3, "page_budget": 500}'

curl https://api.usewrit.app/api/crawl/8125 -H "Authorization: Bearer $WRIT_API_KEY"

Aucun compte pour essayer : le palier sans clé crawle quelques pages du même domaine, sur un niveau, dans la limite d’une allocation quotidienne. La portée complète, les logins et un jeu de données appelable demandent une clé.