Tech Stack Detector & Pixel Checker: CMS, GA4, GTM, Meta Pixel avatar

Tech Stack Detector & Pixel Checker: CMS, GA4, GTM, Meta Pixel

Pricing

$1.50 / 1,000 domain analyzeds

Go to Apify Store
Tech Stack Detector & Pixel Checker: CMS, GA4, GTM, Meta Pixel

Tech Stack Detector & Pixel Checker: CMS, GA4, GTM, Meta Pixel

Tech stack detector, pixel checker and BuiltWith / Wappalyzer alternative for lead lists. Paste domains or emails; get CMS, Shopify, GA4, GTM tags, Meta/TikTok/LinkedIn pixels, tracking IDs, consent, chat, hosting with evidence. Parked & dead domains free. 3 free, then $0.0015/domain.

Pricing

$1.50 / 1,000 domain analyzeds

Rating

0.0

(0)

Developer

Umair Saleem Mohammad Saleem

Umair Saleem Mohammad Saleem

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Answer first: this actor is a tech stack detector, pixel checker and website technology lookup (a BuiltWith / Wappalyzer alternative) for lead generation, agency prospecting and SEO. Give it a list of domains, URLs or email addresses. For each one it reads the homepage (plus up to 2 extra pages) and the site's public Google Tag Manager container, then returns every technology it finds, grouped by category: CMS and site builder, ecommerce platform, analytics (GA4), tag managers, ad pixels (Meta, Google Ads, TikTok, LinkedIn, Pinterest, X, Bing, Reddit, Snap), heatmaps (Hotjar, Clarity), cookie consent, live chat, email and marketing tools, payments, CDN and hosting, JS frameworks, SEO plugins (Yoast, Rank Math, AIOSEO) and schema.org. Every detection comes with a confidence score, the evidence that matched (header, script URL, meta tag, cookie or HTML snippet) and the tracking IDs found (GA4 G-, GTM-, AW-, Meta Pixel ID and more). The first 3 analyzed domains of every run are free, then $0.0015 per domain ($1.50 per 1,000). Dead, blocked and empty sites, parked or for-sale domains and placeholder pages (server default page, "coming soon", suspended hosting) are reported and never billed, and every row tells you if the domain redirects to another company's site (e.g. jet.com → walmart.com). That makes it a quick lead-list cleaner too.

