DEV Community

Cover image for How to Detect Any Website's Tech Stack in One API Call (with Confidence Scores)
Dex
Dex

Posted on

How to Detect Any Website's Tech Stack in One API Call (with Confidence Scores)

Need to know if a prospect is using WordPress or Shopify? React or Angular? Nginx or Cloudflare? One API call tells you — and gives you a confidence score for each detection.


The problem: website tech stack detection is tedious

If you're doing sales prospecting, lead enrichment, or competitive intelligence, you've probably ended up in this loop:

  1. Open the site in a browser
  2. View source, grep for wp-content (WordPress?) or __next (Next.js?)
  3. Open DevTools, check response headers for X-Powered-By
  4. Install Wappalyzer browser extension... but that only works in the browser
  5. Realize you need to do this for 500 leads

There's a better way. One POST request.


TechStackDetect API: what it does

TechStackDetect analyzes any public website URL and returns:

  • 5,000+ technology signatures — frameworks, CMS, CDN, analytics, hosting, security, and more
  • Confidence scores (0.0–1.0) — so you know how certain each detection is
  • Version numbers when detectable
  • 50+ categories — frontend, backend, hosting, ecommerce, monitoring, marketing, and more

Quick start: 3 lines of code

import requests

resp = requests.post(
    "https://techstackdetect1.p.rapidapi.com/detect",
    json={"url": "https://notion.so"},
    headers={
        "X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
        "X-RapidAPI-Host": "techstackdetect1.p.rapidapi.com",
    }
)

for tech in resp.json()["technologies"]:
    print(f"{tech['name']} ({tech['category']}) — confidence: {tech['confidence']:.0%}")
Enter fullscreen mode Exit fullscreen mode

Output:

Next.js (frontend) — confidence: 95%
Vercel (hosting) — confidence: 95%
AWS (Amazon Web Services) (cdn) — confidence: 90%
HSTS (security) — confidence: 90%
HTTP/3 (server) — confidence: 90%
Google Tag Manager (analytics) — confidence: 75%
OneTrust (marketing) — confidence: 75%
Enter fullscreen mode Exit fullscreen mode

Real-world example: detect allbirds.com's full stack (16 technologies)

curl -X POST https://techstackdetect1.p.rapidapi.com/detect \
  -H "Content-Type: application/json" \
  -H "X-RapidAPI-Key: YOUR_RAPIDAPI_KEY" \
  -H "X-RapidAPI-Host: techstackdetect1.p.rapidapi.com" \
  -d '{"url": "https://allbirds.com"}'
Enter fullscreen mode Exit fullscreen mode
{
  "url": "https://allbirds.com",
  "cached": false,
  "technologies": [
    {"name": "Cloudflare", "category": "cdn", "confidence": 0.99},
    {"name": "Shopify", "category": "ecommerce", "confidence": 0.99},
    {"name": "HSTS", "category": "security", "confidence": 0.95},
    {"name": "HTTP/3", "category": "server", "confidence": 0.90},
    {"name": "OneTrust", "category": "privacy", "confidence": 0.90},
    {"name": "Amplitude", "category": "analytics", "confidence": 0.90},
    {"name": "Segment", "category": "analytics", "confidence": 0.90},
    {"name": "Google Tag Manager", "category": "analytics", "confidence": 0.90},
    {"name": "Vue.js", "category": "frontend", "confidence": 0.90},
    {"name": "Alpine.js", "category": "frontend", "confidence": 0.90},
    {"name": "reCAPTCHA", "category": "security", "confidence": 0.90},
    {"name": "hCaptcha", "category": "security", "confidence": 0.90},
    {"name": "jQuery", "category": "javascript", "confidence": 0.90, "version": "3.6.0"},
    {"name": "TrackJs", "category": "analytics", "confidence": 0.75},
    {"name": "jsDelivr", "category": "cdn", "confidence": 0.75},
    {"name": "Lightbox", "category": "javascript", "confidence": 0.75}
  ]
}
Enter fullscreen mode Exit fullscreen mode

One call. 16 technologies. CDN, ecommerce platform, analytics stack, frontend framework, privacy tooling, security — the complete picture.


Use case 1: GTM / Sales Prospecting

Enrich your CRM with tech stack data before outreach:

import requests
import csv

API_KEY = "YOUR_RAPIDAPI_KEY"
HEADERS = {
    "X-RapidAPI-Key": API_KEY,
    "X-RapidAPI-Host": "techstackdetect1.p.rapidapi.com",
}

