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.
Para se qualificar, faça uma entrevista rica em informações (com casos de uso bem pensados e concretos etc.) com nosso Assistente de Feedback do Firecrawl. Leva apenas alguns minutos, pode ser interrompida a qualquer momento e funciona tanto para humanos quanto para agentes (basta colar o link no seu framework de agentes!). Nunca usou /interact? Sua opinião também conta.
Iniciar a entrevista
Inclua seu email para se qualificar. As entrevistas são avaliadas quanto à qualidade ao final de cada semana.
Escolha o modelo de interação certo#
| Necessidade | Use | Documentação canônica | Métodos do SDK (Node) |
|---|---|---|---|
| Inicie uma sessão autônoma do navegador sem fazer scraping antes | Browser Sandbox / sessão autônoma do interagir | Browser Sandbox, Criar sessão do navegador, Executar código no navegador, Listar sessões do navegador, Excluir sessão do navegador | browser(), browserExecute(), listBrowsers(), deleteBrowser() |
Continue a partir de um resultado de scraping usando scrapeId | Interagir após o scraping | Executar interagir, Stop interagir | interact(), stopInteraction() |
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()).
Descreva a ação que você quer executar na página
Interaja com segurança por meio da execução de código usando playwright, agent-browser
Assista ou interaja com o navegador em tempo real por meio de um stream incorporável
Como funciona#
- Faça o scraping de uma URL com
POST /v2/scrape. A resposta inclui umscrapeIdemdata.metadata.scrapeId. Se você quiser persistir o estado do navegador, passeprofilenesta solicitação. - Interaja chamando
POST /v2/scrape/{scrapeId}/interactcom umpromptou comcodedo Playwright. Não passeprofileaqui; a sessão de interação herda o perfil do job de scraping. - Encerre a sessão com
DELETE /v2/scrape/{scrapeId}/interactquando 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:
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:
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:
| Comando | Descrição |
|---|---|
snapshot | Árvore de acessibilidade completa com refs de elementos |
snapshot -i | Apenas elementos interativos |
click @e1 | Clica no elemento pela ref |
fill @e1 "text" | Limpa o campo e digita o texto |
type @e1 "text" | Digita sem limpar |
press Enter | Pressiona uma tecla do teclado |
scroll down 500 | Rola 500 pixels para baixo |
get text @e1 | Obtém o conteúdo de texto |
get url | Obtém a URL atual |
wait @e1 | Aguarda o elemento |
wait --load networkidle | Aguarda a rede ficar inativa |
find text "X" click | Encontra o elemento pelo texto e clica |
screenshot | Tira uma captura de tela da página atual |
eval "js code" | Executa JavaScript na página |
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.
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.
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.
O ciclo de vida do perfil é:
- Crie o scraping com
profile.nameesaveChanges: true. - Execute interações por prompt ou código usando o
scrapeIdretornado. - Encerre a sessão para salvar cookies, localStorage e outros estados do navegador.
- Inicie um scraping posterior com o mesmo
profile.name. UsesaveChanges: falsequando quiser apenas ler o estado existente sem gravar as mudanças de volta.
| Parâmetro | Padrão | Descrição |
|---|---|---|
name | None | Um nome para o perfil persistente. Scrapes com o mesmo nome compartilham o estado do navegador. |
saveChanges | true | Quando true, o estado do navegador é salvo novamente no perfil quando a sessão de interagir é encerrada. Defina como false para carregar dados existentes sem gravar, o que é útil quando você precisa de vários leitores simultâneos. |
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.
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.
Quando usar o quê#
| Use Case | Recommended | Why |
|---|---|---|
| Busca na web | Search | Endpoint de busca dedicado |
| Obter conteúdo limpo de uma URL | Scrape | Uma chamada de API, sem necessidade de sessão |
| Clicar, digitar e navegar em uma página | Interagir (prompt) | Basta descrever em inglês |
| Extrair dados por trás das interações | Interagir (prompt) | Não são necessários seletores |
| Lógica de scraping complexa | Interagir (code) | Controle total do Playwright |
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)
Referência da API#
- Execute Interagir:
POST /v2/scrape/{scrapeId}/interact - Stop Interagir:
DELETE /v2/scrape/{scrapeId}/interact
Corpo da Requisição (POST)#
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
prompt | string | Nenhum | Tarefa em linguagem natural para o agente de IA. Obrigatório se code não estiver definido. Máx. 10.000 caracteres. |
code | string | Nenhum | Código a ser executado (Node.js, Python ou Bash). Obrigatório se prompt não estiver definido. Máx. 100.000 caracteres. |
language | string | "node" | "node", "python" ou "bash". Usado apenas com code. |
timeout | number | 30 | Tempo limite em segundos (1–300). |
origin | string | Nenhum | Identificador do chamador para acompanhamento de atividades. |
Resposta#
| Field | Description |
|---|---|
success | true se a execução for concluída sem erros |
cdpUrl | URL WebSocket bruta do Chrome DevTools Protocol (CDP) para a sessão do navegador. Conecte-se diretamente com Playwright, Puppeteer ou qualquer cliente CDP |
liveViewUrl | URL de visualização em tempo real somente leitura para a sessão do navegador |
interactiveLiveViewUrl | URL de visualização em tempo real interativa (os visualizadores podem controlar o navegador) |
output | A resposta em linguagem natural do agente ao seu prompt. Presente apenas ao usar prompt. |
stdout | Saída padrão da execução do código |
result | Valor bruto retornado do sandbox. Para code: a última expressão avaliada. Para prompt: o snapshot bruto da página que o agente usou para produzir output. |
stderr | Saída de erro padrão |
exitCode | Código de saída (0 = sucesso) |
killed | true se a execução tiver sido encerrada devido a tempo limite |
Tem feedback ou precisa de ajuda? Envie um e-mail para help@firecrawl.com ou entre em contato no Discord.

