B2B Outreach Route Finder avatar

B2B Outreach Route Finder

Pricing

from $3.00 / 1,000 company with outreach routes

Go to Apify Store
B2B Outreach Route Finder

B2B Outreach Route Finder

Find the best public outreach route for every company website: ranked emails, phones, social profiles, contact forms, CAPTCHA detection, and CRM-ready contactability scores.

Pricing

from $3.00 / 1,000 company with outreach routes

Rating

0.0

(0)

Developer

Juddroid

Juddroid

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

22 days ago

Last modified

Security

Limited permissions

Share

Turn a list of company websites into the best way to reach each company: verified role emails, usable contact forms, phones and LinkedIn, ranked and explained.

What does B2B Outreach Route Finder do?

You give it company websites, domains or business email addresses. For each unique company it reads the homepage plus the pages most likely to hold contact details: contact, sales/demo, Impressum/legal notice, about/team and support. It also tries common paths like /contact, /kontakt and /impressum when they aren't linked. It extracts every public business contact channel, checks the email domains in DNS, and ranks the channels into a list of routes[]. Each route has a confidence score and a plain-English reason. You get one row per company with a recommendedRoute and a 0-100 contactabilityScore, ready for your CRM or sequencer.

Why use it

  • Ranked routes instead of a pile of emails. Generic extractors dump every address they see. This Actor tells you which channel to use first: a sales inbox with a working mail server beats info@, which beats a contact form, which beats a phone line, a CAPTCHA-protected form, or LinkedIn.
  • Deliverability built in. Every email gets an mxValid flag from a live MX lookup, and addresses on domains that can't receive mail are dropped from the routes. You also get the company's mail provider (Google Workspace, Microsoft 365...) plus SPF and DMARC status.
  • Contact forms described properly. For each form you get the fields (name, type, required, label, options), method, action, whether it submits to a third party (HubSpot, Typeform, Formspree, Google Forms, Pardot, Marketo...), the form builder (Contact Form 7, WPForms, Gravity Forms, Webflow...), and the CAPTCHA vendor (recaptcha, hcaptcha, turnstile, other). Forms embedded via HubSpot scripts or Typeform/Google Forms iframes are detected too.
  • Finds emails that simple regex scrapers miss. Cloudflare email protection is decoded, and so are name [at] domain [dot] com and name(at)domain.de obfuscations, JSON-LD Organization/LocalBusiness contact points, and microdata.
  • Filters the junk. Image file names, Sentry/Wix tracking addresses, placeholder addresses (you@example.com), hashed IDs and no-reply inboxes never reach your list. Addresses on unrelated domains (web agencies, regulators) are kept for reference but never recommended.
  • Clean input, fair billing. Rows are normalized and deduplicated by registrable domain, so www.acme.com/contact and acme.com are one company, and shop.wixsite.com sites are kept apart. Free-mail domains and social profile URLs are flagged. You are only charged for companies where at least one route was found.

What data you get

FieldDescription
domain, companyNameRegistrable domain and company name (from structured data, site name or title)
statusok (charged), no_routes, failed, duplicate, invalid or skipped (never charged)
recommendedRouteThe top route: type, value, sourceUrl, confidence (0-1), reason
recommendedRouteType, recommendedRouteValueFlat copies for spreadsheets and CRMs
contactabilityScore0-100: best email (40) + contact form (20) + phone (15) + LinkedIn (10) + other social (5) + SPF/DMARC (10)
routes[]All routes ranked: sales_email, role_email, contact_form, phone, personal_email, contact_form_captcha, linkedin, social
primaryEmail, primaryPhone, contactFormUrl, linkedinUrlBest value per channel
emails[]Each address with kind (role or personal-looking), role (sales, general, orders, support, press, careers, legal...), domainMatch (same, related, external), freeMail, mxValid, foundVia (mailto, text, cloudflare, obfuscated, jsonld, microdata) and source pages
phones[]From tel: links, JSON-LD and microdata, with E.164 format when the country is known
contactForms[]Fields, method, action, purpose (contact, sales, support), provider, postsToThirdParty, captcha, captchaScope, honeypot and file-upload flags
socialProfilesLinkedIn (company page preferred over personal profiles), X/Twitter, Facebook, Instagram, YouTube, TikTok
emailDeliverabilityCompany domain MX hosts, mail provider, SPF, DMARC and DMARC policy
companyPage title, meta description, language, country and the signals behind it (TLD, structured data, phone prefix, locale)
inputFlags, sourcePages, pagesScanned, warnings, errorInput hygiene flags and a crawl audit trail

