Tech Stack & Ad Pixel Detector: CMS, GTM Tags, DNS avatar

Tech Stack & Ad Pixel Detector: CMS, GTM Tags, DNS

Pricing

from $1.20 / 1,000 website analyzeds

Go to Apify Store
Tech Stack & Ad Pixel Detector: CMS, GTM Tags, DNS

Tech Stack & Ad Pixel Detector: CMS, GTM Tags, DNS

Detect any website's tech stack: CMS, ecommerce, analytics, ad pixels (Meta, Google Ads, TikTok, LinkedIn), tag managers, CDN, hosting, payments, chat, email & SaaS tools via DNS. Reads Google Tag Manager tags, extracts tracking IDs, flags changes since last run.

Pricing

from $1.20 / 1,000 website analyzeds

Rating

0.0

(0)

Developer

Fatih S.

Fatih S.

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

9 days ago

Last modified

Share

Tech Stack & Ad Pixel Detector

Give it a list of websites and get each one's live technology stack: CMS, ecommerce platform, analytics, ad pixels (Meta, Google Ads, TikTok, LinkedIn, X, Pinterest, Reddit, Microsoft/Bing, Criteo…), tag managers, CDN, hosting, frameworks, payments, live chat, email & marketing tools, A/B testing and consent tools. Each technology comes with its category, confidence, version (when visible) and evidence, which is the exact script, header, cookie, DNS record or GTM tag that matched.

Why this one

  • It sees inside Google Tag Manager. Most pixels today are loaded through GTM, so plain-HTML detectors miss them. This Actor downloads the site's public GTM container (the same file every visitor's browser loads) and lists the tags that are actually active, skipping paused ones. On our 30-site test that's how most ad pixels were found without a browser.
  • It extracts tracking IDs: GTM containers, GA4 measurement IDs, Google Ads conversion IDs, Meta Pixel IDs, TikTok, LinkedIn partner IDs, Pinterest, Snap, X, Microsoft UET, Reddit, Hotjar, Clarity, HubSpot portal, Klaviyo, Segment, Intercom, Shopify store handle, AdSense publisher.
  • DNS intelligence: email provider (MX), sending tools in SPF (SendGrid, Mailchimp, HubSpot, Salesforce…), DNS host, and SaaS tools that verified the domain in TXT records (Atlassian, DocuSign, Zoom, Slack, OpenAI, Anthropic and dozens more). These are strong B2B buying signals that don't appear in the HTML.
  • Change tracking: schedule it and get only what changed since the last run, for example "added TikTok Pixel" or "Klaviyo → removed".
  • Live checks. Every run fetches the site as it is today and shows the evidence for each detection.
  • Polite by design. It respects robots.txt (RFC 9309, user-agent token TechStackDetector), makes at most one request per second per site, and honors Crawl-delay.
  • Pay only for websites that were analyzed successfully. Blocked, unreachable and robots-disallowed sites are not billed.

Modes

ModeWhat it doesSpeedBest for
http (default)HTML, headers, cookies, script URLs, meta tags, DNS, GTM container and Shopify pixel configtypically 1–5 s per siteLarge lists, lead enrichment
autoHTTP first; opens a headless Chrome only when the site is JS-rendered, blocked, or shows no tracking in HTMLmixedBest balance
browserAlways renders in headless Chrome, records every network request, reads JS globals and cookiestypically 15–50 s per siteFull ad/analytics audits

The browser finds more ad and analytics tags because it sees everything that fires, including tags injected by other tags. HTTP mode already catches CMS, ecommerce, payments, CDN, hosting and DNS-based tools almost as well as the browser does. See Accuracy below.

Input

{
"websites": ["allbirds.com", "https://www.hubspot.com", "techcrunch.com"],
"mode": "http",
"outputFormat": "domain",
"monitorChanges": false,
"includeDns": true,
"inspectGtm": true,
"minConfidence": 50
}
FieldDefaultNotes
websitesrequiredDomains or URLs. The given page is analyzed (homepage for a bare domain). Duplicates are removed.
modehttphttp, auto or browser (see above)
outputFormatdomaindomain = one rich item per site; flat = one CSV-friendly row per site (comma-joined columns per category + id_* columns); rows = one row per site × technology
monitorChanges / onlyChangesoffRemember each site's stack in a named key-value store and report added, removed and versionChanges
stateStoreNametech-stack-detector-stateUse one name per watchlist
inspectGtmonRead tags configured in Google Tag Manager
includeDnsonMX / SPF / TXT / NS / reverse DNS
fingerprintSetscore, communitySee Fingerprint data
minConfidence50Hide weaker detections
includeEvidenceonWhat matched, per technology
maxConcurrency10Also capped by memory (CPU), and by browser slots in browser mode
perSiteTimeoutSecs30 (HTTP) / 60 (Auto, Browser)Per-step timeout. Timed-out sites are not billed
proxyConfigurationnoneOptional. Apify Proxy (residential) helps with sites behind bot protection.

