Saltar al contenido principal
Haz scraping de páginas individuales, rastrea sitios completos y mapea URL desde tu aplicación de Elixir. El SDK valida todos los parámetros en tiempo de ejecución con NimbleOptions y usa Req para HTTP, así que obtienes errores claros por errores tipográficos y opciones no válidas antes de realizar cualquier solicitud. Cada función tiene una variante con bang (!) que lanza una excepción en lugar de devolver tuplas {:error, ...}.

Instalación

Añade firecrawl a tu lista de dependencias en mix.exs y configura tu clave de API:
Elixir
# Añadir a mix.exs
{:firecrawl, "~> 1.0"}

# Luego configura tu API key en config.exs
config :firecrawl, api_key: "fc-YOUR-API-KEY"
O pasa la clave de API en cada solicitud:
Elixir
Firecrawl.scrape_and_extract_from_url([url: "https://example.com"], api_key: "fc-YOUR-API-KEY")

Uso

  1. Obtén una clave de API en firecrawl.dev
  2. Configura la clave de API en tu aplicación o pásala como opción a cualquier función.
Elixir
# Hacer scraping de un sitio web:
{:ok, scrape_result} = Firecrawl.scrape_and_extract_from_url(
  url: "https://firecrawl.dev",
  formats: ["markdown", "html"]
)
IO.inspect(scrape_result.body)

# Rastrear un sitio web:
{:ok, crawl_result} = Firecrawl.crawl_urls(
  url: "https://firecrawl.dev",
  limit: 100,
  scrape_options: [
    formats: ["markdown", "html"]
  ]
)
IO.inspect(crawl_result.body)

Scraping de una URL

Haz scraping de una URL con scrape_and_extract_from_url. Devuelve el contenido de la página como datos estructurados, incluidos markdown, metadatos y cualquier otro formato que solicites.
Elixir
# Hacer scraping de un sitio web:
{:ok, result} = Firecrawl.scrape_and_extract_from_url(url: "https://firecrawl.dev", formats: ["markdown", "html"])
IO.inspect(result.body)

Rastrear un sitio web

Para rastrear un sitio web, usa crawl_urls. Recibe la URL inicial y parámetros opcionales, como el límite de páginas, los dominios permitidos y el formato de salida.
Elixir
{:ok, result} = Firecrawl.crawl_urls(url: "https://docs.firecrawl.dev", limit: 5)
IO.inspect(result.body)

Iniciar un rastreo

Inicia un trabajo de rastreo y devuelve el ID del trabajo sin bloquear:
Elixir
{:ok, job} = Firecrawl.crawl_urls(url: "https://docs.firecrawl.dev", limit: 10)
crawl_id = job.body["id"]
IO.puts(crawl_id)

Consultar el estado de un rastreo

Consulta el estado de un trabajo de rastreo con get_crawl_status:
Elixir
{:ok, status} = Firecrawl.get_crawl_status("<crawl-id>")
IO.inspect(status.body)

Cancelar un rastreo

Cancela un trabajo de rastreo con cancel_crawl:
Elixir
{:ok, result} = Firecrawl.cancel_crawl("<crawl-id>")
IO.puts("Cancelled: #{inspect(result.body)}")

Mapea un sitio web

Usa map_urls para generar una lista de URL de un sitio web:
Elixir
{:ok, result} = Firecrawl.map_urls(url: "https://firecrawl.dev", limit: 10)
IO.inspect(result.body)
Busca en la web y, opcionalmente, haz scraping de los resultados:
Elixir
{:ok, result} = Firecrawl.search_and_scrape(query: "firecrawl web scraping", limit: 5)
IO.inspect(result.body["data"]["web"])

Extracción por lotes

Haz scraping de varias URL en un único trabajo por lotes:
Elixir
{:ok, result} = Firecrawl.scrape_and_extract_from_urls(
  urls: ["https://firecrawl.dev", "https://docs.firecrawl.dev"],
  formats: ["markdown"]
)
IO.inspect(result.body)

