# Contact Details Scraper (`excitable_pickle/b2b-lead-contact-enricher`) Actor

Email extractor and lead scraper to extract and download emails, phone numbers, Facebook, Twitter, LinkedIn, Instagram, Threads, Snapchat, and Telegram profiles from any website. Extract contact information at scale from lists of URLs and download the data as Excel, CSV, JSON, HTML, and XML.

- **URL**: https://apify.com/excitable\_pickle/b2b-lead-contact-enricher.md
- **Developed by:** [Pavan](https://apify.com/excitable_pickle) (community)
- **Categories:** Lead generation, Social media
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

<p align="center">
  <img src="https://cdn.jsdelivr.net/npm/simple-icons@v13/icons/hubspot.svg" width="90" height="90" alt="Contact Details Scraper Logo" />
</p>

## Contact Details Scraper

### What is Contact Details Scraper?

Contact Details Scraper can crawl any website and extract the listed contact information for everybody mentioned on the site.

- Extract **any contact details** from a site, such as email address, phone number, and social media accounts
- Also scrapes WhatsApp and Telegram information, as well as Snapchat, Discord, and any other communication type
- Use the **Business Leads Enrichment** add-on to add more detail, such as listed people’s job title, website, and LinkedIn
- Find scraped data in a handy table, or export it in multiple formats like **JSON, CSV, Excel, or HTML**
- Export via SDKs (Python & Node.js), use **API Endpoints**, **webhooks**, or integrate with workflows

### What data can I extract with Contact Details Scraper?

Contact Details Scraper can find contact details on almost any webpage. It will find any of the following:

<table>
<tr>
<td>📧 Email addresses</td>
<td>📞 Phone numbers</td>
<td>💼 LinkedIn profiles</td>
</tr>
<tr>
<td>X (Twitter) handles</td>
<td>📸 Instagram profiles</td>
<td>📘 Facebook profiles/pages</td>
</tr>
<tr>
<td>▶️ YouTube accounts</td>
<td>🎵 TikTok profiles</td>
<td>📌 Pinterest profiles</td>
</tr>
<tr>
<td>🎮 Discord pages</td>
<td>👻 Snapchat profiles</td>
<td>🧵 Threads profiles</td>
</tr>
<tr>
<td>✈️ Telegram profiles/groups</td>
<td>👥 Reddit pages</td>
<td>💬 WhatsApp information</td>
</tr>
</table>

#### 👥 Lead generation

On top of this, Contact Details Scraper can use lead enrichment, which extracts detailed employee information from companies:

- Extract employee profiles, including names, job titles, departments, and contact information
- Filter results by specific departments
- Provide LinkedIn profiles, email addresses, and phone numbers
- Company information such as size, location, and industry

#### 🔍 Social media profiles enrichment

Contact Details Scraper can also enrich discovered social media URLs with detailed profile information. When enabled, this feature will:

- Extract profile data from Facebook, Instagram, YouTube, TikTok, and Twitter URLs
- Create dedicated dataset views for each social media platform for easy access

**Important notes:**

- Social media profile enrichment requires enabling "Merge contacts" mode
- Each enriched social media profile counts as a separate billable event
- Enriched profiles are available in the **Social profiles** output view tab
- Profiles found on [Linktree](https://linktr.ee) pages are enriched too (see [Linktree pages](#-linktree-pages) below)

#### 🌳 Linktree pages

Contact Details Scraper follows [Linktree](https://linktr.ee) link-in-bio pages. When it lands on a `linktr.ee` profile, it reads every link on the page and scrapes those linked sites for contact details.

This works both ways:

- Pass a `linktr.ee` URL directly as a start URL, or
- Let the Actor discover one while crawling another site

In both cases the linked sites are crawled even with **Stay within domain** enabled.

**Important notes:**

- Linked sites are treated as if you had passed them in directly, so the **Maximum link depth** setting still applies to them from the Linktree page onwards
- The Linktree page and each linked page it leads to are billed as scraped pages
- Links to Facebook, Instagram, and TikTok are not crawled directly, but the profile URLs are still captured in the output - enable **Social media profile enrichment** to pull their details

### How to use Contact Details Scraper

Contact Details Scraper is designed with users in mind, even those who have never extracted data from the web before. You use it in just a few steps.

1. [Create](https://console.apify.com/actors/9Sk4JJhEma9vBKqrg/) a free Apify account using your email
2. Open [Contact Details Scraper](https://apify.com/excitable_pickle/contact-info-scraper)
3. Add one or more sites to scrape
4. Click the “Start” button and wait for the data to be extracted
5. View your data in the UI, or download it in JSON, XML, CSV, Excel, or HTML

Apify also has a video tutorial that will guide you through the process:

https://www.youtube.com/watch?v=GvuT5Zy6xhI

### Input

To get started, just enter the site URL you want to scrape, and set how many pages you want to scrape initially. Then hit “start” and the Actor will get to work.

<a href="https://console.apify.com/actors/9Sk4JJhEma9vBKqrg/">
<img src="https://github.com/apify-projects/actor-readme-images/blob/master/contact-details-scraper-input.png?raw=true" alt="Contact Details Scraper input" style="width:70%;">
</a>

#### Leads enrichment

To use lead enrichment, set the `maximumLeadsEnrichmentRecords` parameter to a number higher than 0 to specify how many employee records to extract per company, and optionally use `leadsEnrichmentDepartments` to filter by specific departments.

To make the most of this function, Apify recommends setting the number of scraped pages as follows:

- For only leads enrichment, set the number of scraped pages to 1.
- For leads enrichment AND contact details scraping, set it to 2 or 3 pages.

##### Email verification

When `verifyLeadsEnrichmentEmails` is enabled, each lead's email address is verified and an `emailVerification` object is added to the lead output. Requires Business leads enrichment to be active.

**Charged (decisive results):**

- `ok` - Valid, deliverable email address
- `invalid` - Invalid or non-existent email address
- `disposable` - Disposable or temporary email address

**Not charged:**

- `catch_all` - The domain accepts all addresses; individual deliverability cannot be confirmed
- `unknown` - Verification result could not be determined
- `error` - Verification encountered a technical error

```json
{
    "email": "james.hill@apify.com",
    "quality": "good",
    "result": "ok",
    "subResult": "accepted_email",
    "free": false,
    "role": false,
    "error": ""
}
```

### Output

The results will be wrapped into a dataset which you can find in the **Storage** tab. Here's an excerpt from the dataset you'd get if you apply the input parameters above:

<a href="https://console.apify.com/actors/9Sk4JJhEma9vBKqrg/">
<img src="https://github.com/apify-projects/actor-readme-images/blob/master/contact-details-scraper-output.png?raw=true" alt="Contact Details Scraper output" style="width:70%;">
</a>

Here is part of that output in JSON:

```json
[
    {
        "originalStartUrl": "https://apify.com",
        "domain": "apify.com",
        "scrapedUrls": ["https://apify.com/contact", "https://apify.com/contact-sales", "https://apify.com/"],
        "leadsEnrichment": [
            {
                "personId": "60c5b4b693b4440001970d6e",
                "firstName": "James",
                "lastName": "Hill",
                "fullName": "James Hill",
                "linkedinProfile": "http://www.linkedin.com/in/jameshill",
                "email": "james.hill@apify.com",
                "mobileNumber": null,
                "jobTitle": "Product Manager",
                "industry": "Information Technology & Services",
                "city": "Prague",
                "state": "Hlavni mesto Praha",
                "country": "Czech Republic",
                "companyId": "5a9d952ba6da98d9a159cdde",
                "companyName": "Apify",
                "companyWebsite": "apify.com",
                "companySize": null,
                "companyLinkedin": "http://www.linkedin.com/company/apifytech",
                "companyCity": null,
                "companyState": "Hlavni mesto Praha",
                "companyCountry": "Czechia",
                "companyPhoneNumber": "+18776761166",
                "headline": "Building a full-stack platform for web scraping and data for AI.",
                "departments": ["product"],
                "seniority": "senior",
                "photoUrl": "https://media.licdn.com/dms/image/D4E03AQGVYzvGHp9zhw/profile-displayphoto-shrink_200_200/0/1688982177437?e=2147483647&v=beta&t=O5O0vOrGxecs-dTwEoEKJGi-AV2QDIY_zZaajyLTshs",
                "twitter": null
            },
            {
                "personId": "59c158d1a6da9873759140ae",
                "firstName": "Michaela",
                "lastName": "Blue",
                "fullName": "Michaela Blue",
                "linkedinProfile": "http://www.linkedin.com/in/michaelablue",
                "email": "michaela.blue@apify.com",
                "mobileNumber": null,
                "jobTitle": "Product Owner",
                "industry": "Information Technology & Services",
                "city": "Prague",
                "state": "Hlavni mesto Praha",
                "country": "Czech Republic",
                "companyId": "5a9d952ba6da98d9a159cdde",
                "companyName": "Apify",
                "companyWebsite": "apify.com",
                "companySize": null,
                "companyLinkedin": "http://www.linkedin.com/company/apifytech",
                "companyCity": null,
                "companyState": "Hlavni mesto Praha",
                "companyCountry": "Czechia",
                "companyPhoneNumber": "+18776761166",
                "headline": "Product Owner",
                "departments": ["product"],
                "seniority": "senior",
                "photoUrl": "https://static.licdn.com/aero-v1/sc/h/9c8pery3andzj6ohjkjp54ma1",
                "twitter": null
            },
            {
                "personId": "57db409fa6da984c106b6227",
                "firstName": "Francis",
                "lastName": "Goodwell",
                "fullName": "Francis Goodwell",
                "linkedinProfile": "http://www.linkedin.com/in/fgoodwell",
                "email": "francis.goodwell@apify.com",
                "mobileNumber": null,
                "jobTitle": "Senior Full Stack Engineer & Team Leader",
                "industry": null,
                "city": "Prague",
                "state": "Hlavni mesto Praha",
                "country": "Czech Republic",
                "companyId": "5a9d952ba6da98d9a159cdde",
                "companyName": "Apify",
                "companyWebsite": "apify.com",
                "companySize": null,
                "companyLinkedin": "http://www.linkedin.com/company/apifytech",
                "companyCity": null,
                "companyState": null,
                "companyCountry": null,
                "companyPhoneNumber": "+18776761166",
                "headline": "Senior full-stack developer & team leader",
                "departments": ["engineering_technical"],
                "seniority": "senior",
                "photoUrl": "https://media.licdn.com/dms/image/v2/D4E03AQEI12nPbyk8VqA/profile-displayphoto-shrink_200_200/profile-displayphoto-shrink_200_200/0/1677444613135?e=2147473647&v=beta&t=uOT8poJjY6ie22fpBbNX2_15KbY2SvesjNpObDCLIkg",
                "twitter": null
            }
        ],
        "emails": ["hello@apify.com"],
        "phones": [],
        "phonesUncertain": ["04788290", "373153700", "035500000000002", "7434378"],
        "linkedIns": ["https://www.linkedin.com/company/apify", "http://linkedin.com/company/apify"],
        "twitters": ["https://x.com/apify"],
        "instagrams": [],
        "facebooks": [],
        "youtubes": ["https://www.youtube.com/apify"],
        "tiktoks": ["https://www.tiktok.com/@apifyoffice", "https://www.tiktok.com/@apifytech"],
        "pinterests": [],
        "discords": ["https://discord.com/invite/jyEM2PRvMU"],
        "snapchats": [],
        "threads": [],
        "telegrams": [],
        "reddits": [],
        "whatsapps": [],
        "facebookProfiles": [],
        "instagramProfiles": [],
        "youtubeProfiles": [
            {
                "startUrl": "https://www.youtube.com/apify",
                "profileName": "Apify",
                "profilePictureURL": "https://yt3.googleusercontent.com/gBQONhVo1W-2YI8tJ-RQLOjYtBksDOayrsj7TiJ1SiKrApfhzjw2fnyYocBuZCb06G7kYP5RRg=s160-c-k-c0x00ffffff-no-rj",
                "location": "Czechia",
                "description": "Welcome to Apify’s official YouTube channel!\n\nApify is a web scraping and automation platform, which lets you automate anything you can do in a web browser 🚀\n\nGather data with pre-built tools we call Actors and further use it to feed generative AI or for lead generation, machine learning, market research, and a myriad of other use cases 🤖\n\nAre you a developer? Build your own Actors and publish them on Apify Store to earn passive income 💸\n\nSubscribe now for tutorials on how to use our Actors, build your own ones, utilize our open-source libraries, or learn about various web scraping technologies 📖",
                "followersCount": 10600,
                "externalProfileURL": "https://www.youtube.com/channel/UCTgwcoeGGKmZ3zzCXN2qo_A",
                "profileURL": "https://www.youtube.com/channel/UCTgwcoeGGKmZ3zzCXN2qo_A",
                "creationDate": "Jan 4, 2017",
                "coverPhoto": "https://yt3.googleusercontent.com/cdKlrmQSWEGXVgZbEr-dVN-W_GwH9ifLidL951d-Ne57qIHDthpZgjqczTKf_kEY7ucTW5wWiYc=w2560-fcrop64=1,00005a57ffffa5a8-k-c0xffffffff-no-nd-rj",
                "accountVerificationStatus": false,
                "socialInputUrl": "https://www.youtube.com/apify",
                "channelTotalVideos": 180,
                "channelTotalViews": 827803,
                "isAgeRestricted": false,
                "id": "UCTgwcoeGGKmZ3zzCXN2qo_A",
                "username": null,
                "followingCount": null,
                "privateProfile": null
            }
        ],
        "tiktokProfiles": [
            {
                "startUrl": "https://www.tiktok.com/@apifyoffice",
                "profileName": "apifyoffice",
                "profilePictureURL": "https://p16-pu-sign-no.tiktokcdn-eu.com/tos-no1a-avt-0068c001-no/3161932a8654b0659fbbd1dca63c640a~tplv-tiktokx-cropcenter:720:720.jpeg?dr=10399&refresh_token=df0295a6&x-expires=1761912000&x-signature=GUlT0p%2Fp6pO15fNbuqVOyTw0svo%3B&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=no1a",
                "description": "🤖 web scraping and AI 🤖\n\ncheck out our open positions at ✨apify.it/jobs✨",
                "username": "apifyoffice",
                "followersCount": 157,
                "externalProfileURL": null,
                "privateProfile": false,
                "socialInputUrl": "https://www.tiktok.com/@apifyoffice",
                "videosCount": 43,
                "tiktokSeller": false,
                "authorId": "7095709566285480965",
                "followingCount": null,
                "profileURL": null,
                "creationDate": null,
                "accountVerificationStatus": null,
                "coverPhoto": null
            },
            {
                "startUrl": "https://www.tiktok.com/@apifytech",
                "profileName": "apifytech",
                "profilePictureURL": "https://p16-pu-sign-no.tiktokcdn-eu.com/tos-no1a-avt-0068c001-no/4b007abaf573cd0169af10350eb3a6c7~tplv-tiktokx-cropcenter:720:720.jpeg?dr=10399&refresh_token=ae8e06a2&x-expires=1761912000&x-signature=SKuzn%2BlQX7VIhrwDACHYKq%2FGzGY%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=no1a",
                "description": "👋 Hi, we’re Apify, and we make the web more programmable.\nMore at @apifyoffice",
                "username": "apifytech",
                "followersCount": 1015,
                "externalProfileURL": "apify.com",
                "privateProfile": false,
                "socialInputUrl": "https://www.tiktok.com/@apifytech",
                "videosCount": 31,
                "tiktokSeller": false,
                "authorId": "7353570794285417504",
                "followingCount": null,
                "profileURL": null,
                "creationDate": null,
                "accountVerificationStatus": null,
                "coverPhoto": null
            }
        ],
        "twitterProfiles": [
            {
                "startUrl": "https://x.com/apify"
            }
        ]
    }
]
```

### Deduplicate and merge contacts

Contact Details Scraper provides the contacts inside one item per scraped URL. This is good for analysis to check where the contact was found but can make it hard to process.

Fortunately, you can use [Contact Details Merge & Deduplicate](https://apify.com/lukaskrivka/contact-details-merge-deduplicate) Actor to merge and deduplicate the contacts. This Actor takes one or more dataset IDs of the Contact Details Scraper and merges and deduplicates all contacts so that each domain is on one row. You can choose if contacts of one type should be in only one column or spread.

### How much will using Contact Details Scraper cost you?

Contact Details Scraper uses the pay-per-event (PPE) pricing model, so you pay for each action you perform. Check the [pricing tab](https://apify.com/excitable_pickle/contact-info-scraper/pricing) for details

The Free plan includes $5 of prepaid credits. With that, you could start the Actor and scrape around 2,500 pages. If you upgrade to any of Apify's paid plans, you will get a discount, allowing you to scrape even more for the same price. Check out the [Apify pricing page](https://apify.com/pricing) for more details.

Note that lead enrichment carries an extra cost. Significant discounts are available on higher-tier plans. Please see the [Pricing tab](https://apify.com/excitable_pickle/contact-info-scraper/pricing) for your exact rate based on your subscription.

### Frequently asked questions

#### Can I use Contact Details Scraper to extract emails from Google Maps?

Yes, but for more precise results it's better to use a specialized scraper like [Google Maps Scraper](https://apify.com/compass/crawler-google-places).

#### Can I use integrations with Contact Details Scraper?

You can integrate Contact Details Scraper with almost any cloud service or web app. Apify offers integrations with **Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive**, [and plenty more](https://docs.apify.com/integrations).

Alternatively, you could use [webhooks](https://docs.apify.com/integrations/webhooks) to carry out an action whenever an event occurs, such as getting a notification whenever Contact Details Scraper successfully finishes a run.

#### Can I use Contact Details Scraper with the Apify API?

The Apify API gives you programmatic access to the Apify platform. The API is organized around RESTful HTTP endpoints that enable you to manage, schedule, and run Apify Actors. The API also lets you access any datasets, monitor Actor performance, fetch results, create and update versions, and more.

To access the API using Node.js, use the `apify-client` [npm package](https://apify.com/excitable_pickle/contact-info-scraper/api/javascript). To access the API using Python, use the `apify-client` [PyPI package](https://apify.com/excitable_pickle/contact-info-scraper/api/python). Check out the [Apify API reference](https://docs.apify.com/api/v2) docs for all the details.

#### Can I use Contact Details Scraper through an MCP server?

With Apify API, you can use almost any Actor in conjunction with an MCP (Model Context Protocol) server. You can connect to the MCP server using clients like Claude Desktop and LibreChat, or even build your own. Read all about how you can [set up Apify Actors with MCP](https://blog.apify.com/how-to-use-mcp/).

For Contact Details Scraper, go to the [MCP tab](https://apify.com/excitable_pickle/contact-info-scraper/api/mcp) and then go through the following steps:

1. Start a Server-Sent Events (SSE) session to receive a `sessionId`
2. Send API messages using that `sessionId` to trigger the scraper
3. The message starts the Contact Details Scraper with the provided input
4. The response should be: `Accepted`

#### Is it legal to scrape contact details?

Web scraping is legal as long as you don’t scrape private data. However, you should be aware that your results might contain personal data, which is protected by GDPR (General Data Protection Regulation) in the European Union and in other laws from around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. You can read our blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/) for more information.

#### Your feedback

We’re always working on improving the performance of Apify’s Actors. If you have any technical feedback for Contact Details Scraper or found a bug, please create an issue in the [Issues tab](https://apify.com/excitable_pickle/contact-info-scraper/issues/open).

### Connect to Claude / AI Agent (MCP)

Connect this Actor directly to Claude Desktop, Cursor, or any MCP client via the Model Context Protocol endpoint:

```text
https://mcp.apify.com/?token=YOUR_APIFY_TOKEN_HERE&tools=actors,docs,excitable_pickle/b2b-lead-contact-enricher
```

#### Claude Copy-Paste Prompt

```text
MCP Server URL: https://mcp.apify.com/?token=YOUR_APIFY_TOKEN_HERE&tools=actors,docs,excitable_pickle/b2b-lead-contact-enricher
Apify Token: YOUR_APIFY_TOKEN_HERE

Execute Actor: excitable_pickle/b2b-lead-contact-enricher
Task: "Execute search with parameters, extract structured results, and present key intelligence in a markdown table."
```

# Actor input Schema

## `startUrls` (type: `array`):

The list of web pages from which the scraper will start crawling.<br><br>You can also pass <a href="https://linktr.ee">Linktree</a> (<code>linktr.ee</code>) link-in-bio pages. The Actor reads every link on the profile and scrapes those linked sites for contact details, even with <b>Stay within domain</b> enabled.

## `maxRequestsPerStartUrl` (type: `integer`):

The maximum number of pages that will be enqueued from each start URL you provide.

## `mergeContacts` (type: `boolean`):

Enable this option to merge all contacts and social media from every page of the same start URL into a single, clean result row.

## `maxDepth` (type: `integer`):

The maximum number of links away from the <b>Start URLs</b> that the Actor will crawl. If <code>0</code>, the scraper will not follow any links. If empty or null, the scraper will follow links to an arbitrary depth.

## `maxRequests` (type: `integer`):

The maximum number of pages the scraper will load. It is always a good idea to limit the number of pages, otherwise the scraper might run infinitely or consume too many resources.

## `sameDomain` (type: `boolean`):

If set, the scraper will only follow links within the same domain as the referring page.<br><br>Links found on a <a href="https://linktr.ee">Linktree</a> (<code>linktr.ee</code>) page are an exception - they are always followed, even when this is enabled.

## `considerChildFrames` (type: `boolean`):

If set, the scraper will also extract contact information from iframes. You might not always want this (e.g. it will include data from online ads).

## `maximumLeadsEnrichmentRecords` (type: `integer`):

Set the maximum number of lead records to scrape per domain found. Default is <code>0</code>, meaning no leads are scraped.<br><br>⚠️ Some fields contain <b>personal data</b>, which is protected by GDPR in the EU and by other regulations worldwide. Only scrape personal data if you have a legitimate reason to do so; if you're unsure, consult an attorney.<br><br>To keep leads relevant, large chains and online platforms (e.g. social media, retail giants, food delivery) are filtered out automatically.

## `leadsEnrichmentDepartments` (type: `array`):

Include only specific departments (e.g. Sales, Marketing, or C-Suite). Only works when the <b>Maximum leads per domain</b> add-on (<code>maximumLeadsEnrichmentRecords</code>) is enabled. Note that some job titles may be miscategorized.

## `verifyLeadsEnrichmentEmails` (type: `boolean`):

When enabled, verifies the email address of each lead extracted during business leads enrichment. Each lead receives an <b>emailVerification</b> object with the verification result and quality assessment.<br><br><b>Charged (decisive results):</b> valid (<code>ok</code>), invalid, and disposable email addresses.<br><b>Not charged:</b> catch-all, unknown, and error results.<br><br>⚠️ This add-on requires business leads enrichment to be enabled.

## `scrapeSocialMediaProfiles` (type: `object`):

Enriched profiles are available in the <b>Social profiles</b> output tab. See the section description above for what data is retrieved and how it's priced.

## `useBrowser` (type: `boolean`):

If set, the scraper will use a browser for crawling the pages.

## `waitUntil` (type: `string`):

Select when a page should be considered loaded so that the Actor can start scraping it. *Only works with the browser.*

## `proxyConfig` (type: `object`):

Proxy servers let you bypass website protections, avoid IP address blocking, and view content for other countries. Try to use a proxy if you are experiencing timeout errors.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://apify.com"
    }
  ],
  "maxRequestsPerStartUrl": 20,
  "mergeContacts": true,
  "maxDepth": 2,
  "maxRequests": 9999999,
  "sameDomain": true,
  "considerChildFrames": true,
  "maximumLeadsEnrichmentRecords": 0,
  "leadsEnrichmentDepartments": [
    "sales",
    "marketing"
  ],
  "verifyLeadsEnrichmentEmails": false,
  "scrapeSocialMediaProfiles": {
    "facebooks": false,
    "instagrams": false,
    "youtubes": false,
    "tiktoks": false,
    "twitters": false
  },
  "useBrowser": false,
  "waitUntil": "domcontentloaded",
  "proxyConfig": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://apify.com"
        }
    ],
    "maxRequestsPerStartUrl": 20,
    "mergeContacts": true,
    "maxDepth": 2,
    "maxRequests": 9999999,
    "maximumLeadsEnrichmentRecords": 0,
    "scrapeSocialMediaProfiles": {
        "facebooks": false,
        "instagrams": false,
        "youtubes": false,
        "tiktoks": false,
        "twitters": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("excitable_pickle/b2b-lead-contact-enricher").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://apify.com" }],
    "maxRequestsPerStartUrl": 20,
    "mergeContacts": True,
    "maxDepth": 2,
    "maxRequests": 9999999,
    "maximumLeadsEnrichmentRecords": 0,
    "scrapeSocialMediaProfiles": {
        "facebooks": False,
        "instagrams": False,
        "youtubes": False,
        "tiktoks": False,
        "twitters": False,
    },
}

# Run the Actor and wait for it to finish
run = client.actor("excitable_pickle/b2b-lead-contact-enricher").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://apify.com"
    }
  ],
  "maxRequestsPerStartUrl": 20,
  "mergeContacts": true,
  "maxDepth": 2,
  "maxRequests": 9999999,
  "maximumLeadsEnrichmentRecords": 0,
  "scrapeSocialMediaProfiles": {
    "facebooks": false,
    "instagrams": false,
    "youtubes": false,
    "tiktoks": false,
    "twitters": false
  }
}' |
apify call excitable_pickle/b2b-lead-contact-enricher --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,excitable_pickle/b2b-lead-contact-enricher"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/RCkbCqey6NhGxyCQR/builds/ClI16uoMrP0GEhej5/openapi.json