How to use

  1. Open the Actor and paste your companies into Company websites or domains, one per line. URLs, bare domains and business emails all work.
  2. Optionally adjust Max pages per website (default 6). This affects speed, not price.
  3. Leave Verify email domains on to get mxValid flags and SPF/DMARC checks.
  4. Turn off Include personal-looking emails if you only want role inboxes such as sales@ and info@.
  5. Click Start. Export the Outreach routes view as CSV/Excel for a one-row-per-company sheet, or use the All routes view for one row per route.
{
"urls": [
"https://apify.com",
"plausible.io",
"www.konii.de",
"info@hifi.de"
],
"maxPagesPerSite": 6,
"maxConcurrency": 5,
"checkEmailDns": true,
"includePersonalEmails": true
}

Output example

A real result for a German company (trimmed: one social route and some metadata removed). Its info@ address was written as info[at]konii.de in the Impressum, and the contact form uses WPForms with hCaptcha:

{
"domain": "konii.de",
"status": "ok",
"companyName": "Konii",
"contactabilityScore": 70,
"recommendedRouteType": "role_email",
"recommendedRouteValue": "info@konii.de",
"primaryEmail": "info@konii.de",
"contactFormUrl": "https://www.konii.de/kontakt/",
"linkedinUrl": "https://www.linkedin.com/company/konii-de/",
"routes": [
{ "rank": 1, "type": "role_email", "value": "info@konii.de", "sourceUrl": "https://www.konii.de/impressum/", "confidence": 0.85,
"reason": "General role inbox on the company domain, linked as mailto; domain accepts mail (MX found)" },
{ "rank": 2, "type": "contact_form_captcha", "value": "https://www.konii.de/kontakt/", "sourceUrl": "https://www.konii.de/kontakt/", "confidence": 0.4,
"reason": "Contact form, 4 fields (2 required), built with WPForms, hcaptcha CAPTCHA" },
{ "rank": 3, "type": "linkedin", "value": "https://www.linkedin.com/company/konii-de/", "sourceUrl": "https://www.konii.de/", "confidence": 0.45,
"reason": "LinkedIn company page linked from the site" },
{ "rank": 4, "type": "social", "network": "facebook", "value": "https://www.facebook.com/immobilienwirtschaft.konii", "sourceUrl": "https://www.konii.de/", "confidence": 0.3,
"reason": "Facebook profile linked from the site" },
{ "rank": 6, "type": "role_email", "value": "datenschutz@konii.de", "sourceUrl": "https://www.konii.de/datenschutzerklaerung/", "confidence": 0.2,
"reason": "Legal inbox: reachable but not suited for sales outreach; domain accepts mail (MX found)" }
],
"emails": [
{ "email": "info@konii.de", "kind": "role", "role": "general", "domainMatch": "same", "freeMail": false, "mxValid": true,
"foundVia": ["mailto", "obfuscated", "text"], "sourceUrls": ["https://www.konii.de/impressum/", "https://www.konii.de/kontakt/"] }
],
"contactForms": [
{
"pageUrl": "https://www.konii.de/kontakt/",
"action": "https://www.konii.de/kontakt/",
"method": "POST",
"purpose": "contact",
"provider": "WPForms",
"postsToThirdParty": false,
"captcha": "hcaptcha",
"captchaScope": "form",
"fieldCount": 4,
"requiredFieldCount": 2,
"fields": [
{ "name": "wpforms[fields][1]", "type": "text", "required": true, "label": "Name" },
{ "name": "wpforms[fields][3]", "type": "email", "required": true, "label": "E-Mail" },
{ "name": "wpforms[fields][7][]", "type": "checkbox", "required": false, "options": ["Anzeigen", "Stellenanzeige", "Unternehmensprofil", "Event"] },
{ "name": "wpforms[fields][8]", "type": "textarea", "required": false, "label": "Nachricht" }
]
}
],
"emailDeliverability": {
"domain": "konii.de", "mxValid": true, "mxHosts": ["konii-de.mail.protection.outlook.com"],
"mailProvider": "Microsoft 365", "spf": true, "dmarc": true, "dmarcPolicy": "none"
},
"company": { "title": "Konii - Digital Real Estate - Konii", "language": "de", "country": "DE", "countrySignals": ["tld:DE", "locale:DE"] },
"pagesScanned": 5
}

