Skip to main content

Prerequisites

  • Supabase project with CLI (supabase init)
  • A EvoCrawl API key — get one free

Setup

supabase functions new evocrawl-search
supabase functions new evocrawl-scrape
supabase functions new evocrawl-interact
Set the secret:
supabase secrets set EVOCRAWL_API_KEY=fc-YOUR-API-KEY

Search the web

Edit supabase/functions/evocrawl-search/index.ts:
import Evocrawl from "npm:@mendable/evocrawl-js";

const evocrawl = new Evocrawl({
  apiKey: Deno.env.get("EVOCRAWL_API_KEY"),
});

Deno.serve(async (req) => {
  const { query } = await req.json();
  const results = await evocrawl.search(query, { limit: 5 });

  return new Response(JSON.stringify(results), {
    headers: { "Content-Type": "application/json" },
  });
});

Scrape a page

Edit supabase/functions/evocrawl-scrape/index.ts:
import Evocrawl from "npm:@mendable/evocrawl-js";

const evocrawl = new Evocrawl({
  apiKey: Deno.env.get("EVOCRAWL_API_KEY"),
});

Deno.serve(async (req) => {
  const { url } = await req.json();
  const result = await evocrawl.scrape(url);

  return new Response(JSON.stringify(result), {
    headers: { "Content-Type": "application/json" },
  });
});

Interact with a page

Edit supabase/functions/evocrawl-interact/index.ts:
import Evocrawl from "npm:@mendable/evocrawl-js";

const evocrawl = new Evocrawl({
  apiKey: Deno.env.get("EVOCRAWL_API_KEY"),
});

Deno.serve(async (_req) => {
  const result = await evocrawl.scrape("https://www.amazon.com", {
    formats: ["markdown"],
  });
  const scrapeId = result.metadata?.scrapeId;

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

  await evocrawl.stopInteraction(scrapeId);

  return new Response(JSON.stringify({ output: response.output }), {
    headers: { "Content-Type": "application/json" },
  });
});

Deploy

supabase functions deploy evocrawl-search
supabase functions deploy evocrawl-scrape
supabase functions deploy evocrawl-interact

Test it

curl -X POST https://<project-ref>.supabase.co/functions/v1/evocrawl-search \
  -H "Authorization: Bearer <ANON_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"query": "evocrawl web scraping"}'

Next steps

Search docs

Search the web and get full page content

Scrape docs

All scrape options including formats, actions, and proxies

Interact docs

Click, fill forms, and extract dynamic content

Node SDK reference

Full SDK reference with crawl, map, batch scrape, and more