# Rvshare Listings Extractor (`kawsar/rvshare-listings-extractor`) Actor

RVshare Listings Extractor pulls RV rentals from any RVshare location search and returns prices, ratings, specs, and photos as structured data you can export to JSON, CSV, or Excel.

- **URL**: https://apify.com/kawsar/rvshare-listings-extractor.md
- **Developed by:** [Kawsar](https://apify.com/kawsar) (community)
- **Categories:** Travel, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 1,000 results

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

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## RVshare Listings Extractor

Turn any RVshare location search into a clean, structured dataset of RV rentals. Search for RVs on RVshare, paste the result URL, and this actor collects every listing with its price, rating, specifications, and images. It pages through the results for you and returns exactly as many listings as you ask for.

Built for pricing analysts, market researchers, RV owners checking the competition, and travel businesses that need RV rental data in bulk without copying it by hand.

### Why use this actor

Browsing RVshare one page at a time is slow, and the details you want are scattered across each card. This actor reads the same public search results you see in your browser and returns them as rows you can sort, filter, and export. Point it at a city, tell it how many listings you want, and get a spreadsheet-ready dataset in a single run.

- Extract full RV rental details from any RVshare search
- Cover several cities in one run by adding multiple search URLs
- Automatic pagination, capped by the number of listings you request
- Duplicate listings are removed across pages and searches
- Export to JSON, CSV, Excel, HTML, or via the API

### What it extracts

Every RV on a search page becomes one dataset record with these fields:

| Field | Description |
|-------|-------------|
| `listingId` | RVshare listing identifier |
| `listingTitle` | Listing headline |
| `detailUrl` | Direct link to the full listing page |
| `make` | Brand and model name |
| `model` | Model name |
| `year` | Model year |
| `nightlyPrice` | Price per night |
| `currency` | Price currency (for example USD) |
| `rating` | Average star rating |
| `reviewCount` | Number of reviews |
| `sleeps` | Sleeping capacity |
| `distance` | Distance from the searched location |
| `availability` | Availability status |
| `images` | Full list of listing image URLs |
| `primaryImage` | First image, handy for previews |
| `searchLocation` | Location label for the source search |
| `searchUrl` | The search URL this listing came from |
| `scrapedAt` | UTC timestamp of the run |

Some fields can be empty when a listing does not publish them. A brand new listing with no reviews, for example, returns an empty `rating` and `reviewCount`.

### Input

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| Search URLs | Array | Yes | one example | One or more RVshare `rv-rental` search URLs. This is the main input. |
| Max items | Integer | No | 20 | Total listings to collect across all searches. The actor pages through results automatically until it hits this number. Each page holds about 20 listings. |
| Request timeout (seconds) | Integer | No | 45 | Per-request timeout. |

#### How to get a search URL

1. Open [rvshare.com](https://rvshare.com) and search for RV rentals in the location you want.
2. Copy the full URL from your browser address bar once the results load.
3. Paste it into the **Search URLs** field. Add more than one to cover several cities in the same run.

A typical search URL looks like this:

````

https://rvshare.com/rv-rental?location=Palm Bay, FL\&lat=28.0344621\&lng=-80.5886646\&place\_id=ChIJN7jtdDQN3ogRToQtTSqDVrI

````

#### Example input

```json
{
  "searchUrls": [
    { "url": "https://rvshare.com/rv-rental?location=Palm Bay, FL&lat=28.0344621&lng=-80.5886646&place_id=ChIJN7jtdDQN3ogRToQtTSqDVrI" }
  ],
  "maxItems": 20,
  "requestTimeoutSecs": 45
}
````

### Output

Each record is pushed to the dataset as soon as it is parsed. Here is a sample:

```json
{
  "listingId": "1495259",
  "listingTitle": "New Catalina rv is ready for your next adventure.",
  "detailUrl": "https://rvshare.com/rvs/details/1495259",
  "make": "Coachmen RV Catalina Summit Series 8 231MKS",
  "model": "Coachmen RV Catalina Summit Series 8 231MKS",
  "year": 2024,
  "nightlyPrice": 99.0,
  "currency": "USD",
  "rating": 4.9,
  "reviewCount": 11,
  "sleeps": 6,
  "distance": "0.5 miles from Palm Bay, FL",
  "availability": "InStock",
  "primaryImage": "https://imagedelivery.net/.../6391f4d0...jpeg/width=320,height=205,fit=cover",
  "images": ["https://imagedelivery.net/..."],
  "searchLocation": "RV Rental Palm Bay, FL",
  "searchUrl": "https://rvshare.com/rv-rental?location=Palm Bay, FL",
  "scrapedAt": "2026-07-14T10:21:30+00:00"
}
```

#### Exporting your data

From the run's **Dataset** tab you can download the results as JSON, CSV, Excel, or HTML. You can also pull them programmatically:

```
https://api.apify.com/v2/datasets/{datasetId}/items?format=csv
```

### How to run it

#### From the Apify Console

Open the actor, fill in one or more search URLs, set **Max items**, and click **Start**. Watch the log as it pages through the results, then open the **Dataset** tab to view or export what it found.

### Use cases

- **Price benchmarking.** Compare nightly rates across a region before listing your own RV.
- **Competitor tracking.** Watch how nearby rentals price and rate over time.
- **Market research.** Study RV supply, demand, and pricing in specific cities.
- **Inventory building.** Assemble a dataset of available RVs for a booking or travel product.
- **Reporting and dashboards.** Feed clean listing data into your own analytics.

### Tips

- Add several search URLs to gather listings from multiple cities in one run.
- Raise **Max items** to go deeper; the actor keeps paging until it reaches your number or runs out of results.
- Keep **Max items** low when you only need a quick sample, so runs finish fast.
- The `distance` field reflects how far each RV is from the location in that search URL, so it changes with the search you paste.

### Frequently asked questions

**How many listings can I get per search?**
As many as the search returns, up to the **Max items** limit (maximum 1000). The actor requests additional result pages automatically until it reaches your target or there are no more listings.

**Do duplicates get removed?**
Yes. Listings are deduplicated by their listing ID across every page and every search URL in the run.

**Why is `rating` or `distance` sometimes empty?**
Not every listing publishes a rating, and not every search includes a distance. When the source does not provide a value, the field is left empty rather than guessed.

**Can I scrape more than one city at once?**
Yes. Add a search URL for each city to the **Search URLs** field and they are all processed in the same run.

### Notes

This actor collects publicly available listing information from RVshare search result pages. Use the data responsibly and in line with RVshare's terms of use and applicable laws.

# Actor input Schema

## `searchUrls` (type: `array`):

RVshare rv-rental search result URLs to extract listings from. Open RVshare, search by location, copy the browser URL, and paste it here. You can add several searches.

## `maxItems` (type: `integer`):

Maximum number of listings to collect across all searches. The actor pages through results automatically until it reaches this number. Each result page holds about 20 listings.

## `requestTimeoutSecs` (type: `integer`):

Per-request timeout in seconds.

## Actor input object example

```json
{
  "searchUrls": [
    {
      "url": "https://rvshare.com/rv-rental?location=Palm Bay, FL&lat=28.0344621&lng=-80.5886646&place_id=ChIJN7jtdDQN3ogRToQtTSqDVrI"
    }
  ],
  "maxItems": 20,
  "requestTimeoutSecs": 45
}
```

# 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 = {
    "searchUrls": [
        {
            "url": "https://rvshare.com/rv-rental?location=Palm Bay, FL&lat=28.0344621&lng=-80.5886646&place_id=ChIJN7jtdDQN3ogRToQtTSqDVrI"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kawsar/rvshare-listings-extractor").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 = { "searchUrls": [{ "url": "https://rvshare.com/rv-rental?location=Palm Bay, FL&lat=28.0344621&lng=-80.5886646&place_id=ChIJN7jtdDQN3ogRToQtTSqDVrI" }] }

# Run the Actor and wait for it to finish
run = client.actor("kawsar/rvshare-listings-extractor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchUrls": [
    {
      "url": "https://rvshare.com/rv-rental?location=Palm Bay, FL&lat=28.0344621&lng=-80.5886646&place_id=ChIJN7jtdDQN3ogRToQtTSqDVrI"
    }
  ]
}' |
apify call kawsar/rvshare-listings-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=kawsar/rvshare-listings-extractor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Rvshare Listings Extractor",
        "description": "RVshare Listings Extractor pulls RV rentals from any RVshare location search and returns prices, ratings, specs, and photos as structured data you can export to JSON, CSV, or Excel.",
        "version": "0.0",
        "x-build-id": "BcWC8rBsnxIO5by9T"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/kawsar~rvshare-listings-extractor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-kawsar-rvshare-listings-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/kawsar~rvshare-listings-extractor/runs": {
            "post": {
                "operationId": "runs-sync-kawsar-rvshare-listings-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/kawsar~rvshare-listings-extractor/run-sync": {
            "post": {
                "operationId": "run-sync-kawsar-rvshare-listings-extractor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "searchUrls"
                ],
                "properties": {
                    "searchUrls": {
                        "title": "Search URLs",
                        "type": "array",
                        "description": "RVshare rv-rental search result URLs to extract listings from. Open RVshare, search by location, copy the browser URL, and paste it here. You can add several searches.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of listings to collect across all searches. The actor pages through results automatically until it reaches this number. Each result page holds about 20 listings.",
                        "default": 20
                    },
                    "requestTimeoutSecs": {
                        "title": "Request timeout (seconds)",
                        "minimum": 5,
                        "maximum": 120,
                        "type": "integer",
                        "description": "Per-request timeout in seconds.",
                        "default": 45
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
