Tech Stack Change Detector avatar

Tech Stack Change Detector

Pricing

from $8.50 / 1,000 domains

Go to Apify Store
Tech Stack Change Detector

Tech Stack Change Detector

Detect a website's current technologies (CMS, ecommerce, analytics, marketing/CRM, framework, hosting/CDN, chat, payments) and diff it against a previously-seen stack you supply, so you get exactly what was added or removed. No browser, no proxies, no login.

Pricing

from $8.50 / 1,000 domains

Rating

0.0

(0)

Developer

Tim Zinin

Tim Zinin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Share

Tech-Stack Change Detector — Diff a Site's Stack

Know when a prospect or competitor swaps a tool — Shopify replacing WooCommerce, HubSpot dropping in, a migration to Next.js — without paying for a technographic monitoring seat. Give this Actor a domain and, optionally, the stack you saw last time, and it returns what's live right now plus what was added and removed versus what you supplied.

What you get

  • A real diff, not just a snapshot. Supply domain|Tech1,Tech2 and get back exactly what changed since you last looked — added and removed, not just a technology list to compare by eye.
  • Stateless by design. No stored history to trust or pay for — you own the "previous" side of the diff, this Actor just reads the current stack fresh every run.
  • CMS, ecommerce, analytics, marketing/CRM, chat, JS framework, payments and hosting/CDN signatures — the same detection engine as tech-stack-detector.
  • A stackHash — a stable, sorted fingerprint you can store and feed back in as the previousStack next time.
  • No browser, no proxies, no login — reads public HTML and HTTP headers only.
  • Runs on Apify: schedule it, monitor it, call it from the API or the MCP server, export to JSON, CSV or Excel, or push results straight into your own pipeline.

How to run it

  1. Click Try for free — no card needed on the free plan.
  2. Paste domains into Domains, one per line — bare (example.com) to just read the current stack, or with a previous stack after a pipe (example.com|Tech1,Tech2) to get a diff.
  3. Hit Start and pull the results from the dataset (UI, API or webhook).

Pricing

Pay-per-event: $0.005 per run start + $0.01 per domain checked. No monthly seat. 100 domains cost about $1.01; 1,000 domains about $10.01.

A domain that could not be fetched (timeout, blocked, HTTP error) is still returned with found: false and the reason — and it is not charged. You pay for domains actually analyzed.

Input

Each item is a domain, optionally followed by | and a comma-separated list of technologies you last saw for that domain:

FieldRequiredWhat it does
itemsyes"example.com" to just read the current stack, or "example.com|Tech1,Tech2" to diff against a previous stack. Up to 100 per run.
maxConcurrencynoHow many domains to check in parallel (1–50, default 10).
{
"items": ["gymshark.com", "gymshark.com|WordPress"]
}

Output

One row per domain. This is a real row from a real run, for the diff-form input gymshark.com|WordPress — the domain redirects to its checkout subdomain, which no longer runs the WordPress it once did:

{
"input": "gymshark.com|WordPress",
"domain": "us.checkout.gymshark.com",
"found": true,
"httpStatus": 200,
"technologies": ["Shopify", "Zendesk", "Cloudflare"],
"stackHash": "Cloudflare|Shopify|Zendesk",
"previousStack": ["WordPress"],
"added": ["Shopify", "Zendesk", "Cloudflare"],
"removed": ["WordPress"],
"checkedAt": "2026-07-26T13:23:09.900Z"
}
FieldWhat it means
domainThe resolved hostname actually checked (redirects are followed)
technologiesEvery technology detected right now
stackHashSorted, pipe-joined technology list — a stable fingerprint you can store and pass back in as previousStack next time
previousStackEcho of what you supplied after the | (empty array if you didn't supply one — a bare "example.com" input returns added: [] and removed: [])
addedTechnologies present now but not in previousStack
removedTechnologies in previousStack but not detected now
foundWhether the fetch succeeded

How to track real change over time

This Actor doesn't keep a database of past runs. To monitor drift, you keep the last stackHash/technologies for each domain (a small key-value store, a spreadsheet column, whatever fits your pipeline) and feed it back in as the |previousStack on the next run. That keeps the Actor cheap and lets you own the history.

Related tools for adjacent workflows in B2B lead generation and data enrichment.

ActorWhat it does
Website Tech Stack DetectorPair it in the B2B lead generation and data enrichment workflow: Detect the technologies a website runs — CMS, ecommerce platform, analytics, marketing/CRM, JS framework,...
Company Profile LookupPair it in the B2B lead generation and data enrichment workflow: Turn a domain or company name into one unified company card: website tech stack (CMS, ecommerce, key tech)...
Company Hiring RadarPair it in the B2B lead generation and data enrichment workflow: Pull every open role a company is hiring for from its public job board (Greenhouse, Lever, Ashby) and turn...
B2B Lead EnricherPair it in the B2B lead generation and data enrichment workflow: Turn a list of company websites into sales-qualified lead cards: detected tech stack, a rough revenue...
Company Registry EnricherPair it in the B2B lead generation and data enrichment workflow: Turn a company name, LEI or UK company number into an official registry card: legal name, status,...

FAQ / Limitations

Does it store history between runs? No. Supply the previous stack yourself via domain|Tech1,Tech2 to get a real diff; omit it to just read the current stack.

Does it render JavaScript? No — it reads served HTML and headers, same as tech-stack-detector. Technologies injected only after heavy client-side rendering may not appear.

Is this legal? Yes — it reads publicly served HTML and standard HTTP headers, the same data any browser receives.

Can I call it from an AI agent? Yes — it's a standard Apify Actor, callable via the Apify API or the Apify MCP server.

What this is NOT. It does not crawl a whole site or discover pages — it checks the one URL you give it (after redirects) and does not detect a technology change that happened and reverted between two of your runs.

Found a wrong result, or need a check we don't run? Open an issue on this Actor's page.


Built by zinin. Questions? Telegram @timzinin.