Skip to main content

Interact tras el scraping

Interactúa con una página que has obtenido mediante prompts o ejecutando código.
9 min read

Haz scraping de una página para obtener datos limpios y luego llama a /interact para empezar a realizar acciones en esa página: hacer clic en botones, completar formularios, extraer contenido dinámico o navegar más a fondo. Solo describe lo que quieres hacer, o escribe código si necesitas un control total.

Recompensa: 5000 créditos por comentarios útiles sobre /interact

Para optar a la recompensa, completa una entrevista con información relevante (casos de uso concretos y bien pensados, etc.) con nuestro Asistente de Feedback de Firecrawl. Solo toma unos minutos, puedes detenerla en cualquier momento y es apta tanto para personas como para agentes (¡solo pega el enlace en tu entorno de agentes!). ¿Nunca usaste /interact? Tu opinión también cuenta.

Iniciar la entrevista

Incluye tu correo electrónico para poder optar a la recompensa. La calidad de las entrevistas se revisa al final de cada semana.

Selecciona el modelo de interacción adecuado#

NecesidadUsarDocumentación canónicaMétodos del SDK (Node)
Iniciar una sesión del navegador independiente sin hacer scraping antesBrowser Sandbox / sesión independiente de InteractBrowser Sandbox, Crear sesión del navegador, Ejecutar código en el browser, Listar sesiones del navegador, Eliminar sesión del navegadorbrowser(), browserExecute(), listBrowsers(), deleteBrowser()
Continuar desde un resultado de scraping usando scrapeIdInteract tras el scrapingEjecutar Interact, Detener Interactinteract(), stopInteraction()

Usa Interact vinculado al scraping cuando el flujo de trabajo comienza con POST /v2/scrape y la respuesta incluye data.metadata.scrapeId. Usa Browser Sandbox cuando necesites una sesión independiente con su propio ciclo de vida. El SDK de Python usa los equivalentes en snake_case (browser(), browser_execute(), list_browsers(), delete_browser(), interact(), stop_interaction()).

Prompts de IA

Describe qué acción quieres realizar en la página

Ejecución de código

Interactúa de forma segura mediante la ejecución de código con playwright, agent-browser

Vista en vivo

Observa o interactúa con el browser en tiempo real mediante un stream incrustable

Cómo funciona#

  1. Haz scraping de una URL con POST /v2/scrape. La respuesta incluye un scrapeId en data.metadata.scrapeId. Si quieres conservar el estado del navegador, pasa profile en esta solicitud.
  2. Interactúa llamando a POST /v2/scrape/{scrapeId}/interact con un prompt o con código de Playwright code. No pases profile aquí; la sesión de interacción hereda el perfil del trabajo de scraping.
  3. Detén la sesión con DELETE /v2/scrape/{scrapeId}/interact cuando hayas terminado. En los perfiles con escritura, los cambios se guardan cuando la sesión se detiene.

Inicio rápido#

Haz scraping de una página, interactúa con ella y detén la sesión:

Response

Interactúa mediante prompts#

La forma más simple de interactuar con una página. Describe lo que quieres en lenguaje natural y hará clic, escribirá, se desplazará y extraerá datos automáticamente.

La respuesta incluye un campo output con la respuesta del agente:

Response

Mantén los prompts pequeños y enfocados#

Los prompts funcionan mejor cuando cada uno consiste en una única tarea clara. En lugar de pedirle al agente que realice un flujo de trabajo complejo de varios pasos de una sola vez, divídelo en llamadas interact independientes. Cada llamada reutiliza la misma sesión del navegador, por lo que el estado se conserva entre una y otra.

Ejecución de código#

Para tener control total, puedes ejecutar código directamente en el sandbox del navegador. La variable page (un objeto Page de Playwright) está disponible en Node.js y Python. El modo Bash incluye agent-browser preinstalado. También puedes hacer capturas de pantalla dentro de la sesión: usa (await page.screenshot()).toString("base64") en Node.js, await page.screenshot(path="/tmp/screenshot.png") en Python o agent-browser screenshot en Bash.

Node.js (Playwright)#

