Passer au contenu principal

Prérequis

Configuration

npm create cloudflare@latest my-scraper
cd my-scraper
npm install @mendable/firecrawl-js
Ajoutez votre clé API en tant que secret :
wrangler secret put FIRECRAWL_API_KEY

Rechercher sur le web

Créez un gestionnaire qui effectue une recherche sur le web et renvoie les résultats avec le contenu complet des pages. Modifiez src/index.ts:
import Firecrawl from "@mendable/firecrawl-js";

export interface Env {
  FIRECRAWL_API_KEY: string;
}

export default {
  async fetch(request: Request, env: Env): Promise<Response> {
    const firecrawl = new Firecrawl({ apiKey: env.FIRECRAWL_API_KEY });
    const url = new URL(request.url);

    if (request.method === "POST" && url.pathname === "/search") {
      const { query } = (await request.json()) as { query: string };
      const results = await firecrawl.search(query, { limit: 5 });
      return Response.json(results);
    }

    return new Response("Not found", { status: 404 });
  },
};

Scraper une page

Ajoutez une route /scrape pour extraire du Markdown propre à partir de n’importe quelle URL.
if (request.method === "POST" && url.pathname === "/scrape") {
  const { url: targetUrl } = (await request.json()) as { url: string };
  const result = await firecrawl.scrape(targetUrl);
  return Response.json(result);
}

Interact avec une page

Ajoutez une route /interact pour piloter une session de navigateur en direct, afin de cliquer sur des boutons, remplir des formulaires et extraire du contenu dynamique.
if (request.method === "POST" && url.pathname === "/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 Response.json({ output: response.output });
}

Déploiement

wrangler deploy

Essayez-le

curl -X POST https://my-scraper.<your-subdomain>.workers.dev/search \
  -H "Content-Type: application/json" \
  -d '{"query": "firecrawl web scraping"}'

Étapes suivantes

Documentation de recherche

Recherchez sur le web et obtenez le contenu intégral des pages

Documentation Scrape

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

Documentation Interact

Cliquez, remplissez des formulaires et extrayez du contenu dynamique

Référence du SDK Node

Référence complète du SDK avec crawl, cartographie, extraction par lot, etc.