Detect the Tech Stack of Any Website With One API Call
Detect the Tech Stack of Any Website With One API Call
Ever wondered what technologies power a website? Whether it's built with React or Vue, hosted on AWS or Vercel, running WordPress or a custom CMS? There are browser extensions for this, but if you need it in a script, pipeline, or automation — you need an API.
Quick Check
curl -s "https://hermesforge.dev/api/techstack?url=https://example.com" | python3 -m json.tool
Response:
{
"url": "https://example.com",
"technologies": [
{"name": "Nginx", "category": "Web Server", "confidence": 100},
{"name": "React", "category": "JavaScript Framework", "confidence": 95},
{"name": "Next.js", "category": "Web Framework", "confidence": 90},
{"name": "Vercel", "category": "Hosting", "confidence": 85},
{"name": "Google Analytics", "category": "Analytics", "confidence": 100}
],
"headers": {
"server": "nginx",
"x-powered-by": "Next.js"
},
"meta": {
"generator": null
}
}
Each technology includes a name, category, and confidence score. No API key needed.
What It Detects
The API identifies technologies across several categories:
| Category | Examples |
|---|---|
| Web Servers | Nginx, Apache, LiteSpeed, Caddy |
| JavaScript Frameworks | React, Vue, Angular, Svelte |
| Web Frameworks | Next.js, Nuxt, Django, Rails, Laravel |
| CMS | WordPress, Ghost, Drupal, Webflow |
| Hosting/CDN | Vercel, Netlify, Cloudflare, AWS |
| Analytics | Google Analytics, Plausible, Fathom |
| E-commerce | Shopify, WooCommerce, Magento |
| Marketing | HubSpot, Mailchimp, Intercom |
Detection is based on HTTP headers, HTML meta tags, JavaScript globals, and other fingerprints.
Use Cases
Competitive Analysis
#!/bin/bash
# Check what your competitors are using
COMPETITORS=("competitor1.com" "competitor2.com" "competitor3.com")
for SITE in "${COMPETITORS[@]}"; do
echo "=== $SITE ==="
curl -s "https://hermesforge.dev/api/techstack?url=https://${SITE}" | \
python3 -c "
import sys, json
data = json.load(sys.stdin)
for tech in data.get('technologies', []):
print(f\" {tech['category']}: {tech['name']} ({tech['confidence']}%)\")
"
echo ""
done
Lead Qualification
If you sell developer tools or services, knowing a prospect's stack helps you personalize outreach:
# Check if a prospect uses React (your target market)
RESULT=$(curl -s "https://hermesforge.dev/api/techstack?url=https://prospect.com")
USES_REACT=$(echo "$RESULT" | python3 -c "
import sys, json
techs = json.load(sys.stdin).get('technologies', [])
print('yes' if any(t['name'] == 'React' for t in techs) else 'no')
")
if [ "$USES_REACT" = "yes" ]; then
echo "Prospect uses React — good fit for our React component library"
fi
Audit Your Own Stack
# What does the outside world see about your tech stack?
curl -s "https://hermesforge.dev/api/techstack?url=https://mysite.com" | \
python3 -c "
import sys, json
data = json.load(sys.stdin)
print('Technologies visible externally:')
for tech in data.get('technologies', []):
print(f\" {tech['name']} ({tech['category']})\")
print(f\"\nHeaders exposed: {list(data.get('headers', {}).keys())}\")
"
This is useful for security audits — you might be leaking technology information you'd rather keep private.
Batch Analysis
For analyzing multiple sites, combine with the screenshot batch endpoint:
#!/bin/bash
SITES=("github.com" "shopify.com" "vercel.com" "wordpress.com" "dev.to")
echo "site,frameworks,hosting,analytics"
for SITE in "${SITES[@]}"; do
RESULT=$(curl -s "https://hermesforge.dev/api/techstack?url=https://${SITE}")
FRAMEWORKS=$(echo "$RESULT" | python3 -c "
import sys,json
techs = json.load(sys.stdin).get('technologies',[])
print(','.join(t['name'] for t in techs if 'Framework' in t.get('category','')))
" 2>/dev/null)
HOSTING=$(echo "$RESULT" | python3 -c "
import sys,json
techs = json.load(sys.stdin).get('technologies',[])
print(','.join(t['name'] for t in techs if 'Hosting' in t.get('category','') or 'CDN' in t.get('category','')))
" 2>/dev/null)
ANALYTICS=$(echo "$RESULT" | python3 -c "
import sys,json
techs = json.load(sys.stdin).get('technologies',[])
print(','.join(t['name'] for t in techs if 'Analytics' in t.get('category','')))
" 2>/dev/null)
echo "${SITE},${FRAMEWORKS},${HOSTING},${ANALYTICS}"
sleep 1
done
Rate Limits
- Without API key: 5 requests per minute
- With free API key: 20 requests per minute
For most use cases, the free tier works without a key.
Try it: curl -s "https://hermesforge.dev/api/techstack?url=https://github.com" | python3 -m json.tool