# Warehouse Contact Scraper (`scrapido/warehouse-contact-scraper`) Actor

📦 Warehouse Contact Scraper collects warehouse and distribution center listings from Google Maps with name, full address, ZIP & phone. 📧 Site crawling adds emails and social links. 🚚 Built for logistics software & material handling sales.

- **URL**: https://apify.com/scrapido/warehouse-contact-scraper.md
- **Developed by:** [Scrapido](https://apify.com/scrapido) (community)
- **Categories:** Lead generation, Automation, 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/platform/actors/running/actors-in-store#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

### Warehouse Contact Scraper

**Warehouse Contact Scraper** helps you avoid hours of manual research by automating warehouse lead generation with a warehouse data extraction tool that returns warehouse contact data. It’s ideal for sales teams, recruiters, and data analysts who need a facility manager email scraper and want faster CRM data import with compliance with scraping regulations.

***

### What is Warehouse Contact Scraper? 🔍

**Warehouse Contact Scraper** is an Apify automation actor designed for warehouse lead generation and warehouse directory scraping. It helps you find logistics company contacts across specific locations and extract their publicly available contact information, including emails, phone numbers, and social media profiles. The actor behaves like a warehouse email extractor / warehouse contact scraper pipeline: you provide a search term and target regions, it runs automated warehouse scraping, and it outputs structured JSON records you can use in B2B warehouse contacts and supply chain contact extraction workflows.

***

### What Does Warehouse Contact Scraper Do? ⚙️

Warehouse Contact Scraper runs in two phases: first it finds relevant businesses for your warehouse contact data use case, then it scrapes their websites to extract contact details. In the end, you get clean, structured results you can export and feed into your outbound systems. It’s built for web scraping for warehouses—especially when you need name email phone extraction at scale and want industrial database enrichment without manual spreadsheet cleanup.

- 🔍 **Searches** for warehouse-relevant businesses using your search term and location inputs
- 📧 **Extracts** publicly listed emails from the businesses’ websites
- 📞 **Extracts** phone numbers and 🌍 **scrapes** social media profile links when available
- 🌍 **Filters** results by location inputs and stops when the business target is reached
- 📊 **Structures** output as clean JSON dataset rows for CRM and outreach tooling
- 💾 **Exports** from the Apify dataset tab (JSON/CSV via the UI)

***

### What Would Results from Warehouse Contact Scraper Look Like? 👀

You’ll see one dataset row per scraped business entry (including arrays of scraped emails, phones, and social links), ready for CRM ingestion and enrichment.

```json
{
  "name": "HarborView Logistics LLC",
  "website": "https://www.harborviewlogistics.com",
  "phone": "+1 212-555-0198",
  "full_address": "330 W 34th St New York NY 10001 US",
  "city": "New York",
  "state": "NY",
  "zip": "10001",
  "country_code": "US",
  "scraped_emails": ["contact@harborviewlogistics.com", "sales@harborviewlogistics.com"],
  "scraped_phones": ["+1-212-555-0198", "+1-212-555-0134"],
  "scraped_social_media": ["https://www.linkedin.com/company/harborview-logistics/"],
  "emails_found": 2,
  "pages_scraped": 8,
  "avg_rating": 4.3,
  "total_reviews": 214,
  "lat": "40.7532",
  "long": "-73.9990",
  "place_id": "ChIJN1t_tDeuEmsRUsoyG83frY4",
  "scrape_status": "success"
}
```

***

### Capabilities of Warehouse Contact Scraper 🛠️

| Capability | What It Means for You |
|---|---|
| ✅ **Keyword Search** | Use `googleMapsSearchTerm` to target a warehouse-related business niche for your warehouse directory scraping workflow. |
| ✅ **Location Filter** | Use `googleMapsLocation` to focus warehouse lead generation in specific regions (for logistics company contacts and B2B warehouse contacts). |
| ✅ **Result Cap (`maxBusinesses`)** | Control volume with `maxBusinesses` so the scraper stops when your target is reached (1–1000). |
| ✅ **Per-Location or Global Limits** | Toggle `scrapeMaxBusinessesPerLocation` to either cap results per location or combine locations into one run-wide total. |
| ✅ **Proxy Integration** | Supports `proxyConfiguration` for more reliable scraping runs—recommended for larger warehouse contact data collection. |
| ✅ **Company Contact Data Structuring** | Returns a consistent JSON dataset schema including name, website, phone, address fields, and arrays for scraped emails/phones/social media. |
| ✅ **Real-Time Dataset Saving** | As contact data is found, it’s saved to the Apify dataset so you can monitor progress and export quickly. |
| ✅ **Email and Contact Extraction** | Designed specifically for extracting emails plus supporting fields for name email phone extraction and industrial database enrichment. |

***

### Launch Your First Warehouse Contact Scraper Task 🚀

Get your first warehouse contact data export running in minutes (no coding required). This is a great fit for web scraping for warehouses and CRM data import.

#### Required Input Fields

> **Note:** `googleMapsLocation` and `googleMapsSearchTerm` are required.

| Parameter | Type | Required | Default | Description |
|---|---|---:|---:|---|
| `googleMapsSearchTerm` | string | ✅ Yes | `"Warehouse"` | The business type or niche you want to scrape for email extraction (e.g., “coffee shops”, “dentists”). |
| `googleMapsLocation` | array | ✅ Yes | `["New York"]` | Target geographic location(s) for the scraper (examples like “Miami, Florida” are supported conceptually—use your preferred city/region strings). |
| `maxBusinesses` | integer | No | `5` | Target number of businesses to find (1–1000). The scraper stops when this target is reached. |
| `scrapeMaxBusinessesPerLocation` | boolean | No | `false` | If enabled, collect up to `maxBusinesses` results per location; if disabled, combine all locations up to a single total limit. |
| `proxyConfiguration` | object | No | `{ "proxy support": true }` | Proxy settings for scraping (recommended for large-scale scraping). |

**Step-by-step launch guide:**

1. **Open** the actor on [Apify Store](https://apify.com/store)
2. **Set** your `googleMapsSearchTerm` (example: Warehouse)
3. **Add** one or more items to `googleMapsLocation`
4. **Tune** `maxBusinesses` and choose whether `scrapeMaxBusinessesPerLocation` should be enabled
5. **(Optional)** Configure `proxyConfiguration` for reliability
6. **Click Start** and monitor progress
7. **Export** results from the dataset tab (JSON/CSV)

***

### Solving Real Problems with Warehouse Contact Scraper 💼

Warehouse Contact Scraper directly supports warehouse contact data collection for real outbound and research workflows, including logistics company contacts and supply chain contact extraction. Typical scenarios include:

- 🎯 **Sales Prospecting** — Generate a warehouse email list for cold outreach without hours of manual searching
- 📣 **Campaign Targeting** — Build B2B warehouse contacts segments using location-focused scraping
- 🤝 **Hiring & Recruitment** — Identify warehouse- and facility-related roles to contact the right teams
- 🔬 **Competitive Research** — Map warehouse directory scraping results across cities and regions
- ⚙️ **Automated Pipelines** — Schedule recurring API-based contact scraping runs for continuous industrial database enrichment

***

### What Sets Warehouse Contact Scraper Apart? 🏆

- 💰 **Targeted lead extraction** — You control search term and location inputs to focus warehouse lead generation, rather than getting broad, untargeted lists.
- 🧠 **Flexible volume controls** — Choose global limits vs per-location caps with `scrapeMaxBusinessesPerLocation` and `maxBusinesses`.
- 🛡️ **Proxy-ready for reliability** — Built-in proxy support via `proxyConfiguration` helps keep runs stable for warehouse contact data collection.
- 🤝 **Support that answers** — Have questions? Contact <scrapidocontact@gmail.com>.

***

### Search Limits and Capacity 📈

Warehouse Contact Scraper is designed for controlled exports using `maxBusinesses` (minimum 1, maximum 1000). The actual output size depends on how many relevant businesses are found within your provided locations and how many have extractable website contact details (including scraped\_emails arrays). For higher volume runs, enable `proxyConfiguration` and use the Apify Run Options to ensure enough time for your workload.

***

### Is It Legal to Scrape Warehouse? ⚖️

Warehouse Contact Scraper works with **publicly available data** to extract contact information and compiles it into your Apify dataset. You should review and follow each source’s Terms of Service, along with applicable privacy and anti-spam laws (including GDPR/CCPA where relevant). Always use scraped data responsibly for legitimate purposes. For compliance questions or data-removal requests, email <scrapidocontact@gmail.com>.

***

### Ending Note ✉️

Stop spending hours manually hunting warehouse contact data. Warehouse Contact Scraper delivers structured warehouse directory scraping results fast, so you can build B2B warehouse contacts and move directly to outreach or CRM data import—without the spreadsheet chaos.

***

### FAQ — Warehouse Contact Scraper ❓

#### How Does the Warehouse Contact Scraper Work?

You provide `googleMapsSearchTerm` and one or more values in `googleMapsLocation`. The actor finds matching businesses, then scrapes their websites to extract emails, phone numbers, and social media profiles. The results are saved to the Apify dataset in the **Business Contact Data** schema.

#### What Types of Warehouse Contacts Can I Target?

You can target the business niche described by `googleMapsSearchTerm` and limit the search to your chosen geographic areas in `googleMapsLocation`. The dataset includes company-level information such as name, website, phone, full\_address fields, plus arrays for `scraped_emails`, `scraped_phones`, and `scraped_social_media`.

#### How Did the Warehouse Contact Scraper Perform in Our Tests?

Performance and yield depend on how many relevant businesses exist in your selected locations and whether their websites contain publicly extractable contact details. The dataset includes `emails_found` plus a `scrape_status` field so you can quickly assess what you received per business.

#### Why Scrape Warehouse Instead of Buying a List?

Scraped data is typically fresher and more niche-specific for warehouse lead generation. Built for warehouse contact data enrichment, it helps you create industrial database enrichment workflows with clearer source context (website, address fields, and place identifiers in the dataset).

#### How Much Does Warehouse Contact Scraper Cost?

Pricing follows Apify’s standard charging model for actor runs and dataset items in your account. Use `maxBusinesses` to control run size and manage compute cost. For exact billing details, refer to your Apify account and run usage.

#### Top Benefits of the Warehouse Contact Scraper

You get fast results, structured output, and a focused approach for warehouse lead generation. The dataset is ready for CRM data import thanks to consistent fields like `name`, `website`, address details, and arrays for scraped emails/phones/social links.

#### What Are the Disadvantages of Scraping Warehouse?

Not every business will have publicly extractable emails on its website, so yield can vary. You may also see fewer results in regions with limited warehouse-related listings matching your `googleMapsSearchTerm`.

#### How to Choose the Best Warehouse Contact Scraper

Choose based on output quality (consistent JSON schema), controllable run volume (`maxBusinesses`, `scrapeMaxBusinessesPerLocation`), and reliability (proxy support via `proxyConfiguration`). If you need help tailoring your warehouse contact extraction workflow, contact <scrapidocontact@gmail.com>.

***

### 🆘 Support & Feedback

Have a question about Warehouse Contact Scraper or want to request improvements for warehouse lead generation workflows?

- 📧 Email: <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": "Warehouse",
  "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": "Warehouse",
    "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/warehouse-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": "Warehouse",
    "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/warehouse-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": "Warehouse",
  "googleMapsLocation": [
    "New York"
  ],
  "maxBusinesses": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "emailTypes": [
    "Business"
  ],
  "phoneTypes": [
    "Mobile",
    "Landline"
  ]
}' |
apify call scrapido/warehouse-contact-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapido/warehouse-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/Pf7zLmTdSKeRLv5vh/builds/hAaNam1uLBPmo228q/openapi.json
