# Car Dealer Reviews & Reputation Monitor (DealerRater) (`fayoussef/dealer-reputation-monitor`) Actor

Pull every DealerRater review for any car dealership by name or URL. Get the star rating broken down by price transparency, trade-in, finance and service time, plus the salesperson each review names. Monitor mode returns only reviews new since the last run, so a schedule becomes an alert feed.

- **URL**: https://apify.com/fayoussef/dealer-reputation-monitor.md
- **Developed by:** [youssef farhan](https://apify.com/fayoussef) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.80 / 1,000 review scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

### What does Car Dealer Reputation Monitor do?

**Car Dealer Reputation Monitor pulls every DealerRater review for any car dealership.** Type a dealership name such as `Hendrick Honda`, or paste a [DealerRater](https://www.dealerrater.com) dealer URL, and it returns **the full review text, the star rating, the date, the reviewer, and the sub-scores behind that rating**: price transparency, trade-in experience, purchase time, finance experience, customer service, friendliness, pricing, quality of work and service time.

It also returns something no general review source carries: **the name of the employee each reviewer dealt with**. That is what turns review data into something a general manager can act on, rather than a number on a dashboard.

Turn on **Only reviews new since the last run** and schedule it, and the Actor becomes an alert feed. Each run returns only the reviews that appeared since the previous one, so a daily schedule tells you about a new one-star review the day it lands instead of re-downloading ten thousand you have already read.

Runs on Apify, so you get a REST API, scheduling, webhooks, integrations (Google Sheets, Slack, Make, Zapier), monitoring, residential proxy rotation and exports to JSON, CSV, Excel or Google Sheets.

### Why use this DealerRater review scraper?

- **Reputation monitoring for a dealer group.** Watch every rooftop you own and get told the moment a bad review lands.
- **Competitor benchmarking.** Compare your scores against the dealers you actually lose deals to, broken down by what customers were rating.
- **Diagnosing a falling score.** A dealer at 4.2 because of price transparency has a completely different problem from one at 4.2 because of service time. Only the sub-scores separate them.
- **Sales staff coaching and recognition.** Reviews name the salesperson. Group by employee and the floor's strengths and problems become visible.
- **Complaint triage.** Set **Maximum rating** to 2 and pull only the reviews that need a response.
- **Reputation SaaS and agency reporting.** A clean, dated, dealer-keyed review feed to build client reporting on.
- **Acquisition due diligence.** Read a target dealership's real customer history before buying it.
- **AI agents and sentiment analysis.** Flat rows with the full review text, ready for an LLM pipeline.

### How to use Car Dealer Reputation Monitor

1. Click **Try for free**.
2. Put dealership names into the **Dealerships** field, one per line. `Hendrick Honda` is enough. A DealerRater dealer URL works too and goes straight to that exact store.
3. Set **Maximum reviews per dealership**. Reviews come newest first.
4. Click **Start**. The log shows which dealerships the name matched, so you can see exactly which store you got.
5. Open the **Output** tab and export as JSON, CSV, Excel or HTML, or read it from the API.

For a chain name that matches several rooftops, raise **Dealerships per name searched** to cover the whole group in one run.

To run it as an alert feed: turn on **Only reviews new since the last run**, set a **Watchlist name**, and schedule it daily.

No API keys and no proxy setup are required.

### Input

Set everything in the **Input** tab. Only **Dealerships** is required.

| Field | What it does |
|---|---|
| `dealers` | Dealership names or DealerRater dealer URLs, one per line. |
| `maxReviewsPerDealer` | Stop after N reviews per dealership, newest first. Default 100. |
| `maxDealersPerSearch` | When a name matches several stores, how many to read. |
| `reviewsSince` | Only reviews on or after this `YYYY-MM-DD` date. Also stops the run early. |
| `onlyNewSinceLastRun` | Return only reviews not seen in a previous run. |
| `monitorKey` | Names the memory of which reviews have already been returned. |
| `minRating` / `maxRating` | Keep only reviews inside a star range. Set `maxRating` to 2 for complaints only. |
| `includeDealerSummary` | Add one row per dealership with its overall rating, lifetime review count, address and phone. |
| `proxyConfiguration` | Optional. Defaults to Apify Proxy residential. |

```json
{
    "dealers": [
        "Hendrick Honda",
        "https://www.dealerrater.com/dealer/Carvana-dealer-reviews-106904/"
    ],
    "maxReviewsPerDealer": 100,
    "maxDealersPerSearch": 3,
    "onlyNewSinceLastRun": true,
    "monitorKey": "my-group",
    "includeDealerSummary": true
}
```

### Output

One row per review, plus an optional summary row per dealership. Download as JSON, HTML, CSV or Excel, or read it straight from the API.

```json
{
    "source": "DealerRater",
    "dealerId": "22721",
    "dealerName": "Hendrick Honda",
    "dealerCity": "Charlotte",
    "dealerState": "NC",
    "reviewId": "31912088",
    "reviewUrl": "https://www.dealerrater.com/consumer/social/31912088",
    "reviewDate": "August 29, 2026",
    "reviewDateIso": "2026-08-29",
    "rating": 5,
    "title": "Best car buying experience I have had",
    "review": "Mike walked me through every number before I signed anything...",
    "author": "JDAVIS22",
    "visitType": "SALES VISIT - USED",
    "recommends": "Yes",
    "employeesWorkedWith": "Mike Torres",
    "ratingCustomerService": 5,
    "ratingFriendliness": 5,
    "ratingPriceTransparency": 5,
    "ratingTradeIn": 5,
    "ratingPurchaseTime": 4,
    "ratingFinance": 5,
    "scrapedAt": "2026-09-04T18:42:19Z"
}
```

The dataset has three ready-made views: **Reviews**, **Score breakdown** and **Dealership summary**.

Summary rows carry `rowType: "dealer"`, so filtering on that field separates them from the review rows.

### What you get that a star average does not

| Field | Why it matters |
|---|---|
| `ratingPriceTransparency`, `ratingTradeIn`, `ratingPurchaseTime`, `ratingFinance` | The sales sub-scores. These tell you which step of the deal is costing you the rating. |
| `ratingCustomerService`, `ratingFriendliness`, `ratingQualityOfWork`, `ratingServiceTime` | The service sub-scores, for the fixed-ops side of the business. |
| `employeesWorkedWith` | The staff the customer named. Group by it to see the floor. |
| `visitType` | Sales or service, and new or used. The first cut most reputation analysis needs. |
| `recommends` | Whether the customer said they would recommend the dealership, separate from the stars. |
| `reviewDateIso` | A sortable `YYYY-MM-DD` date, not the display string. |

### How much does it cost?

Pay per event. You are charged for what you actually receive:

- **Review scraped**, per review row returned. Reviews filtered out by your rating range or already seen in a previous run are not charged.
- **Dealership profiled**, per summary row, only when `includeDealerSummary` is on.

A dealership name that matches nothing produces no rows and costs nothing beyond the run itself.

### Is it legal to scrape dealer reviews?

The Actor reads only publicly published review pages that any visitor can open. Reviews are posted publicly under display names rather than real identities, and no login or private data is touched. Public data collection is generally lawful, but you are responsible for how you use what you collect, including any rules on republishing review text. If you are unsure, take legal advice.

### Support

A dealership not matching, or a field you need that is not here? **youssefarhan24@gmail.com**. Want another review source covered? [Suggest it here](https://automationbyexperts.com/apify).

# Actor input Schema

## `dealers` (type: `array`):

The dealerships to read, one per line. Type the dealership name, for example "Hendrick Honda", and it is looked up for you. Paste a DealerRater dealer URL instead to go straight to one exact store.

## `maxReviewsPerDealer` (type: `integer`):

Stop after this many reviews from each dealership, newest first.

## `maxDealersPerSearch` (type: `integer`):

When a name matches several stores, how many of them to read. A chain name like "Hendrick Honda" matches more than one rooftop, so raise this to cover a whole group in one run.

## `reviewsSince` (type: `string`):

Only return reviews posted on or after this date, as YYYY-MM-DD. Leave empty for no date limit. Reviews are read newest first, so this also stops the run early instead of paging through years of history.

## `onlyNewSinceLastRun` (type: `boolean`):

Return only reviews that were not returned by a previous run. Turn this on and schedule the Actor to get an alert feed of incoming reviews instead of re-downloading the same history every time.

## `monitorKey` (type: `string`):

Names the memory of which reviews have already been returned. Keep it the same across runs to keep watching the same dealerships, or use a different name for a second, separate watchlist.

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

Drop reviews rated below this, out of 5. Leave empty for all of them.

## `maxRating` (type: `integer`):

Drop reviews rated above this, out of 5. Set it to 2 to pull only the complaints.

## `includeDealerSummary` (type: `boolean`):

Add one row per dealership carrying its overall rating, lifetime review count, address and phone, alongside the individual review rows.

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

Optional. Defaults to Apify Proxy residential with a US exit, which is what these US sites require: a non-US address is refused with HTTP 403. Change it only if you know you need a different proxy or country.

## Actor input object example

```json
{
  "dealers": [
    "Hendrick Honda",
    "https://www.dealerrater.com/dealer/Carvana-dealer-reviews-106904/"
  ],
  "maxReviewsPerDealer": 100,
  "maxDealersPerSearch": 1,
  "onlyNewSinceLastRun": false,
  "monitorKey": "dealer-reviews",
  "includeDealerSummary": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `reviews` (type: `string`):

Every review found, with its overall score, the sub-scores behind it, the employee named and the full review text.

# 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 = {
    "dealers": [
        "Hendrick Honda",
        "https://www.dealerrater.com/dealer/Carvana-dealer-reviews-106904/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("fayoussef/dealer-reputation-monitor").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 = { "dealers": [
        "Hendrick Honda",
        "https://www.dealerrater.com/dealer/Carvana-dealer-reviews-106904/",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("fayoussef/dealer-reputation-monitor").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 '{
  "dealers": [
    "Hendrick Honda",
    "https://www.dealerrater.com/dealer/Carvana-dealer-reviews-106904/"
  ]
}' |
apify call fayoussef/dealer-reputation-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fayoussef/dealer-reputation-monitor"
        }
    }
}

```

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/7czpQnazmcfRQhnyJ/builds/bQPajlYCORobvXT7x/openapi.json