El lenguaje predeterminado. Escribe código de Playwright directamente. page ya está conectado al navegador.

Python#

Configura language como "python" para usar la API de Python de Playwright.

Bash (agent-browser)#

agent-browser es una CLI preinstalada en el sandbox con más de 60 comandos. Proporciona un árbol de accesibilidad con referencias de elementos (@e1, @e2, ...), lo que es ideal para la automatización controlada por LLM.

Comandos comunes de agent-browser:

ComandoDescripción
snapshotÁrbol de accesibilidad completo con referencias de elementos
snapshot -iSolo elementos interactivos
click @e1Hacer clic en un elemento por referencia
fill @e1 "text"Borrar el campo y escribir texto
type @e1 "text"Escribir sin borrar
press EnterPulsar una tecla del teclado
scroll down 500Desplazarse 500 píxeles hacia abajo
get text @e1Obtener el contenido de texto
get urlObtener la URL actual
wait @e1Esperar a que aparezca el elemento
wait --load networkidleEsperar a que la red quede inactiva
find text "X" clickBuscar un elemento por texto y hacer clic
screenshotTomar una captura de pantalla de la página actual
eval "js code"Ejecutar JavaScript en la página

vista en vivo#

Cada respuesta de interact devuelve una liveViewUrl que puedes incrustar para ver el navegador en tiempo real. Es útil para depuración, demos o para crear interfaces con navegador.

Response

Vista en vivo interactiva#

La respuesta también incluye un interactiveLiveViewUrl. A diferencia de la vista en vivo estándar, que es solo de visualización, la vista en vivo interactiva permite a los usuarios hacer clic, escribir e interactuar con la sesión del navegador directamente a través del stream integrado. Esto resulta útil para crear interfaces de navegador orientadas al usuario, como flujos de inicio de sesión o flujos de trabajo guiados en los que los usuarios finales necesitan controlar el navegador.

URL de CDP#

Cada respuesta de interact también devuelve una cdpUrl: la URL de WebSocket sin procesar del Chrome DevTools Protocol (CDP) para la sesión del navegador. Úsala para conectarte directamente a la sesión activa desde Playwright, Puppeteer o cualquier cliente CDP, y controlar el navegador con tu propio código.

Ciclo de vida de la sesión#

Creación#

La primera llamada POST /v2/scrape/{scrapeId}/interact continúa la sesión de scraping e inicia la interacción.

Reutilización#

Las llamadas posteriores a interact sobre el mismo scrapeId reutilizan la sesión existente. El navegador permanece abierto y conserva su estado entre llamadas, por lo que puedes encadenar varias interacciones:

Limpieza#

Detén la sesión explícitamente al terminar:

Las sesiones también expiran automáticamente según el TTL (predeterminado: 10 minutos) o el timeout de inactividad (predeterminado: 5 minutos).

Warning

Detén siempre las sesiones al terminar para evitar Billing innecesario. Los credits se prorratean por segundo, con un cargo mínimo de un minuto de browser. Las sesiones que usan un prompt facturan 7 credits por minuto de browser; las sesiones sin prompt facturan 2. Consulta Billing para más detalles.

Perfiles persistentes con Scraping + Interact#

De forma predeterminada, cada sesión de scraping + interact se inicia con un navegador limpio. Con profile, puedes guardar y reutilizar el estado del navegador (cookies, localStorage, sesiones) entre scrapings. Esto resulta útil para mantener la sesión iniciada y conservar las preferencias.

Pasa el objeto profile en la solicitud inicial POST /v2/scrape. No pases profile a POST /v2/scrape/{scrapeId}/interact; la sesión de interact reutiliza la sesión del navegador y la configuración del perfil del trabajo de scraping. Detén la sesión de interact con DELETE /v2/scrape/{scrapeId}/interact para que puedan guardarse los cambios del perfil.

cURL

El ciclo de vida del perfil es:

  1. Crea el scraping con profile.name y saveChanges: true.
  2. Ejecuta interacciones con prompt o código usando el scrapeId devuelto.
  3. Detén la sesión para guardar cookies, localStorage y otro estado del navegador.
  4. Inicia un scraping posterior con el mismo profile.name. Usa saveChanges: false cuando solo quieras leer el estado existente sin volver a escribir cambios.
