Most website audit and B2B lead enrichment tools rely on heavy Headless Chrome queues that take 30–45 seconds per domain and cost hundreds of dollars a month in server overhead.

I wanted to build an instant B2B prospecting and technical audit engine for web design, SEO, and PPC agencies that executes in under 2 seconds at the edge for £0 server cost.

Here is the live platform running on Cloudflare Workers:
👉 https://leakradar.leakradar.workers.dev

(If you want to test the locked Pro features—including the 250-domain Bulk CSV Scraper, Contact Vault, and White-Label Client Reports—click *"Unlock Pro"** in the top right and enter the 4-day developer key: VIP-4DAY)*

What It Does in ~1.8 Seconds

When you enter any domain (or hit the JSON API), the Worker fires parallel asynchronous fetch() streams from the nearest Cloudflare PoP across /, /contact, /contact-us, and /about:

  1. 18-Signal DOM & HTTP Telemetry Inspection:

    • Ad Pixels: Meta/Facebook Pixel (fbevents.js), TikTok Pixel, LinkedIn Insight Tag, Google Ads Conversion tags.
    • Analytics & Enterprise Stack: GA4, Google Tag Manager, Segment, Tealium, Hotjar, Microsoft Clarity, OneTrust.
    • Conversion Architecture: Live Chat widgets (Intercom, Crisp, Tidio, Drift, Zendesk), CRM/Booking embeds (HubSpot, Calendly, Klaviyo), Lead forms, and JSON-LD application/ld+json schema.
    • Edge & Security: Measures live Time-To-First-Byte (TTFB ms), inspects strict-transport-security (HSTS), and detects CDN edge headers.
  2. Cloudflare data-cfemail Hex Decryption + Contact Scraping:

    • Extracts verified corporate @domain emails, tel: phone lines, and social profiles across subpages.
    • Includes a bitwise XOR hex decoder that automatically decrypts Cloudflare's data-cfemail email obfuscation on the fly:
 javascript function decCf(html) { let out = [], r = /data-cfemail="([0-9a-fA-F]+)"/g, m; while ((m = r.exec(html)) !== null) { let s = m[1], k = parseInt(s.substr(0, 2), 16), e = ""; for (let i = 2; i < s.length; i += 2) e += String.fromCharCode(parseInt(s.substr(i, 2), 16) ^ k); if (e.includes("@")) out.push(e.toLowerCase()); } return out; }