Skip to main content
Faça o scraping de uma página para obter dados limpos e, em seguida, chame /interact para começar a realizar ações nessa página: clicar em botões, preencher formulários, extrair conteúdo dinâmico ou navegar mais profundamente. Basta descrever o que você quer, ou escrever código se precisar de controle total. Use interagir quando você precisar:

Escolha o modelo de interação certo

Use o interagir vinculado ao scraping quando o fluxo de trabalho começar com POST /v2/scrape e a resposta incluir data.metadata.scrapeId. Use o Browser Sandbox quando precisar de uma sessão autônoma com seu próprio ciclo de vida. O SDK Python usa os equivalentes em snake_case (browser(), browser_execute(), list_browsers(), delete_browser(), interact(), stop_interaction()).

Prompts de IA

Descreva a ação que você quer executar na página

Execução de código

Interaja com segurança por meio da execução de código usando playwright, agent-browser

Visualização em tempo real

Assista ou interaja com o navegador em tempo real por meio de um stream incorporável

Como funciona

  1. Faça o scraping de uma URL com POST /v2/scrape. A resposta inclui um scrapeId em data.metadata.scrapeId. Se você quiser persistir o estado do navegador, passe profile nesta solicitação.
  2. Interaja chamando POST /v2/scrape/{scrapeId}/interact com um prompt ou com code do Playwright. Não passe profile aqui; a sessão de interação herda o perfil do job de scraping.
  3. Encerre a sessão com DELETE /v2/scrape/{scrapeId}/interact quando terminar. Para perfis graváveis, as mudanças são salvas quando a sessão é encerrada.

Início rápido

Faça o scraping de uma página, interaja com ela e encerre a sessão:
Response

Interaja usando prompts

A forma mais simples de interagir com uma página. Descreva o que você quer em linguagem natural, e ele clicará, digitará, rolará a página e extrairá dados automaticamente.
A resposta inclui um campo output com a resposta do agente:
Response

Mantenha os Prompts Pequenos e Focados

Prompts funcionam melhor quando cada um é uma tarefa única e clara. Em vez de pedir ao agente para executar um fluxo de trabalho complexo com várias etapas de uma só vez, divida isso em chamadas interact separadas. Cada chamada reutiliza a mesma sessão do navegador, então o estado é mantido entre elas.

Executando código

Para ter controle total, você pode executar código diretamente no sandbox do navegador. A variável page (um objeto Page do Playwright) está disponível tanto em Node.js quanto em Python. O modo Bash vem com agent-browser pré-instalado. Você também pode fazer capturas de tela na sessão: use (await page.screenshot()).toString("base64") em Node.js, await page.screenshot(path="/tmp/screenshot.png") em Python ou agent-browser screenshot no Bash.

Node.js (Playwright)

A linguagem padrão. Escreva código Playwright diretamente. page já está conectado ao navegador.

Python

Defina language como "python" para a API do Python do Playwright.

Bash (agent-browser)

agent-browser é uma CLI pré-instalada no sandbox com mais de 60 comandos. Ela fornece uma árvore de acessibilidade com refs de elementos (@e1, @e2, …), o que é ideal para automação conduzida por LLM.
Comandos comuns do agent-browser:

Visualização em tempo real

Toda resposta de interact retorna uma liveViewUrl que você pode incorporar para acompanhar o navegador em tempo real. Útil para depuração, demonstrações ou para criar UIs com navegador.
Response

Visualização em tempo real interativa

A resposta também inclui uma interactiveLiveViewUrl. Diferentemente da visualização em tempo real padrão, que é somente para visualização, a visualização em tempo real interativa permite que os usuários cliquem, digitem e interajam com a sessão do navegador diretamente pelo stream incorporado. Isso é útil para criar interfaces de navegador voltadas para o usuário final, como fluxos de login ou fluxos de trabalho guiados em que os usuários finais precisam controlar o navegador.

URL do CDP

Toda resposta de interação também retorna uma cdpUrl: a URL WebSocket bruta do Chrome DevTools Protocol (CDP) da sessão do navegador. Use-a para se conectar diretamente à sessão ativa pelo Playwright, Puppeteer ou qualquer cliente CDP e controlar o navegador com seu próprio código.

Ciclo de vida da sessão

Criação

A primeira POST /v2/scrape/{scrapeId}/interact dá continuidade à sessão de scraping e inicia a interação. A sessão navega a partir do mesmo país do scraping: ela usa o location.country do scraping ou, se nenhum país tiver sido definido no scraping, os EUA. Não passe location para o interagir; defina-o na request POST /v2/scrape.

Reutilização

Chamadas subsequentes de interact no mesmo scrapeId reutilizam a sessão existente. O navegador permanece aberto e mantém seu estado entre as chamadas, para que você possa encadear várias interações:

Limpeza

Encerre a sessão explicitamente quando terminar:
As sessões também expiram automaticamente com base no TTL (padrão: 10 minutes) ou no tempo limite de inatividade (padrão: 5 minutes).
Sempre encerre as sessões quando terminar para evitar cobrança desnecessária. Os créditos são rateados por segundo, com uma cobrança mínima de um minuto de navegador. Sessões que usam um prompt consomem 7 créditos por minuto de navegador; sessões sem um prompt consomem 2. Consulte cobrança para ver os detalhes.

