Website Sales Signals — Tech Stack, Contacts, SEO & Gaps avatar

Website Sales Signals — Tech Stack, Contacts, SEO & Gaps

Pricing

from $10.00 / 1,000 analyzed websites

Go to Apify Store
Website Sales Signals — Tech Stack, Contacts, SEO & Gaps

Website Sales Signals — Tech Stack, Contacts, SEO & Gaps

For each website: tech stack (1,178 rules), role emails and phones, company identity, hosting, SEO and mail checks, and missing tools with evidence, lead score and sales hooks.

Pricing

from $10.00 / 1,000 analyzed websites

Rating

0.0

(0)

Developer

Attila Kis

Attila Kis

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Website Sales Signals

Give the Actor a list of websites. For each website it returns what the site uses, how to contact the company, and what the site does not have. The result is made for sales prospecting: each missing item is a possible reason to contact the company.

All detection is rule-based. No LLM, no browser, no proxy, no owned database. The output is company data; see Personal data for the limits.

Output detail

compact (default) is made for lists and CRM import: summary, platform, company, contact, technologySummary, toolBudget, domainInfo, dns, opportunities, salesHooks, flags, targetMatch, leadScore, checkSummary, dataQuality. About half the size of the full result.

full adds the detail blocks: technologies with evidence and versions, features, checks, privacy, pagesRead.

summary is one short text for people and AI agents, for example:

Csavarker Kft. (HU). Platform: UNAS. Contact: info@csavarker.hu, +36 30 643 0000. Tools: Hotjar. Tool budget: small_business. Lead score: 94 (tier A). Top opportunities: No live chat or chatbot detected; …

A parked domain (for sale, registrar placeholder) gets flags.isParkedDomain, lead score 0 and no opportunities.

Sample output

Part of a real compact result (Apify cloud run, 2026-09-30):

{
"website": "csavarker.hu",
"status": "complete",
"summary": "Csavarker Kft. (HU). Platform: UNAS. Contact: info@csavarker.hu, +36 30 643 0000. Tools: Hotjar. Tool budget: small_business. Lead score: 94 (tier A). Top opportunities: No live chat or chatbot detected; ...",
"platform": "UNAS",
"company": {
"name": "Csavarker Kft.",
"legalName": "Csavarker Kft.",
"country": {"code": "HU", "confidence": "high"},
"registrationIds": [{"type": "tax_number", "country": "HU", "value": "11098539-2-06", "pageKind": "contact"}]
},
"contact": {
"primaryEmail": "info@csavarker.hu",
"primaryPhone": "+36 30 643 0000",
"socialProfiles": {"facebook": "https://www.facebook.com/csavarker", "tiktok": "https://www.tiktok.com/@csavarkerkft"}
},
"hosting": {"hostedOn": "Rackforest Zrt.", "cdn": null, "originHidden": false, "dnsProvider": "Forpsi"},
"opportunities": [
{"id": "no_live_chat", "category": "chat_support", "title": "No live chat or chatbot detected", "confidence": "high"}
],
"salesHooks": [
{"category": "chat_support", "opportunityId": "no_live_chat", "confidence": "high",
"text": "Csavarker Kft. has no chat on the website, so visitors with a question must call or write an email."}
],
"leadScore": {"score": 94, "tier": "A", "parts": {"contactability": 30, "opportunity": 35, "dataQuality": 15}}
}

What you get for each website

BlockContent
technologies1,178 product rules in 64 categories: CMS, shop platform, analytics, advertising pixels, chat, chatbot, email marketing, booking, payments, consent tools, reviews, recruiting and more. Each result has evidence.
contactRole email addresses (info@, sales@, support@, …), phone numbers in E.164 format, each with the page where it was found, contact form, company social profiles.
companyName, logo URL, legal name and legal form, company registration and tax numbers, address, country, industry hints, founding year.
featuresPage types that the site links to, calls to action, forms, selling and hiring signals, content freshness, trust signals.
checksAbout 45 checks: on-page SEO, indexability, structured data, robots.txt, sitemap, llms.txt, performance, security headers, accessibility.
privacyTrackers, consent tools, policy pages.
dnsMail provider, SPF, DMARC and services that DNS TXT records verify (for example Microsoft 365, Stripe, Atlassian).
hostingWhere the site runs: IP, network owner (for example Hetzner, OVHcloud), CDN, platform (Shopify behind Cloudflare), DNS provider. A CDN can hide the real host; originHidden says so.
opportunitiesWhat the site does not have, by category, with evidence and a confidence level.
salesHooksOne ready sentence per opportunity category, for a sales message.
targetMatchWhich of your target products or categories the site uses.
leadScoreA 0–100 sorting score with tier A–D and the points of each part.
toolBudgetSpend level from the paid tools that were detected: enterprise, mid_market, small_business, minimal. A lower bound.
domainInfoDomain registration date, expiry date, registrar, and the TLS certificate issuer and expiry.
adLibraryLinksLinks to the Google Ads Transparency Center and the Meta Ad Library, to check if the company runs ads.
flags25 yes/no columns (hasLiveChat, hasAdPixel, dmarcEnforced, …) for spreadsheet and CRM import.

The word lists cover 17 languages. Kontakt, Contactez-nous, Contacto and Yhteystiedot are all contact pages.

Input

