Website Technology Checker by Domain | Launch 30% Off
Pricing
from $16.50 / 1,000 tech stacks
Website Technology Checker by Domain | Launch 30% Off
Run a website technology checker on your domain list. One row per domain with tech stack names, categories, and last_visited. Index lookup without fetching the site. No proxy, WHOIS, DNS, or SSL.
Pricing
from $16.50 / 1,000 tech stacks
Rating
0.0
(0)
Developer
Winning Solutions
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Website Technology Checker: Tech Stack Lookup
A lookup Actor that checks detected technologies for your domains at scale. Paste a domain list and the Actor turns each entry into a structured tech stack row automatically.
It returns structured JSON with domain, technology names, categories, contact fields, and lastVisited.
Designed for sales teams, marketers, and agencies, the Actor delivers categorized index data with an honest data timestamp. Crawl-index lookup. No site fetch. No proxy setup.
Launch price: 30% OFF until 8 November 2026
Now $16.50 / 1,000 domains. Regular rate is $24.00 / 1,000 from 8 November 2026.
Same events. Same fields. Lower rate until that date.
Index lookup without site fetch
No HTTP scan. No proxy field.
Enter domains and get each tech stack from a crawl index. The Actor does not load the target page. Each row shows technology names, categories, and lastVisited so you know the data age.
Use Cases
- Enrich domain lists with technology names and categories for outbound sales
- Check website tech stacks on prospect domains before outreach
- Detect CMS and frameworks on competitor sites from a domain list
- Replace manual one-by-one tech lookups with batch index results
- Filter lead lists by stack signals such as WordPress or Shopify
Index
- Release Notes
- Features
- Use Cases
- Pricing
- Input
- Input Example
- API and MCP usage
- Output Structure
- Output Example
Release Notes
v1.1 - Full index fields
- Contact fields: emails, phoneNumbers, and socialGraphUrls on every result row
- Grouped stack: technologyGroups, technologyCategories, and fixed category columns
v1.0 - Initial public release
- Domain list input: Look up up to 100 domains per run from one array field
- Index lookup: Tech stacks from crawl index with lastVisited on every result row
Features
š Website technology checker: One dataset row per domain with flat technology names, group rollups, and category columns.
š Domain list input: Paste domains or URLs. The Actor normalizes hosts and deduplicates exact matches.
š Honest data age: Every result row includes lastVisited from the crawl index, not a live scan time.
š·ļø Categorized stack: Technologies include group and category fields, group rollups, and fixed columns such as cms, ecommerce, and cdn.
ā ļø Diagnosis rows: Invalid domains and lookup failures become dataset rows with _metadata.error instead of silent drops.
š Free plan guard: Free plan accounts stop after 10 source calls per run and keep results already written.
š Companion fields: domainRank, country, language, title, description, emails, phone numbers, and social URLs when the index has them.
Pricing
Launch 30% OFF until 8 November 2026. $16.50 / 1,000 domains now. $24.00 / 1,000 from 8 November 2026.
Launch pricing (until 2026-11-08)
| Cost item | Rate |
|---|---|
| Tech stack (1 domain) | $16.50 / 1,000 domains |
| Actor start | $0.00005 (infrequent) |
| Apify platform compute (RAM/time) | Billed by Apify platform pricing |
Regular pricing (from 2026-11-08)
| Cost item | Rate |
|---|---|
| Tech stack (1 domain) | $24.00 / 1,000 domains |
| Actor start | $0.00005 (infrequent) |
| Apify platform compute (RAM/time) | Billed by Apify platform pricing |
Launch cost per domain: ~$0.0165 (30% OFF $0.024). One billed tech-stack row equals one domain lookup in the default run.
Diagnosis rows and invalid domains are not charged. Only delivered result rows with resultCharged true bill as tech-stack.
Free plan limit
Runs from Apify free plan accounts are limited to 10 source calls per run. The run finishes normally at that point and keeps every result already written.
Cost Examples
Based on launch rates in force until 2026-11-08.
Scenario A: 1 domain
- Actor start: $0.00005
- 1 domain: $0.0165
- Total: ~$0.01655
Scenario B: 10 domains
- Actor start: $0.00005
- 10 domains: $0.165
- Total: ~$0.16505
Scenario C: 100 domains
- Actor start: $0.00005
- 100 domains: $1.65
- Total: ~$1.65005
Input
The Actor accepts the following input parameters (see the Input tab in the Apify Console for the full, interactive schema):
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
domains | array of string | yes | none | Domains to look up. One array entry is one domain or URL. The actor uses the host. It does not fetch the page. Empty values after trim are dropped. Exact duplicate hosts run once. www stays part of the host. Max 100 domains per run. More than 100 is rejected. Free plan accounts stop after 10 source calls. |
Input Example
{"domains": ["winning-solutions.de"]}
API and MCP usage
Runs write one dataset row per domain. Fetch rows from the default dataset after the run succeeds (or use the synchronous endpoint below).
REST (sync, returns dataset items): replace YOUR_USERNAME, YOUR_API_TOKEN, and use the same JSON body as in Input Example.
curl "https://api.apify.com/v2/acts/YOUR_USERNAME~website-technology-stack-lookup/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-X POST \-H "Content-Type: application/json" \-d '{"domains":["winning-solutions.de"]}'
JavaScript (apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const input = {domains: ['winning-solutions.de'],};const run = await client.actor('YOUR_USERNAME~website-technology-stack-lookup').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Apify MCP server (AI agents): configure your MCP client with URL https://mcp.apify.com?tools=YOUR_USERNAME~website-technology-stack-lookup (you can combine multiple tools per Apify MCP docs). Pass the API token via your client (for example an Authorization: Bearer ... header), not inside the Actor input JSON.
Output Structure
The Actor returns structured data for each domain. The table below lists the main fields. Optional dataset views in the Apify Console may show a subset.
| Field | Type | Description | Example Value |
|---|---|---|---|
inputDomain | string | Normalized host sent to the lookup | winning-solutions.de |
domain | string | Domain value from the index | www.winning-solutions.de |
title | string | null | Page title when present | Winning Solutions |
description | string | null | Meta description when present | Agency site |
metaKeywords | array | null | Meta keywords when present | null |
domainRank | number | null | Domain rank when present | 455 |
lastVisited | string | null | Crawl index timestamp for this domain | 2022-10-10 12:57:46 +00:00 |
countryIsoCode | string | null | Country ISO code when present | DE |
languageCode | string | null | Language code when present | de |
contentLanguageCode | string | null | Content language when present | de |
emails | array of string | Emails from the index. Empty array when none | ["info@example.com"] |
phoneNumbers | array of string | Phone numbers from the index. Empty array when none | ["+49-261-13490322"] |
socialGraphUrls | array of string | Social URLs from the index. Empty array when none | ["https://twitter.com/example"] |
technologies | array of object | Flat list with group, category, and name | [{"group":"web_development","category":"programming_languages","name":"PHP"}] |
technologyNames | array of string | Unique technology names in first-seen order | ["PHP","WordPress"] |
technologyCount | number | Count of unique technology names | 2 |
technologyGroups | array of object | Unique names rolled up by group | [{"group":"web_development","names":["PHP"],"count":1}] |
technologyCategories | array of object | Unique names rolled up by group and category | [{"group":"content","category":"cms","names":["WordPress"],"count":1}] |
cms | array of string | CMS names. Empty array when none | ["WordPress"] |
analytics | array of string | Analytics tools. Empty array when none | [] |
advertising | array of string | Advertising tools. Empty array when none | [] |
ecommerce | array of string | Ecommerce platforms. Empty array when none | [] |
paymentProcessors | array of string | Payment processors. Empty array when none | [] |
javascriptLibraries | array of string | JavaScript libraries. Empty array when none | ["jQuery"] |
programmingLanguages | array of string | Programming languages. Empty array when none | ["PHP"] |
webServers | array of string | Web servers. Empty array when none | [] |
cdn | array of string | CDN names. Empty array when none | ["Cloudflare"] |
databases | array of string | Databases. Empty array when none | ["MySQL"] |
paas | array of string | PaaS names. Empty array when none | [] |
marketingAutomation | array of string | Marketing automation tools. Empty array when none | [] |
wordpressPlugins | array of string | WordPress plugins. Empty array when none | [] |
shopifyApps | array of string | Shopify apps. Empty array when none | [] |
security | array of string | Security tools. Empty array when none | [] |
_metadata.resultCharged | boolean | Whether this row was charged | true |
_metadata.error | string | null | Present on failure / empty diagnostic rows | (varies) |
_metadata.errorContext | string | null | Extra error context when error is set | (varies) |
Output Example
{"inputDomain": "winning-solutions.de","domain": "www.winning-solutions.de","title": "Winning Solutions","description": "Agency site","metaKeywords": null,"domainRank": 455,"lastVisited": "2022-10-10 12:57:46 +00:00","countryIsoCode": "DE","languageCode": "de","contentLanguageCode": "de","emails": ["info@example.com"],"phoneNumbers": ["+49-261-13490322"],"socialGraphUrls": ["https://twitter.com/example"],"technologies": [{"group": "web_development","category": "programming_languages","name": "PHP"},{"group": "content","category": "cms","name": "WordPress"}],"technologyNames": ["PHP", "WordPress"],"technologyCount": 2,"technologyGroups": [{ "group": "web_development", "names": ["PHP"], "count": 1 },{ "group": "content", "names": ["WordPress"], "count": 1 }],"technologyCategories": [{ "group": "web_development", "category": "programming_languages", "names": ["PHP"], "count": 1 },{ "group": "content", "category": "cms", "names": ["WordPress"], "count": 1 }],"cms": ["WordPress"],"analytics": [],"advertising": [],"ecommerce": [],"paymentProcessors": [],"javascriptLibraries": [],"programmingLanguages": ["PHP"],"webServers": [],"cdn": [],"databases": [],"paas": [],"marketingAutomation": [],"wordpressPlugins": [],"shopifyApps": [],"security": [],"_metadata": {"resultCharged": true,"error": null,"errorContext": null}}