Website Technology Detector: Tech Stack Scanner avatar

Website Technology Detector: Tech Stack Scanner

Pricing

from $5.00 / 1,000 website analyzeds

Go to Apify Store
Website Technology Detector: Tech Stack Scanner

Website Technology Detector: Tech Stack Scanner

Detects the technologies a website is built with (CMS, ecommerce, analytics, frameworks; 7,500+ signatures) - use when you need a site's tech stack for lead qualification or competitor research; $0.005 per site checked.

Pricing

from $5.00 / 1,000 website analyzeds

Rating

0.0

(0)

Developer

Howth Technology Factory

Howth Technology Factory

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

5 days ago

Last modified

Share

Find out what any website is built with — CMS, ecommerce platform, JavaScript framework, analytics, CDN and hosting — from a single URL, matched against more than 7,500 technology signatures. Pass one URL or a list of thousands; results come back as structured rows you can filter, sort and export.

1. Why use Website Technology Detector

Knowing a site's stack changes what you do next. A sales team qualifying leads wants the shops running a particular ecommerce platform. An agency pitching a replatform wants to know which prospects are on an ageing CMS. A security reviewer wants an inventory of what a portfolio of sites actually runs.

Doing this by hand means opening each site, viewing source, hunting for a generator tag, recognising a script domain, and guessing at the rest. It takes a few minutes per site and the answer depends on how much you happen to recognise. At a hundred sites it stops being feasible.

This Actor does the recognition part against a maintained fingerprint dataset, so the answer is the same whoever runs it, and a list of a thousand sites is one run rather than a week.

2. Key features

  • 7,500+ technology signatures covering CMS, ecommerce, frameworks, analytics, tag managers, CDNs, hosting, payment and more.
  • One URL or a bulk list in the same input field — no separate bulk mode.
  • Evidence, not just labels. Each result carries the final URL, HTTP status, page title, the response headers used as signals, and the generator meta tag — so you can see why a call was made.
  • Per-technology detail. Every hit returns its name, one or more category labels, a version where the site exposes one, and a 0–100 confidence score.
  • Redirect-aware. Reports the final URL after redirects, so a domain that has moved is visible as moved.
  • Parallel fetching with configurable concurrency.
  • Capped page reads. Each page is read up to a fixed byte ceiling and streamed, so one enormous page cannot stall a run.
  • Per-site error isolation. A site that blocks automated traffic returns an error row; the rest of the run continues.
  • Public pages only. Nothing behind a login is touched.

3. Who it's for

For sales and lead generation. Feed in a list of prospect domains and filter the output to the ones running the platform your product integrates with, so outreach goes to accounts where the integration story is already true.

For agencies and consultants. Before a pitch, check the prospect's stack and open with what they actually run rather than a generic capability deck.

For operations. Audit a portfolio of company and campaign sites and find the ones still carrying an analytics tag or tag manager that was supposed to be removed.

For developers and AI agents. Call it as an enrichment step in a CRM pipeline: submit a domain, attach the detected stack to the record, and route the lead on what came back.