Perfis persistentes com Scrape + Interagir

Por padrão, cada sessão de scraping + interagir começa com um navegador limpo. Com profile, você pode salvar e reutilizar o estado do navegador (cookies, localStorage, sessões) entre scrapes. Isso é útil para continuar conectado e preservar preferências. Passe o objeto profile na requisição inicial POST /v2/scrape. Não passe profile para POST /v2/scrape/{scrapeId}/interact; a sessão de interagir reutiliza a sessão do navegador e as configurações de perfil do scrape job. Encerre a sessão de interagir com DELETE /v2/scrape/{scrapeId}/interact para que mudanças graváveis no perfil possam ser salvas.
cURL
O ciclo de vida do perfil é:
  1. Crie o scraping com profile.name e saveChanges: true.
  2. Execute interações por prompt ou código usando o scrapeId retornado.
  3. Encerre a sessão para salvar cookies, localStorage e outros estados do navegador.
  4. Inicie um scraping posterior com o mesmo profile.name. Use saveChanges: false quando quiser apenas ler o estado existente sem gravar as mudanças de volta.
Apenas uma sessão pode salvar em um perfil por vez. Se outra sessão já estiver salvando, você receberá um erro 409. Você ainda pode abrir o mesmo perfil com saveChanges: false ou tentar novamente mais tarde.
O estado do navegador é salvo quando a sessão de interagir é encerrada. Sempre encerre a sessão quando terminar para que o perfil possa ser reutilizado.

Validar a persistência

Você pode testar a persistência sem depender de um fluxo de login real gravando um valor no localStorage em uma sessão, encerrando-a e, em seguida, lendo esse valor em uma segunda sessão com o mesmo perfil.
cURL
A segunda resposta do Interagir deve mostrar localStorage como "saved" e cookie como true.
Os perfis criados via API talvez ainda não apareçam em painel > Interagir > Perfis. No momento, o painel ainda não oferece uma visão completa dos perfis persistentes criados via API.

Retenção Zero de Dados (ZDR)

O interagir oferece suporte à Retenção Zero de Dados (ZDR) para equipes com requisitos rigorosos de tratamento de dados. Quando ativada, o Firecrawl não persiste nenhum conteúdo de página nem saída de execução além da duração da sessão. Para ativar a ZDR, defina zeroDataRetention: true na sua primeira chamada de interagir:
cURL
Você também pode passar zeroDataRetention: true ao criar uma sessão independente com POST /v2/interact. Interagir com um scraping que já foi feito com zeroDataRetention: true inicia automaticamente uma sessão ZDR. A política de retenção fica armazenada na sessão, então as chamadas seguintes à mesma sessão continuam no modo ZDR, mesmo que omitam a opção. O ZDR está disponível nos planos Enterprise e precisa ser habilitado para a sua equipe. Requisições que definem zeroDataRetention: true a partir de uma equipe sem ZDR habilitado retornam um 403. Acesse firecrawl.dev/enterprise para começar.
  • Gravações de sessão e perfis persistentes não estão disponíveis no modo ZDR. Requisições que combinam zeroDataRetention: true com recordSession ou profile retornam um 400.
  • Uma sessão existente iniciada sem ZDR não pode ser convertida para ZDR. Solicitar ZDR nela retorna um 409: pare a sessão e inicie uma nova com zeroDataRetention: true.
  • Raspagens com ZDR não retêm a URL extraída, então o Firecrawl pode não conseguir reconstruir o navegador a partir do scraping original. Se o interagir retornar um 409 informando que o contexto de replay não está disponível, passe url na request para abrir essa página em uma nova sessão ZDR. As ações do scraping original não são reexecutadas.
Veja Preços para conferir os custos das sessões ZDR.

Quando usar o quê

Interagir vs Browser Sandbox: O Interagir é construído sobre a mesma infraestrutura que o Browser Sandbox, mas oferece uma interface melhor para o padrão mais comum: fazer scrape de uma página e depois se aprofundar. O Browser Sandbox é melhor quando você precisa de uma sessão do navegador independente que não esteja vinculada a um scrape específico.

Preços

  • Somente código (sem prompt): 2 créditos por minuto de sessão
  • Com prompts de IA: 7 créditos por minuto de sessão
  • Scraping: cobrado separadamente (1 crédito por scraping, além de quaisquer custos específicos do formato)
  • Retenção Zero de Dados: sessões com ZDR acrescentam 2 créditos por minuto de sessão. Assim, sessões somente com código são cobradas a 4 créditos por minuto e sessões com prompts de IA, a 9, com o mesmo mínimo de um minuto. Um scraping com ZDR continua tendo seu próprio custo de ZDR, de 1 crédito adicional por página.

Referência da API

Corpo da Requisição (POST)

Resposta


Tem feedback ou precisa de ajuda? Envie um e-mail para help@firecrawl.com ou entre em contato no Discord.