use firecrawl::{Client, SearchOptions};#[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", SearchOptions { limit: Some(5), ..Default::default() }, ).await?; if let Some(web) = results.data.web { for item in web { if let firecrawl::SearchResultOrDocument::WebResult(r) = item { println!("{} - {}", r.url, r.title.unwrap_or_default()); } } } Ok(())}
let doc = client.scrape("https://example.com", None).await?;println!("{}", doc.markdown.unwrap_or_default());
Exemplo de resposta
{ "markdown": "# Example Domain\n\nThis domain is for use in illustrative examples...", "metadata": { "title": "Example Domain", "sourceURL": "https://example.com" }}
Faça scraping de uma página para obter um scrapeId e, em seguida, use a API de interação para controlar a sessão do navegador:
use firecrawl::{Client, ScrapeOptions, Format, ScrapeExecuteOptions};let doc = client.scrape( "https://www.amazon.com", ScrapeOptions { formats: Some(vec![Format::Markdown]), ..Default::default() },).await?;let scrape_id = doc.metadata .as_ref() .and_then(|m| m.scrape_id.as_deref()) .expect("scrapeId not found");// Envie um prompt para interagir com a páginalet run = client.interact( scrape_id, ScrapeExecuteOptions { prompt: Some("Search for iPhone 16 Pro Max".to_string()), ..Default::default() },).await?;let run = client.interact( scrape_id, ScrapeExecuteOptions { prompt: Some("Click on the first result and tell me the price".to_string()), ..Default::default() },).await?;println!("{:?}", run.output);// Encerre a sessãoclient.stop_interaction(scrape_id).await?;