Website Tech Stack Detector with Evidence
Pricing
from $20.00 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
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:
| Event | Price |
|---|---|
apify-default-dataset-item | USD 0.020 per successful website |
apify-actor-start | USD 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 installnpm testnpm run checknpm 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
minimumConfidencefor stricter datasets and inspectevidencebefore 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.