Tech Stack Lookup: BuiltWith & Wappalyzer Alternative avatar

Tech Stack Lookup: BuiltWith & Wappalyzer Alternative

Pricing

from $3.60 / 1,000 websites

Go to Apify Store
Tech Stack Lookup: BuiltWith & Wappalyzer Alternative

Tech Stack Lookup: BuiltWith & Wappalyzer Alternative

Check the technology stack behind online shops, SaaS sites and company websites. Find CMS, ecommerce, analytics, ads, payments, chat and frameworks, with versions and public contact links. About $0.0045 per website: 100 cost $0.45. Optional detailed checks: $0.02 each. No login.

Pricing

from $3.60 / 1,000 websites

Rating

0.0

(0)

Developer

fortbrand

fortbrand

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Security

Limited permissions

Share

For agencies, SaaS teams and researchers checking the technology behind a list of websites. Inspect current public pages for CMS, ecommerce, analytics, advertising, payments, chat, frameworks and infrastructure.

About $0.0045 per website: checking 100 websites costs $0.45, plus the small Apify start charge. Only websites with a supported detection are charged. Duplicate websites, blocked pages and checks with no detections have no Website charge. Optional detailed checks total $0.02 when at least two pages succeed. No website login or separate data-service key is needed.

What you get

Each useful website produces one row. The first field explains how many technologies were directly observed and how many dependencies were inferred. Detailed objects preserve categories, an exposed version when available, and the specific response signal behind the result. Public contact, support and about page links are included when found.

FieldWhat it means
verdictReadable result, with direct and inferred detection counts
domainRequested hostname, normalized without a leading www
url, finalUrlInput page and the final public page after redirects
title, description, languageMetadata from the fetched page, or null when absent
status, statusCodeCoverage status and successful first-page HTTP code
technologyNamesFlat list for spreadsheets and CRM tags
technologiesNamed technologies, categories, version, confidence and evidence
technologyGroupsCMS, ecommerce, analytics, ads, payments, chat, frameworks and infrastructure groups
directDetectionsCount supported by an observed public response signal
technologyCountTotal returned technology count, including enabled inference
contactLinksSame-site contact, support and about page links, with their source page
pageCount, pagesPages successfully inspected, sizes, status codes and redirect paths
failedPagesOptional deeper pages that could not be inspected
coverageDetection scope and the bundled fingerprint snapshot used
scrapedAtUTC observation time for this website check
recordTypeWEBSITE for a charged result, NOTE for an uncharged explanation
requestStatsCumulative request counters at this observation, preserved with the row

The SUMMARY key-value record reports requested websites, results, free notes, duplicates, unprocessed domains, request attempts and the spending-limit outcome. It includes no website charges for failures. Use it alongside the dataset when a workflow needs to distinguish a successful check from an unavailable source.

Why evidence matters

A website mentioning “Shopify” in a blog article does not prove it runs on Shopify. This Actor evaluates structured fingerprints in response headers, generator metadata, script URLs, inline scripts and HTML markup. Ordinary product names in prose are insufficient. Where a site provides a specific software version, that version travels with the matched signal; missing versions remain null.

WordPress can imply PHP and MySQL without exposing the actual backend. Dependencies have inferred: true, null confidence, and evidence naming their parent technology. Set includeInferred to false to omit them from the detailed list and category groups.

Direct-match confidence is a fingerprint-rule score, not a calibrated probability. Scores do not verify deployment across every page.

Three steps to use it

  1. Enter website domains, such as wordpress.org, ghost.org, nextjs.org, or a shop you want to research. Full public URLs also work.
  2. Choose the maximum number of websites. Keep the standard one-page check, or enable includeDetails for up to three pages at $0.02 total.
  3. Start the Actor, review the Overview and Technology evidence views, then export JSON, CSV or Excel through Apify.

The prefilled example checks three websites. A live cloud feasibility run on 29 October 2026 delivered all three in 11.675 seconds. That is a measured example, not a speed guarantee for arbitrary websites. Sites that redirect several times, throttle requests or refuse access can take longer and receive a free note.

