
Decision Maker Name & Email Extractor
Pricing
$15.00/month + usage

Decision Maker Name & Email Extractor
An actor that crawls a website to identify key decision‑maker names and job titles, then uses NER‑powered matching to extract and pair their email addresses for streamlined lead generation and B2B data enrichment.
1.0 (2)
Pricing
$15.00/month + usage
5
33
33
Last modified
9 days ago
This Apify actor crawls websites to find key decision-makers, extracts their names and job titles, and matches them with email addresses. It's designed to streamline lead generation by providing a targeted list of contacts from any corporate website.
Beta Version Notice: This actor is currently in beta. While it’s fully functional and returns results, you may encounter occasional quirks or incomplete features. I welcome your feedback! Please report any issues or suggestions you have.
Note: Not all websites publicly list names of decision‑makers, so for some domains this actor may return no contacts or only partial results.
💡 Features
- Intelligent Website Crawling: Navigates websites like a human, prioritizing pages most likely to contain contact information (e.g., 'About Us', 'Team', 'Contact').
- Targeted Role Discovery: Specify the types of decision-makers you're interested in, from C-Suite executives to department heads, or provide a list of custom job titles.
- AI-Powered Name Recognition: Uses a Named Entity Recognition (NER) model to accurately identify and extract people's names from unstructured text.
- Smart Email Matching: Automatically associates extracted email addresses with the correct decision-maker, providing a ready-to-use contact list.
- Customizable Crawl Depth: Control how deep the actor searches within a website to balance speed and thoroughness.
- Proxy Support: Utilizes Apify's proxy network to ensure reliable crawling and avoid being blocked.
📥 Input
The actor's behavior is configured through the following input fields.
Website & Crawling Settings
Field | Description | Example |
---|---|---|
Website URLs (startUrls ) | A list of starting URLs for the websites you want to scrape. | https://apify.com |
Exploration Mode (explorationMode ) | Targeted : Focuses on pages with keywords like 'about', 'team', 'contact'. (Faster, recommended) Thorough : Explores all pages up to the set limits. (Slower, more comprehensive) | Targeted |
Email Search Mode (emailSearchMode ) | Thorough : Searches for emails on every page visited. Targeted : Only searches for emails on high-priority pages (like 'contact', 'team'). | Thorough |
Maximum Page Depth (depth ) | The maximum number of clicks away from the start URL the crawler will go. | 3 |
Page Limit per Website (pagecount ) | The maximum number of pages the actor will visit on a single website. | 50 |
Priority Page Keywords (priorityLinkKeywords ) | Add keywords to help the crawler prioritize specific pages. URLs containing these words will be crawled first. | ['investors', 'management'] |
Extraction Settings
Field | Description | Example |
---|---|---|
Job Title Categories (jobTitles ) | Select predefined categories of decision-makers to target. If left empty, all categories are used. | ['C-Suite', 'Founders & ownership'] |
Custom Job Titles Mode (useCstomJobTitles ) | Combine... : Adds your custom titles to the selected presets. Only use... : Exclusively searches for the custom titles you provide. | Combine custom titles... |
Custom Job Titles (customJobTitles ) | A list of specific job titles to find. Useful for niche roles. | ['Head of Growth', 'VP of Product'] |
Advanced Settings
Field | Description |
---|---|
Default Request Headers (defaultRequestHeaders ) | Override the default HTTP headers sent with each request. This is crucial for scraping non-English sites that serve content based on the Accept-Language header. |
Language Country Code (languageCountryCode ) | A list of country/language codes to ignore during the crawl. This helps the actor avoid getting lost on translated versions of a site. Modify this list to scrape non-English websites. |
Proxy Configuration (proxyConfiguration ) | Use Apify's residential proxies to avoid getting blocked and ensure reliable scraping. Recommended for most use cases. |
📤 Output
The actor returns a list of contacts grouped by the initial domain. Each item in the output dataset will have one of the following contact_type
values:
person_with_email
: A decision-maker whose name and email were successfully found and matched.person_only
: A decision-maker was found, but no corresponding email could be matched.email_only
: An email address was found, but it could not be matched to a specific person.
Example Output Item
{"url": "apify.com","contacts": [{"name": "John Doe","title": "Chief Executive Officer","email": "john.doe@apify.com","match_score": 1.0,"contact_type": "person_with_email"},{"name": "Jane Smith","title": "Head of Marketing","email": null,"contact_type": "person_only"},{"name": null,"title": null,"email": "careers@apify.com","contact_type": "email_only"}],"source_urls": ["https://apify.com/about","https://apify.com/contact"]}
⚙️ Usage Guide
This section provides detailed examples of how to configure the actor for specific use cases. The key to getting the best results is to combine job title filters with crawler instructions that guide the actor to the right pages.
Example 1: Finding C-Suite Executives
To find top-level executives like CEOs, CFOs, and CTOs, you want to focus the search on high-level corporate pages.
- Job Title Categories (
jobTitles
): Select theC-Suite
category. - Exploration Mode (
explorationMode
):Targeted
is usually sufficient. - Priority Page Keywords (
priorityLinkKeywords
): Guide the crawler with keywords likeleadership
,executive-team
,board-of-directors
, andinvestor-relations
. You can find the default list below.
The actor follows URLs that contain the keywords provided. An URL could look something like this https://www.company.com/us/executive-team-2025
. It would have scraped this page when the actor would have been provided with the keyword executive-team
. Don't use a space as a separator connect the words with a dash or underscore.
Configuration:
{"startUrls": [{ "url": "https://some-company.com" }],"jobTitles": ["C‑Suite"],"priorityLinkKeywords": ["leadership","executives","board-of-directors","investor-relations"],"explorationMode": "restricted"}
Example 2: Finding Human Resources (HR) Contacts
HR roles can have varied titles. Using a custom list is often more effective than relying on broad categories.
- Custom Job Titles Mode (
useCstomJobTitles
): Set toOnly use custom titles
. - Custom Job Titles (
customJobTitles
): Provide a comprehensive list of possible HR titles. - Priority Page Keywords (
priorityLinkKeywords
): Add keywords likecareers
,jobs
,people
, andour-team
.
Configuration:
{"startUrls": [{ "url": "https://some-company.com" }],"useCstomJobTitles": "only_custom_job_titles","customJobTitles": ["Chief Human Resources Officer","Head of HR","Head of Human Resources","HR Manager","Head of People","Director of Talent Acquisition"],"priorityLinkKeywords": ["careers","jobs","people","our-team"]}
⚙️ Scraping Non-English Websites
While the actor's AI model has multilingual capabilities, the crawling logic is optimized for English. To successfully scrape sites in other languages, you must provide translated inputs and adjust the request headers.
Example: Finding German Decision-Makers
To find contacts on German websites (.de
), you need to adjust four key settings:
- Language Country Code (
languageCountryCode
): This is a skip list. The actor ignores URLs containing these codes. To crawl German sites, you must remove'de'
,'at'
, and'ch'
from the default list. You can find the default list below. - Custom Job Titles (
customJobTitles
): Provide a list of German job titles. - Priority Page Keywords (
priorityLinkKeywords
): Provide a list of German keywords (e.g.,impressum
,unser-team
,geschaeftsfuehrung
) to guide the crawler. - Default Request Headers (
defaultRequestHeaders
): This is critical. Many websites serve content based on the browser's language preference. You must change theAccept-Language
header to signal that you want the German version of the site.
Full Configuration for German Websites:
{"startUrls": [{ "url": "https://german-company.de" }],"useCstomJobTitles": "only_custom_job_titles","customJobTitles": ["Geschäftsführer","Vorstand","Vertreten durch","Personalleiter","Leiter Personalwesen","Marketingleiter"],"priorityLinkKeywords": ["über-uns","team","management","vorstand","impressum","karriere"],"defaultRequestHeaders": {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36","Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8","Accept-Language": "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7"},"languageCountryCode": "'ad', 'ae', 'af', 'ag', 'ai', 'al', 'am', 'ao', 'aq', 'ar', 'as', 'aw', 'ax', 'az', 'ba', 'bb', 'bd', 'be', 'bf', 'bg', 'bh', 'bi', 'bj', 'bl', 'bm', 'bn', 'bo', 'bq', 'br', 'bs', 'bt', 'bv', 'bw', 'by', 'bz', 'ca', 'cc', 'cd', 'cf', 'cg', 'ci', 'ck', 'cl', 'cm', 'cn', 'co', 'cr', 'cu', 'cv', 'cw', 'cx', 'cy', 'cz', 'dj', 'dk', 'dm', 'do', 'dz', 'ec', 'ee', 'eg', 'eh', 'er', 'es', 'et', 'fi', 'fj', 'fk', 'fm', 'fo', 'fr', 'ga', 'gd', 'ge', 'gf', 'gg', 'gh', 'gi', 'gl', 'gm', 'gn', 'gp', 'gq', 'gr', 'gs', 'gt', 'gu', 'gw', 'gy', 'hk', 'hm', 'hn', 'hr', 'ht', 'hu', 'id', 'ie', 'il', 'im', 'in', 'io', 'iq', 'ir', 'is', 'it', 'je', 'jm', 'jo', 'jp', 'ke', 'kg', 'kh', 'ki', 'km', 'kn', 'kp', 'kr', 'kw', 'ky', 'kz', 'la', 'lb', 'lc', 'li', 'lk', 'lr', 'ls', 'lt', 'lu', 'lv', 'ly', 'ma', 'mc', 'md', 'me', 'mf', 'mg', 'mh', 'mk', 'ml', 'mm', 'mn', 'mo', 'mp', 'mq', 'mr', 'ms', 'mt', 'mu', 'mv', 'mw', 'mx', 'my', 'mz', 'na', 'nc', 'ne', 'nf', 'ng', 'ni', 'nl', 'no', 'np', 'nr', 'nu', 'nz', 'om', 'pa', 'pe', 'pf', 'pg', 'ph', 'pk', 'pl', 'pm', 'pn', 'pr', 'ps', 'pt', 'pw', 'py', 'qa', 're', 'ro', 'rs', 'ru', 'rw', 'sa', 'sb', 'sc', 'sd', 'se', 'sg', 'sh', 'si', 'sj', 'sk', 'sl', 'sm', 'sn', 'so', 'sr', 'ss', 'st', 'sv', 'sx', 'sy', 'sz', 'tc', 'td', 'tf', 'tg', 'th', 'tj', 'tk', 'tl', 'tm', 'tn', 'to', 'tr', 'tt', 'tv', 'tw', 'tz', 'ua', 'ug', 'um', 'uy', 'uz', 'va', 'vc', 've', 'vg', 'vi', 'vn', 'vu', 'wf', 'ws', 'ye', 'yt', 'za', 'zm', 'zw'"}
💲 Pricing
The cost of running the actor depends on two main factors:
- Number of Pages Scraped: The more pages you crawl, the more platform usage credits you will consume.
- Proxy Usage: Using Apify's residential proxies is highly recommended for reliable results and will incur costs based on traffic.
As a rough estimate, scraping 100 pages from a single website using residential proxies might cost between $0.10 - $0.30. The final cost will vary based on website complexity and proxy traffic.
Note: A run for one website with startup usually takes 5 minutes.
⚙️ Default Lists
Priority Link Keywords:
# Keywords that indicate a link is important and should be prioritized for crawling.PRIORITY_LINK_KEYWORDS = [# Core contact & company info'contact', 'contact-us', 'get-in-touch', 'reach-out', 'connect','imprint', 'legal', 'about', 'about-us', 'team', 'support',# Leadership & executives'leadership', 'leadership-team', 'leaders', 'senior-leadership','executives', 'executive-team', 'executive-leadership', 'c-suite','management', 'management-team', 'senior-management', 'key-management','founders', 'founding-team', 'founder', 'co-founders',# Specific executive roles'ceo', 'cto', 'cfo', 'coo', 'cmo', 'chro', 'ciso', 'cdo', 'cpo','chief-executive', 'chief-technology', 'chief-financial', 'chief-operating','chief-marketing', 'chief-product', 'chief-data', 'chief-innovation',# Board & governance'board', 'board-of-directors', 'board-members', 'directors','governance', 'corporate-governance', 'board-leadership','advisors', 'advisory-board', 'advisory-committee', 'committee','trustees', 'board-of-trustees',# Team & people pages'our-team', 'meet-our-team', 'meet-the-team', 'team-members','our-people', 'our-leaders', 'key-people', 'our-experts','staff', 'staff-directory', 'directory', 'employee-directory',# Bios & profiles'team-profile', 'leadership-profile', 'executive-profile',# Organizational structure'organization', 'organizational-structure', 'org-chart','hierarchy', 'departments', 'divisions',# Investor relations'investors', 'investor-relations', 'shareholders', 'investor-information','shareholder-information', 'corporate-information',# Press & media'newsroom', 'media-relations', 'spokesperson', 'media-contact',# Professional services specific'partners', 'partnership', 'principals', 'practice-leaders','practice-areas', 'expertise', 'specialties',# International/office locations'locations', 'offices', 'global-offices', 'international','regional-leadership', 'local-team', 'office-contacts',# Company history (often includes founder info)'history', 'our-history', 'company-history', 'timeline','milestones', 'heritage', 'legacy',]
Language Country Codes:
# A set of ISO 3166-1 alpha-2 country codes and common language codes to detect and skip localized URLs.LANGUAGE_COUNTRY_CODES = {'ad', 'ae', 'af', 'ag', 'ai', 'al', 'am', 'ao', 'aq', 'ar', 'as', 'at', 'aw', 'ax', 'az','ba', 'bb', 'bd', 'be', 'bf', 'bg', 'bh', 'bi', 'bj', 'bl', 'bm', 'bn', 'bo', 'bq', 'br','bs', 'bt', 'bv', 'bw', 'by', 'bz', 'ca', 'cc', 'cd', 'cf', 'cg', 'ch', 'ci', 'ck', 'cl','cm', 'cn', 'co', 'cr', 'cu', 'cv', 'cw', 'cx', 'cy', 'cz', 'de', 'dj', 'dk', 'dm', 'do','dz', 'ec', 'ee', 'eg', 'eh', 'er', 'es', 'et', 'fi', 'fj', 'fk', 'fm', 'fo', 'fr', 'ga','gd', 'ge', 'gf', 'gg', 'gh', 'gi', 'gl', 'gm', 'gn', 'gp', 'gq', 'gr', 'gs', 'gt', 'gu','gw', 'gy', 'hk', 'hm', 'hn', 'hr', 'ht', 'hu', 'id', 'ie', 'il', 'im', 'in', 'io', 'iq','ir', 'is', 'it', 'je', 'jm', 'jo', 'jp', 'ke', 'kg', 'kh', 'ki', 'km', 'kn', 'kp', 'kr','kw', 'ky', 'kz', 'la', 'lb', 'lc', 'li', 'lk', 'lr', 'ls', 'lt', 'lu', 'lv', 'ly', 'ma','mc', 'md', 'me', 'mf', 'mg', 'mh', 'mk', 'ml', 'mm', 'mn', 'mo', 'mp', 'mq', 'mr', 'ms','mt', 'mu', 'mv', 'mw', 'mx', 'my', 'mz', 'na', 'nc', 'ne', 'nf', 'ng', 'ni', 'nl', 'no','np', 'nr', 'nu', 'nz', 'om', 'pa', 'pe', 'pf', 'pg', 'ph', 'pk', 'pl', 'pm', 'pn', 'pr','ps', 'pt', 'pw', 'py', 'qa', 're', 'ro', 'rs', 'ru', 'rw', 'sa', 'sb', 'sc', 'sd', 'se','sg', 'sh', 'si', 'sj', 'sk', 'sl', 'sm', 'sn', 'so', 'sr', 'ss', 'st', 'sv', 'sx', 'sy','sz', 'tc', 'td', 'tf', 'tg', 'th', 'tj', 'tk', 'tl', 'tm', 'tn', 'to', 'tr', 'tt', 'tv','tw', 'tz', 'ua', 'ug', 'um', 'uy', 'uz', 'va', 'vc', 've', 'vg', 'vi', 'vn', 'vu', 'wf','ws', 'ye', 'yt', 'za', 'zm', 'zw', 'zh', 'ja', 'ko', 'hi', 'ur', 'fa', 'he', 'el', 'ga','eu', 'gl', 'sq', 'hy', 'kk', 'ky', 'tg', 'tk', 'ab', 'os', 'ku', 'ps', 'sd', 'ta', 'te','ml', 'kn', 'or', 'pa', 'as', 'bn', 'gu', 'mr', 'ne', 'my', 'km', 'lo', 'ka', 'am', 'ti','om', 'so', 'sw', 'rw', 'rn', 'ha', 'yo', 'ig', 'zu', 'xh', 'st', 'tn', 'ts', 'ss', 'nr','mg', 'ln', 'kg', 'ak', 'gaa', 'bm', 'ceb', 'war', 'ilo'}
Request Headers:
'DEFAULT_REQUEST_HEADERS': {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','Accept-Language': 'en-US,en;q=0.5',},
🎯 Use Cases
- Lead generation and contact harvesting.
- Data enrichment pipelines on Apify.
⚠️ Limitations
- Dynamic content limitation: The actor does not currently work for websites that rely heavily on dynamically loaded JavaScript content.
- Lists of names: The actor always takes the names nearest to the job title as the person with the job title. If a text lists multiple people with the same title for exemplar
Our founders: Bob Sommer, Alice Winter
, only 'Bob Sommer' will be listed as the founder. - Non‑English name recognition: Despite using a multilingual NER model, the actor may fail to recognize or validate non‑English names. For example regarding the default input, "Ondra Urban, COO" is detected but then invalidated by the NER.
⚖️ Legal Disclaimer
You are solely responsible for determining the legality of your use of this actor and the data it generates. The scraping and handling of data, particularly personal information, is subject to complex legal frameworks, including but not limited to the General Data Protection Regulation (GDPR/DSGVO), copyright laws, and the terms of service of the websites you scrape.
It is your responsibility to ensure that your specific use case is compliant with all applicable laws. This includes obtaining any necessary consents, having a legitimate interest, and adhering to all data protection principles if you process personal data.
The developer of this actor provides no warranty and assume no liability for any misuse of this tool or for any legal issues that may arise from your use of the data. This text does not constitute legal advice.
🛠️ Maintainer
- Author: Dominic M. Quaiser
- Contact: mail@dominic-quaiser.io
- Website: dominic-quaiser.io