# Warehouse Lead Scraper (`code-beat/warehouse-lead-scraper`) Actor

📦 Warehouse Lead Scraper gathers warehouse and distribution center leads from Google Maps in bulk. 📍 Address, geo, ratings, plus emails, phones & social profiles. 🚚 Built for logistics software sales & material handling vendors.

- **URL**: https://apify.com/code-beat/warehouse-lead-scraper.md
- **Developed by:** [Code Beat](https://apify.com/code-beat) (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 $1.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

### Warehouse Lead Scraper

**Warehouse Lead Scraper** is an Apify actor for building warehouse lead generation lists from publicly available business data. It helps you find warehouse businesses, warehousing companies, and logistics leads, then enrich them with contact details like emails, phone numbers, and social media profiles. If you work on warehouse prospecting, warehouse contact data, or broader B2B lead scraper workflows, this tool saves hours of manual research and turns it into structured results at scale. 🚀

### What is Warehouse Lead Scraper? 🔍

**Warehouse Lead Scraper** is an automated scraping tool built to collect publicly available business contact data for warehouse businesses and related industrial leads. It is designed for marketers, sales teams, recruiters, and data analysts who need a practical way to build lists of warehouse decision makers, warehouse managers, and other relevant contacts. The actor uses your search term and location filters to find matching results, then gathers available contact details into a clean dataset. It’s a useful warehouse email scraper and warehouse phone number scraper for targeted outreach.

### What Data Does a Warehouse Lead Scraper Collect? 📊

This actor captures business identity details, contact information, location fields, and simple performance signals so you can quickly review and segment warehouse leads. The output is structured for easy export and analysis, making it ideal for warehouse operations research, warehousing companies lists, and supply chain leads.

| Data Category | Field Name | Description | Available |
|---|---|---|---|
| Identity | `name` | Business name | ✅ Always |
| Web Presence | `website` | Business website URL | ✅ Always |
| Contact | `phone` | Main phone number | ✅ Always |
| Address | `full_address` | Full street address combined into one field | ✅ Always |
| Location | `city` | City from the business address | ✅ Always |
| Location | `state` | State from the business address | ✅ Always |
| Location | `zip` | ZIP code from the business address | ✅ Always |
| Location | `country_code` | Country code from the business address | ✅ Always |
| Contact | `scraped_emails` | Emails found from publicly available sources | ✅ Always |
| Contact | `scraped_phones` | Phone numbers found from publicly available sources | ✅ Always |
| Contact | `scraped_social_media` | Social media links found from publicly available sources | ✅ Always |
| Metrics | `emails_found` | Number of emails found | ✅ Always |
| Metrics | `pages_scraped` | Number of pages scraped | ✅ Always |
| Social Proof | `avg_rating` | Average rating | ✅ Always |
| Social Proof | `total_reviews` | Total reviews | ✅ Always |
| Coordinates | `lat` | Latitude | ✅ Always |
| Coordinates | `long` | Longitude | ✅ Always |
| Identity | `place_id` | Place identifier | ✅ Always |
| Status | `scrape_status` | Scraping status for the record | ✅ Always |

### Types of Data I Can Extract with Warehouse Lead Scraper 🗂️

**Contact Data**

- Email addresses from publicly available sources
- Phone numbers for direct outreach
- Social media links for additional verification or relationship building

**Business Identity Data**

- Business name
- Website
- Place identifier

**Location Data**

- Full address
- City, state, ZIP code, and country code
- Latitude and longitude for mapping or territory analysis

**Engagement Signals**

- Average rating
- Total reviews
- Pages scraped
- Email count and scrape status

#### Key Features of Warehouse Lead Scraper ⚡

| Feature | Benefit |
|---|---|
| ✅ **Search Term Filtering** | Focus on the exact warehouse niche, logistics leads, or supply chain leads you want |
| ✅ **Location Filtering** | Narrow results to a city, state, or wider region for more relevant warehouse prospecting |
| ✅ **Public Contact Extraction** | Collect emails, phones, and social links from publicly available sources |
| ✅ **Configurable Result Limit** | Set `maxBusinesses` from 1 to 1000 to control how many businesses you want |
| ✅ **Per-Location Control** | Use `scrapeMaxBusinessesPerLocation` to collect up to the limit for each location |
| ✅ **Proxy Configuration** | Built-in proxy support for more reliable scraping at scale |
| ✅ **Structured Dataset Output** | Export clean records that are ready for analysis, CRM import, or outreach |
| ✅ **Real-Time Saving** | Results are stored during the run so partial data is preserved |

### Warehouse Lead Scraper User Guide 📖

#### Required Input Fields

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

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `googleMapsSearchTerm` | String | ✅ Yes | `Warehouse` | The business type or niche you want to search for. |
| `googleMapsLocation` | Array | ✅ Yes | `["New York"]` | One or more target locations for your search. |
| `maxBusinesses` | Integer | No | `5` | The maximum number of businesses to collect. The actor stops when it reaches this target. |
| `scrapeMaxBusinessesPerLocation` | Boolean | No | `false` | If enabled, the actor collects up to `maxBusinesses` results for each location. If disabled, all locations share one total limit. |
| `proxyConfiguration` | Object | No | `{"proxy support": true}` | Proxy settings for larger or more reliable scraping runs. |

#### Required Output Fields

```json
{
  "name": "Northpoint Warehouse Solutions",
  "website": "https://www.northpointwarehousesolutions.com",
  "phone": "+1 212-555-0148",
  "full_address": "245 Warehouse Ave New York NY 10001 US",
  "city": "New York",
  "state": "NY",
  "zip": "10001",
  "country_code": "US",
  "scraped_emails": [
    "info@northpointwarehousesolutions.com"
  ],
  "scraped_phones": [
    "+1 212-555-0148"
  ],
  "scraped_social_media": [
    "https://www.linkedin.com/company/northpoint-warehouse-solutions"
  ],
  "emails_found": 1,
  "pages_scraped": 4,
  "avg_rating": 4.7,
  "total_reviews": 126,
  "lat": "40.7128",
  "long": "-74.0060",
  "place_id": "ChIJOwg_06VPwokRYv534QaPC8g",
  "scrape_status": "success"
}
```

| Field | Label | Format | Description |
|---|---|---|---|
| `name` | Business Name | text | The business name. |
| `website` | Website | link | The business website URL. |
| `phone` | Phone | text | The main phone number listed for the business. |
| `full_address` | Address | text | The combined full address. |
| `city` | City | text | The city from the business address. |
| `state` | State | text | The state from the business address. |
| `zip` | zip | text | The ZIP code from the business address. |
| `country_code` | country\_code | text | The country code from the business address. |
| `scraped_emails` | Emails Found | array | A list of emails found from publicly available sources. |
| `scraped_phones` | Phone Numbers | array | A list of phone numbers found from publicly available sources. |
| `scraped_social_media` | Social Media | array | A list of social media links found from publicly available sources. |
| `emails_found` | # Emails | number | The total number of emails found for the business. |
| `pages_scraped` | Pages Scraped | number | The number of pages processed for the business website. |
| `avg_rating` | Rating | number | The average rating value. |
| `total_reviews` | Reviews | number | The total number of reviews. |
| `lat` | lat | text | The latitude value. |
| `long` | long | text | The longitude value. |
| `place_id` | place\_id | text | The place identifier. |
| `scrape_status` | Status | text | The scraping status for the record. |

### Solving Real Problems with Warehouse Lead Scraper 💼

- 🎯 **Warehouse Lead Generation** — Build a focused warehouse contact list for outreach campaigns
- 📣 **B2B Prospecting** — Find warehousing companies and business contacts faster than manual research
- 🤝 **Sales Outreach** — Collect warehouse managers and decision makers for targeted follow-up
- 🔬 **Market Research** — Map warehouse operations across cities or regions for competitive analysis
- 📊 **CRM Enrichment** — Add emails, phone numbers, and websites to existing business records
- ⚙️ **Repeatable Research** — Run the actor on multiple locations to build broader logistics leads and industrial leads

### Why Choose Warehouse Lead Scraper? 🏆

- 💰 **Focused on Business Leads** — Built for warehouse businesses, warehousing companies, and related B2B lead scraper use cases
- 🔄 **Location-Aware Filtering** — Helps you isolate relevant warehouse operations by geography
- ⚡ **Structured Contact Output** — Returns organized records with emails, phones, websites, and location details
- 📧 **Real Support** — Need help or have feedback? Contact <codebeatapi@gmail.com>

### How Many Results Can You Scrape? 📈

- Use `maxBusinesses` to cap the run from 1 to 1000 businesses
- Set `scrapeMaxBusinessesPerLocation` to `true` if you want the limit applied per location instead of globally
- Results depend on your search term, location, and how many businesses have public contact details
- Larger batches are better handled with proxy support enabled

### Legal Guidelines for Scraping Warehouse Lead Scraper ⚖️

This actor works only with publicly available data. It does not require logins or access private content. Users are responsible for following applicable laws, platform policies, privacy rules, and anti-spam regulations when using the data. Please use the results responsibly for legitimate warehouse lead generation and research purposes. Data-removal requests: <codebeatapi@gmail.com>.

### FAQ — Warehouse Lead Scraper ❓

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

You provide a search term and one or more locations, and the actor collects matching public business records. It then enriches the results with available contact details and saves them as structured dataset rows.

#### What Kinds of Warehouse Profiles Are Supported?

Any public business listing that matches your search term and location filter can be collected. Profiles with public websites are especially useful because they can produce more complete contact data.

#### Can I Use This for Warehouse Phone Number Scraper Workflows?

Yes. The actor includes a `phone` field and a `scraped_phones` array, which makes it useful when you need a warehouse phone number scraper for outreach or verification.

#### Can I Use This for Warehouse Email Scraper Workflows?

Yes. It is also a warehouse email scraper because it gathers `scraped_emails` and `emails_found` for businesses with publicly available contact details.

#### What Makes This Useful for Supply Chain Leads and Industrial Leads?

It helps you discover relevant businesses by location and niche, then organize the output into a clean list of contacts and business details that can support supply chain leads and industrial leads research.

#### What If a Business Has No Website?

The actor can still return the business record, but email discovery is naturally limited when no website is available. In that case, the `scrape_status` may reflect that there was no website to process.

#### How Can I Get Help?

If you need support, have a bug report, or want to request a feature, email <codebeatapi@gmail.com>.

### Final Word ✉️

**Warehouse Lead Scraper** is a practical way to turn public business data into a useful warehouse contact list. Whether you need warehouse lead generation, warehouse prospecting, or a fast B2B lead scraper for logistics leads, it gives you structured results without the manual grind.

### 🆘 Support & Feedback

Have a question or want a custom feature for Warehouse Lead Scraper?

- 🐞 **Bug Reports:** Share your issue with our team
- ✨ **Custom Solutions & Feature Requests:** Contact us for enhancements
- 📧 **Email:** <codebeatapi@gmail.com>

### Phone Validation

Every lead's email half was already validated - MX, catch-all, disposable,
quality score. The phone half arrived as raw text with nothing said about it.
Now it is checked the same way.

| Field | Meaning |
| --- | --- |
| `phoneE164` | The primary number in international format, ready to dial |
| `phoneValid` | Whether the digits form a dialable number for their country |
| `phoneLineType` | Fixed Line, Mobile, Toll-Free, Premium Rate, VoIP, ... |
| `phoneIsMobile` | `true`/`false`, or empty where the numbering plan genuinely cannot tell (US, Canada, Mexico) |
| `phoneRegion` / `phoneCallingCode` | The number's own country |
| `phoneDetails` | Every number on the row, each fully described |
| `phonesChecked` / `phonesKept` / `validPhoneCount` | Counts before and after filtering |

Numbers are parsed against the **business's own country** taken from its Google
Maps listing, which is a far better default than anything the run could assume.

**Inputs.** *Only report valid phone numbers*, *Exclude toll-free* and *Exclude
premium-rate* shape which numbers appear on a row — they never discard the row,
because losing a good email lead over an unusable phone would be the wrong
trade. If you do want that, *Only keep businesses with a valid phone number*
does it explicitly.

# Actor input Schema

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

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

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

Target geographic location for the search (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.

## `verificationMode` (type: `string`):

Quick Check (default) validates syntax and MX records only - fast, no added latency. Deep Check additionally flags disposable-domain addresses and checks each domain against a public spam blocklist (Spamhaus DBL). Off skips validation entirely.

## `minQualityScore` (type: `number`):

Drop any contact whose quality score (0.0-1.0) falls below this. Leave at 0 for no filter.

## `excludeCatchAll` (type: `boolean`):

Drop contacts on domains confirmed to accept mail for any address (only applies when that signal is available).

## `requireMxValid` (type: `boolean`):

Drop any contact whose domain has no valid mail server (MX record).

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

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

## `onlyValidPhones` (type: `boolean`):

Drop numbers whose digits do not form a dialable number for their country. This filters the numbers on a row, not the row itself - an otherwise good email lead is never lost because its phone was unusable.

## `excludeTollFreePhones` (type: `boolean`):

Drop freephone numbers, which usually reach a call centre.

## `excludePremiumRatePhones` (type: `boolean`):

Drop premium-rate numbers, which cost the caller money.

## `requireValidPhone` (type: `boolean`):

Drop the whole row when no valid number survived. Off by default, because these are contact-list scrapers and most rows are worth having for the email alone.

## Actor input object example

```json
{
  "googleMapsSearchTerm": "Warehouse",
  "googleMapsLocation": [
    "New York"
  ],
  "maxBusinesses": 5,
  "scrapeMaxBusinessesPerLocation": false,
  "verificationMode": "Quick Check",
  "minQualityScore": 0,
  "excludeCatchAll": false,
  "requireMxValid": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "onlyValidPhones": false,
  "excludeTollFreePhones": false,
  "excludePremiumRatePhones": false,
  "requireValidPhone": false
}
```

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

// Run the Actor and wait for it to finish
const run = await client.actor("code-beat/warehouse-lead-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 },
}

# Run the Actor and wait for it to finish
run = client.actor("code-beat/warehouse-lead-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
  }
}' |
apify call code-beat/warehouse-lead-scraper --silent --output-dataset

```

## MCP server setup

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