Inputs

InputDefaultDetails
domainsThree example websites when no URL field is suppliedArray of domains or full HTTP/HTTPS URLs
startUrlsEmptyOptional public page links, including Apify request-list objects
maxItems100Maximum unique websites to process, from 1 to 10,000
includeDetailsfalseUp to 3 public pages; $0.02 total when at least two succeed
includeContactLinkstrueReturn public same-site contact, support and about page URLs
includeInferredtrueInclude explicitly labelled implied dependencies
proxyConfigurationApify datacenter proxyDisable proxy or supply a supported proxy configuration when appropriate

The API also accepts urls. Lists are combined and deduplicated before maxItems. Empty lists check no websites. Invalid inputs produce free notes; corrected optional settings are explained in SUMMARY.

Quick technology check

{
"domains": ["wordpress.org", "ghost.org", "nextjs.org"],
"maxItems": 3,
"includeInferred": true
}

More page evidence

{
"domains": ["wordpress.org"],
"maxItems": 1,
"includeDetails": true,
"includeContactLinks": true,
"includeInferred": false
}

Query strings and fragments are removed. www.example.com and example.com share one result; shop.example.com remains separate. Put your preferred starting page first.

Example from a real cloud run

The following excerpt is from the public Ghost homepage check on 29 October 2026. A software brand's marketing site can run on a different platform from the product it sells. Here the page exposed Hugo in its generator metadata.

{
"recordType": "WEBSITE",
"domain": "ghost.org",
"status": "complete",
"technologyNames": ["Alpine.js", "FirstPromoter", "HSTS", "Hugo", "Netlify"],
"pageCount": 1,
"technology": {
"name": "Hugo",
"version": "0.119.0",
"inferred": false,
"evidence": [
{
"source": "meta",
"metaName": "generator",
"matched": "Hugo 0.119.0",
"pageUrl": "https://ghost.org/"
}
]
}
}

This excerpt shows one entry from the full technologies array. A live signed-out browser inspection confirmed the generator and FirstPromoter script. Missing fields remain unknown.

Pricing and spending limits

Website costs $0.0045 normally, $0.004275 on Bronze, $0.00405 on Silver and $0.00360 on Gold and higher tiers. Versions and contact-page links are included. Optional Detailed website adds $0.0155 only when includeDetails is enabled and at least two pages succeed, making the standard total $0.02 ($2 for 100). Detailed totals are $0.019 on Bronze, $0.018 on Silver and $0.016 on Gold. One-page results have no detailed fee. The Apify start charge is $0.00005 per GB, minimum one unit.

Delivered websitesStandard Website chargesBronze Website charges
3$0.0135$0.012825
100$0.45$0.4275
1,000$4.50$4.275

The start charge is additional. Platform usage is included in the Actor's pay-per-event arrangement. Check the current Apify Pricing tab for your tier before a large job. No separate credits are purchased from a technology lookup vendor.

Set maxItems to control volume and Apify's maximum charge to control spend. The Actor reserves room for all requested fees before checking a website. A result is saved before its charge is submitted. If the limit leaves no room for the requested check, processing stops cleanly and SUMMARY.unprocessedSites shows what remains. Notes and duplicate inputs do not consume Website charges.

Monitor website stacks regularly

Save a domain list as an Apify Task, review the first dataset, then attach a schedule in Apify Console. Each new run fetches current public responses. Choose a frequency suited to your project.

Join snapshots by domain, preserving observation time, final URL and evidence. Keep starting pages and depth consistent. A missing signal can reflect consent or incomplete responses; failed checks do not establish removals. The Actor does not maintain a cross-run change baseline.

Use cases

Agencies can qualify supplied prospects by CMS. SaaS teams can check integration scripts, and researchers can compare adoption within a defined sample.

Preserve before/after evidence for migrations. This Actor does not reverse-find technology users, estimate company revenue, produce personal contact lists or establish buying intent.

API examples

Start an asynchronous run with an Apify token in your HTTP authorization header. Keep that credential in your automation's secret settings.