Agent

Inicia una tarea de extracción de datos con agentes:
Elixir
{:ok, job} = Firecrawl.start_agent(
  prompt: "Extract all product names and prices",
  urls: ["https://example.com/products"]
)
job_id = job.body["id"]

# Consultar el estado
{:ok, status} = Firecrawl.get_agent_status(job_id)
IO.inspect(status.body)

Browser

Inicia sesiones de navegador en la nube y ejecuta código de forma remota.

Crear una sesión

Elixir
{:ok, session} = Firecrawl.create_browser_session(ttl: 600)
session_id = session.body["id"]
cdp_url = session.body["cdpUrl"]
live_view_url = session.body["liveViewUrl"]

Ejecutar código

Elixir
{:ok, result} = Firecrawl.execute_browser_code(session_id,
  code: ~s(await page.goto("https://news.ycombinator.com")\ntitle = await page.title()\nprint(title)),
  language: "python"
)
IO.inspect(result.body)

Perfiles

Guarda y reutiliza el estado del navegador (cookies, localStorage, etc.) entre sesiones:
Elixir
{:ok, session} = Firecrawl.create_browser_session(
  ttl: 600,
  profile: [
    name: "my-profile",
    save_changes: true
  ]
)

Listar & cerrar sesiones

Elixir
# Listar sesiones activas
{:ok, sessions} = Firecrawl.list_browser_sessions(status: "active")
IO.inspect(sessions.body)

# Cerrar una sesión
{:ok, _} = Firecrawl.delete_browser_session(session_id)

Instancias autogestionadas

Para usar una instancia autogestionada de Firecrawl, pasa la opción base_url:
Elixir
{:ok, result} = Firecrawl.scrape_and_extract_from_url(
  [url: "https://example.com"],
  base_url: "https://your-instance.com/v2"
)

Manejo de errores

Las funciones sin bang devuelven {:ok, response} o {:error, exception}. Las variantes con bang lanzan una excepción en caso de error. NimbleOptions valida todos los parámetros antes de enviar la solicitud, detectando de inmediato errores tipográficos, campos obligatorios ausentes y errores de tipo.
Elixir
case Firecrawl.scrape_and_extract_from_url(url: "https://example.com") do
  {:ok, response} -> IO.inspect(response.body)
  {:error, error} -> IO.puts("Error: #{Exception.message(error)}")
end

# O usar la variante bang para lanzar un error:
response = Firecrawl.scrape_and_extract_from_url!(url: "https://example.com")
IO.inspect(response.body)

Todas las funciones disponibles

FunciónDescripción
scrape_and_extract_from_urlHace scraping de una sola URL
scrape_and_extract_from_urlsRealiza una extracción por lotes de varias URL
crawl_urlsRastrea un sitio web
get_crawl_statusComprueba el estado del trabajo de rastreo
get_crawl_errorsObtiene los errores del trabajo de rastreo
get_active_crawlsLista los rastreos activos
cancel_crawlCancela un trabajo de rastreo
map_urlsMapea las URL de un sitio web
search_and_scrapeBusca y hace scraping de los resultados
start_agentInicia una tarea de extracción con agente
get_agent_statusComprueba el estado del trabajo del agente
cancel_agentCancela un trabajo del agente
create_browser_sessionCrea una sesión del navegador
execute_browser_codeEjecuta código en una sesión del navegador
list_browser_sessionsLista las sesiones del navegador
delete_browser_sessionElimina una sesión del navegador
get_batch_scrape_statusComprueba el estado de la extracción por lotes
get_batch_scrape_errorsObtiene los errores de la extracción por lotes
cancel_batch_scrapeCancela una extracción por lotes
get_credit_usageObtiene los créditos restantes
Todas las funciones anteriores tienen una variante bang (!) (por ejemplo, scrape_and_extract_from_url!) que lanza una excepción en lugar de devolver tuplas de error. Para consultar la documentación completa de la API, consulta hexdocs.pm/firecrawl.