Quick facts
Best forLead lists by technology (e.g. Shopify stores running Meta ads), agency prospecting and pitch prep, competitor research, SEO / analytics audits, CRM enrichment
InputA list of domains, URLs or emails (allbirds.com, https://ghost.org, jane@acme.com → acme.com)
OutputOne row per domain: cms, ecommerce, analytics, tagManagers, advertising, sessionRecording, consent, chat, marketing, payment, cdnHosting, frontend, seoPlugins, trackingIds, plus technologies[] with category, confidence, version and evidence, seo (title, meta description, canonical, hreflang, schema.org types), and lead-list flags finalDomain, redirectedToOtherSite, parkedOrForSale, placeholderPage
Coverage314 fingerprint rules in 25 categories, written by Cygnix Labs. GTM container scan finds pixels that never appear in the page HTML
PriceFirst 3 domains free every run, then $0.0015 per analyzed domain. Same price for 1, 2 or 3 pages and the GTM scan. No start fee
NeedsNo API keys, no proxies, no login. Public pages only, robots.txt respected
Not includedJavaScript rendering, historical tech data, company firmographics, tools that load only after login or consent clicks

Try it now: the input is prefilled with 3 domains, so the first run is free.

Lead-list check: dead, parked and redirected domains (real run, 20 Oct 2026)

Build 0.1.4, run K7ZfYUaz2fCT35GB5, 14 input lines incl. an email address, a typo and junk domains. 10 analyzed (3 free + 7 billed = $0.0105), everything else free:

InputStatusFlagsBilled
jane.doe@gymshark.comok: Shopifychecked as gymshark.comyes
jet.comok: Next.js, ReactredirectedToOtherSite: true, finalDomain: walmart.comyes
cheapwidgets.comparked or for-sale domain (domain parking / for-sale script)parkedOrForSale: trueno
nonexistent-domain-cygnix-xyz.comunreachable (DNS: domain does not resolve)no
stackoverflow.comblocked by bot protection (HTTP 403)headers still show Cloudflareno
not-a-domaininvalid input (not a public domain name)no

Full rows: JSON · CSV · Excel. In the same run hubspot.com showed 8 ad pixels (Google Ads, Floodlight, LinkedIn, Meta, Bing UET, Reddit, TikTok, X) and allbirds.com GA4 + Google Ads + Meta + TikTok + Bing UET + Outbrain, most of them from the GTM container.

Sample output: full tech stack (real run, 19 Oct 2026, 13 domains)

Unedited output of build 0.1.2 (run RUMaU8lSDMiGdAbFa): {"urls": ["allbirds.com", "techcrunch.com", "webflow.com", "ghost.org", "hubspot.com", "wpbeginner.com", "tartinebakery.com", "franklinbbq.com", "vapiano.de", "skullcandy.com", "nonexistent-domain-cygnix-xyz.com", "linkedin.com", "stackoverflow.com"], "extraPagesPerDomain": 1}. Finished in about 10 seconds. 10 domains were analyzed (3 free + 7 billed = $0.0105); the made-up domain (unreachable), linkedin.com (robots.txt disallows bots) and stackoverflow.com (HTTP 403 bot protection) were not billed.

Download the full sample (all 13 rows with every field, public, no login): JSON · CSV · Excel

DomainCMS / platformAnalytics & tagsAd pixelsOther highlights
allbirds.comShopify (+ Shop Pay)GA4, Universal Analytics, GTMGoogle Ads, Meta, TikTok, Microsoft UET, OutbrainMicrosoft Clarity, OneTrust, Cloudflare
techcrunch.comWordPress 6.9.10 + Yoast SEOGA4, GTM, Jetpack StatsGoogle Ads, Meta, LinkedIn Insight, XMicrosoft Clarity, Cloudflare, reCAPTCHA + Turnstile
hubspot.comHubSpot CMSGA4, GTM, Cloudflare Web AnalyticsGoogle Ads, Floodlight, Meta, LinkedIn, TikTok, X, Bing, RedditHotjar, Cloudflare
webflow.comWebflowGA4, GTMGoogle Ads, Meta, LinkedIn, Bing, RedditMarketo forms, GSAP, Cloudflare
skullcandy.comShopify (+ Shop Pay)--Klaviyo, Yotpo reviews, Bootstrap, Cloudflare
wpbeginner.comWordPress + All in One SEO 5.0.3GA4, Cloudflare Web Analytics-Microsoft Clarity, WPForms, PHP 8.0.30
tartinebakery.comWordPress 7.1.3 + Elementor 4.3.5--Cookiebot + Google Consent Mode, Vimeo
franklinbbq.comSquarespace-Meta PixelLocalBusiness schema, Google Maps embed
ghost.orgHugo (homepage) + Ghost (help center)--Netlify, Alpine.js
vapiano.deTYPO3--Open Graph, Twitter Cards

On allbirds.com, hubspot.com, techcrunch.com and webflow.com the ad pixels and GA4 IDs come from the Google Tag Manager container. They are not in the page HTML, so an HTML-only scanner misses them.

One row from the dataset (trimmed to 4 of 22 technologies):

{
"domain": "techcrunch.com",
"status": "ok",
"httpStatus": 200,
"finalUrl": "https://techcrunch.com/",
"title": "TechCrunch | Startup and Technology News",
"technologyCount": 22,
"cms": "WordPress",
"analytics": "Jetpack Stats, Google Analytics 4",
"tagManagers": "Google Tag Manager",
"advertising": "Google Ads, LinkedIn Insight Tag, Meta Pixel, X (Twitter) Pixel",
"sessionRecording": "Microsoft Clarity",
"cdnHosting": "Cloudflare",
"seoPlugins": "Open Graph tags, Schema.org JSON-LD, Twitter / X Cards, Yoast SEO",
"trackingIds": {
"ga4": ["G-KJR3C2ZQN6"],
"gtm": ["GTM-M24PKK8"],
"googleAds": ["AW-26970898", "AW-29214594", "AW-816022932", "AW-954765627"],
"metaPixel": ["1447508128842484"]
},
"technologies": [
{ "name": "WordPress", "category": "cms", "confidence": 100, "confidenceLevel": "high", "version": "6.9.10",
"evidence": ["header: link: <https://techcrunch.com/wp-json/>; rel=\"https://api.w.org/\"", "meta generator: WordPress 6.9.10"] },
{ "name": "Yoast SEO", "category": "seo", "confidence": 95, "confidenceLevel": "high",
"evidence": ["html: :-1' /> <!-- This site is optimized with the Yoast SEO Premium plugin v25.1 (Yoast S"] },
{ "name": "Google Tag Manager", "category": "tagManager", "confidence": 95, "ids": ["GTM-M24PKK8"],
"evidence": ["html: ataLayer','GTM-M24PKK8'); </script> <!-- End G"] },
{ "name": "Meta Pixel", "category": "advertising", "confidence": 85, "ids": ["1447508128842484"],
"evidence": ["GTM container GTM-M24PKK8: connect.facebook.net/en_US/fbevents.js"] }
],
"pagesAnalyzed": 2,
"gtmContainersScanned": ["GTM-M24PKK8"],
"charged": true
}

What it detects (25 categories, 314 rules)

CategoryExamples
CMS & site buildersWordPress, Webflow, Wix, Squarespace, Framer, Ghost, HubSpot CMS, Drupal, Joomla, TYPO3, Duda, Craft CMS, AEM, Sitecore, Contentful, Sanity, Storyblok, Hugo, Jekyll, Bubble
EcommerceShopify, WooCommerce, Magento / Adobe Commerce, BigCommerce, PrestaShop, Salesforce Commerce Cloud, Shopware, OpenCart, Ecwid, Snipcart, Lemon Squeezy, Gumroad
Page builders & WP pluginsElementor, Divi, WPBakery, Beaver Builder, Bricks, WP Rocket, Jetpack, WPML, Contact Form 7, Gravity Forms, WPForms
SEOYoast SEO, Rank Math, All in One SEO, SEOPress, The SEO Framework, schema.org JSON-LD / microdata types, Open Graph, Twitter Cards, hreflang
AnalyticsGoogle Analytics 4, Universal Analytics, Plausible, Fathom, Matomo, Adobe Analytics, Mixpanel, Amplitude, Heap, PostHog, Umami, Cloudflare and Vercel analytics
Heatmaps & recordingsHotjar, Microsoft Clarity, FullStory, Mouseflow, Lucky Orange, Smartlook, Crazy Egg, LogRocket, Contentsquare
Tag managers & CDPsGoogle Tag Manager (with container scan), Tealium, Adobe Launch, Segment, RudderStack, Stape
Ad & marketing pixelsMeta Pixel, Google Ads, Floodlight, AdSense, TikTok Pixel, LinkedIn Insight Tag, Pinterest Tag, X Pixel, Snap Pixel, Microsoft UET, Reddit, Quora, Criteo, Taboola, Outbrain, AdRoll
Cookie consent / CMPOneTrust, Cookiebot, CookieYes, Osano, Usercentrics, Didomi, TrustArc, Termly, iubenda, Complianz, Google Consent Mode
Chat & supportIntercom, Drift, Zendesk, LiveChat, Tawk.to, Crisp, Tidio, Olark, Freshchat, Gorgias, Help Scout, HubSpot chat, WhatsApp links
Email & marketingHubSpot, Mailchimp, Klaviyo, Marketo, Pardot, ActiveCampaign, Kit (ConvertKit), Brevo, MailerLite, Omnisend, Drip, Customer.io, Attentive, Privy
PaymentsStripe, PayPal, Shop Pay, Klarna, Afterpay, Affirm, Square, Braintree, Adyen, Amazon Pay, Razorpay, Paddle, Chargebee, Mollie
CDN, hosting & serversCloudflare, Fastly, Akamai, CloudFront, Vercel, Netlify, GitHub Pages, Google Cloud, Azure, Fly.io, Render, Heroku, WP Engine, Kinsta, Pantheon, Bunny CDN, Nginx, Apache, LiteSpeed, IIS
Frameworks & librariesNext.js, Nuxt, Gatsby, Remix, Astro, SvelteKit, React, Vue, Angular, Alpine.js, htmx, Hotwire, jQuery, Bootstrap, Tailwind, GSAP, Google Fonts, Font Awesome
AlsoA/B testing (Optimizely, VWO, AB Tasty), monitoring (Sentry, New Relic, Datadog), security (reCAPTCHA, hCaptcha, Turnstile, WAFs, HSTS), reviews (Trustpilot, Yotpo, Judge.me, Okendo), booking and forms (Calendly, Typeform, Jotform), video (YouTube, Vimeo, Wistia), site search (Algolia), accessibility widgets

How confidence works

ScoreEvidence
100Response header (server: Squarespace, x-vercel-id) or meta generator (WordPress 6.9.10)
95Script URL (static.klaviyo.com/onsite/js/...)
90Other resource URL (stylesheet, image, iframe) or cookie name
85Found inside the site's Google Tag Manager container
70-80HTML snippet (inline code such as fbq('init', ...))
60Implied by another technology (PHP implied by WordPress, React implied by Next.js)

Two independent kinds of evidence add 5 points. Use minConfidence (default 50) to hide weak matches.

Input

{
"urls": ["allbirds.com", "https://ghost.org", "techcrunch.com"],
"extraPagesPerDomain": 1,
"scanGtmContainers": true,
"minConfidence": 50
}
FieldDefaultWhat it does
urls (required)Domains, URLs or email addresses, one per line (commas and spaces also split). Duplicates and www / non-www twins are merged. Invalid lines (IP addresses, localhost, ftp://, words without a TLD) get a free invalid input row. startUrls ([{"url": ...}]) and domains are accepted too
extraPagesPerDomain1Also check up to 2 internal pages: shop / collection, pricing, blog or contact page, in that order
scanGtmContainerstrueRead the public GTM container (gtm.js, max 2 per domain) and report the tags and IDs inside
minConfidence50Hide detections below this score
respectRobotsTxttrueSkip pages that robots.txt disallows for CygnixTechDetector
maxConcurrency10Domains in parallel. Pages within one domain are fetched one at a time
requestTimeoutSecs20Per page

What a run costs

You pay only for domains that were actually analyzed (page loaded and at least one technology found). The first 3 in every run are free. No start fee, and the price does not change with extra pages or the GTM scan.

Analyzed domainsYou pay
3$0 (free in every run)
100$0.15
1,000$1.50
10,000$15.00
100,000$150.00

(Exact: (domains − 3) × $0.0015.) Never billed: unreachable domains, HTTP errors, bot-protection and challenge pages, robots.txt blocks, non-HTML and empty pages, parked / for-sale domains, placeholder pages (web server default page, directory listing, suspended hosting, "site not found", or "coming soon" with no CMS/shop/analytics), invalid input lines and duplicates. Set Maximum cost per run in the run options and the actor stops exactly at that amount (tested 20 Oct 2026: a $0.003 cap = 3 free + 2 billed, run 7sqMW6AkmFBJpUyEr). Domains it didn't get to are listed in SUMMARY.notProcessedDomains so you can re-run just those. It runs on 512 MB with plain HTTP (no browser, no proxy).

How it compares (live Apify Store prices, verified 20 Oct 2026)

List prices on the Apify Free plan, read from the Apify Store API on 20 October 2026 (30-day users from the same API). There are 150+ tech-stack actors in the Store; these are the ones with real usage plus the cheapest. Several charge less on higher Apify plans.

ActorPrice on the Free plan~Cost for 1,000 domainsMonthly usersNotes
cygnix_labs/website-tech-stack-detector (this)$0.0015 per analyzed domain, first 3 free, no start fee$1.50newGTM container scan, tracking IDs, evidence + confidence, parked / redirect / placeholder flags, failed domains free
builtwith/builtwith-official-technology-scraper$0.002 per result~$2 (if one result per domain)122Official BuiltWith data, the category leader
automation-lab/wappalyzer-technology-lookup$0.00024 per website + $0.005 start~$0.2534Cheapest paid option in bulk, Wappalyzer-style lookup
motivational_nickel/website-technology-detector$0.0015 per result + $0.002 start~$1.5019Same per-domain price, plus a start fee
bovi/builtwith-tech-stack-scraper$0.0015 per result + $0.0005 start~$1.508Same per-domain price, plus a start fee
automation-lab/tech-stack-detector$0.0023 per URL + $0.035 start~$2.3424"45+ technologies"
apivault_labs/tech-stack-lookup$0.005 per result + small start fee~$522Also returns emails and phones
scrapemint/website-tech-stack-detector$0.01 per technology row~$100+ (10+ rows per site)39One row per technology
rl1987/wappalyzer-tech-lookup$0.0012 per technology row~$12-2014One row per technology
cerridwen/techstack-detector$0.01 per result~$10127,500+ technologies, DNS / TLS, security score
misterkhan/website-tech-stack-scanner$0.10 per result~$100257,000+ technologies
nexgendata/wappalyzer-replacement$0.10 per tech detectiondepends on detections26Grouped JSON output
magicfingers/techstack-detector, shahidirfan/Website-Tech-Stack-Detectorfree$0 + your compute17 / 11Free, basic detection

Honest take. BuiltWith is the proven leader. It covers far more technologies and has historical data, so pick it if you need breadth or "who used X in 2022". Actors with 7,000+ fingerprints (cerridwen, misterkhan) will also name niche tools we don't. If all you need is the cheapest possible Wappalyzer-style lookup on a huge list, automation-lab's Wappalyzer lookup is cheaper per site. This actor is for evidence-backed checks of the tools that matter for prospecting and marketing audits (CMS, ecommerce, analytics, pixels, consent, chat, email, hosting) plus lead-list hygiene: it reads the GTM container, so it finds GA4, Google Ads, Meta, TikTok and LinkedIn tags that load only through Tag Manager; it returns the tracking IDs; and it tells you which domains are parked, dead, placeholders or redirect to another company, without charging for them. Against motivational_nickel and bovi (same $0.0015) you skip the start fee and get 3 free domains per run.

For AI agents / MCP

When an agent should call this actor: the user asks what a website is built with, which CMS / ecommerce platform / analytics / ad pixels / chat tool / hosting a site uses, wants a BuiltWith- or Wappalyzer-style lookup for a list of domains, wants to filter leads by technology ("which of these stores use Shopify and Klaviyo?"), or needs a site's GA4 / GTM / Meta Pixel IDs for an audit.

Connect the Apify MCP server with only this actor enabled (works in Claude, ChatGPT, Cursor, VS Code, Codex and any MCP client):

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

Or search with the default server: search-actors keywords such as tech stack detector, pixel checker, website technology lookup, builtwith alternative, wappalyzer alternative.

Example call-actor input:

{ "urls": ["allbirds.com", "skullcandy.com", "franklinbbq.com"], "extraPagesPerDomain": 1 }

What to read from the result: one dataset row per domain. The flat fields (cms, ecommerce, analytics, advertising, chat, marketing, cdnHosting ...) are comma-separated names, good for quick answers. technologies[] holds the full list with confidence and evidence, and trackingIds holds GA4 / GTM / Google Ads / Meta Pixel / TikTok IDs. Check status: only ok rows are billed. Drop rows where parkedOrForSale is true or redirectedToOtherSite is true when you clean a lead list.

Cost control for agents: 3 domains are free in every run, then $0.0015 per analyzed domain. Pass maxTotalChargeUsd in callOptions to hard-cap spend. This actor is pay-per-event, so it also works with Apify agentic payments.

Example prompt: "Which of these 200 ecommerce sites run Shopify with a Meta Pixel but no TikTok Pixel? Give me the list as CSV."

FAQ

Is this Wappalyzer or BuiltWith? No. It is an independent detector with its own fingerprint rules written by Cygnix Labs. It does not use Wappalyzer's or BuiltWith's data or APIs. "Alternative" means it does the same kind of job.

Why does it find pixels that other scanners miss? Many sites load GA4, Google Ads, Meta, TikTok, LinkedIn, Hotjar and Clarity only through Google Tag Manager. The tag code lives in the public container file (googletagmanager.com/gtm.js?id=GTM-...), not in the page. This actor reads that file too. These detections are marked GTM container GTM-XXXX: ... with confidence 85. A tag in the container is configured, but it may only fire on some pages or after consent.

Does it render JavaScript? No. It reads the HTML, headers and cookies the server sends, plus the GTM container. Tools injected later by other scripts (not by GTM) may be missed. This keeps it fast and cheap.

Why was a domain not billed? It was unreachable, returned an HTTP error, showed a bot-protection or challenge page (Cloudflare, AWS WAF, reCAPTCHA), was blocked by robots.txt, returned non-HTML or an empty page, was a parked / for-sale domain or a placeholder page, or only security headers were found. You also get 3 free domains in every run. For blocked sites the row still lists what the response headers revealed (for example Cloudflare), free of charge.

How are parked and for-sale domains detected? By the parking or marketplace code on the page (Sedo, Bodis, ParkingCrew, Above, Google's domain-parking ads script, GoDaddy and Namecheap parking, Dan / Afternic / HugeDomains), a redirect to a domain marketplace, or short pages that say "this domain may be for sale". Such rows get parkedOrForSale: true and are free. Placeholder pages (nginx / Apache default page, "Index of /", suspended hosting, "site not found", "coming soon") get placeholderPage; they're free unless a real CMS, shop or analytics tool is present (for example a Shopify store behind a "coming soon" page is still billed, because the stack is real).

What does redirectedToOtherSite mean? The domain you gave ends up on a different registrable domain (jet.com → walmart.com, mint.com → intuit.com). The tech stack shown is the destination's. Useful for spotting acquired or merged companies in old lead lists. finalDomain shows where it landed. Meta-refresh and location.href redirects on near-empty pages are followed once.

Can I paste email addresses? Yes. jane@acme.com is checked as acme.com. Duplicates (several people at the same company) are merged, so you pay once per domain.

Can I check a specific page instead of the homepage? Yes. Give the full URL (https://basecamp.com/pricing) and that page is analyzed first.

How accurate are versions? Versions come from meta generator tags, headers (e.g. x-powered-by: PHP/8.0.30) and versioned script URLs. Many sites hide them, so version is often null.

Is it legal? It reads public pages only, sends one request at a time per domain, identifies itself (CygnixTechDetector) and respects robots.txt by default.

Integrations

Run it through the Apify API, schedule it, or send results to Google Sheets, HubSpot, Clay, Make, Zapier, n8n or a webhook. Export as CSV or Excel. Pair it with Outreach Contact Finder to add emails and social profiles to the same domain list.

Changelog

  • 0.1.4 (2026-10-20): Reliability and billing fixes. Max cost per run is now enforced exactly under parallel processing (before, a $0.003 cap could charge one extra domain and analyze and drop several more); domains not reached are listed in SUMMARY.notProcessedDomains. Parked / for-sale domains and placeholder pages are now detected and never billed (new parkedOrForSale, placeholderPage). New finalDomain and redirectedToOtherSite. Meta-refresh / JS redirects on near-empty pages are followed (they used to be reported as empty pages). Email addresses are accepted as input. Invalid lines and unexpected errors now produce a free row instead of disappearing. http:// inputs fall back to https://, and error messages are readable (DNS: domain does not resolve, timeout, TLS/SSL certificate error). Rival prices re-verified 20 Oct 2026.
  • 0.1.3 (2026-10-19): First public release (the sample above comes from build 0.1.2, same code; 0.1.3 adds this README). 314 fingerprint rules in 25 categories, GTM container scan, tracking ID extraction, schema.org / Open Graph / hreflang checks, bot-challenge and robots.txt handling. $0.0015 per analyzed domain, first 3 free every run. Rival prices verified 19 Oct 2026.

More tools by Cygnix Labs

Questions or a feature request? Open an issue on this actor's Issues tab. We answer within 24 hours.