curl -X POST \
'https://api.apify.com/v2/acts/vant47~tech-stack-lookup/runs' \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"domains":["wordpress.org","ghost.org"],"maxItems":2}'

Poll the returned run ID, then read its default dataset. Re-reading saved results does not start another check.

import os
import requests
headers = {"Authorization": "Bearer " + os.environ["APIFY_TOKEN"]}
run = requests.post(
"https://api.apify.com/v2/acts/vant47~tech-stack-lookup/runs?waitForFinish=60",
headers=headers,
json={"domains": ["ghost.org"], "maxItems": 1},
timeout=90,
).json()["data"]
if run["status"] == "SUCCEEDED":
rows = requests.get(
"https://api.apify.com/v2/datasets/" + run["defaultDatasetId"] + "/items",
headers=headers,
timeout=30,
).json()
websites = [row for row in rows if row.get("recordType") == "WEBSITE"]

Make, Zapier and n8n can map technology and contact-link fields into downstream records. Poll long runs asynchronously and review free notes.

Use with AI agents (MCP)

Connect your MCP-compatible agent to Apify's MCP server at https://mcp.apify.com and expose vant47/tech-stack-lookup. Ask it to check a supplied domain list, keep the run small, and return the technology evidence. For example: “Check wordpress.org and ghost.org. Show the observed CMS, exposed version and public contact-page links. Omit inferred dependencies.”

Agents should supply domains, inspect SUMMARY, retain recordType=WEBSITE, and explain free notes. Neither commercial technology lookup product is queried.

Coverage and reliability

The detector bundles more than 5,800 technology definitions from the MIT-licensed ProjectDiscovery fingerprint collection. It evaluates supported passive signals with native RE2 regular expressions. Eight incompatible upstream patterns are excluded and disclosed in the coverage metadata. Runtime JavaScript properties, DOM-only rules and additional downloaded script contents are not evaluated.

Two websites can overlap; requests per hostname remain serial and 1.5 seconds apart. Retries use fresh sessions. Retry-After triggers a wait or a free note when a longer delay is required. Challenges are not accepted as results.

Saved results and acknowledged billing counts survive a restart. Delivery is serial, website identities are stable within a run, and an ambiguous saved-row/charge state stops further charging. This prevents duplicate output or a second Website charge when a run resumes after a platform reboot.

Contact links are page URLs. Extra pages stay on the starting origin. Local addresses, credentials and custom ports are rejected. No login or CAPTCHA solving is attempted.

FAQ

Is this affiliated with BuiltWith or Wappalyzer?

No. This independent detector uses a bundled open fingerprint snapshot with license attribution.

Why is a technology missing?

It may load after browser execution, consent, interaction or login, or exist only on an unvisited page. It may also lack a supported public fingerprint. Missing evidence is not proof of absence. Try a more relevant public starting page or additional page depth.

Are versions and backend technologies guaranteed?

No. Versions are extracted only when a matching response exposes them. Dependencies are explicitly inferred, not server measurements. A reverse proxy can reveal its own server signature while hiding the application behind it.

Do blocked sites cost a Website charge?

No. They receive a free NOTE with the reason, and appear in the summary. The platform start charge still applies. A readable page with no supported detections is also free.

Can I use it without proxy?

Yes. Set proxyConfiguration to {"useApifyProxy":false}. Datacenter proxy is the default. Residential proxy is not silently selected; use an appropriate configuration only when your target list needs it.

Can it find companies by technology or provide traffic estimates?

No. Supply the websites you want checked. This Actor does not provide a reverse lead index, company financial estimates or website traffic statistics.

Where can I inspect evidence or get help?

Use the Technology evidence dataset view and the SUMMARY record. Report problems in Apify Issues with a public domain, run ID and expected signal.

Fingerprint attribution

Passive fingerprint and category data are adapted from ProjectDiscovery's wappalyzergo collection under the MIT License. The bundled notice preserves the license and source snapshot information. Fetching, detection orchestration, evidence output and billing code are independently implemented. Website access conditions vary by target; the fingerprint license does not grant permission to crawl every website.