Website Technology Stack Detector
Pricing
from $0.02 / 1,000 item extracteds
Website Technology Stack Detector
Detect CMS, ecommerce, analytics, frameworks, marketing, hosting, and other technologies from public website signals.
Pricing
from $0.02 / 1,000 item extracteds
Rating
0.0
(0)
Developer
Fetch Cat
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
Detect visible website technologies from public domains or URLs and export one row per detected technology, including its category, confidence and supporting signal. This independent website technology stack detector scans the returned page without running JavaScript. It does not query BuiltWith or provide historical technology records.
Quick start
- Add public domains or HTTP(S) URLs under Domains or URLs.
- Start with a small Maximum domains value and optionally choose categories.
- Run the Actor, then export the dataset as JSON, CSV or Excel.
{"domains": ["wordpress.org", "shopify.com", "vercel.com"],"maxDomains": 3,"includeCategories": ["CMS", "Ecommerce", "Hosting"]}
Only signals visible in the returned page can be detected. Login-only, consent-dependent and dynamically loaded technologies may be missing.
Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.
Ready-to-run examples
Choose a public example to see its settings before starting a run:
- Compare Website Frameworks, CMS, and Hosting
- Audit a SaaS Marketing Technology Stack
- Detect Ecommerce Platforms and Payment Tools
What you get
More than 60 curated signatures cover CMS, ecommerce, analytics, advertising, marketing, support, payments, frameworks, hosting, CDN, web servers and consent tools. Use the results to enrich lead lists, compare competitors, research migrations or review a website's visible marketing tools.
Each technology has a deterministic confidence score and a concise evidence label. Version values appear only when the matched signal exposes a version. Results follow input-target order, with technology names sorted within each target.
Who is it for?
Use this scraper when you need the data described above for research, reporting or an automated workflow. Work with the results in a spreadsheet, your own app or an AI assistant.
Input settings
| Setting | API field | Purpose |
|---|---|---|
| Domains or URLs | domains | Required list of public domains or HTTP(S) URLs. |
| Maximum domains | maxDomains | Target cap. Form default 3. Set explicitly in API calls. |
| Include only categories | includeCategories | Optional category filter. Empty means all supported categories. |
| Maximum processing time | maxRunSeconds | Budget of 45–300 seconds. Default 300. |
| Resume unfinished work | resumeFromCheckpoint | Default true. Requires reuse of the same default key-value store. |
| Proxy configuration | proxyConfiguration | Optional existing proxy settings. Direct by default. See field help for supported choices. |
Example inputs
Use the Quick start input as a small first run. Adjust the fields described above for your own data.
Output data
The following abbreviated example shows the shape of a technology row. Values are illustrative, not a new live scan:
{"domain": "wordpress.org","normalizedDomain": "wordpress.org","technologyName": "WordPress","category": "CMS","confidence": 99,"version": null,"evidenceType": "meta","evidenceDetail": "WordPress generator"}
| Fields | Meaning |
|---|---|
domain, normalizedDomain | Original input and normalized hostname. |
sourceUrl, finalUrl | Requested and final URL. Final URL may be absent on request errors. |
statusCode, redirectCount | Response context when available. |
technologyName, category, subcategory | Detected product and classification. |
confidence, version | Rule strength, not statistical probability. Exposed version or null. |
evidenceType, evidenceDetail, sourceSection | Concise labels describing the matched signal. |
pageTitle, description, vendorUrl | Page title, technology description and vendor website. |
firstDetected, lastDetected | Always null: no historical database is consulted. |
scrapedAt | Detection timestamp. |
error | Reason on no-match or request-error status rows. |
A reachable page with no matching signature produces a status row with technologyName: null. Isolated request failures also produce status rows. If every target fails before analysis, the run fails. Completed records from other targets remain available. The optional RUN_SUMMARY key-value record reports progress and counts. PENDING_WORK holds resumable progress.
Download your results
Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.
See Apify's download and export guide for the available formats and field options.
Pricing
The Actor uses pay-per-event pricing: start is charged once when a new workflow begins, and item is charged for each saved detected-technology row.
No-match and request-error status rows have no item charge.
Current rates are on the Pricing tab.
Start with a small maxDomains: one domain can produce several technology rows.
A checkpoint continuation using the same storage can avoid repeating completed work. An ordinary new run does not automatically share that storage.
Only public websites are supported.
Credentials in target URLs, custom ports, IP literals, local names and private/reserved network destinations are rejected.
A target URL can include a path. The Actor inspects that page rather than exploring the whole website.
Access blocks can prevent analysis, and a missing technology is not proof that a website does not use it.
Tips for best results
- Start with the Quick start input. Check a small result set before collecting a larger batch.
- Review the saved fields. Make sure the results contain what your workflow needs before exporting them.
Limits and caveats
Available records and fields depend on your input and the source. Review the returned data before using it in another system. A successful run does not guarantee that every requested record or optional field was available.
Automation and integrations
Save your settings for next time
Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.
Run on a schedule
Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.
Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow.
Send results to your other tools
Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.
For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.
API usage
Want to collect this data from your own app or automation? The examples below send input to the scraper and show how to collect its results.
The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.
For setup instructions, see Apify's JavaScript client guide, Python client guide and Actor runs API reference.
cURL
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~builtwith-domain-tech-stack-scraper/runs' \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \--data @- <<'JSON'{"domains": ["wordpress.org","shopify.com","vercel.com"],"maxDomains": 3,"includeCategories": ["CMS","Ecommerce","Hosting"]}JSON
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/builtwith-domain-tech-stack-scraper').call({"domains": ["wordpress.org","shopify.com","vercel.com"],"maxDomains": 3,"includeCategories": ["CMS","Ecommerce","Hosting"]});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('fetch_cat/builtwith-domain-tech-stack-scraper').call(run_input={'domains': ['wordpress.org', 'shopify.com', 'vercel.com'], 'maxDomains': 3, 'includeCategories': ['CMS', 'Ecommerce', 'Hosting']})print(client.dataset(run['defaultDatasetId']).list_items().items)
MCP and AI agents
You can ask your AI assistant to collect data with Website Technology Stack Detector and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.
Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.
Easier setup with an Apify plugin
If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.
Use Apify AI in Console
Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's Website Technology Stack Detector. You can describe the data you want and ask questions about the results.
Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.
Choose your assistant
- Claude and Claude Code (Anthropic): Apify setup guide.
- ChatGPT and Codex (OpenAI): Apify setup guides.
- Grok Bot (xAI): Apify plugin guide.
- Gemini CLI (Google): MCP server setup guide. Use the server URL below with the HTTP configuration supported by Gemini CLI.
Connect just this scraper
To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=fetch_cat/builtwith-domain-tech-stack-scraper"}}}
Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.
Use Apify's general server
Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use Website Technology Stack Detector by Fetch Cat, or give it the identifier fetch_cat/builtwith-domain-tech-stack-scraper.
Your assistant can check the available settings and retrieve the results from the returned run. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.
Example requests
Give your assistant the inputs it needs along with a request like one of these:
- “Use Fetch Cat’s Website Technology Stack Detector to collect the data for these inputs. Show me the available results and keep their source links when provided.”
- “Collect a small sample with Fetch Cat’s Website Technology Stack Detector so I can review the returned fields before a larger batch.”
- “Use Fetch Cat’s Website Technology Stack Detector to retrieve the records for my research. Organize the results into a table and flag anything that could not be collected.”
Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.
Pay with x402
If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.
Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection.
Some MCP setups also support paying for each request directly. That is a different payment option, so check the official guide for its availability.
Follow the official guide for wallet setup, supported payment options and current terms. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration.
Other ways for agents to pay
Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.
FAQ
Is this a BuiltWith API alternative?
It supports public website technology checks, but it is independent of BuiltWith and does not return BuiltWith's historical profiles, traffic estimates, contacts or technology-adoption database.
Can I export website tech stacks?
Yes. Download the dataset from Apify as CSV, Excel or JSON, or read it through the API. Each technology is a separate row, not one combined company profile.
Why did I get “No technologies detected”?
None of the enabled signatures matched the returned page. A category filter can also remove detections. The site may use server-side or dynamically loaded tools that are not visible to this scan.
Why did I get a request-error row?
The page could not be analyzed, for example because of an access block, network failure or unsupported response. A proxy cannot reveal content hidden behind login or client interaction.
Why are versions and historical dates empty?
Versions require an exposed signal. firstDetected and lastDetected are compatibility fields and always null.
Related Actors
- WHOIS & RDAP Domain Lookup — add domain registration and status data.
- Email MX Deliverability Verifier — inspect public mail infrastructure.
- Google Maps Lead Finder — find public business leads before technology enrichment.
- Website Content Crawler Lite — collect public website content alongside stack research.
- Website Contact Finder — find public contact details for researched websites.
Support and feedback
For custom additions or integrations, email hello@fetchcat.dev.
Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.
Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.
Tried this scraper? We'd love to hear how it worked for you. Leave a review to help others choose the right tool and help us improve it. Your feedback means a lot to us.
Made with care for curious people, AI agents and the possibilities in data. ♥