Scrapez une page pour obtenir des données propres, puis appelez /interact pour commencer à effectuer des actions sur cette page : cliquer sur des boutons, remplir des formulaires, extraire du contenu dynamique ou naviguer plus en profondeur. Décrivez simplement ce que vous voulez faire, ou écrivez du code si vous avez besoin d’un contrôle total.
Pour être éligible, participez à un entretien approfondi (cas d'utilisation concrets et réfléchis, etc.) avec notre assistant de retours Firecrawl. Cela ne prend que quelques minutes, vous pouvez l'arrêter à tout moment et il est adapté aussi bien aux humains qu'aux agents (collez simplement le lien dans votre harness agentique !). Vous n'avez jamais utilisé /interact ? Votre avis compte quand même.
Démarrer l'entretien
Indiquez votre e-mail pour être éligible. La qualité des entretiens est évaluée à la fin de chaque semaine.
Choisissez le bon modèle d’interaction#
| Besoin | Utiliser | Documentation canonique | Méthodes SDK (Node) |
|---|---|---|---|
| Démarrer une session de navigateur autonome sans scraping préalable | Browser Sandbox / session Interact autonome | Browser Sandbox, Créer une session de navigateur, Exécuter du code du navigateur, Lister les sessions de navigateur, Supprimer une session de navigateur | browser(), browserExecute(), listBrowsers(), deleteBrowser() |
Continuer à partir d’un résultat de scraping avec scrapeId | Interact après le scraping | Exécuter Interact, Arrêter Interact | interact(), stopInteraction() |
Utilisez Interact lié au scraping lorsque le workflow commence par POST /v2/scrape et que la réponse inclut data.metadata.scrapeId. Utilisez Browser Sandbox lorsque vous avez besoin d’une session autonome avec son propre cycle de vie. Le Python SDK utilise les équivalents en snake_case (browser(), browser_execute(), list_browsers(), delete_browser(), interact(), stop_interaction()).
Décrivez l’action que vous souhaitez effectuer sur la page
Interagissez en toute sécurité via l’exécution de code avec playwright, agent-browser
Observez ou interagissez avec le Browser en temps réel via un flux intégrable
Comment ça fonctionne#
- Scrape une URL avec
POST /v2/scrape. La réponse inclut unscrapeIddansdata.metadata.scrapeId. Si vous souhaitez conserver l’état du navigateur, transmettezprofiledans cette requête. - Interact en appelant
POST /v2/scrape/{scrapeId}/interactavec unpromptou du codeplaywright. Ne transmettez pasprofileici ; la session d’interaction hérite du profil de la tâche de scraping. - Arrêtez la session avec
DELETE /v2/scrape/{scrapeId}/interactlorsque vous avez terminé. Pour les profils inscriptibles, les modifications sont enregistrées à l’arrêt de la session.
Démarrage rapide#
Scrapez une page, interagissez avec elle, puis arrêtez la session :
Interagir par prompt#
La manière la plus simple d’interagir avec une page. Décrivez ce que vous voulez en langage naturel, et l’agent cliquera, saisira du texte, fera défiler la page et extraira automatiquement les données.
La réponse inclut un champ output avec la réponse de l’agent :
Gardez les prompts courts et ciblés#
Les prompts sont plus efficaces lorsque chacun correspond à une tâche unique et claire. Au lieu de demander à l'agent d'exécuter un workflow complexe en plusieurs étapes en une seule fois, décomposez-le en appels interact distincts. Chaque appel réutilise la même session de navigateur, de sorte que l'état est conservé d'un appel à l'autre.
Exécution de code#
Pour un contrôle total, vous pouvez exécuter du code directement dans le sandbox du navigateur. La variable page (un objet Playwright Page) est disponible en Node.js et en Python. Le mode Bash inclut agent-browser en préinstallation. Vous pouvez également prendre des captures d’écran pendant la session : utilisez (await page.screenshot()).toString("base64") en Node.js, await page.screenshot(path="/tmp/screenshot.png") en Python, ou agent-browser screenshot en Bash.
Node.js (Playwright)#
Le langage par défaut. Écrivez directement du code Playwright. page est déjà connectée au navigateur.
Python#
Définissez language sur "python" pour l’API Python de Playwright.
Bash (agent-browser)#
agent-browser est une CLI préinstallée dans le sandbox avec plus de 60 commandes. Elle fournit un arbre d’accessibilité avec des références d’éléments (@e1, @e2, ...), ce qui est idéal pour l’automatisation pilotée par un LLM.
Commandes courantes d’agent-browser :
| Commande | Description |
|---|---|
snapshot | Arbre d’accessibilité complet avec références d’éléments |
snapshot -i | Éléments interactifs uniquement |
click @e1 | Cliquer sur un élément par référence |
fill @e1 "text" | Effacer le champ et saisir du texte |
type @e1 "text" | Saisir sans effacer |
press Enter | Appuyer sur une touche du clavier |
scroll down 500 | Faire défiler vers le bas de 500 pixels |
get text @e1 | obtenir le contenu du texte |
get url | obtenir l’URL actuelle |
wait @e1 | Attendre un élément |
wait --load networkidle | Attendre l’inactivité du réseau |
find text "X" click | Trouver un élément par son texte et cliquer |
screenshot | Prendre une capture d’écran de la page actuelle |
eval "js code" | Exécuter du JavaScript dans la page |
Vue en direct#
Chaque réponse Interact renvoie un liveViewUrl que vous pouvez intégrer pour voir le navigateur en temps réel. Utile pour le débogage, les démonstrations ou la création d’interfaces pilotées par le navigateur.
Vue en direct interactive#
La réponse inclut également un interactiveLiveViewUrl. Contrairement à la vue en direct standard, qui est en lecture seule, la vue en direct interactive permet aux utilisateurs de cliquer, de saisir du texte et d’interagir directement avec la session du navigateur via le flux intégré. Cela est utile pour créer des interfaces de navigateur destinées aux utilisateurs, par exemple pour des parcours de connexion ou des workflows guidés dans lesquels les utilisateurs finaux doivent contrôler le navigateur.
URL CDP#
Chaque réponse Interact renvoie également un cdpUrl : l’URL WebSocket brute du protocole Chrome DevTools Protocol (CDP) pour la session de navigateur. Utilisez-la pour vous connecter directement à la session en cours depuis Playwright, Puppeteer ou n’importe quel client CDP, et piloter le navigateur avec votre propre code.
Cycle de vie d’une session#
Création#
Le premier appel POST /v2/scrape/{scrapeId}/interact poursuit la session de scrape et démarre l’interaction.
Réutilisation#
Les appels interact suivants sur le même scrapeId réutilisent la session existante. Le navigateur reste ouvert et conserve son état entre les appels, ce qui vous permet d’enchaîner plusieurs interactions :
Nettoyage#
Arrêtez explicitement la session une fois terminé :
Les sessions expirent également automatiquement en fonction du TTL (par défaut : 10 minutes) ou du timeout d'inactivité (par défaut : 5 minutes).
Arrêtez toujours les sessions une fois terminé afin d'éviter une facturation inutile. Les credits sont calculés au prorata à la seconde. La facturation minimale est d'une minute de browser. Les sessions qui utilisent un prompt sont facturées à 7 credits par minute de browser ; les sessions sans prompt sont facturées à 2. Consultez la Facturation pour plus de détails.
Profils persistants avec Scrape + Interact#
Par défaut, chaque session de scrape + interact démarre avec un navigateur propre. Avec profile, vous pouvez enregistrer et réutiliser l’état du navigateur (cookies, localStorage, sessions) entre plusieurs scrapes. C’est utile pour rester connecté et conserver les préférences.
Passez l’objet profile dans la requête initiale POST /v2/scrape. Ne passez pas profile à POST /v2/scrape/{scrapeId}/interact ; la session interact réutilise la session de navigateur et les paramètres de profil de la tâche de scraping. Arrêtez la session interact avec DELETE /v2/scrape/{scrapeId}/interact afin que les modifications apportées au profil puissent être enregistrées.
Le cycle de vie du profil est :
- Créez le scrape avec
profile.nameetsaveChanges: true. - Exécutez des interactions par prompt ou par code sur le
scrapeIdrenvoyé. - Arrêtez la session pour enregistrer les cookies, le localStorage et les autres données d’état du navigateur.
- Démarrez plus tard un scrape avec le même
profile.name. UtilisezsaveChanges: falselorsque vous voulez uniquement lire l’état existant sans réécrire les modifications.
| Paramètre | Par défaut | Description |
|---|---|---|
name | None | Nom du profil persistant. Les scrapes portant le même nom partagent l’état du navigateur. |
saveChanges | true | Lorsque true, l’état du navigateur est réenregistré dans le profil à l’arrêt de la session interact. Définissez false pour charger des données existantes sans les écrire, ce qui est utile lorsque vous avez besoin de plusieurs lecteurs concurrents. |
Une seule session peut enregistrer dans un profil à la fois. Si une autre session enregistre déjà, vous recevrez une erreur 409. Vous pouvez quand même ouvrir le même profil avec saveChanges: false, ou réessayer plus tard.
L’état du navigateur est enregistré lorsque la session interact est arrêtée. Arrêtez toujours la session une fois terminé afin que le profil puisse être réutilisé.
Vérifier la persistance#
Vous pouvez tester la persistance sans dépendre d’une véritable procédure de connexion en écrivant une valeur dans localStorage lors d’une session, en l’arrêtant, puis en lisant cette valeur dans une seconde session avec le même profil.
La deuxième réponse Interact devrait afficher localStorage avec la valeur "saved" et cookie avec la valeur true.
Les profils créés via l’API peuvent ne pas encore apparaître dans Dashboard > Interact > Profiles. Le dashboard ne fournit pas encore un inventaire complet des profils persistants créés via l’API.
Quand utiliser chaque option#
| Cas d’usage | Recommandé | Pourquoi |
|---|---|---|
| Recherche web | Recherche | Point de terminaison de recherche dédié |
| Obtenir du contenu propre depuis une URL | Scrape | Un seul appel API, aucune session nécessaire |
| Cliquer, saisir, naviguer sur une page | Interact (prompt) | Décrivez simplement l’action en anglais |
| Extraire des données nécessitant des interactions | Interact (prompt) | Aucun sélecteur nécessaire |
| Logique de scraping complexe | Interact (code) | Contrôle total avec Playwright |
Interact vs Browser Sandbox : Interact repose sur la même infrastructure que Browser Sandbox, mais offre une meilleure interface pour le cas le plus courant : scraper une page, puis aller plus loin. Browser Sandbox est préférable lorsque vous avez besoin d’une session de navigateur autonome qui n’est pas liée à un scraping spécifique.
Tarification#
- Code uniquement (sans
prompt): 2 credits par minute de session - Avec des prompts IA: 7 credits par minute de session
- Scrape: facturé séparément (1 credit par scrape, plus les coûts spécifiques au format)
Référence de l’API#
- Exécuter Interact:
POST /v2/scrape/{scrapeId}/interact - Arrêter Interact:
DELETE /v2/scrape/{scrapeId}/interact
Corps de la requête (POST)#
| Champ | Type | Par défaut | Description |
|---|---|---|---|
prompt | string | Aucune | Tâche en langage naturel pour l’agent d’IA. Obligatoire si code n’est pas défini. Maximum 10 000 caractères. |
code | string | Aucune | Code à exécuter (Node.js, Python ou Bash). Obligatoire si prompt n’est pas défini. Maximum 100 000 caractères. |
language | string | "node" | "node", "python" ou "bash". Utilisé uniquement avec code. |
timeout | number | 30 | timeout en secondes (1–300). |
origin | string | Aucune | Identifiant de l’appelant pour le suivi de l’activité. |
Réponse#
| Champ | Description |
|---|---|
success | true si l’exécution s’est terminée sans erreur |
cdpUrl | URL WebSocket brute du Chrome DevTools Protocol (CDP) pour la session de navigateur. Connectez-vous directement avec Playwright, Puppeteer ou n’importe quel client CDP |
liveViewUrl | URL de la vue en direct en lecture seule pour la session de navigateur |
interactiveLiveViewUrl | URL de la vue en direct interactive (les utilisateurs peuvent contrôler le navigateur) |
output | La réponse en langage naturel de l’agent à votre prompt. Présent uniquement lors de l’utilisation de prompt. |
stdout | Sortie standard de l’exécution du code |
result | Valeur de retour brute du sandbox. Pour code : la dernière expression évaluée. Pour prompt : l’instantané brut de la page utilisé par l’agent pour produire output. |
stderr | Sortie d’erreur standard |
exitCode | Code de sortie (0 = succès) |
killed | true si l’exécution a été interrompue en raison d’un timeout |
Vous avez des retours ou besoin d’aide ? Envoyez un e-mail à help@firecrawl.com ou contactez-nous sur Discord.