def detect_tech_stack(url):
    r = requests.post(
        "https://techstackdetect1.p.rapidapi.com/detect",
        json={"url": url},
        headers=HEADERS,
    )
    return r.json().get("technologies", [])

def get_cms(url):
    techs = detect_tech_stack(url)
    cms = [t["name"] for t in techs if t["category"] == "cms"]
    return cms[0] if cms else "Unknown"

# Enrich your leads
leads = ["https://acme.com", "https://globex.com", "https://initech.com"]
for lead in leads:
    cms = get_cms(lead)
    print(f"{lead}: {cms}")
Enter fullscreen mode Exit fullscreen mode

Use case 2: Competitive intelligence

Find which of your competitors' clients are using their platform:

def uses_technology(url, tech_name):
    techs = detect_tech_stack(url)
    names = [t["name"].lower() for t in techs]
    return tech_name.lower() in names

# Check if a site uses HubSpot
sites = ["https://stripe.com", "https://twilio.com", "https://sendgrid.com"]
for site in sites:
    print(f"{site} uses HubSpot: {uses_technology(site, 'HubSpot')}")
Enter fullscreen mode Exit fullscreen mode

Use case 3: Bulk enrichment with the /batch endpoint

The API has a native /batch endpoint — send up to 50 URLs in a single request, all processed in parallel:

import requests

resp = requests.post(
    "https://techstackdetect1.p.rapidapi.com/batch",
    json={
        "urls": [
            "https://notion.so",
            "https://linear.app",
            "https://figma.com",
            "https://github.com",
            "https://vercel.com",
        ]
    },
    headers={
        "X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
        "X-RapidAPI-Host": "techstackdetect1.p.rapidapi.com",
    }
)

data = resp.json()
print(f"Processed: {data['stats']['total']} URLs, {data['stats']['successful']} succeeded")
for result in data["results"]:
    techs = [t["name"] for t in result["technologies"][:3]]
    print(f"  {result['url']}: {', '.join(techs)}")
Enter fullscreen mode Exit fullscreen mode

Output:

Processed: 5 URLs, 5 succeeded
  https://notion.so: Next.js, Cloudflare, Vercel
  https://linear.app: Next.js, Cloudflare, AWS
  https://figma.com: Next.js, AWS CloudFront, Netlify
  https://github.com: AWS, HSTS, Ruby on Rails
  https://vercel.com: Next.js, Vercel, HSTS
Enter fullscreen mode Exit fullscreen mode

The response also includes stats: {total, successful, failed, cached, fresh} — useful for monitoring batch success rates. Results are cached for 24h, so repeat calls are instant.


JavaScript (Node.js) example

async function detectTechStack(url) {
  const res = await fetch("https://techstackdetect1.p.rapidapi.com/detect", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "X-RapidAPI-Key": process.env.RAPIDAPI_KEY,
      "X-RapidAPI-Host": "techstackdetect1.p.rapidapi.com",
    },
    body: JSON.stringify({ url }),
  });
  return res.json();
}

const result = await detectTechStack("https://github.com");
result.technologies.forEach(({ name, category, confidence }) => {
  console.log(`${name} [${category}] ${(confidence * 100).toFixed(0)}%`);
});
Enter fullscreen mode Exit fullscreen mode

Pricing

Available on RapidAPI with a free tier:

Plan Price Requests
BASIC Free 100/day
PRO $19/mo 5,000/day
ULTRA $79/mo 50,000/day

→ Subscribe on RapidAPI


How it works under the hood

TechStackDetect uses a multi-signal detection engine:

  1. HTTP headersX-Powered-By, Server, X-Generator, security headers (HSTS, CSP)
  2. HTML patterns — meta tags, script src patterns, data attributes, class names
  3. DNS — CNAME records for CDN/hosting detection
  4. TLS certificates — issuer-based infrastructure detection
  5. JavaScript globalswindow.React, window.__NEXT_DATA__, etc.

Each signal contributes to a confidence score. Multi-signal detections get a bonus — React detected via both script src and window.React gets 0.99 confidence, not 0.75.


TL;DR

If you need to detect website tech stacks programmatically:

  • One POST request for single URLs (/detect)
  • Batch mode for up to 50 URLs in parallel (/batch)
  • 5,000+ technologies, 50+ categories
  • Confidence scores (0.75–0.99) + version numbers
  • Free tier, no credit card needed
  • Live demo — try any URL right now without signing up at api.techstackdetect.com
  • Works in Python, JavaScript, curl, or any HTTP client

Try it free on RapidAPI →


Tags: api python javascript webdev productivity

Top comments (0)