# RVTrader Scraper - RV Listings, Prices, VIN & Dealer Phones (`scrapersdelight/rvtrader-scraper`) Actor

Scrape RVTrader listings (also CycleTrader, EquipmentTrader, CommercialTruckTrader, AeroTrader): price, year, make, model, class, VIN, mileage, length, dealer name and phones, location with coordinates, photos. Optional details: sleeps, slide-outs, fuel, specs, dealer address, views. No login.

- **URL**: https://apify.com/scrapersdelight/rvtrader-scraper.md
- **Developed by:** [Scrapers Delight](https://apify.com/scrapersdelight) (community)
- **Categories:** E-commerce, Lead generation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.60 / 1,000 listings

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does RVTrader Scraper do?

**RVTrader Scraper** extracts RV listings from [RVTrader.com](https://www.rvtrader.com/) and turns a location, a set of filters or any RVTrader search link into structured rows: one listing per row with price, year, make, model, class, VIN, mileage, length, the dealer's name and phone numbers, and the listing's city, state, ZIP and coordinates. Built for RV dealers, buyers, appraisers, lenders and market analysts who need inventory and pricing data without copying listings by hand.

The same engine reads the other Trader Interactive marketplaces too: **CycleTrader** (motorcycles), **EquipmentTrader** (heavy equipment), **CommercialTruckTrader** (trucks and trailers) and **AeroTrader** (aircraft). Also known as an RV Trader scraper, RVTrader API, camper / travel trailer / motorhome listings scraper.

- **Every listing field the search shows:** price, price history, year, make, model, trim, class, condition, VIN, stock number, mileage, length, photos, listing date, premium and price-reduced badges
- **Dealer contact on every dealer listing:** dealer name, dealer id, website, the listing's phone, the dealer's office line, fax, and every number the site publishes for the ad
- **Location you can map:** city, state, ZIP, latitude and longitude on every search row
- **Optional listing details:** full description, spec table, sleeps, slide-outs, fuel type, GVWR, engine, colors, videos, dealer street address, views and saves
- **Past the 400-listing window:** a large search is read in price bands automatically, so a whole state can be exported
- **No login, cookies or API key:** pick a site and filters, or paste a link from the site
- **Monitor mode:** only new listings and price changes since your last run, for a daily schedule
- **Export anywhere:** JSON, CSV, Excel, XML; schedules, webhooks, Make, Zapier, n8n, Google Sheets; the Apify API and MCP server

### What data can you get from RVTrader?

<table>
<tr><td>🔗 Listing URL and ad id (`id`)</td><td>🚐 Year, make, model, trim</td><td>🏷️ Class / type (`type`)</td></tr>
<tr><td>💲 Price, previous price, price drop</td><td>🔢 VIN (`vin`) and stock number</td><td>🛣️ Mileage, engine hours</td></tr>
<tr><td>📏 Length (ft)</td><td>🆕 Condition (New / Used)</td><td>🏪 Dealer or private seller</td></tr>
<tr><td>🏢 Dealer name, id, group, website</td><td>☎️ Listing phone, office line, fax</td><td>📍 City, state, ZIP</td></tr>
<tr><td>🌐 Latitude and longitude</td><td>🖼️ Photos and floor plan image</td><td>📅 Listed date, days listed</td></tr>
<tr><td>🛏️ Sleeps, slide-outs, bunkhouse (details)</td><td>⛽ Fuel type, GVWR, engine (details)</td><td>🏠 Dealer street address (details)</td></tr>
<tr><td>📝 Full description and spec table (details)</td><td>🎥 Videos and 360° tour</td><td>👀 Views and saves (details)</td></tr>
</table>

On a 100-listing nationwide test run, 98% of rows were dealer listings and 98% carried a dealer name and phone, 87% a price, 81% a VIN, 80% a length and 100% coordinates. Full fill rates are in the Fields table below.

### How to scrape RVTrader with RVTrader Scraper

1. [Create a free Apify account](https://console.apify.com/sign-up) — it comes with monthly free credit.
2. Open [RVTrader Scraper](https://apify.com/scrapersdelight/rvtrader-scraper) and click **Try for free**.
3. Pick the **Site** (RVTrader by default), then a **ZIP code** and radius or **States**, and any filters — or paste RVTrader search links into **Search, dealer or listing URLs**.
4. Set **Max results** and switch on **Listing details** if you need sleeps, slide-outs, fuel and the dealer's address.
5. Click **Start**. Rows stream into the dataset as they are read.
6. Open the **Storage** tab and **Export** as JSON, CSV or Excel — or schedule the run.

### ⬇️ Input

| Parameter | Type | Description |
|---|---|---|
| **🔍 What to scrape** | | |
| `site` | Select | `rvtrader` (default), `cycletrader`, `equipmenttrader`, `commercialtrucktrader`, `aerotrader`. Pasted URLs pick their own site. |
| `startUrls` | List | Search URLs (their filters are kept), dealer inventory URLs (`…?dealerid=…`) or listing URLs (`…/listing/…-5042000749`) from any of the five sites. |
| **📍 Location** | | |
| `zip`, `radius` | Text, Select | A US ZIP code and 10 to 500 miles or nationwide. Default radius `100`. |
| `states`, `city` | List, Text | US states (`TX`, `Florida`), each its own search; a city with exactly one state. Empty = the whole US. |
| **🎯 Filters** (applied by the site) | | |
| `makes`, `models`, `keyword` | List, List, Text | Names as the site shows them, e.g. `Jayco`, `Eagle`, `bunkhouse`. Several makes = any of them. |
| `types`, `categories` | List | RV class (`Travel Trailer`, `Fifth Wheel`, `Class A`, `Class B`, `Class C`, `Toy Hauler`…) and sub-category (`Super C`…). |
| `condition`, `sellerType` | Select | New / used; dealers / private sellers. Default: both. |
| `listingType` | Select | For sale (default) or for rent (EquipmentTrader and CommercialTruckTrader). |
| `minPrice`…`maxPrice`, `minYear`…`maxYear`, `minMileage`…`maxMileage`, `minLength`…`maxLength` | Integer | Ranges; `0` = no limit. |
| `minSleeps`, `minSlideouts`, `fuelTypes` | Integer, List | RV specs the site filters on. |
| `bunkhouseOnly`, `floorplanOnly`, `priceReducedOnly`, `pricedOnly` | Boolean | Site filters. Default `false`. |
| `dealerIds` | List | A dealer's whole inventory, e.g. `5000011531`. |
| `sort` | Select | Newest listed (default), featured, nearest, price, year or mileage. |
| **✂️ Refine results** | | |
| `dealerNameContains` | Text | Keep only dealers whose name contains this text. |
| `postedWithinDays` | Integer | Only listings posted in the last N days. Default `0` = any age. |
| **➕ Extra data** | | |
| `includeDetails` | Boolean | Full listing details — charged as **listing-details** per row that carries them. Default `false`. |
| `includeViewsAndSaves` | Boolean | With details: views and saves per listing (no extra charge; slower). |
| `includePrivateSellerPhones` | Boolean | A private seller's own number when they published one. Default `false`. |
| **🔁 Monitoring** | | |
| `monitorMode`, `monitorStoreName`, `resetMonitorState` | Boolean, Text, Boolean | Only listings not delivered before plus price changes. Pair with a daily schedule. |
| **📦 Output** | | |
| `maxResults` | Integer | Default `100`; `0` = no limit. |
| `maxResultsPerSearch` | Integer | Cap per search (URL, state or dealer). Default `0`. |
| `splitLargeSearches` | Boolean | Read past the site's 400-listing window in price bands. Default `true`. |
| `compact` | Boolean | Core fields only, sized for AI agents and MCP. |
| **⚙️ Advanced** | | |
| `maxConcurrency`, `proxyConfiguration` | Integer, Proxy | Leave the proxy as is; your own proxy URLs are used first when you add them. |

#### Input JSON

```json
{
  "site": "rvtrader",
  "states": ["FL"],
  "types": ["Class C"],
  "condition": "used",
  "maxPrice": 150000,
  "maxResults": 200,
  "includeDetails": true
}
```

#### Use the filters or paste a link — both work

Filters build the same search the site's own filter panel builds. A pasted link keeps everything you chose on the site, including filters this form does not list. **Do:** paste `https://www.rvtrader.com/rvs-for-sale?make=Jayco%7C2272274&state=Texas%7CTX`. **Don't:** paste a page title link such as `https://www.rvtrader.com/Jayco/rvs-for-sale` with nothing after `?` — the `/Jayco/` part is only a page name; the run warns and searches everything.

#### Leave "Newest listed" on for big exports

The site's "Featured" order repeats paid ads on every page (416 rows across 10 pages held only 334 different listings in our test). Newest-first serves 400 different listings per search, and the price-band split relies on it.

### ⬆️ Output

Every listing becomes one dataset item. A real row from a Florida search with **Listing details** on (shortened):

```json
{
  "site": "RVTrader",
  "id": "5042628024",
  "url": "https://www.rvtrader.com/listing/2023-Jayco-SENECA+XT+32U-5042628024",
  "title": "2023 Jayco SENECA XT 32U",
  "type": "Class C",
  "condition": "Used",
  "price": 149995,
  "vin": "1FDFF6LT5NDA25599",
  "length": 34,
  "sellerType": "Dealer",
  "dealerName": "General RV Center - Fort Pierce",
  "phone": "7724484582",
  "officePhone": "7724484582",
  "city": "Fort Pierce",
  "state": "FL",
  "zip": "34945",
  "latitude": 27.43413,
  "longitude": -80.5341,
  "photoCount": 36,
  "listedAt": "2026-10-14T04:41:15.000Z",
  "sleepingCapacity": 6,
  "slideouts": 2,
  "dealerAddress": "2398 Peters Road Fort Pierce FL 34945"
}
```

#### Fields and how often they are filled

Search fields: a 100-listing nationwide run (newest first) and a 1,210-listing New Mexico run (every listing in the state). Details fields: a 100-listing Georgia run with details on (newest first; 83 dealer listings) and a 42-listing Orlando run with views and saves.

| Field | What it is | Fill (100 / 1,210) |
|---|---|---|
| `id`, `url`, `title`, `year`, `make`, `model`, `type`, `condition` | The listing | 100% / 100% |
| `price` | Asking price, USD (null = no price shown) | 87% / 98% |
| `previousPrice`, `priceDrop`, `priceChangedAt` | The site's last price change | 2% / 33% |
| `vin` | VIN / serial number | 81% / 86% |
| `stockNumber` | Dealer stock number | 96% / 91% |
| `trim` | Trim / floor plan code | 88% / 90% |
| `mileage` | Odometer miles (motorized units) | 34% / 12% |
| `length` | Length, feet | 80% / 60% |
| `dealerName`, `dealerId`, `dealerWebsite`, `dealerPhones` | Dealer (dealer listings only) | 98% / 93% |
| `phone` | The listing's contact number | 97% / 66% |
| `officePhone` | The dealer's office line | 65% / 64% |
| `city`, `state`, `latitude`, `longitude` | Location | 100% / 100% |
| `photos` | Photo URLs (brand-new ads can have none yet) | 70% / 99% |
| `floorplanUrl` | Floor plan image | 0% / 39% |
| `listedAt`, `daysListed` | Listing date | 100% / 100% |
| `description`, `specs` | Full text and spec table (details) | 100% |
| `sleepingCapacity` | Sleeps (details) | 80% |
| `slideouts` | Slide-outs (details) | 66% |
| `fuelType` | Fuel type (details; motorized units only - towables have none) | 18% |
| `grossVehicleWeight` | GVWR, lbs (details) | 61% |
| `dealerAddress` | Dealer street address (details; every dealer listing, never private ones) | 83% |
| `views`, `saves` | Views and saves (details + views and saves) | saves 93%; views null on listings posted the same day (0 of 42), counted on older ones (e.g. 683) |

Every field in the dataset schema was seen filled in real answers from the five sites. CycleTrader, EquipmentTrader, CommercialTruckTrader and AeroTrader rows use the same fields; their verticals fill `hours`, `cabType`, `color`, `horsePower`, `transmission`, `wheelbase`, `airframeTime`, `avionics` and the rental prices.

### How can I use RVTrader data?

- 🏪 **RV dealers:** price your units against every comparable listing within 200 miles; watch competitors' inventory by dealer id.
- 📈 **Market analysts:** track asking prices, price drops and days on market by class, make and state.
- 🏦 **Lenders and insurers:** check a VIN's asking price and mileage against the market.
- 🔁 **Wholesalers and buyers:** a daily monitor of new private-seller and price-reduced listings.
- 📇 **Sales teams selling to dealers:** a list of RV, powersports, equipment and truck dealers with phones, websites and addresses.
- 🤖 **AI agents:** compact rows through the MCP server for "find me a used Class C under $150k near Tampa".

### How much does it cost to scrape RVTrader?

RVTrader Scraper is priced per listing: **$0.0036 per listing** ($3.60 per 1,000) with no start fee. **Listing details** add **$0.0054** per listing that carries them. Views and saves are not charged.

| Listings | Without details | With details |
|---|---|---|
| 30 | $0.108 | $0.27 |
| 100 | $0.36 | $0.90 |
| 1,000 | $3.60 | $9.00 |

Apify's free plan includes monthly credit. A search that matches nothing costs nothing; duplicates, unchanged monitor rows and filtered-out rows are not charged.

### Integrations, API, scheduling and MCP

Run RVTrader Scraper on a [schedule](https://docs.apify.com/platform/schedules) with `monitorMode` on to get only new listings and price changes each day. Send results to Google Sheets, Slack, Make, Zapier or n8n, or trigger a webhook when a run finishes. Call it from code with the [Apify API](https://apify.com/scrapersdelight/rvtrader-scraper/api/python) (Python or [JavaScript](https://apify.com/scrapersdelight/rvtrader-scraper/api/javascript)) or from an AI agent through the [MCP server](https://apify.com/scrapersdelight/rvtrader-scraper/api/mcp).

### More vehicle and equipment scrapers

- [NHTSA Vehicle Safety Scraper](https://apify.com/scrapersdelight/nhtsa-vehicle-safety-scraper) — recalls and complaints for the VINs you export here
- [Cars.com Dealer Scraper](https://apify.com/scrapersdelight/cars-com-dealer-scraper) — car dealers with phones and websites
- [CarGurus Dealer Scraper](https://apify.com/scrapersdelight/cargurus-dealer-scraper) — car dealer leads and ratings
- [IronPlanet Lot Scraper](https://apify.com/scrapersdelight/ironplanet-lot-scraper) — heavy-equipment auction lots with serials
- [FMCSA Carrier Scraper](https://apify.com/scrapersdelight/fmcsa-carrier-scraper) — trucking companies from the federal register
- All our actors: [ScrapersDelight on Apify](https://apify.com/scrapersdelight)

### Limits and empty runs

- **400 listings per search** is the site's own window; `splitLargeSearches` reads past it in price bands (1,210 of 1,210 New Mexico listings in our test, 39 requests, 31 seconds).
- **Speed:** search pages carry 42 listings each, so 1,000 listings take about 30 requests (26 seconds on our test machine). The site limits how fast one visitor may ask, so the actor stays under 60 requests per 2 minutes per site: listing details (one request per listing) ran 100 listings in 2 minutes 19 seconds in our test. Views and saves add two requests per listing.
- **Human verification:** if the site still asks for it, the run stops cleanly with what it has (delivered rows are kept and charged; nothing else is).
- **Listing URLs** (pasted one by one) come from the listing's own data, which has no coordinates: `latitude`/`longitude` are null on those rows.
- **Private sellers:** no dealer fields, and the phone only with `includePrivateSellerPhones`.
- An empty run means the site has no listing for that search; check the filters on the site with the same values.

### ❓ FAQ

#### How much does RVTrader Scraper cost?

$0.0036 per listing, plus $0.0054 per listing when Listing details is on, with no start fee. 1,000 listings cost $3.60 without details.

#### How many listings can RVTrader Scraper get?

As many as the search holds: the site shows 400 per search, and the actor splits larger searches into price bands. A nationwide RVTrader search holds about 195,000 listings.

#### Can RVTrader Scraper scrape CycleTrader, EquipmentTrader, CommercialTruckTrader or AeroTrader?

Yes. Pick the site in the form or paste a link from it. All five use the same fields.

#### Does RVTrader Scraper return the dealer's phone number?

Yes, for dealer listings: the number the listing shows, the dealer's office line and fax when the site has them, and every number the site lists for the ad.

#### Can I get sleeps, slide-outs and fuel type with RVTrader Scraper?

Yes, switch on Listing details. Those fields come from each listing's own page data.

#### Can I monitor new RVTrader listings with RVTrader Scraper?

Yes. Turn on `monitorMode`, give the monitor a store name and schedule the run daily: you get new listings and price changes only.

#### Can I use RVTrader Scraper with the Apify API or MCP?

Yes. Every run is available through the Apify API (Python, JavaScript, HTTP) and the MCP server for AI agents.

#### Do I need an RVTrader account, login or API key?

No. RVTrader Scraper reads the same public listings any visitor sees.

#### Why did RVTrader Scraper return no listings?

The search matched nothing (check the same filters on the site), a pasted link had no filters in its query string, or the site asked for human verification before the first page. The run's summary record (`RUN_SUMMARY`) says which.

#### Your feedback

Missing a field or a filter? Open an issue on the [Issues tab](https://apify.com/scrapersdelight/rvtrader-scraper/issues/open) and tell us what you need.

# Actor input Schema

## `site` (type: `string`):

Which Trader Interactive marketplace the filters below search. Pasted URLs pick their own site.

## `startUrls` (type: `array`):

URLs from rvtrader.com, cycletrader.com, equipmenttrader.com, commercialtrucktrader.com or aerotrader.com: a search (its filters are kept), a dealer inventory page (…?dealerid=123) or a listing (…/listing/…-5042000749). The filters below apply to the site + location search, not to URLs.

## `zip` (type: `string`):

US ZIP code to search around, e.g. "75201". Used with the radius below.

## `radius` (type: `string`):

Miles around the ZIP code.

## `states` (type: `array`):

US states, code or name, e.g. "TX", "Florida". Each state is its own search. Ignored when a ZIP code is set.

## `city` (type: `string`):

City name, with exactly one state above, e.g. "Dallas" + "TX".

## `makes` (type: `array`):

Manufacturers as the site names them, e.g. "Jayco", "Grand Design", "Harley-Davidson", "Caterpillar". Several = any of them.

## `models` (type: `array`):

Model names, e.g. "Eagle", "Jay Flight". Best combined with a make.

## `keyword` (type: `string`):

Free-text keyword the site searches for, e.g. "bunkhouse", "outdoor kitchen".

## `types` (type: `array`):

RVTrader classes: "Travel Trailer", "Fifth Wheel", "Class A", "Class B", "Class C", "Toy Hauler", "Truck Camper", "Pop Up Camper", "Destination Trailer". Other sites: their own class names, e.g. "Motorcycle", "EARTHMOVING", "Single Engine Prop".

## `categories` (type: `array`):

Sub-categories as the site names them, e.g. "Super C", "Fifth Wheel Toy Hauler", "Loaders", "Dump Truck".

## `condition` (type: `string`):

New, used or both.

## `sellerType` (type: `string`):

Dealers, private sellers or both.

## `listingType` (type: `string`):

Rentals exist on EquipmentTrader and CommercialTruckTrader only.

## `minPrice` (type: `integer`):

Lowest asking price. 0 = no limit.

## `maxPrice` (type: `integer`):

Highest asking price. 0 = no limit.

## `minYear` (type: `integer`):

Oldest model year, e.g. 2018. 0 = no limit.

## `maxYear` (type: `integer`):

Newest model year. 0 = no limit.

## `minMileage` (type: `integer`):

Lowest odometer miles (motorized units). 0 = no limit.

## `maxMileage` (type: `integer`):

Highest odometer miles, e.g. 40000. 0 = no limit.

## `minLength` (type: `integer`):

Shortest length in feet (RVs). 0 = no limit.

## `maxLength` (type: `integer`):

Longest length in feet (RVs). 0 = no limit.

## `minSleeps` (type: `integer`):

Minimum sleeping capacity (RVs). 0 = no limit.

## `minSlideouts` (type: `integer`):

Minimum number of slide-outs (RVs). 0 = no limit.

## `fuelTypes` (type: `array`):

e.g. "Diesel", "Gasoline" (motorized units). Several = any of them.

## `bunkhouseOnly` (type: `boolean`):

RVs with a bunkhouse.

## `floorplanOnly` (type: `boolean`):

Listings that include a floor plan image.

## `priceReducedOnly` (type: `boolean`):

Listings the site marks as price reduced.

## `pricedOnly` (type: `boolean`):

Skip "call for price" listings.

## `dealerIds` (type: `array`):

A dealer's whole inventory: the number in a dealer page URL (…?dealerid=5000011531) or the dealerId field. Each id is its own search.

## `sort` (type: `string`):

Result order. Newest first gives the most distinct listings per search ("Featured" repeats paid ads on every page).

## `dealerNameContains` (type: `string`):

Keep only listings whose dealer name contains this text, e.g. "Camping World". Private listings are dropped.

## `postedWithinDays` (type: `integer`):

Only listings posted in the last N days, e.g. 1 for a daily schedule. 0 = any age. Pairs with "Newest listed" sort, which stops early.

## `includeDetails` (type: `boolean`):

Full description, spec table, sleeps, slide-outs, fuel, GVWR, engine, colors, videos, dealer street address and logo, days listed. One extra request per listing; billed as the listing-details event per row that carries them.

## `includeViewsAndSaves` (type: `boolean`):

With listing details: also read how many times each listing was viewed and saved (two small extra requests per listing, no extra charge; slower on large runs).

## `includePrivateSellerPhones` (type: `boolean`):

Include the phone number a private seller published on the ad. Off: private rows ship without a phone (dealer numbers are always included).

## `monitorMode` (type: `boolean`):

Deliver only listings this monitor has not delivered before (changeType NEW) and those whose price changed (PRICE_CHANGED, with previousRunPrice). Unchanged listings are skipped and not billed.

## `monitorStoreName` (type: `string`):

Named key-value store that remembers delivered listings. Use one name per monitored search. Empty = "rvtrader-monitor-state".

## `resetMonitorState` (type: `boolean`):

Forget what the monitor store remembers before this run (every listing counts as new).

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

Stop after this many listings in total. The site shows 400 listings per search; with "Split large searches" on, more are read in price bands. 0 = no limit.

## `maxResultsPerSearch` (type: `integer`):

Cap per search (each URL, state or dealer id). 0 = only the total cap.

## `splitLargeSearches` (type: `boolean`):

Past the 400-listing window, read the search in price bands until every band fits, so a search for 20,000 listings can be read in full.

## `compact` (type: `boolean`):

Core fields only (id, title, price, specs that matter, seller contact, location) - smaller rows for AI / MCP pipelines.

## `maxConcurrency` (type: `integer`):

Listing-detail requests in flight at once.

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

Leave as is: the actor starts on a direct connection and moves to its own US residential route only when the site refuses it. Your own proxy URLs are used first when you add them.

## Actor input object example

```json
{
  "site": "rvtrader",
  "radius": "100",
  "condition": "any",
  "sellerType": "any",
  "listingType": "sale",
  "minPrice": 0,
  "maxPrice": 0,
  "minYear": 0,
  "maxYear": 0,
  "minMileage": 0,
  "maxMileage": 0,
  "minLength": 0,
  "maxLength": 0,
  "minSleeps": 0,
  "minSlideouts": 0,
  "bunkhouseOnly": false,
  "floorplanOnly": false,
  "priceReducedOnly": false,
  "pricedOnly": false,
  "sort": "newest",
  "postedWithinDays": 0,
  "includeDetails": false,
  "includeViewsAndSaves": false,
  "includePrivateSellerPhones": false,
  "monitorMode": false,
  "resetMonitorState": false,
  "maxResults": 30,
  "maxResultsPerSearch": 0,
  "splitLargeSearches": true,
  "compact": false,
  "maxConcurrency": 4,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

One item per listing.

## `summary` (type: `string`):

Per-search totals, bands, coverage and status; filtered, duplicate and unchanged counts; details read; routes used and their cost.

# 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 = {
    "site": "rvtrader",
    "sort": "newest",
    "maxResults": 30,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapersdelight/rvtrader-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 = {
    "site": "rvtrader",
    "sort": "newest",
    "maxResults": 30,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapersdelight/rvtrader-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 '{
  "site": "rvtrader",
  "sort": "newest",
  "maxResults": 30,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call scrapersdelight/rvtrader-scraper --silent --output-dataset

```

## MCP server setup

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