Passer au contenu principal

Prérequis

Configuration

mkdir firecrawl-lambda && cd firecrawl-lambda
npm init -y
npm install @mendable/firecrawl-js

Recherche sur le web

Créez le fichier index.mjs avec un gestionnaire de recherche :
import Firecrawl from "@mendable/firecrawl-js";

const firecrawl = new Firecrawl({ apiKey: process.env.FIRECRAWL_API_KEY });

export async function handler(event) {
  const body = JSON.parse(event.body || "{}");

  if (body.action === "search") {
    const results = await firecrawl.search(body.query, { limit: 5 });
    return {
      statusCode: 200,
      body: JSON.stringify(results),
    };
  }

  return { statusCode: 400, body: JSON.stringify({ error: "Unknown action" }) };
}

Scraper une page

Ajoutez une action scrape dans le même gestionnaire :
if (body.action === "scrape") {
  const result = await firecrawl.scrape(body.url);
  return {
    statusCode: 200,
    body: JSON.stringify(result),
  };
}

Interact avec une page

Ajoutez une action interact pour contrôler une session de navigateur en direct — pour cliquer sur des boutons, remplir des formulaires et extraire du contenu dynamique :
if (body.action === "interact") {
  const result = await firecrawl.scrape("https://www.amazon.com", {
    formats: ["markdown"],
  });
  const scrapeId = result.metadata?.scrapeId;

  await firecrawl.interact(scrapeId, {
    prompt: "Search for iPhone 16 Pro Max",
  });
  const response = await firecrawl.interact(scrapeId, {
    prompt: "Click on the first result and tell me the price",
  });

  await firecrawl.stopInteraction(scrapeId);
  return {
    statusCode: 200,
    body: JSON.stringify({ output: response.output }),
  };
}

Déployer

Créez le package et déployez avec l’AWS CLI :
zip -r function.zip index.mjs node_modules/

aws lambda create-function \
  --function-name firecrawl-scraper \
  --runtime nodejs20.x \
  --handler index.handler \
  --zip-file fileb://function.zip \
  --role arn:aws:iam::YOUR_ACCOUNT:role/lambda-role \
  --environment Variables="{FIRECRAWL_API_KEY=fc-YOUR-API-KEY}" \
  --timeout 60
Définissez le délai d’expiration de Lambda sur au moins 30 secondes. Le scraping de pages dynamiques et les sessions Interact peuvent prendre plus de temps que le délai d’expiration par défaut de 3 secondes.

Étapes suivantes

Documentation de recherche

Effectuez une recherche sur le web et obtenez le contenu complet des pages

Documentation scraper

Toutes les options de scrape, y compris les formats, les actions et les proxys

Documentation Interact

Cliquez, remplissez des formulaires et extrayez du contenu dynamique

Référence Node SDK

Référence complète du SDK avec crawl, cartographie, extraction par lot et plus encore