Rows that are not charged look like this (one JSON object per row):

{ "input": "https://www.apify.com/contact", "domain": "apify.com", "status": "duplicate", "duplicateOf": "https://apify.com", "routeCount": 0 }
{ "input": "this-company-does-not-exist-9x7q.com", "status": "failed", "error": "Domain does not resolve (ENOTFOUND)", "routeCount": 0 }
{ "input": "jane.smith@gmail.com", "domain": "gmail.com", "status": "skipped", "error": "gmail.com is a consumer/free-mail provider, not a company website." }

Pricing

$0.003 per company with at least one outreach route (event: outreach-route-result). One charge per unique company, however many pages, emails or forms were checked.

InputTypical cost
100 company websitesup to $0.30
1,000 company websitesup to $3.00
10,000 company websitesup to $30.00

If 1,000 inputs contain 50 duplicates and 100 dead or unreachable sites, you pay for at most 850 companies, which is $2.55.

Not charged: duplicates of a domain already in the run, invalid rows, free-mail and social-profile inputs, websites that fail to load or block the request, and reachable websites where no route was found (no_routes). If you set a maximum cost per run, the Actor stops cleanly when it is reached.

Integrations / scheduling

  • Schedules: re-check your lead list weekly or monthly to catch new contact pages and dead domains.
  • Webhooks: trigger your CRM import or a Zapier/Make/n8n flow when a run finishes.
  • API: run it from any language with the Apify API or the JavaScript/Python clients, and read results from the dataset (?view=overview for the compact table).
  • MCP and AI agents: the Actor can be called as a tool through the Apify MCP server, so an AI agent can decide how to contact a list of companies.
  • Pairs well with Google Maps, directory or job-board scrapers that output company websites.

FAQ & limitations

Does it guess or verify email addresses? No. It only returns addresses that are published on the company's own pages or structured data. The MX check confirms the domain accepts mail, but it never contacts the mailbox. SMTP probing is not performed.

Why is a phone ranked above a LinkedIn page, but below a form? The ranking follows how likely a cold business message is to reach a person: sales inbox (with working MX) > other role inbox > form without CAPTCHA > phone > personal-looking address > form with CAPTCHA > LinkedIn > other social. Inboxes for careers, billing, legal/privacy and webmaster are listed last because they're the wrong place for a sales message.

JavaScript-only websites. The Actor reads server-rendered HTML for speed and cost. Content that only appears after JavaScript runs may be missed, and the item then carries a warning. Forms embedded through HubSpot scripts or Typeform/Google Forms iframes are still detected, though their fields are not listed.

Blocked sites. Some sites use bot protection. When a challenge page or rate limit is detected, the Actor stops crawling that site and returns failed without charge. Optional proxy settings are available.

Personal data and responsible use. The Actor collects business contact information that companies publish on their own websites. It does not log in, and it doesn't collect data from social networks. Personal-looking addresses (for example a founder's name on the Impressum) can be excluded with Include personal-looking emails off. You are responsible for using the results lawfully: follow the GDPR/UK GDPR, ePrivacy and national rules on B2B email (for example the German UWG), CAN-SPAM and CASL. Honor opt-outs, and don't use contact forms for bulk or automated submissions.