Saltar al contenido principal

Requisitos previos

Instala el crate

Añade firecrawl a tu Cargo.toml:
[dependencies]
firecrawl = "1"
tokio = { version = "1", features = ["full"] }
serde_json = "1"
reqwest = { version = "0.12", features = ["json"] }

Buscar en la web

use firecrawl::v2::Client;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::new("fc-YOUR-API-KEY")?;
    let results = client.search("firecrawl web scraping", None).await?;

    for result in &results {
        println!("{} - {}", result.title.as_deref().unwrap_or(""), result.url.as_deref().unwrap_or(""));
    }
    Ok(())
}

Hacer scraping de una página

let doc = client.scrape("https://example.com", None).await?;
println!("{}", doc.markdown.unwrap_or_default());
{
  "markdown": "# Example Domain\n\nThis domain is for use in illustrative examples...",
  "metadata": {
    "title": "Example Domain",
    "sourceURL": "https://example.com"
  }
}

Interactúa con una página

La API de interacción usa comandos basados en prompts a través de HTTP. Haz scraping de una página para obtener un scrapeId y, luego, envía prompts para controlar la sesión del navegador:
use reqwest::Client as HttpClient;
use serde_json::json;

let api_key = "fc-YOUR-API-KEY";
let http = HttpClient::new();

// 1. Scrape para abrir una sesión del navegador
let scrape_res: serde_json::Value = http
    .post("https://api.firecrawl.dev/v2/scrape")
    .bearer_auth(api_key)
    .json(&json!({ "url": "https://www.amazon.com", "formats": ["markdown"] }))
    .send().await?
    .json().await?;

let scrape_id = scrape_res["data"]["metadata"]["scrapeId"]
    .as_str().unwrap();

// 2. Enviar prompts para interactuar
http.post(format!("https://api.firecrawl.dev/v2/scrape/{scrape_id}/interact"))
    .bearer_auth(api_key)
    .json(&json!({ "prompt": "Search for iPhone 16 Pro Max" }))
    .send().await?;

let interact_res: serde_json::Value = http
    .post(format!("https://api.firecrawl.dev/v2/scrape/{scrape_id}/interact"))
    .bearer_auth(api_key)
    .json(&json!({ "prompt": "Click on the first result and tell me the price" }))
    .send().await?
    .json().await?;

println!("{}", interact_res);

// 3. Cerrar la sesión
http.delete(format!("https://api.firecrawl.dev/v2/scrape/{scrape_id}/interact"))
    .bearer_auth(api_key)
    .send().await?;

Variable de entorno

Configura FIRECRAWL_API_KEY en vez de pasar la clave directamente:
export FIRECRAWL_API_KEY=fc-YOUR-API-KEY
El crate firecrawl también es compatible con la API v1 mediante FirecrawlApp. Consulta la documentación del SDK de Rust para conocer la API completa.

Próximos pasos

Documentación de búsqueda

Busca en la web y obtén el contenido completo de la página

Documentación de scraping

Todas las opciones de scraping, incluidos formatos, acciones y proxies

Documentación de Interact

Haz clic, completa formularios y extrae contenido dinámico

Referencia del SDK de Rust

Referencia completa del SDK con rastreo, mapeo y más