Call the Website Tech Stack Detector from Node.js with the official apify-client. This runs the hosted Actor and reads its dataset — client-side only.
npm install apify-clientimport { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const input = {
domains: ['techcrunch.com', 'shopify.com', 'webflow.com', 'stripe.com'],
concurrency: 15,
maxResults: 500,
};
// Start the Actor and wait for it to finish
const run = await client.actor('logiover/website-tech-stack-detector').call(input);
// Read the results (one row per domain)
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const site of items) {
console.log(`${site.domain}`);
console.log(` CMS: ${site.cms ?? '-'}`);
console.log(` Ecommerce: ${site.ecommerce ?? '-'}`);
console.log(` Server: ${site.server ?? '-'}`);
console.log(` Tech (${site.technologyCount}): ${site.technologies.join(', ')}`);
}Build a prospecting list — e.g. every Shopify store that also runs Klaviyo:
const run = await client.actor('logiover/website-tech-stack-detector').call({
domains: ['store-a.com', 'store-b.com', 'store-c.com'],
concurrency: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const shopifyPlusKlaviyo = items.filter(
(site) => site.ecommerce === 'Shopify' && site.technologies.includes('Klaviyo'),
);
console.log(`${shopifyPlusKlaviyo.length} Shopify + Klaviyo stores:`);
console.log(shopifyPlusKlaviyo.map((s) => s.domain));Surface accounts with no analytics detected — good candidates for a measurement pitch:
const noAnalytics = items.filter(
(site) => !site.byCategory?.Analytics || site.byCategory.Analytics.length === 0,
);const run = await client.actor('logiover/website-tech-stack-detector').call({
domains: ['magento.com'],
startUrls: [
{ url: 'https://bigcommerce.com' },
{ url: 'https://prestashop.com' },
],
concurrency: 10,
});domains and startUrls are merged before fingerprinting.
See also: cli.md · api-curl.md · python.md