{"name":"tech-stack-detector","id":"sfoln/tech-stack-detector","title":"Tech Stack Detector – Website Technologies","description":"Detect the tech stack of any website: CMS, e-commerce platform, analytics, tag managers, ad pixels, chat, payments, CDN, hosting and web server, plus SaaS verified in DNS (Google Workspace, HubSpot, Zendesk…). Live detection, one JSON record per site. $2 per 1,000 websites.","version":"0.1","status":"ready","family":{"id":"company-lead-intelligence","name":"Company & lead intelligence","description":"Company enrichment, contact discovery, tech-stack detection, hiring signals, job listings, public tenders, Shopify stores, marketplace listings, NPI provider records, e-mail and phone validation.","actors":13},"categories":["LEAD_GENERATION","SEO_TOOLS","DEVELOPER_TOOLS"],"availability":"public","seoTitle":"Tech Stack Detector API – $2 per 1,000 Websites","seoDescription":"Detect the technologies of any website: CMS, e-commerce, analytics, ad pixels, CDN, hosting and SaaS seen in DNS, as JSON. $2 per 1,000 websites.","summary":"Find out what any website is built with: give it domains or URLs and get one JSON record per site with every detected technology (name, categories, version, confidence and the evidence it was found by) plus headline fields: CMS, e-commerce platform, analytics, tag managers, ad pixels, live chat, payment processors, CDN, hosting, web server and frameworks. On top of the page itself it reads the TLS certificate and DNS records, so it also finds SaaS that never shows up in the HTML: the mailbox provider (Google Workspace, Microsoft 365), e-mail senders from SPF (SendGrid, Mailchimp, Amazon SES), and services verified in TXT records or behind subdomains (HubSpot, Zendesk, Stripe, Atlassian…). Built for sales prospecting by technology (\"Shopify stores using Klaviyo\"), competitive research, lead enrichment and AI agents.","pricing":{"model":"pay-per-event","currency":"USD","billedBy":"Apify","freePlanMaxItemsPerRun":10,"events":[{"name":"tech-stack","title":"Website tech stack","description":"Charged once per website whose start page answered: detected technologies with categories, versions, confidence and evidence, headline fields (CMS, e-commerce platform, analytics, CDN, hosting, mailbox provider…) and SaaS seen in DNS.","priceUsd":0.002}]},"input":{"description":"Enter websites (domains or page URLs). Each website produces one dataset record with its detected technologies.","required":["urls"],"fields":[{"name":"urls","title":"Websites","type":"array","required":true,"description":"Domains (apify.com) or page URLs (https://www.apify.com/pricing), one per line. A domain is analysed from its homepage (https://, falling back to http://). Duplicates are removed. Accounts on the Apify free plan can process up to 10 websites per run.","prefill":["apify.com"],"editor":"stringList"},{"name":"maxPages","title":"Pages per website","type":"integer","required":false,"description":"1 = the start page only; 2 = also one more page of the same site (pricing, shop, blog, contact…) to catch technologies that load only there.","default":1,"minimum":1,"maximum":2},{"name":"includeDnsSaaS","title":"Detect SaaS from DNS","type":"boolean","required":false,"description":"Read TXT verification tokens, MX, SPF, NS and the CNAMEs of common subdomains (help., shop., status., …) to find services that never appear in the HTML: Google Workspace, Microsoft 365, HubSpot, Zendesk, Stripe, SendGrid and more.","default":true},{"name":"categories","title":"Only these categories","type":"array","required":false,"description":"Keep only technologies in these categories, e.g. CMS, Ecommerce, Analytics, Advertising, CDN, Payment processors, Marketing automation (case-insensitive). Empty = every category.","editor":"stringList"},{"name":"minConfidence","title":"Minimum confidence","type":"integer","required":false,"description":"Drop technologies detected with a confidence below this value (0–100; most detections are 100).","default":0,"minimum":0,"maximum":100},{"name":"maxItems","title":"Max websites","type":"integer","required":false,"description":"Safety cap on how many websites are processed in this run.","default":1000,"minimum":1,"maximum":10000},{"name":"concurrency","title":"Concurrency","type":"integer","required":false,"description":"How many websites are analysed in parallel (1–10).","default":5,"minimum":1,"maximum":10},{"name":"includeRaw","title":"Include raw response data","type":"boolean","required":false,"description":"Attach the response headers of the analysed pages and the DNS records used under raw (larger output).","default":false}]},"exampleInput":{"urls":["apify.com"]},"outputFields":[{"name":"input","type":"string | object","title":"Input","description":"The website as submitted."},{"name":"status","type":"string","title":"Status","description":"ok | not_found | error | skipped_invalid | skipped_budget | skipped_free_plan | skipped_trial | skipped_unmetered","example":"ok"},{"name":"charged","type":"boolean","title":"Charged","description":"Whether this record incurred a pay-per-event charge."},{"name":"chargedEvent","type":"string","title":"Charged event","description":"Pay-per-event event charged for this record (present only when charged)."},{"name":"chargedCount","type":"integer","title":"Events charged","description":"Events actually charged when the charge came back short of the requested count (present only then; a warning explains it)."},{"name":"sponsored","type":"boolean","title":"Sponsored","description":"true when a promotional trial paid for this record instead of you: delivered with charged false and never billed (present only then)."},{"name":"promotionId","type":"string","title":"Promotion","description":"Id of the promotional trial that sponsored this record (present only with sponsored)."},{"name":"trialUnitsApplied","type":"integer","title":"Trial events","description":"Events of this record the trial paid for (present only with sponsored)."},{"name":"retailValueWaivedUsd","type":"number","title":"Value waived (USD)","description":"What those events cost at the listed prices, in USD: what you did not pay (present only with sponsored)."},{"name":"source","type":"string","title":"Source","description":"website+dns: the site's own pages, its TLS certificate and public DNS."},{"name":"fetchedAt","type":"string","title":"Fetched at","description":"ISO timestamp."},{"name":"error","type":"object","title":"Error","description":"{ code, message, provider?, status? } when status is not ok. Codes: site_blocked (401/403/429/503), page_not_found (404/410), http_error, domain_not_found, invalid_url, network, timeout, tls_error, unexpected_type, too_many_redirects; runtime codes: budget_exhausted, free_plan_limit, unmetered, aborted, charge_failed, record_too_large, invalid_record, dataset_push_failed; promotional-trial codes (status skipped_trial; skipped_free_plan when the free-plan limit of the paid data source is reached or cannot be checked): allowance_exhausted, run_cap, campaign_cap, actor_cap, provider_cap, portfolio_cap, campaign_inactive, window_closed, halted, not_eligible, unknown_cost, ledger_unavailable, invalid_request, free_plan_subsidy_cap."},{"name":"warnings","type":"array","title":"Warnings","description":"Notes about this record (second page or DNS lookups failed, page cut at 2 MB, detection time budget reached)."},{"name":"domain","type":"string | null","title":"Domain","description":"Registrable domain of the website.","example":"apify.com"},{"name":"url","type":"string | null","title":"URL","description":"Final URL of the analysed start page (after redirects)."},{"name":"httpStatus","type":"integer","title":"HTTP status","description":"Status of the start page when it answered with an error (not_found / error records)."},{"name":"title","type":"string | null","title":"Page title"},{"name":"language","type":"string | null","title":"Language","description":"The page's lang attribute."},{"name":"technologyCount","type":"integer","title":"Technologies"},{"name":"technologyNames","type":"array","title":"Technology names","description":"Most specific category first, then by confidence."},{"name":"byCategory","type":"object","title":"By category","description":"Category name → technology names, e.g. { \"CMS\": [\"WordPress\"], \"Analytics\": [\"Google Analytics\"] }."},{"name":"cms","type":"string | null","title":"CMS"},{"name":"ecommercePlatform","type":"string | null","title":"E-commerce platform"},{"name":"analytics","type":"array","title":"Analytics"},{"name":"tagManagers","type":"array","title":"Tag managers"},{"name":"advertising","type":"array","title":"Advertising and retargeting"},{"name":"marketingAutomation","type":"array","title":"Marketing automation"},{"name":"crm","type":"array","title":"CRM"},{"name":"liveChat","type":"array","title":"Live chat"},{"name":"paymentProcessors","type":"array","title":"Payment processors"},{"name":"emailProvider","type":"string | null","title":"Mailbox provider","description":"From the MX records (Google Workspace, Microsoft 365, …)."},{"name":"emailSenders","type":"array","title":"E-mail senders","description":"Services allowed to send the domain's mail (SPF includes)."},{"name":"hosting","type":"array","title":"Hosting / PaaS / IaaS"},{"name":"cdn","type":"array","title":"CDN"},{"name":"webServer","type":"string | null","title":"Web server"},{"name":"javascriptFrameworks","type":"array","title":"JavaScript frameworks"},{"name":"programmingLanguages","type":"array","title":"Programming languages"},{"name":"saasVerifiedByDns","type":"array","title":"SaaS seen in DNS","description":"Technologies found in DNS records (verification tokens, MX, SPF, NS, CNAME)."},{"name":"technologies","type":"array","title":"Technologies","description":"[{ name, slug, categories[], version, confidence (0–100), evidence[] (header, cookie, meta, scriptSrc, script, html, text, css, url, dom, cert, dns-txt, dns-spf, dns-mx, dns-ns, dns-soa, dns-cname, implied), website, impliedBy? }]"},{"name":"pagesAnalyzed","type":"integer","title":"Pages analysed"},{"name":"pages","type":"array","title":"Pages","description":"[{ url, status }] of the analysed pages."},{"name":"dnsChecked","type":"boolean","title":"DNS checked"},{"name":"certificateIssuer","type":"string | null","title":"TLS certificate issuer"},{"name":"raw","type":"object","title":"Raw","description":"With includeRaw: { pages: [{ url, status, headers }], dns: { txt, mx, ns, cname } }."}],"outputExample":{"input":"wordpress.org","domain":"wordpress.org","url":"https://wordpress.org/","title":"Blog Tool, Publishing Platform, and CMS – WordPress.org","language":"en-US","technologyCount":14,"technologyNames":["WordPress","C","MySQL","PHP","Gutenberg","Nginx","Google Font API","Google Tag Manager","HSTS","Priority Hints","Open Graph","RSS","Google Search Console","Help Scout"],"byCategory":{"CMS":["WordPress"],"Blogs":["WordPress"],"Web servers":["Nginx"],"Tag managers":["Google Tag Manager"],"Live chat":["Help Scout"]},"cms":"WordPress","ecommercePlatform":null,"analytics":[],"tagManagers":["Google Tag Manager"],"advertising":[],"marketingAutomation":[],"crm":[],"liveChat":["Help Scout"],"paymentProcessors":[],"emailProvider":null,"emailSenders":["Help Scout"],"hosting":[],"cdn":[],"webServer":"Nginx","javascriptFrameworks":[],"programmingLanguages":["C","PHP"],"saasVerifiedByDns":["Google Search Console","Help Scout"],"technologies":[{"name":"WordPress","slug":"wordpress","categories":["CMS","Blogs"],"version":"6.9","confidence":100,"evidence":["meta","scriptSrc","html"],"website":"https://wordpress.org"},{"name":"PHP","slug":"php","categories":["Programming languages"],"version":null,"confidence":100,"evidence":["implied"],"website":"http://php.net","impliedBy":["WordPress"]},{"name":"Help Scout","slug":"help-scout","categories":["Issue trackers","Live chat"],"version":null,"confidence":100,"evidence":["dns-spf"],"website":"https://www.helpscout.com"}],"pagesAnalyzed":2,"pages":[{"url":"https://wordpress.org/","status":200},{"url":"https://wordpress.org/news/","status":200}],"dnsChecked":true,"certificateIssuer":"Let's Encrypt","status":"ok","charged":true,"chargedEvent":"tech-stack","source":"website+dns","fetchedAt":"2026-10-14T10:00:00.000Z"},"faq":[{"question":"How are technologies detected?","answer":"The Actor loads the page like a browser would (without running JavaScript) and matches its response headers, cookies, meta tags, script URLs, inline scripts and HTML against more than 3,500 technology fingerprints (Wappalyzer 6.10.54, MIT licence, plus our own rules for newer frameworks and tag snippets). It also reads the TLS certificate issuer and, with includeDnsSaaS, DNS records: verification tokens, mail servers, SPF senders, name servers and the CNAMEs of help., shop., status. and similar subdomains."},{"question":"What can it miss?","answer":"Technologies that only load after JavaScript runs in a browser (some tag-manager payloads, single-page apps that inject everything client-side) and back-end tools that leave no trace in pages or DNS. Sites behind bot protection that refuse the request are returned with status not_found and are not charged."}],"mcpExamplePrompt":"Which CMS, e-commerce platform, analytics tools and e-mail provider do apify.com and wordpress.org use?","related":["website-audit","company-contacts-finder","domain-intelligence","company-enrichment","seo-competitor-snapshot"],"urls":{"site":"https://www.sfoln.com/actors/tech-stack-detector/","siteJson":"https://www.sfoln.com/actors/tech-stack-detector.json","siteMarkdown":"https://www.sfoln.com/actors/tech-stack-detector.md","store":"https://apify.com/sfoln/tech-stack-detector","storeMarkdown":"https://apify.com/sfoln/tech-stack-detector.md","runSync":"https://api.apify.com/v2/actors/sfoln~tech-stack-detector/run-sync-get-dataset-items","runAsync":"https://api.apify.com/v2/actors/sfoln~tech-stack-detector/runs","mcp":"https://mcp.apify.com?tools=sfoln/tech-stack-detector"},"publisher":{"name":"SFOLN LLC","apifyUsername":"sfoln","url":"https://www.sfoln.com","apifyProfile":"https://apify.com/sfoln","email":"contact@sfoln.com"},"generatedAt":"2026-10-22T04:28:58.477Z"}