{
"websites": ["apify.com", "https://www.allbirds.com"],
"focus": ["chat_support", "seo"],
"maxPagesPerWebsite": 4
}
FieldDefaultMeaning
websites—Up to 5000 domains or URLs. One result per host name. The Actor always starts at the home page.
sourceDatasetId, sourceField—, websiteRead the websites from a dataset of another Actor, for example a Google Maps export. Give websites, a dataset, or both.
skipDatasetId—The dataset of an earlier run. Websites in it are skipped and not charged. For scheduled runs on a list that grows.
outputDetailcompactcompact or full; see below.
focusallKeeps only these categories in opportunities. The other blocks do not change.
maxPagesPerWebsite4Home page plus the best contact, legal notice, about and pricing pages. When these pages give no role email and no phone, the Actor reads up to 2 more pages to find a contact page. The value 1 reads the home page only.
includeDnstrueMX, SPF, DMARC, TXT and hosting lookups.
includeEvidencetrueAdds the matched URL, header or text to each technology and opportunity.
maxConcurrency8Websites in parallel. Requests to one host are sequential. With the default 1 GB memory, 1,000 websites take about 25 minutes.
requestDelayMs300Minimum time between two requests to one host.
includeDomainInfotrueOne RDAP request and one TLS handshake per website.
targetTechnologiesnoneProduct names (Klaviyo) or category ids (chat). Fills targetMatch.
onlyTargetMatchesfalseKeep only websites that use a target.
onlyWithOpportunitiesfalseKeep only websites with an opportunity in the selected categories.
requireEmail, requirePhonefalseKeep only websites with a role email or a phone number.
countriesallKeep only these two-letter country codes.
minLeadScore0Keep only websites with at least this score.

A website that a filter removes is not stored. It is charged with the lower website-filtered event, because the Actor did the same work. The run summary counts the removed websites by reason.

Example: find users of a competitor with a contact address.

{
"websites": ["shop-one.com", "shop-two.com"],
"targetTechnologies": ["Klaviyo", "Mailchimp"],
"onlyTargetMatches": true,
"requireEmail": true
}

Opportunity categories: chat_support, seo, advertising, email_marketing, analytics, web_development, ecommerce, booking, reviews, privacy_compliance, accessibility, email_security, localization, recruiting, ai_readiness.

How to read "not detected"

The Actor reads HTML. It does not run JavaScript. A tool that a tag manager, a JavaScript app or a shop platform loads at run time can be invisible.

For this reason each opportunity has a confidence:

ValueMeaning
highThe site is server-rendered and has no tag manager or app loader. A missing tool is very probably missing.
mediumThe site has a tag manager, a JavaScript framework or a hosted platform. The tool can load at run time.
lowThe result is partial, the page is client-rendered, or the rule is weak by nature.

dataQuality.absenceConfidence gives the same value for the whole website. Use high results for automatic outreach and check medium results by hand.

Measured on 30 vendor websites (a vendor uses its own product): 27 of 31 expected technologies were found. All 4 misses were on websites with medium confidence.

Personal data

The Actor is built to output company data only.

  • An email address is output only when its name is a role word (info, sales, support, office, … in 17 languages). Other addresses are counted in nonRoleEmailsNotOutput and not output.
  • Addresses in an obscured spelling are read and marked with obfuscated: true: info [at] acme [dot] com, info (at) acme (dot) com, the word "at" in other languages, split markup, hidden decoy text, reversed text, data attributes and simple script concatenation. You can filter these out.
  • Encoded addresses (Cloudflare email protection, TYPO3 mail encryption) are not decoded. encodedEmailNotDecoded reports them.
  • LinkedIn person profiles, Facebook profile.php and people/ links, and share links are dropped.
  • Names of persons in structured data (founder, employee, author, reviews) are never read.
  • Addresses of other organisations are dropped, also the mail link of the hosting provider on a legal notice page. A mail link on a contact page is kept, because some companies use another domain for mail.

Limits, found in a review of 220 small business outputs (2026-09-30):

  • A sole trader or a partnership can use a personal name as the business name (for example Barbara Heinze, … GbR). The Actor cannot separate these.
  • Text that the site publishes about itself is copied: the page title, the meta description (company.description) and short evidence snippets. This text can name persons that the site names, for example a chef or an editor.

Phone numbers are output because the site publishes them as a business contact.

An obscured spelling is a sign that the site owner does not want automatic collection. Check the rules for unsolicited business email in your country before you use these addresses.

Behaviour on the web

  • User-Agent: WebsiteSalesSignalsBot/0.1.
  • The Actor obeys robots.txt. A website that disallows its home page gets the status blocked.
  • No login, no CAPTCHA or challenge bypass, no proxy rotation.
  • Per website: robots.txt, home page, one HTTP redirect check, sitemap, llms.txt, up to three more pages, up to two pages of the contact search, three DNS mail queries, and up to five DNS queries for hosting (two of them to the free Team Cymru IP-to-ASN service).

Status and charging

statusMeaningCharged
completeHome page and the selected pages were readyes
partialHome page was read; another request failedyes
blockedrobots.txt or the server refused the requestno
unreachableDNS, TLS or network failureno
invalidThe input is not a public website addressno
errorThe analysis failed; this is a defect of the Actorno

Pay-per-event prices: website-analyzed $0.01 for a stored result (= $10 per 1,000 websites) and website-filtered $0.002 for a website that your filters removed. Blocked, unreachable and invalid websites are free. The run summary is in the key-value store record RUN_SUMMARY.

With a spending limit on the run (for example the monthly free credit), the Actor stops when the limit is reached. You pay only for the stored results, and RUN_SUMMARY shows stoppedByChargeLimit: true.