Skip to content
Firecrawl Docs
Firecrawl Docs
Oficial

Elixir

El SDK de Firecrawl para Elixir es un cliente autogenerado para la API v2 de Firecrawl, desarrollado con Req y NimbleOptions.

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, ...}.

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")
  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)

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)

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)

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)

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)

Cancela un trabajo de rastreo con cancel_crawl:

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

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"])

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)

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)

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

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"]
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)

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
  ]
)
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)

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"
)

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)
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.

Was this page helpful?Suggest editsRaise issue