Find out what any website is built with — in bulk. Drop in a list of domains and get back the CMS, ecommerce platform, JavaScript framework, analytics, marketing/CRM tools, payment widgets, CDN, hosting and web server behind each one. This is a fast, BuiltWith-style and Wappalyzer-style technology lookup and CMS detector built for competitive intelligence, lead generation and market research. Domains in → tech stack out, as clean structured JSON, CSV or Excel.
No browser, no API key, no monthly subscription. The detector reads each site's publicly served headers, cookies and HTML, matches the signals against a large library of technology fingerprints, and returns a flat technology list plus a category-grouped breakdown for every domain. Point it at four sites or four thousand — you get one tidy row per domain, ready to filter, pivot and push straight into your CRM, spreadsheet or data warehouse. Whether you want to build a list of every Shopify + Klaviyo store in a market, map which WordPress, Magento or HubSpot sites your competitors' customers run, or measure technology adoption across an entire industry, this Actor turns a raw domain list into an actionable tech-stack dataset.
For every domain you submit, the Actor returns a single structured row:
- Primary CMS (
cms) — the main content management system detected, e.g. WordPress, Shopify, Wix, Webflow, Drupal. - Primary ecommerce platform (
ecommerce) — the storefront powering the site, e.g. Shopify, WooCommerce, Magento, BigCommerce. - Web server & platform signals (
server,generator,poweredBy) — theServerheader, thegeneratormeta /X-Generatorheader (often exposing the exact CMS and version), and theX-Powered-Byheader. - Flat technology list (
technologies) — every technology detected on the page in one array, ready for a simple "contains X" filter. - Category-grouped breakdown (
byCategory) — the same detections organised into buckets: CMS, Ecommerce, Frameworks, Analytics, Marketing, Payments, CDN/Hosting and Server. - Technology count (
technologyCount) — how many technologies were detected, great for quickly spotting heavy vs. lightweight stacks. - Page context (
statusCode,title,finalUrl) — the final HTTP status of the homepage, the<title>text, and the URL after redirects — so you know the fingerprint came from a live, resolved page.
Everything is returned as structured data you can sort, filter and export — no scraping code to maintain on your side.
The Actor recognises technologies across the whole modern web stack. A selection of what it identifies:
| Category | Examples |
|---|---|
| CMS | WordPress, Shopify, Wix, Squarespace, Webflow, Framer, Drupal, Joomla, Ghost, HubSpot CMS, Contentful, Sitecore |
| Ecommerce | Shopify, WooCommerce, Magento, BigCommerce, PrestaShop, Salesforce Commerce, Ecwid |
| JS frameworks | Next.js, Nuxt, React, Vue, Angular, Svelte, Gatsby, Astro, jQuery |
| Analytics | Google Analytics, Google Tag Manager, Meta Pixel, Hotjar, Segment, Mixpanel, Plausible, Matomo, Amplitude |
| Marketing / CRM | HubSpot, Mailchimp, Klaviyo, Intercom, Drift, Zendesk, Tawk.to, Crisp |
| Payments | Stripe, PayPal, Klarna |
| CDN / Hosting | Cloudflare, Fastly, Akamai, Vercel, Netlify, CloudFront, GitHub Pages, S3 |
| Web server | Nginx, Apache, IIS, LiteSpeed, OpenResty, Caddy |
The list keeps growing — the categories above map directly onto the byCategory object in every result, so you always know which bucket a detection landed in.
- B2B prospecting. Build target lists by technology. Fingerprint a domain list and keep only the matches you care about — "all Shopify + Klaviyo stores", "Magento merchants", "sites on HubSpot", "WooCommerce shops". A ready-made source of qualified accounts, segmented by the exact stack they run.
- Competitive intelligence. See what stack competitors — and their customers — actually run. Detect the CMS, ecommerce platform, analytics and marketing tools behind any set of sites, and track how those choices differ across a market.
- Agencies & SaaS sales. Find sites that use, or crucially miss, a specific tool you replace, integrate with or migrate. If you sell a Klaviyo alternative, a headless CMS or a faster host, the tech stack tells you exactly who to pitch.
- Market research. Measure technology adoption across an industry, niche or country. Fingerprint a representative domain list and quantify how many run each CMS, framework or analytics tool — clean input for a report or dashboard.
- Lead enrichment. Append tech-stack signals to your CRM for sharper targeting. Feed a list of account domains through the Actor and attach
cms,ecommerceand the full technology list to each record so sales and marketing can segment on real data. - Recruiting & sourcing. Find companies running the stack you hire for. Detect which sites are built on React, Next.js, Vue, WordPress or a particular commerce platform, and turn that into a sourcing list for technical roles.
Filter the output dataset to turn a raw scan into a targeted list:
- Find Shopify stores → keep rows where
ecommerce=Shopify. - Target WordPress sites → keep rows where
cms=WordPress. - Sell a Klaviyo or HubSpot competitor → keep rows where
technologiescontainsKlaviyoorHubSpot. - Find sites with NO analytics → keep rows where
byCategory.Analyticsis empty or missing — prime candidates for an analytics/measurement pitch. - Spot heavy martech stacks → sort by
technologyCountdescending to surface the most tooled-up sites first. - Segment by host → group by
byCategory."CDN/Hosting"to see who is on Cloudflare, Vercel, Netlify and friends.
- Open the Website Tech Stack Detector page and click Try for free.
- Leave the input empty to fingerprint a built-in default set of popular sites and see the shape of the output, or paste your own domains into the Domains field (bare hostnames like
techcrunch.comor full URLs likehttps://techcrunch.com— both work). - Optionally set Max results and Concurrency, then click Start.
- When the run finishes, open the Dataset tab and export to CSV, JSON or Excel — or grab the Tech Stack view for a quick
domain / cms / ecommerce / server / technologiessummary.
npm i -g apify-cli
apify login
# Run with the default sample set
apify call logiover/website-tech-stack-detector# Run with your own domains and higher concurrency
apify call logiover/website-tech-stack-detector --input '{
"domains": ["shopify.com", "wordpress.org", "vercel.com", "stripe.com"],
"concurrency": 20,
"maxResults": 500
}'More CLI recipes, including dataset export, are in examples/cli.md.
Run the Actor and get the results back in a single request:
curl -X POST "https://api.apify.com/v2/acts/logiover~website-tech-stack-detector/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"domains": ["techcrunch.com", "shopify.com", "webflow.com"],
"concurrency": 10
}'The response is a JSON array of tech-stack rows — one object per domain. Async runs and CSV/JSON downloads are covered in examples/api-curl.md.
JavaScript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('logiover/website-tech-stack-detector').call({
domains: ['shopify.com', 'wordpress.org', 'stripe.com'],
concurrency: 15,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const site of items) {
console.log(site.domain, '→', site.cms, '|', site.technologies.join(', '));
}Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("logiover/website-tech-stack-detector").call(run_input={
"domains": ["shopify.com", "wordpress.org", "stripe.com"],
"concurrency": 15,
})
for site in client.dataset(run["defaultDatasetId"]).iterate_items():
print(site["domain"], "→", site["cms"], "|", ", ".join(site["technologies"]))Full client examples: examples/javascript.md · examples/python.md.
Every field is optional. Run the Actor with an empty input and it fingerprints a default set of popular sites so you can preview the output.
| Field | Type | Default | Description |
|---|---|---|---|
domains |
array of strings | ["shopify.com","wordpress.org","vercel.com","stripe.com"] |
Domains or URLs to analyze, with or without https://. Accepts bare hostnames (techcrunch.com) or full URLs (https://techcrunch.com/section). |
startUrls |
array of { url } |
— | Alternative URL list input, e.g. from another Actor or an uploaded file. Merged with domains. |
maxResults |
integer | 1000 |
Maximum number of sites to fingerprint per run (min 1). |
concurrency |
integer | 10 |
Number of parallel requests (min 1, max 30). Raise it to scan large lists faster. |
proxyConfiguration |
object | { "useApifyProxy": true } |
Apify proxy settings for outbound requests. |
Notes
domainsaccepts bare hostnames or full URLs — the Actor normalises both.domainsandstartUrlsare merged, so you can combine a hand-typed list with URLs coming from another Actor or a file.concurrencyranges from 1 to 30; the default of 10 is a good balance for most lists.
The Actor writes one row per domain to the run's dataset.
| Field | Type | Description |
|---|---|---|
url |
string | The URL requested |
domain |
string | Hostname without www. |
statusCode |
integer | null | Final HTTP status of the homepage |
title |
string | null | <title> contents |
technologies |
array | Flat list of every detected technology |
byCategory |
object | Detected technologies grouped by category (CMS, Ecommerce, Frameworks, Analytics, Marketing, Payments, CDN/Hosting, Server) |
cms |
string | null | Primary detected CMS |
ecommerce |
string | null | Primary detected ecommerce platform |
server |
string | null | Web server from the Server header |
generator |
string | null | generator meta tag / X-Generator header (often exposes CMS + version) |
poweredBy |
string | null | X-Powered-By header |
finalUrl |
string | null | URL after following redirects |
technologyCount |
integer | null | Number of technologies detected |
error |
string | null | Error message if the site couldn't be fetched |
scrapedAt |
string | ISO timestamp |
The default Tech Stack view shows the most useful columns at a glance: domain, cms, ecommerce, server, technologies, technologyCount, statusCode.
{
"url": "https://techcrunch.com",
"domain": "techcrunch.com",
"statusCode": 200,
"title": "TechCrunch | Startup and Technology News",
"technologies": ["WordPress", "HubSpot", "Google Tag Manager", "Cloudflare"],
"byCategory": {
"CMS": ["WordPress"],
"Analytics": ["Google Tag Manager"],
"Marketing": ["HubSpot"],
"CDN/Hosting": ["Cloudflare"]
},
"cms": "WordPress",
"ecommerce": null,
"server": "Nginx",
"generator": "WordPress 6.5.2",
"poweredBy": null,
"finalUrl": "https://techcrunch.com/",
"technologyCount": 4,
"error": null,
"scrapedAt": "2026-07-13T09:24:11.482Z"
}- Schedules. Run the Actor on a schedule to track when target sites adopt or drop a technology — a re-platform from Magento to Shopify, a switch from Universal Analytics to GA4, or a new HubSpot install is a strong buying (or selling) signal. Diff today's dataset against last week's to catch stack changes as they happen.
- Webhooks. Fire an Apify webhook when a run finishes to notify Slack, kick off a downstream Actor, or POST fresh tech-stack rows straight into your own service.
- Export to Google Sheets / S3. Push results to a Google Sheet for the sales team, or drop CSV/JSON into Amazon S3 for your data warehouse or BI tool.
- Zapier / Make / n8n / Pipedream. Wire the Actor into any of these via the Apify integration to enrich records, update a CRM, or trigger outreach automatically.
- End-to-end pipeline. A typical flow: collect domains (from a scraper, an ads dataset or a CSV) → detect the stack with this Actor → enrich by joining
cms/ecommerce/technologiesonto your account records → route to sales by segment. Every step can run on Apify with no glue code to host.
Datasets can be downloaded or streamed in any of these formats from the Console, CLI or API:
- CSV — for spreadsheets and CRM imports
- JSON — for apps and scripts
- JSONL — for streaming and big-data pipelines
- Excel (XLSX) — for analysts and reports
- XML — for legacy integrations
Submit the domain in the domains field and run the Actor. It reads the site's public headers, cookies and served HTML, matches them against a large fingerprint library, and returns the CMS, ecommerce platform, frameworks, analytics, marketing tools, payments, CDN/hosting and web server — both as a flat technologies list and grouped in byCategory.
Yes. It gives you the same kind of technology-lookup result as BuiltWith or Wappalyzer, but built for bulk domain lists and with no separate API key or monthly subscription — you pay per result on Apify and get structured JSON/CSV/Excel out.
That's the core use case. Pass hundreds or thousands of domains in one run (up to maxResults, default 1000) and every row returns a cms field plus the full technology breakdown. Filter on cms = WordPress, Shopify, Webflow, etc. to segment your list.
Run your domain list through the Actor, then filter the output: keep rows where ecommerce = Shopify for Shopify stores, or ecommerce = WooCommerce (or technologies contains WooCommerce) for WooCommerce shops. The same pattern works for Magento, BigCommerce, PrestaShop and more.
Yes. Analytics tools (Google Analytics, GTM, Meta Pixel, Hotjar, Segment, Mixpanel, Plausible, Matomo, Amplitude) land under byCategory.Analytics, and marketing/CRM tools (HubSpot, Mailchimp, Klaviyo, Intercom, Drift, Zendesk, Tawk.to, Crisp) under byCategory.Marketing. Filter on those to build martech target lists.
No — and that's what keeps it fast and cheap. The detector reads the served HTML, HTTP headers and cookies rather than spinning up a browser, so it scans large lists quickly. Technologies exposed in the initial response (which is the vast majority) are detected reliably.
Up to maxResults (default 1000, minimum 1) per run, processed at your chosen concurrency (1–30, default 10). For very large lists, raise maxResults and concurrency, or split the list across scheduled runs.
After a run, open the Dataset tab in the Console and choose CSV, JSON, JSONL, Excel or XML — or download the same formats via the API/CLI. See examples/api-curl.md for direct-download URLs.
There's no third-party API key or monthly subscription to buy — the Actor runs on Apify's pay-per-result model, and you can start with Try for free. Your only credential is your Apify token when calling it programmatically.
The Actor only reads information websites already make public — the HTTP response headers, cookies and HTML they serve to any visitor. Detecting the technologies behind a public homepage is a standard, widely-used practice (the same category as BuiltWith or Wappalyzer). As always, use the data responsibly and in line with the platform's terms and your local regulations.
| Actor | What it does |
|---|---|
| Website Contact Scraper | Pull emails, phone numbers and social links from websites for outreach. |
| B2B Lead Scraper | Build B2B lead lists (companies, people, emails) by sector and country. |
| Website SEO Audit Crawler | Crawl a site and audit on-page SEO issues at scale. |
Pair the tech stack from this Actor with contacts from the Website Contact Scraper or B2B Lead Scraper, and you have a complete, segment-ready prospecting dataset — the stack tells you who to pitch, the contacts tell you how to reach them. You can also verify collected addresses with the Bulk Email Verifier.
📄 Documentation only — the Actor runs on the Apify platform.
MIT © 2026 logiover