ParámetroPredeterminadoDescripción
nameNoneNombre del perfil persistente. Los scrapings con el mismo nombre comparten el estado del navegador.
saveChangestrueCuando es true, el estado del navegador se vuelve a guardar en el perfil cuando se detiene la sesión de interact. Establécelo en false para cargar datos existentes sin escribir cambios, lo que resulta útil cuando necesitas varios lectores concurrentes.
Note

Solo una sesión puede guardar en un perfil a la vez. Si otra sesión ya está guardando, recibirás un error 409. Aun así, puedes abrir el mismo perfil con saveChanges: false o volver a intentarlo más tarde.

El estado del navegador se guarda cuando se detiene la sesión de interact. Detén siempre la sesión cuando termines para que el perfil pueda reutilizarse.

Validar la persistencia#

Puedes probar la persistencia sin depender de un flujo de inicio de sesión real: escribe un valor en localStorage en una sesión, detenla y luego lee ese valor en una segunda sesión con el mismo perfil.

cURL

La segunda respuesta de Interact debería mostrar localStorage como "saved" y cookie como true.

Info

Puede que los perfiles creados a través de la API todavía no aparezcan en Dashboard > Interact > Profiles. Actualmente, el dashboard no ofrece un inventario completo de los perfiles persistentes creados mediante la API.

Cuándo usar cada opción#

Caso de usoRecomendadoPor qué
Búsqueda webSearchEndpoint de búsqueda específico
Obtener contenido limpio de una URLscrapingUna llamada a la API, sin necesidad de sesión
Hacer clic, escribir y navegar en una páginaInteract (prompt)Solo descríbelo en inglés
Extraer datos tras interaccionesInteract (prompt)No se necesitan selectores
Lógica de scraping complejaInteract (code)Control total de Playwright
Info

Interact vs Browser Sandbox: Interact se basa en la misma infraestructura que Browser Sandbox, pero ofrece una mejor interfaz para el patrón más común: hacer scraping de una página y luego profundizar. Browser Sandbox es mejor cuando necesitas una sesión del navegador independiente que no esté vinculada a un scraping específico.

Precios#

  • Solo código (sin prompt): 2 credits por minuto de sesión
  • Con prompts de IA: 7 credits por minuto de sesión
  • scraping: se factura por separado (1 credit por scraping, más cualquier costo específico del formato)

Referencia de la API#

Cuerpo de la solicitud (POST)#

CampoTipoPredeterminadoDescripción
promptstringNingunoTarea en lenguaje natural para el agente de IA. Obligatorio si no se establece code. Máximo 10.000 caracteres.
codestringNingunoCódigo que se va a ejecutar (Node.js, Python o Bash). Obligatorio si no se establece prompt. Máximo 100.000 caracteres.
languagestring"node""node", "python" o "bash". Solo se usa con code.
timeoutnumber30Timeout en segundos (1–300).
originstringNingunoIdentificador del llamante para el seguimiento de la actividad.

Respuesta#

FieldDescription
successtrue si la ejecución se completó sin errores
cdpUrlURL WebSocket sin procesar de Chrome DevTools Protocol (CDP) para la sesión del navegador. Conéctate directamente con Playwright, Puppeteer o cualquier cliente CDP
liveViewUrlURL de vista en vivo de solo lectura para la sesión del navegador
interactiveLiveViewUrlURL de vista en vivo interactiva (quienes la vean pueden controlar el navegador)
outputLa respuesta en lenguaje natural del agente a tu prompt. Solo está presente cuando se utiliza prompt.
stdoutSalida estándar de la ejecución del código
resultValor de retorno sin procesar del sandbox. Para code: la última expresión evaluada. Para prompt: la captura sin procesar de la página que el agente utilizó para producir output.
stderrSalida de error estándar
exitCodeCódigo de salida (0 = éxito)
killedtrue si la ejecución se finalizó debido a timeout

¿Tienes comentarios o necesitas ayuda? Envía un correo a help@firecrawl.com o comunícate en Discord.