# Wholesale Industry Contact Scraper (`scrapido/wholesale-industry-contact-scraper`) Actor

📦 Wholesale Industry Contact Scraper pulls wholesale and distribution business records from Google Maps—address, city, state, ZIP & website. 📧 Emails and socials per site. 🏭 Great for supplier sourcing & B2B distribution sales.

- **URL**: https://apify.com/scrapido/wholesale-industry-contact-scraper.md
- **Developed by:** [Scrapido](https://apify.com/scrapido) (community)
- **Categories:** Automation, Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## 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

### Wholesale Industry Contact Scraper

**Wholesale Industry Contact Scraper** is an Apify automated web scraping tool that helps marketers, recruiters, sales teams, and analysts build **wholesale lead generation** lists faster by extracting business contact information—especially emails—from publicly available sources. If you’ve ever lost hours manually hunting down supplier contacts, this **Wholesale Industry Contact Scraper** streamlines it at scale for stronger ROI.

***

### What is Wholesale Industry Contact Scraper? 🔍

**Wholesale Industry Contact Scraper** is an Apify actor designed to search for wholesale-related businesses and automatically extract their contact details, including emails, phone numbers, and social media profiles. It’s built for practical **contact data scraping** workflows—helping you move from “we need a list” to a usable **B2B contact database** quickly, without manual copy-pasting.

Whether you’re running **email list scraping** for outreach, building a **company contact scraper** pipeline, or doing **CRM lead enrichment**, this wholesale contact mining tool helps you gather more leads in less time. Use the **Wholesale Industry Contact Scraper** to accelerate **B2B prospecting automation** and collect results in minutes, not weeks.

***

### What Data Does a Wholesale Industry Contact Scraper Collect? 📊

This Wholesale Industry Contact Scraper collects business identity and core contact fields. Specifically, it captures business name, website, phone, full address details, geographic coordinates, and then enriches each listing with emails, phone numbers, and social media links found on the business website.

| Data Category | Fields Extracted | Description |
|---|---|---|
| Contact | `scraped_emails` | Email addresses found for each business (typically from publicly available website pages) |
| Contact | `scraped_phones` | Phone numbers detected during website scraping |
| Contact | `scraped_social_media` | Social media profile links discovered from the business website |
| Identity | `name` | The business name from the listing |
| Navigation | `website` | Business website URL used as the base for extracting contact details |
| Location | `full_address`, `city`, `state`, `zip`, `country_code` | Address components for easier segmentation and cleanup |

***

### What Do Results from Wholesale Industry Contact Scraper Look Like? 👀

Each result is a structured JSON record saved to your Apify dataset (one row per business, with arrays for the scraped contact items). Here’s an example:

```json
{
  "name": "Hudson Trading Co.",
  "website": "https://www.hudsontrading.com",
  "phone": "+1 212-555-0198",
  "full_address": "75 Canal St New York NY 10002 US",
  "city": "New York",
  "state": "NY",
  "zip": "10002",
  "country_code": "US",
  "scraped_emails": [
    "sales@hudsontrading.com",
    "support@hudsontrading.com"
  ],
  "scraped_phones": [
    "+1-212-555-0198"
  ],
  "scraped_social_media": [
    "https://www.linkedin.com/company/hudsontrading/"
  ],
  "emails_found": 2,
  "pages_scraped": 6,
  "avg_rating": 4.4,
  "total_reviews": 238,
  "lat": "40.7175",
  "long": "-74.0062",
  "place_id": "ChIJpV0nYzXZwokR9xk8d8x7QeA",
  "scrape_status": "success"
}
```

Your dataset is exported from Apify in JSON/CSV from the dataset tab in the Apify Console.

***

#### Core Features: Wholesale Industry Contact Scraper ⚡

| Feature | Benefit |
|---|---|
| ✅ Wholesale-focused search term input | Target **wholesale lead generation** by choosing the business niche you want |
| ✅ Location targeting via multiple locations | Run **industry directory crawler** style collection city-by-city using `googleMapsLocation` |
| ✅ Email, phone, and social extraction | Build a more complete **B2B contact database** than email-only lists |
| ✅ Result caps with `maxBusinesses` | Control runtime and cost by stopping once you reach your target |
| ✅ Optional per-location limiting | With `scrapeMaxBusinessesPerLocation`, cap results per location when you need balanced coverage |
| ✅ Built-in proxy support | Get more reliable **web scraping for B2B** at scale with proxyConfiguration support |
| ✅ Structured dataset output | Clean, labeled fields make downstream **data harvesting tools** workflows easier |
| ✅ Resilient website scraping | Includes validation and resilience options so the run completes even when some sites fail |
| ✅ Live dataset saving | Data is pushed to your dataset during scraping so you don’t lose work if a run stops early |

***

### Getting Started with Wholesale Industry Contact Scraper 🚀

1. **Open Apify Store** — Go to [apify.com/store](https://apify.com/store) and search **Wholesale Industry Contact Scraper**
2. **Click Try for Free** — Sign in or create a free Apify account
3. **Open the Input Tab** — Configure your search term and locations
4. **Set Your Search Term** — Use `googleMapsSearchTerm` (default is **Wholesale Industry**)
5. **Add One or More Locations** — Provide `googleMapsLocation` values like **New York**
6. **Set a Business Cap** — Use `maxBusinesses` to control how many businesses to target
7. **(Optional) Tune Per-Location Limits** — Enable `scrapeMaxBusinessesPerLocation` if you want a cap per location
8. **Start the Run** — Monitor logs, then open the Dataset tab to preview/export results

Tip: This is a strong foundation for **supplier contact mining** and **wholesale directory extraction** workflows.

***

### Ways to Use Wholesale Industry Contact Scraper 💡

- 🎯 **Wholesale lead generation** — Quickly assemble supplier contact leads for outreach and pipeline building
- 📣 **Contact data scraping** — Move from manual lists to repeatable acquisition for **B2B prospecting automation**
- 🔬 **Trade catalog scraping** workflows — Use contact harvesting to enrich trade and catalog-based research
- 📊 **CRM lead enrichment** — Populate or update CRM records with emails, phones, and social links
- 🧾 **Manufacturer contact leads** — Gather contacts from business websites for faster vendor onboarding
- ⚙️ **Data pipelines** — Feed results into analytics and segmentation tooling for continuous prospecting

***

#### Input Parameters — Wholesale Industry Contact Scraper

Use the Apify input form or provide an `input.json`.

```json
{
  "googleMapsSearchTerm": "Wholesale Industry",
  "googleMapsLocation": ["New York"],
  "maxBusinesses": 5,
  "scrapeMaxBusinessesPerLocation": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `googleMapsSearchTerm` | string | ✅ Yes | `Wholesale Industry` | Enter the business type or niche for email scraper (for example, “coffee shops” or “dentists”) |
| `googleMapsLocation` | array | ✅ Yes | `["New York"]` | Target geographic location(s) for the email scraper (for example, “Miami, Florida” represented as a string value) |
| `maxBusinesses` | integer | No | `5` | Target number of businesses to find (1–1000). The scraper will stop when this target is reached |
| `scrapeMaxBusinessesPerLocation` | boolean | No | `false` | If enabled, the scraper collects up to `maxBusinesses` results per location; if disabled, it combines locations up to one overall limit |
| `proxyConfiguration` | object | No | (prefilled `proxy support: true`) | Proxy settings for scraping. Recommended for larger runs to reduce the chance of IP blocks and rate limiting |

***

#### Output Parameters — Wholesale Industry Contact Scraper

This actor saves results into the Apify dataset with the following fields (in the exact order below).

```json
{
  "name": "Hudson Trading Co.",
  "website": "https://www.hudsontrading.com",
  "phone": "+1 212-555-0198",
  "full_address": "75 Canal St New York NY 10002 US",
  "city": "New York",
  "state": "NY",
  "zip": "10002",
  "country_code": "US",
  "scraped_emails": [
    "sales@hudsontrading.com",
    "support@hudsontrading.com"
  ],
  "scraped_phones": [
    "+1-212-555-0198"
  ],
  "scraped_social_media": [
    "https://www.linkedin.com/company/hudsontrading/"
  ],
  "emails_found": 2,
  "pages_scraped": 6,
  "avg_rating": 4.4,
  "total_reviews": 238,
  "lat": "40.7175",
  "long": "-74.0062",
  "place_id": "ChIJpV0nYzXZwokR9xk8d8x7QeA",
  "scrape_status": "success"
}
```

| Field | Label | Format | Description |
|---|---|---|---|
| `name` | Business Name | text | The business name from the listing |
| `website` | Website | link | The business website URL used for contact extraction |
| `phone` | Phone | text | The phone number associated with the business listing |
| `full_address` | Address | text | Combined address string built from street + city + state + zip + country\_code |
| `city` | City | text | City for the business address |
| `state` | State | text | State/region for the business address |
| `zip` | zip | text | ZIP/postal code for the business address |
| `country_code` | country\_code | text | Country code for the business address |
| `scraped_emails` | Emails Found | array | List of scraped email addresses for the business |
| `scraped_phones` | Phone Numbers | array | List of scraped phone numbers found while processing the business website |
| `scraped_social_media` | Social Media | array | List of social media profile links found while processing the business website |
| `emails_found` | # Emails | number | Count of emails found for this business |
| `pages_scraped` | Pages Scraped | number | Number of pages scraped during website contact extraction |
| `avg_rating` | Rating | number | Average rating value associated with the business listing |
| `total_reviews` | Reviews | number | Total number of reviews associated with the business listing |
| `lat` | lat | text | Latitude coordinate for the business |
| `long` | long | text | Longitude coordinate for the business |
| `place_id` | place\_id | text | Place identifier from the listing source |
| `scrape_status` | Status | text | Scraping status for the business (for example, `success`) |

***

### Why Choose This Wholesale Industry Contact Scraper? 🏆

If you’re building a **wholesale supplier database** or running **email list scraping** at scale, you need structured output and repeatable results—not spreadsheets that take forever to create. This actor focuses on wholesale industry contact extraction, supports proxyConfiguration for reliability, and stores results directly into your Apify dataset with clear fields for easy CRM import.

For cost-efficiency, Apify runs are typically based on actual results and caps (via `maxBusinesses`), letting you control spend precisely.

Need help? Reach out at <scrapidocontact@gmail.com>.

***

### How Many Results Can You Scrape? 📈

You control the scale using `maxBusinesses` (allowed range: 1–1000). If you run multiple locations, you can either cap globally or cap per location using `scrapeMaxBusinessesPerLocation`. Real-world volume depends on how many businesses in each location have extractable contact info on their websites. The Apify dataset stores results so you can export whenever you’re ready.

***

### Legal Guidelines for Scraping Wholesale Industry ⚖️

This actor collects information from **publicly available sources**. It does not access private profiles or password-protected pages. You are responsible for complying with applicable laws (including GDPR/CCPA where relevant), platform Terms of Service, and spam/marketing communication regulations. Use the extracted data for legitimate business purposes, such as outreach to interested parties or CRM enrichment where permitted.

For data removal requests, contact <scrapidocontact@gmail.com>.

***

### FAQ — Wholesale Industry Contact Scraper ❓

#### How does the Wholesale Industry Contact Scraper find emails?

The actor searches for wholesale-related businesses and then uses the business website to extract publicly available contact information, including email addresses and other contact details.

#### What kinds of businesses work best for wholesale lead generation?

Wholesalers, suppliers, and businesses in your chosen niche typically perform best—especially when their websites include contact pages or visible contact details.

#### Where do the results go after scraping?

Results are pushed into the Apify dataset associated with the run, using the dataset schema fields like Business Name, Website, Emails Found, Phone Numbers, and Social Media.

#### Can I control how many businesses the actor collects?

Yes. Use `maxBusinesses` to set your target (1–1000). If you provide multiple `googleMapsLocation` values, you can control whether the cap is global or per location using `scrapeMaxBusinessesPerLocation`.

#### Does it support proxies?

Yes. The `proxyConfiguration` input supports proxy settings, and it’s recommended for larger runs to help avoid IP blocks and rate limits.

#### How can I contact support or request improvements?

For support or feature requests, email <scrapidocontact@gmail.com>.

***

### Conclusion 🏁

The **Wholesale Industry Contact Scraper** is a practical way to automate **contact data scraping** for **wholesale lead generation**. It combines business identity, website extraction, and structured contact outputs (emails, phones, social links) so your **B2B contact database** can be built faster—at the scale your team needs.

***

### 🆘 Support & Feedback

Have a question or feature request for the **Wholesale Industry Contact Scraper**?

Contact us at <scrapidocontact@gmail.com>.

### Multiple Email Type

**Email Types** keeps only the kinds of mailbox you want. Every row records what
it was classified as in `emailType`.

| Type | What it matches |
| --- | --- |
| Personal | Free webmail (Gmail, Outlook, Yahoo, iCloud, ...) |
| Business | Company domains — free webmail and institutions excluded |
| Education | `.edu`, `.ac.uk`, `.edu.au` and other academic suffixes |
| Government | `.gov`, `.mil`, `.gov.uk`, `.gc.ca`, ... |
| Non-profit | `.org`, `.ngo`, `.org.uk`, ... |

A business found with no email at all is unaffected — whether those rows are
wanted is already governed by the existing email-only setting.

### Multiple Phone Type

**Phone Types** does the same for numbers, checked against the line's *real*
type rather than a guess. Numbers on ranges where mobile and landline cannot be
told apart are kept rather than dropped, since discarding them would lose good
leads.

### Outreach links

| Field | Meaning |
| --- | --- |
| `telLink` | A clickable `tel:` link for the primary number |
| `whatsappLink` | A `wa.me` chat link, or empty for a landline or an invalid number |
| `whatsappCapable` | Whether the line could support WhatsApp |
| `phoneContacts` | Every kept number with its own type, links and validity |

`whatsappCapable` never claims the person uses WhatsApp — only that the number
is of a kind that could. Turn the links off with **Include WhatsApp links**; the
capability flag is still reported.

# Actor input Schema

## `googleMapsSearchTerm` (type: `string`):

Enter the business type or niche for email scraper (e.g., 'coffee shops', 'dentists').

## `googleMapsLocation` (type: `array`):

Target geographic location for the email scraper (e.g., 'Miami, Florida').

## `maxBusinesses` (type: `integer`):

Target number of businesses to find (1-1000). The scraper will stop when this target is reached.

## `scrapeMaxBusinessesPerLocation` (type: `boolean`):

If enabled, the scraper will collect up to `maxBusinesses` results per location. If disabled, it combines all locations up to a single total limit.

## `validateEmails` (type: `boolean`):

Run DNS/MX validation and confidence scoring on every email found, and include the results (confidence score, validation status, role-based/catch-all flags) in the output.

## `minRating` (type: `integer`):

Skip businesses rated below this (1-5 stars). Leave at 0 for no filter.

## `minReviews` (type: `integer`):

Skip businesses with fewer than this many Google reviews. Leave at 0 for no filter.

## `requireWebsite` (type: `boolean`):

Skip businesses with no website listed on Google Maps (they can't be crawled for contact info anyway).

## `leadMode` (type: `string`):

Business Contacts (default) returns the business's generic contact info (info@, main phone, socials). Decision-Maker Finder instead looks for a named person with a job title (e.g. "Jane Smith, Owner") on the business's team/about pages — a best-effort heuristic, not guaranteed on every site.

## `proxyConfiguration` (type: `object`):

Proxy settings for scraping. Recommended for large-scale scraping.

## `emailTypes` (type: `array`):

Which kinds of mailbox to keep. Pick as many as you like; leave empty for every type. A business with no email at all is unaffected by this - whether those rows are wanted is governed by the existing email-only setting.

## `phoneTypes` (type: `array`):

Which kinds of line to keep. Leave empty for every type. Numbers on ranges where mobile and landline cannot be told apart are always kept rather than silently dropped.

## `includeWhatsappLinks` (type: `boolean`):

Add a ready-made wa.me chat link for numbers on a line WhatsApp can run on. The link means the number is in a form WhatsApp accepts - not proof that an account exists.

## Actor input object example

```json
{
  "googleMapsSearchTerm": "Wholesale Industry",
  "googleMapsLocation": [
    "New York"
  ],
  "maxBusinesses": 5,
  "scrapeMaxBusinessesPerLocation": false,
  "validateEmails": false,
  "minRating": 0,
  "minReviews": 0,
  "requireWebsite": false,
  "leadMode": "Business Contacts",
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "emailTypes": [
    "Business"
  ],
  "phoneTypes": [
    "Mobile",
    "Landline"
  ],
  "includeWhatsappLinks": true
}
```

# Actor output Schema

## `dataset` (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 = {
    "googleMapsSearchTerm": "Wholesale Industry",
    "googleMapsLocation": [
        "New York"
    ],
    "maxBusinesses": 5,
    "proxyConfiguration": {
        "useApifyProxy": true
    },
    "emailTypes": [
        "Business"
    ],
    "phoneTypes": [
        "Mobile",
        "Landline"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapido/wholesale-industry-contact-scraper").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 = {
    "googleMapsSearchTerm": "Wholesale Industry",
    "googleMapsLocation": ["New York"],
    "maxBusinesses": 5,
    "proxyConfiguration": { "useApifyProxy": True },
    "emailTypes": ["Business"],
    "phoneTypes": [
        "Mobile",
        "Landline",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("scrapido/wholesale-industry-contact-scraper").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 '{
  "googleMapsSearchTerm": "Wholesale Industry",
  "googleMapsLocation": [
    "New York"
  ],
  "maxBusinesses": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "emailTypes": [
    "Business"
  ],
  "phoneTypes": [
    "Mobile",
    "Landline"
  ]
}' |
apify call scrapido/wholesale-industry-contact-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapido/wholesale-industry-contact-scraper"
        }
    }
}

```

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/Bv9mTyjZNjfqAouGX/builds/KZulz6NAyhySKQuwE/openapi.json