Output (domain format, abridged)

{
"domain": "allbirds.com",
"status": "ok",
"modeUsed": "http",
"technologyCount": 31,
"ecommerce": ["Shopify"],
"analytics": ["Microsoft Clarity", "Meta Pixel", "TikTok Pixel", "Google Ads Conversion Tracking"],
"advertising": ["Meta Pixel", "Google Ads", "Microsoft Advertising", "Criteo", "Outbrain", "TikTok Pixel"],
"tagManagers": ["Google Tag Manager"],
"cdn": ["Cloudflare"],
"dnsProviders": ["MarkMonitor"],
"payments": ["Shop Pay", "Apple Pay", "PayPal"],
"email": ["Microsoft 365"],
"trackingIds": {
"gtm": ["GTM-TH8KRSBJ"], "googleAds": ["AW-786649265", "AW-736740096"],
"microsoftUet": ["5489498", "134398351"], "clarity": ["yrlg0i3snv"], "shopifyStore": ["weareallbirds.myshopify.com"]
},
"gtmContainers": [{ "id": "GTM-TH8KRSBJ", "inspected": true, "activeTags": 198, "pausedTags": 30 }],
"technologies": [
{ "name": "Microsoft Advertising", "categories": ["Advertising"], "confidence": 100, "version": null,
"evidence": ["GTM GTM-TH8KRSBJ custom HTML tag: …//bat.bing.com/bat.js…"] }
],
"dns": { "mx": ["allbirds-com.mail.protection.outlook.com"], "ns": ["ns2.markmonitor.com", "…"] },
"checkedAt": "2026-10-08T13:56:00.000Z"
}

status is one of ok, blocked (bot protection or 401/403/429), robots_disallowed, dns_not_found, timeout, fetch_failed, http_error, invalid_input. Only ok is billed. DNS-based results are still returned for blocked sites, at no charge.

With monitorChanges, items also carry changeStatus (first_check / changed / unchanged), added, removed and versionChanges.

A run summary (status counts, top technologies across the list) is saved as SUMMARY in the run's key-value store.

Pricing

Pay per event, no subscription. You are charged only for websites analyzed successfully (status: ok):

EventPrice per website
Website analyzed (HTTP)$0.002 ($2 per 1,000 sites). Lower on paid Apify plans: $0.0018 (Starter), $0.0015 (Scale), $0.0012 (Business)
Website analyzed with headless browser (browser mode, or auto when it opened the browser)$0.008. Lower on paid Apify plans: $0.007 (Starter), $0.006 (Scale), $0.005 (Business)

Blocked, unreachable, timed-out, robots-disallowed and invalid inputs are free. Change tracking is billed like a normal check, including websites hidden by Output only websites that changed. Set Max total charge on the run to cap spend; the Actor stops cleanly at the limit.

Accuracy and limits (please read)

  • Bot protection. About 15–20% of large consumer brands (e.g. sites behind DataDome, PerimeterX or Akamai Bot Manager) block automated requests from datacenter IPs. Those come back as blocked with DNS-only results, and you are not charged. A residential proxy helps in some cases.
  • HTTP vs browser. In our 30-site test, HTTP mode found 80–95% of what the browser found for CMS, ecommerce, payments, CDN and hosting, but only about 60% of the ad pixels and analytics tags, because many tags are injected at runtime. Use auto or browser for ad audits.
  • Precision. In our tests every platform identification we checked was correct (18/18), and a manual review of the evidence put overall precision at an estimated 97% or better. Most remaining errors come from long-tail community fingerprints.
  • DNS TXT verification records can be historical. A verification record shows the company used a tool at some point, not necessarily today. These have their own saasVerifiedInDns field.
  • Confidence below 100 means a weaker signal (e.g. a CSP header mention is capped at 25 and hidden by default).

Fingerprint data and license

  • The detection engine and the core fingerprint set (marketing tags, GTM tag types, DNS/SaaS signals, hosting, major platforms) are this Actor's own work.
  • The optional community set is the open-source webappanalyzer fingerprint database (a community continuation of Wappalyzer's open data). It is © its contributors and licensed under GPL-3.0. It is downloaded unmodified from its repository at build time and read as a separate data file. Our corrections are kept in our own override file. Thanks to everyone who maintains it.
  • This Actor is not affiliated with Wappalyzer, BuiltWith, Google or Meta. Product names are trademarks of their owners.

Use responsibly

The Actor only reads public pages and public DNS records, the same data any browser sees. It does not log in, bypass paywalls or collect personal data. You are responsible for how you use the results, including complying with applicable laws and the target sites' terms.