# 🚗 Car Dealer Leads Scraper - Auto Dealership Emails & Phones (`renzomacar/car-dealer-leads-scraper`) Actor

Every dealership in a metro — new, used, trucks, motorcycles — with phone, website, emails and social profiles extracted live from each dealer's site. For automotive SaaS, F\&I products, vendors and agencies selling into dealerships. $8 per 1,000 leads.

- **URL**: https://apify.com/renzomacar/car-dealer-leads-scraper.md
- **Developed by:** [Renzo Madueno](https://apify.com/renzomacar) (community)
- **Categories:** Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.00 / 1,000 leads

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## 🚗 Car Dealer Leads Scraper — Auto Dealership Emails & Phones

There are roughly 60,000 franchised and independent dealerships in the US alone, and every one of them spends money — on inventory tools, F\&I products, reconditioning, advertising, warranties, transport. This Actor gives you the dealer map of any city or state as a working prospect list: dealership name, phone, website, **emails and social profiles extracted live from each dealer's own site**, plus ratings and review counts to size them.

$8 per 1,000 dealerships. No contract, no seats, no database subscription.

### Coverage: from single points to whole states

- **One metro:** `{ "location": "Dallas, TX" }` — sweeps all default dealer types.
- **One segment:** `{ "location": "Dallas, TX", "keywords": ["used car dealer"] }` — independents only.
- **A whole state:** pass `searchQueries` with one entry per city — `["car dealership in Houston, TX", "car dealership in San Antonio, TX", "car dealership in El Paso, TX"]` — and build a statewide file in a single run.

Default dealer types when `keywords` is empty: car dealership, used car dealer, new car dealer, auto sales, truck dealership, motorcycle dealer. RV and boat dealers work too — just add the keyword.

### What lands in your dataset

Per dealership: `name`, `category`, `address` (+ parsed `city`/`country`, lat/long), `phone`, `website`, `email` and `emails[]` from the dealer's site, `socialProfiles` (Facebook/Instagram/LinkedIn/Twitter), `websitePhones[]` (sales vs service lines often differ), `rating`, `reviewsCount`, `techStack[]`, `contactPageUrl`, `placeUrl`, and the `searchQuery` that found it.

Two fields matter more here than in most niches:

- **`reviewsCount`** separates a 12-car independent lot from a 3,000-review franchise store — segment your pitch accordingly.
- **`websitePhones[]`** frequently surfaces the direct sales-desk or service-drive numbers that the map listing hides behind a call-tracking main line.

### Built for the people who sell to dealers

Automotive SaaS (inventory, CRM, digital retailing) building SDR territories. F\&I and warranty providers mapping independent lots. Auto transport and reconditioning services prospecting by metro. Agencies selling dealer websites and ads — `techStack` shows who's on a template platform. Auction houses and wholesale platforms recruiting independent dealers.

### Pricing

- $0.008 per dealership delivered ($8 / 1,000)
- $0.01 flat start fee per run

A complete metro like Dallas–Fort Worth — typically 400–800 rooftops across segments — costs about **$4–7**. A statewide independent-dealer file usually stays under $20.

### Example input

```json
{
  "location": "Dallas, TX",
  "keywords": ["used car dealer", "truck dealership"],
  "maxResults": 120,
  "maxPagesPerSite": 2,
  "onlyWithWebsite": false
}
```

Export CSV/Excel/JSON, or read the dataset via the Apify API and push straight into HubSpot, Salesforce or your cold-email tool.

### FAQ

**Franchise stores route everything through call tracking and contact forms. Will I still get emails?**
Often, yes — service, parts and finance department emails frequently appear on interior pages; raise `maxPagesPerSite` to dig deeper. Independent lots publish direct emails much more often than franchise rooftops. Every row carries `emailFound` so you can split the file.

**Can I tell franchised dealers from independent used-car lots?**
Use the search segmentation ("new car dealer" vs "used car dealer"), the `category` Google assigns, and `reviewsCount` as a size proxy. OEM names in `name` (Toyota, Ford...) identify franchise points instantly.

**Does it cover motorcycle, RV, boat and powersports dealers?**
Yes — any dealer type you can type into a map search works as a keyword.

**How current is the list?**
It's generated the moment you run it, from the live business index and the dealers' current websites — closed rooftops disappear, new lots appear.

**Is this data legal to use?**
The Actor gathers public business listings and contact details dealerships publish on their own sites to attract contact. Using it for outreach is your responsibility: comply with CAN-SPAM, TCPA rules for calls/texts, and GDPR where applicable.

**Dealer groups own multiple rooftops. Are they deduplicated?**
Each rooftop (physical location) is one lead — which is usually what vendors want, since decisions differ per store. Group them downstream by matching website domains.

**What's the ceiling per search?**
About 120 businesses per query — a map-search limit. That's why statewide files use one query per city.

**What do I pay if a search returns nothing?**
Only the $0.01 start. Widen the segment or move to a bigger market and run again.

### More by this author

- [B2B Leads Finder](https://apify.com/renzomacar/b2b-leads-finder) — the any-industry engine this is built on.
- [Website Contact Finder](https://apify.com/renzomacar/website-contact-finder) — bulk contact extraction from dealer URLs you already have.
- [Email Verifier](https://apify.com/renzomacar/email-verifier) — verify the file before your campaign.

### RV, boat, motorcycle and powersports dealers

The dealership types field is a free list, not a fixed menu — whatever you type is searched. Beyond car lots, the recreational-vehicle world is a separate industry with separate software, separate F\&I products and almost no ready-made lead lists:

```
rv dealer in Bend, OR
boat dealer in Portland, OR
marine dealership in Astoria, OR
motorcycle dealer in Salem, OR
powersports dealer in Eugene, OR
trailer dealer in Medford, OR
```

Leave the field empty and the actor sweeps the common dealership types at once; fill it and you get exactly the slice you asked for. Dealers listed under several of your terms are deduplicated before delivery.

### Finding dealerships with a reputation problem

Reputation management is one of the few things every dealer principal will take a meeting about, and the two columns that identify a prospect are in every row:

- `rating` — the Google star average, 1 to 5.
- `reviewsCount` — how many reviews that average rests on.

The pitchable segment is not simply "low rating". It is **`rating` under 4.0 with `reviewsCount` above 100**: enough volume that the store is visible, and a score bad enough that it is costing them walk-ins. A 3.6 built on nine reviews is noise; a 3.6 built on four hundred is a monthly retainer.

Sort the other way — `rating` above 4.5 with heavy review volume — and you have the stores worth approaching with anything that depends on the dealer already being competent.

### Fleet, commercial and truck dealers

```
commercial truck dealer in Dallas, TX
heavy truck dealership in Fort Worth, TX
work van dealer in Arlington, TX
bus dealer in Dallas, TX
forklift dealer in Irving, TX
```

Commercial dealers behave differently from retail lots in the data: fewer listings per metro, far better websites, and a much higher rate of a published email address because their buyers are businesses that expect to email a quote request. `contactPageUrl` is worth keeping for this segment — many route everything through a form, and that is the URL your SDR needs.

# Actor input Schema

## `location` (type: `string`):

City, region or country to search in, e.g. 'Dallas, TX', 'San Diego, CA', 'London, UK'.

## `keywords` (type: `array`):

Which dealer types to search for, one per line. Good options: 'car dealership', 'used car dealer', 'new car dealer', 'auto sales', 'truck dealership', 'motorcycle dealer', 'rv dealer', 'boat dealer'. Leave empty to search all common dealership types at once.

## `searchQueries` (type: `array`):

Full searches, one per line (e.g. 'car dealership in Dallas, TX'). When set, these override Location + dealership types. Use several queries to cover multiple cities in one run.

## `maxResults` (type: `integer`):

Maximum number of companies to find per search. One search typically yields up to ~120 companies.

## `maxPagesPerSite` (type: `integer`):

How many pages to check on each company website when hunting for emails (homepage, /contact, /about...). More pages = more emails found, slightly slower run.

## `onlyWithWebsite` (type: `boolean`):

Drop companies that have no website (they can never have an email). You are not charged for dropped companies.

## `includeGenericEmails` (type: `boolean`):

Keep every published address, including shared inboxes like info@, hello@ and contact@. Disable to drop only non-deliverable system addresses (noreply@, no-reply@, donotreply@, mailer-daemon@, postmaster@, webmaster@, hostmaster@, abuse@).

## `language` (type: `string`):

Language code for the discovery search (e.g. 'en', 'es', 'fr', 'de').

## Actor input object example

```json
{
  "location": "Dallas, TX",
  "keywords": [
    "used car dealer"
  ],
  "maxResults": 5,
  "maxPagesPerSite": 1,
  "onlyWithWebsite": false,
  "includeGenericEmails": true,
  "language": "en"
}
```

# Actor output Schema

## `leads` (type: `string`):

Car Dealer Leads Scraper results (business, website, phone, address, emails, social profiles), one item per lead in the default dataset.

# 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 = {
    "location": "Dallas, TX",
    "keywords": [
        "used car dealer"
    ],
    "maxResults": 5,
    "maxPagesPerSite": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("renzomacar/car-dealer-leads-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 = {
    "location": "Dallas, TX",
    "keywords": ["used car dealer"],
    "maxResults": 5,
    "maxPagesPerSite": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("renzomacar/car-dealer-leads-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 '{
  "location": "Dallas, TX",
  "keywords": [
    "used car dealer"
  ],
  "maxResults": 5,
  "maxPagesPerSite": 1
}' |
apify call renzomacar/car-dealer-leads-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,renzomacar/car-dealer-leads-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/BudBt2TzJiI0cg59H/builds/l0XqxO0X4QOJmiGzb/openapi.json
