Website Tech Stack Detector with Evidence avatar

Website Tech Stack Detector with Evidence

Pricing

from $20.00 / 1,000 results

Go to Apify Store
Website Tech Stack Detector with Evidence

Website Tech Stack Detector with Evidence

Low-cost Wappalyzer and BuiltWith alternative for bulk technology detection with confidence scores, optional evidence, DNS controls, and TLS details.

Pricing

from $20.00 / 1,000 results

Rating

0.0

(0)

Developer

Alejandro Schulten

Alejandro Schulten

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Bulk website technology detection for Apify with the signal behind each result. Each successful dataset row contains the detected stack, confidence scores, optional evidence, company metadata, public social profiles, DNS email controls, and TLS details.

Why this Actor

  • One input: a list of public website URLs.
  • No API keys or paid upstream providers.
  • Optional evidence from HTML, scripts, headers, DNS, and explicit dependency inference instead of unexplained labels.
  • Compact JSON suitable for CRM enrichment, market research, competitor monitoring, MCP, and automation.
  • HTTP-only execution keeps platform costs low and predictable.

Input

{
"urls": [
{ "url": "https://example.com" },
{ "url": "https://shopify.com" }
],
"crawlPages": 0,
"minimumConfidence": 50,
"includeEvidence": false,
"concurrency": 3,
"timeoutSeconds": 15
}

Set crawlPages to 1 through 3 when contact and company-page enrichment matters more than speed. JavaScript rendering is intentionally disabled in the MVP to keep execution cost and failure rates low.

Verified output example

The Actor writes one charged dataset item per successfully analyzed domain. Failed or blocked URLs are recorded in the uncharged OUTPUT summary.

This abbreviated result was produced from https://stripe.com/ with crawlPages: 0, minimumConfidence: 50, and includeEvidence: true on September 30, 2026. The omitted fields contain company metadata, public social profiles, DNS controls, and TLS certificate details from the same run.

{
"inputUrl": "https://stripe.com/",
"finalUrl": "https://stripe.com/",
"status": 200,
"technologyCount": 7,
"technologies": [
{
"name": "Google Workspace",
"categories": ["mail-provider"],
"version": null,
"confidence": 94.5,
"inferred": false,
"evidence": [
{
"source": "dns-mx",
"subject": "MX",
"match": "aspmx.l.google.com",
"reliability": 0.9
}
]
},
{
"name": "Next.js",
"categories": ["js-framework", "backend-framework"],
"version": null,
"confidence": 93.5,
"inferred": false,
"evidence": [
{
"source": "html",
"subject": "html",
"match": "id=\"__NEXT_DATA__\"",
"reliability": 0.55
},
{
"source": "script-src",
"subject": "script[src]",
"match": "/_next/static/chunks/",
"reliability": 0.8
}
]
},
{
"name": "Nginx",
"categories": ["web-server"],
"version": null,
"confidence": 88,
"inferred": false,
"evidence": [
{
"source": "header",
"subject": "server",
"match": "nginx",
"reliability": 0.88
}
]
},
{
"name": "Amazon Route 53",
"categories": ["devops"],
"version": null,
"confidence": 85,
"inferred": false,
"evidence": [
{
"source": "dns-ns",
"subject": "NS",
"match": "awsdns",
"reliability": 0.85
}
]
},
{
"name": "Node.js",
"categories": ["runtime"],
"version": null,
"confidence": 79.5,
"inferred": true,
"evidence": [
{
"source": "implied",
"subject": "Next.js",
"match": "Next.js"
}
]
},
{
"name": "React",
"categories": ["js-framework", "ui-framework"],
"version": null,
"confidence": 79.5,
"inferred": true,
"evidence": [
{
"source": "implied",
"subject": "Next.js",
"match": "Next.js"
}
]
},
{
"name": "Amazon Web Services",
"categories": ["hosting"],
"version": null,
"confidence": 72.3,
"inferred": true,
"evidence": [
{
"source": "implied",
"subject": "Amazon Route 53",
"match": "Amazon Route 53"
}
]
}
],
"company": {
"companyName": "Stripe",
"about": "Stripe powers online and in-person payment processing and financial solutions for businesses of all sizes."
},
"social": {
"x": ["stripe"],
"linkedin": ["stripe"],
"github": ["stripe"]
},
"security": {
"dns": {
"spf": true,
"dmarc": true,
"caa": true,
"dmarcPolicy": "reject",
"dkim": true
},
"certInfo": {
"issuer": "DigiCert, Inc.",
"protocol": "TLSv1.3"
}
}
}

Technology and website output can change over time. The example is a verified snapshot, not a hard-coded fixture or accuracy guarantee.

Pricing

Pay per event with platform usage included:

EventPrice
apify-default-dataset-itemUSD 0.020 per successful website
apify-actor-startUSD 0.00005 per run

Apify keeps 20% and subtracts platform execution costs. Free-plan users do not generate developer revenue, although Apify covers their platform usage.

Local development

npm install
npm test
npm run check
npm start

Local input can be placed in storage/key_value_stores/default/INPUT.json.

Operational limits

  • Maximum 500 unique URLs per run.
  • Only public HTTP(S) URLs on ports 80 and 443 are accepted.
  • Local, private, loopback, link-local, and other non-public addresses are rejected.
  • Detection depends on what the target serves to the Apify worker. Geo-targeting and bot defenses can change results.
  • Static HTTP analysis misses technologies injected only after JavaScript execution.
  • Low-confidence HTML patterns can produce false positives. Raise minimumConfidence for stricter datasets and inspect evidence before using a detection for automated decisions.
  • Technology-spend values are heuristic lower-bound signals, not verified vendor invoices or company expenditure.

Technology detection is powered by the MIT-licensed opentechalyzer package. This Actor provides hosted execution, bulk input, cost controls, result normalization, Apify datasets, scheduling, API access, MCP discovery, and agentic payments.