Pular para o conteúdo principal
Faça scraping de páginas individuais, rastreie sites inteiros e mapeie URLs na sua aplicação Elixir. O SDK valida todos os parâmetros em tempo de execução com NimbleOptions e usa Req para HTTP, para que você receba mensagens de erro claras para erros de digitação e opções inválidas antes que qualquer requisição seja feita. Toda função tem uma variante com bang (!) que gera uma exceção em caso de erro, em vez de retornar tuplas {:error, ...}.

Instalação

Adicione firecrawl à sua lista de dependências no mix.exs e configure sua chave de API:
Elixir
# Adicione ao mix.exs
{:firecrawl, "~> 1.0"}

# Em seguida, configure sua API key em config.exs
config :firecrawl, api_key: "fc-YOUR-API-KEY"
Ou passe a chave de API em cada requisição:
Elixir
Firecrawl.scrape_and_extract_from_url([url: "https://example.com"], api_key: "fc-YOUR-API-KEY")

Uso

  1. Obtenha uma chave de API em firecrawl.dev
  2. Defina a chave de API na configuração do seu aplicativo ou passe-a como opção para qualquer função.
Elixir
# Fazer scraping de um site:
{:ok, scrape_result} = Firecrawl.scrape_and_extract_from_url(
  url: "https://firecrawl.dev",
  formats: ["markdown", "html"]
)
IO.inspect(scrape_result.body)

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

Fazendo scraping de uma URL

Faça o scraping de uma única URL com scrape_and_extract_from_url. Ela retorna o conteúdo da página como dados estruturados, incluindo markdown, metadados e quaisquer outros formatos que você solicitar.
Elixir
# Fazer scraping de um site:
{:ok, result} = Firecrawl.scrape_and_extract_from_url(url: "https://firecrawl.dev", formats: ["markdown", "html"])
IO.inspect(result.body)

Rastrear um site

Para rastrear um site, use crawl_urls. Ele aceita a URL inicial e parâmetros opcionais, como limite de páginas, domínios permitidos e formato de resultado.
Elixir
{:ok, result} = Firecrawl.crawl_urls(url: "https://docs.firecrawl.dev", limit: 5)
IO.inspect(result.body)

Iniciar um rastreamento

Inicie um job de rastreamento e receba o ID do job sem bloqueio:
Elixir
{:ok, job} = Firecrawl.crawl_urls(url: "https://docs.firecrawl.dev", limit: 10)
crawl_id = job.body["id"]
IO.puts(crawl_id)

Verificando o status do rastreamento

Consulte o status de um job de rastreamento com get_crawl_status:
Elixir
{:ok, status} = Firecrawl.get_crawl_status("<crawl-id>")
IO.inspect(status.body)

Cancelar um rastreamento

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

Mapeie um site

Use map_urls para gerar uma lista de URLs a partir de um site:
Elixir
{:ok, result} = Firecrawl.map_urls(url: "https://firecrawl.dev", limit: 10)
IO.inspect(result.body)
Faça uma busca na web e, opcionalmente, faça scraping dos resultados:
Elixir
{:ok, result} = Firecrawl.search_and_scrape(query: "firecrawl web scraping", limit: 5)
IO.inspect(result.body["data"]["web"])

Extração em lote

Realize o scraping de várias URLs em um único job em lote:
Elixir
{:ok, result} = Firecrawl.scrape_and_extract_from_urls(
  urls: ["https://firecrawl.dev", "https://docs.firecrawl.dev"],
  formats: ["markdown"]
)
IO.inspect(result.body)

agente

Inicie uma tarefa de extração de dados com agente:
Elixir
{:ok, job} = Firecrawl.start_agent(
  prompt: "Extract all product names and prices",
  urls: ["https://example.com/products"]
)
job_id = job.body["id"]

# Consultar status
{:ok, status} = Firecrawl.get_agent_status(job_id)
IO.inspect(status.body)
Inicie sessões de navegador na nuvem e execute código remotamente.

Criar uma sessão

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

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

Perfis

Salve e reutilize o estado do navegador (cookies, localStorage etc.) entre sessões:
Elixir
{:ok, session} = Firecrawl.create_browser_session(
  ttl: 600,
  profile: [
    name: "my-profile",
    save_changes: true
  ]
)

Listar & encerrar sessões

Elixir
# Listar sessões ativas
{:ok, sessions} = Firecrawl.list_browser_sessions(status: "active")
IO.inspect(sessions.body)

# Encerrar uma sessão
{:ok, _} = Firecrawl.delete_browser_session(session_id)

Instâncias auto-hospedadas

Para usar uma instância auto-hospedada do Firecrawl, passe a opção base_url:
Elixir
{:ok, result} = Firecrawl.scrape_and_extract_from_url(
  [url: "https://example.com"],
  base_url: "https://your-instance.com/v2"
)

Tratamento de erros

Funções sem bang retornam {:ok, response} ou {:error, exception}. As variantes com bang levantam uma exceção em caso de erro. O NimbleOptions valida todos os parâmetros antes de a requisição ser enviada, detectando imediatamente erros de digitação, campos obrigatórios ausentes e erros 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

# Ou utilize a variante com bang para lançar um erro:
response = Firecrawl.scrape_and_extract_from_url!(url: "https://example.com")
IO.inspect(response.body)

Todas as funções disponíveis

FunçãoDescrição
scrape_and_extract_from_urlFaz scraping de uma única URL
scrape_and_extract_from_urlsFaz extração em lote de várias URLs
crawl_urlsFaz o rastreamento de um site
get_crawl_statusVerifica o status do job de rastreamento
get_crawl_errorsObtém os erros do job de rastreamento
get_active_crawlsLista os rastreamentos ativos
cancel_crawlCancela um job de rastreamento
map_urlsMapeia URLs em um site
search_and_scrapeBusca e faz scraping dos resultados
start_agentInicia uma tarefa de extração com agente
get_agent_statusVerifica o status do job do agente
cancel_agentCancela um job do agente
create_browser_sessionCria uma sessão de navegador
execute_browser_codeExecuta código em uma sessão de navegador
list_browser_sessionsLista as sessões de navegador
delete_browser_sessionExclui uma sessão de navegador
get_batch_scrape_statusVerifica o status da extração em lote
get_batch_scrape_errorsObtém os erros da extração em lote
cancel_batch_scrapeCancela uma extração em lote
get_credit_usageObtém os créditos restantes
Todas as funções acima têm uma variante com bang (!) (por exemplo, scrape_and_extract_from_url!) que gera uma exceção em vez de retornar tuplas de erro. Para ver a documentação completa da API, consulte hexdocs.pm/firecrawl.