4. How to use it

  1. Open the Actor and click Try for free.
  2. Put your URLs in the URLs field, one per line, each including the scheme (https://www.shopify.com).
  3. Optionally adjust Max concurrency — how many sites are fetched at once.
  4. Click Start.
  5. Open the Output tab when the run finishes. Export as JSON, CSV or Excel.

5. Input parameters

FieldTypeRequiredDefaultDescription
urlsarray of stringsYes["https://www.wordpress.org","https://www.shopify.com"]Website URLs to inspect, one full URL per entry including the scheme.
maxConcurrencyintegerNo10How many websites are fetched in parallel. Minimum 1. Lower it if you are scanning many pages on one host.

6. Output

A real result, from a live run, abridged to three of the nine technologies returned:

{
"url": "https://www.wordpress.org",
"finalUrl": "https://wordpress.org/",
"httpStatus": 200,
"pageTitle": "Blog Tool, Publishing Platform, and CMS – WordPress.org",
"headers": {
"server": "nginx",
"x-powered-by": null,
"x-generator": null
},
"metaGenerator": "WordPress 7.1-beta3-62878",
"technologies": [
{ "name": "WordPress", "categories": ["CMS", "Blogs"], "version": "7.1", "confidence": 100 },
{ "name": "MySQL", "categories": ["Databases"], "version": null, "confidence": 100 },
{ "name": "Google Tag Manager", "categories": ["Tag managers"], "version": null, "confidence": 100 }
],
"fetchTimeMs": 472
}

error is omitted entirely on a successful row rather than set to null, so test for its presence, not its value.

7. Output fields

FieldMeaning
urlThe URL exactly as submitted.
finalUrlWhere the request landed after redirects. Differs from url when the site has moved or forces a canonical host.
httpStatusHTTP status of the final response.
pageTitleThe page's <title>, useful for confirming you reached the intended site.
headersSelected response headers used as detection signals: server, x-powered-by, x-generator. Null where the header was absent.
metaGeneratorThe <meta name="generator"> value when present — often the single strongest CMS signal, and frequently carries an exact version.
technologiesThe detection result. An array of objects, one per technology found.
technologies[].nameTechnology name, e.g. WordPress, Nginx, Google Tag Manager.
technologies[].categoriesArray of category labels, e.g. ["CMS","Blogs"]. A technology can sit in more than one.
technologies[].versionDetected version when the signal exposes one, otherwise null.
technologies[].confidence0–100 score for how strong the matching signal was.
fetchTimeMsHow long the fetch took, in milliseconds.
errorPopulated when the site could not be read. Absent from successful rows.

To filter to one category, filter on technologies[].categories — for example keep only rows where any entry has category Ecommerce.

8. How it works

Each URL is normalised, then fetched once with redirects followed. The response is streamed and read up to a fixed byte ceiling, so a very large page is truncated rather than allowed to consume the run's memory.

The fetched HTML, response headers, cookies and script URLs are matched against the bundled fingerprint dataset. The dataset ships inside the image and is loaded once at startup, so there is no per-request lookup against an external service and no API key to supply.

Sites are processed in parallel up to maxConcurrency. Each site is isolated: a timeout, a block page or a DNS failure produces an error row for that site only.

9. API & MCP usage

cURL

curl -X POST "https://api.apify.com/v2/acts/apifmcpfactory~tech-stack-detector/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"urls":["https://www.shopify.com","https://www.wordpress.org"],"maxConcurrency":10}'

As an Apify MCP tool. This Actor is callable directly by AI agents such as Claude and Cursor. Usage bills through your own Apify account.

https://mcp.apify.com?tools=apifmcpfactory/tech-stack-detector

Claude Desktop (claude_desktop_config.json):

{
"mcpServers": {
"tech-stack-detector": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.apify.com?tools=apifmcpfactory/tech-stack-detector",
"--header",
"Authorization: Bearer YOUR_APIFY_TOKEN"
]
}
}
}

As an MCP tool. The same detection is available as a hosted MCP server for AI agents, with detect_stack for one URL and bulk_detect_stack for up to 50. See the product page for that endpoint.

10. Pricing

$0.005 per site checked, billed per site written to the dataset. Sites that fail to resolve are not charged.

A 1,000-domain prospect list costs $5.00.

11. Limits & performance

Memory256 MB
Default concurrency10 sites in parallel
Page readCapped and streamed per page
FingerprintsLoaded once at startup, held for the process lifetime

12. Limitations

  • Detection is signature-based. A technology that leaves no observable trace in the HTML, headers, cookies or script URLs cannot be seen. Some server-side components are detected — response headers and platform conventions routinely reveal the web server, language and database — but anything genuinely internal is invisible from the outside.
  • Absence is not proof of absence. A missing technology means no signature matched, not that the site definitely does not use it.
  • Confidence is signal strength, not certainty. A score of 100 means the fingerprint matched cleanly, not that the finding has been independently confirmed.
  • Versions are reported only when exposed. Most technologies return version: null; a version appears only where the site publishes it, such as a generator meta tag.
  • Some sites block automated traffic. Those return an error row rather than a partial guess.
  • One page per site. Detection reads the URL you supply. A technology used only in a checkout or account area will not be seen from the homepage.
  • Public pages only. Nothing behind a login or paywall is fetched.
  • Fingerprints age. New platform versions can change their signals; the dataset is refreshed periodically, not continuously.

13. FAQ

How many technologies can it detect? More than 7,500 signatures, spanning CMS, ecommerce, frameworks, analytics, tag managers, CDNs, hosting and payment providers.

Can I check a list of websites at once? Yes. Put every URL in the urls field; there is no separate bulk mode.

Why did a site return an error? Most often it blocks automated requests, timed out, or the domain no longer resolves. The error field says which.

Why does finalUrl differ from what I submitted? The site redirected. That is itself useful signal — it shows canonical host choices and domains that have moved.

Does it detect the server language or database? Often, yes. Response headers and platform conventions frequently reveal the web server, programming language and database — a WordPress site, for example, typically returns Nginx, PHP and MySQL alongside the CMS itself. What it cannot see is anything that leaves no observable trace.

What does the confidence score mean? How strong the matching signal was, from 0 to 100. It measures signal strength, not independent verification.

Why is version usually null? Most technologies do not publish their version publicly. Where a site does expose one — commonly through a generator meta tag — it is reported.

Do I need an API key for a third-party service? No. The fingerprint dataset ships inside the Actor.

Will it log into sites or bypass protection? No. Public pages only, and no attempt is made to defeat bot protection.