Tech Stack Detection
Detect the technology a website runs on (CMS, frameworks, analytics, CDN, payments and marketing tools) from its headers and HTML.
tech-stack-detect Example
{
"url": "https://google.com"
} {
"cdn": null,
"cms": null,
"url": "https://google.com",
"hosting": null,
"analytics": [
"Google Analytics"
],
"confidence": "low",
"css_framework": null,
"meta_framework": null,
"frontend_framework": null,
"other_technologies": [
"Custom JavaScript",
"Schema.org markup",
"Nonce-based CSP"
]
} Inputs
| Field | Type | Required | What it is |
|---|---|---|---|
url | string | No | Website URL (e.g. https://example.com) |
domain | string | No | Domain name (e.g. example.com) — use this or url |
Output fields
How reliably each field appears in a successful answer.
| Field | Type | Appears |
|---|---|---|
cms | string | Always (present in every successful answer) |
url | string | Always (present in every successful answer) |
hosting | string | Always (present in every successful answer) |
analytics | array | Always (present in every successful answer) |
css_framework | string | Always (present in every successful answer) |
frontend_framework | string | Always (present in every successful answer) |
How to call it
The same tool through each route. MCP clients reach it through Strale’s server at https://api.strale.io/mcp; the call below is what the agent sends.
# Needs an API key. max_price_cents caps what this call may cost.
curl -X POST https://api.strale.io/v1/do \
-H "Authorization: Bearer $STRALE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"capability_slug": "tech-stack-detect",
"inputs": {
"url": "https://google.com"
},
"max_price_cents": 3
}' {
"tool": "strale_execute",
"arguments": {
"slug": "tech-stack-detect",
"inputs": {
"url": "https://google.com"
},
"max_price_cents": 3
}
} import { Strale } from "straleio";
const strale = new Strale({ apiKey: process.env.STRALE_API_KEY! });
const result = await strale.do({
capability_slug: "tech-stack-detect",
inputs: {
"url": "https://google.com"
},
max_price_cents: 3,
}); import os
from straleio import Strale, DoRequest
strale = Strale(api_key=os.environ["STRALE_API_KEY"])
result = strale.do(DoRequest(
capability_slug="tech-stack-detect",
inputs={
"url": "https://google.com",
},
max_price_cents=3,
)) # No account. The first request answers 402 with the price in USDC;
# an x402 client pays it from your wallet and repeats the request.
curl -i 'https://api.strale.io/x402/v2/tech-stack-detect?url=https%3A%2F%2Fgoogle.com' Limitations
Some website sources are unsupported
Trustpilot, Glassdoor, LinkedIn, Google Search, Google Patents, Reddit and the major social platforms (Facebook, Instagram, X) are not supported and return a policy error before the page is read. Repeating the same request does not return content.
Niche or custom technologies can be missed
Database covers 1,000+ technologies — niche or custom-built tools may not be identified
What to do instead: Check the raw HTTP headers in the response for custom X-Powered-By or Server values that indicate unlisted technology
Server-only technologies are not visible
Detection based on HTTP headers, JavaScript libraries, and HTML signatures — technologies loaded conditionally or server-side only may not be detected
What to do instead: Complement with dns-lookup and ssl-check results to infer infrastructure choices not visible in the HTML
Pages are limited to 16 MiB of HTML
Pages with more than 16 MiB of HTML are refused with a caller_input error naming the input field. The call is not charged, and the page is not retried through another fetch or rendering route.
Bundled checks that include it
- Domain Security Check €0.30
- Competitive Intelligence Snapshot €1.54
- Lead Enrichment & Qualification €0.27
- Website Security Audit €0.20
- Prospect Company Profile €0.54
- Token Project Due Diligence €0.62
- DeFi Protocol Risk Check €0.24
- Competitor Read €0.20
- Prospect Brief €0.30
Related tools
- DNS Lookup Free
- Domain Contact Extraction €0.05
- SSL Certificate Check €0.03
- WHOIS Lookup €0.05