# Rentalcars Listings Scraper (`piotrv1001/rentalcars-listings-scraper`) Actor

The Rentalcars Listings Scraper extracts live car rental offers from Rentalcars.com for any pick-up location and date range, capturing vehicle specs, total and daily prices, fees, deposits, extras, suppliers and branch ratings — ideal for rate monitoring and travel market research.

- **URL**: https://apify.com/piotrv1001/rentalcars-listings-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** Travel, Automation, Developer tools
- **Stats:** 1 total users, 0 monthly users, 96.6% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 rental searches

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

- **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

### 🚗 Rentalcars Listings Scraper

Easily extract **live car rental offers from [Rentalcars.com](https://www.rentalcars.com)** — the world's largest car rental booking site, with over 50,000 pick-up locations. The **Rentalcars Listings Scraper** returns the complete offer book for any pick-up location and rental window: vehicle, total price, price per day, supplier, mileage and fuel policy, insurance excess, deposit, extras and the pick-up branch with its customer ratings. Perfect for rate monitoring, competitive pricing and travel market research.

### ✨ Features

- 💵 **Complete Price Breakdown**: Total price, price per day, drive-away price, deposit, damage and theft excess, airport and administration fees, mileage allowance and overage rates.
- 🚙 **Full Vehicle Detail**: Make and model, ACRISS car class, category, transmission, seats, doors, suitcase capacity, air conditioning and a car image.
- 🏢 **Supplier & Branch Data**: Avis, Hertz, Sixt, Enterprise, Alamo, Budget, Europcar and dozens more — joined to the exact depot, with address, coordinates, shuttle/in-terminal type and a 9-dimension customer rating.
- 🌍 **Search Anywhere**: Airport names or IATA codes (`LHR`), cities and addresses (`Manhattan, New York`), or raw coordinates. Multiple pick-up locations per run.
- 🔁 **Round Trip or One-Way**: Set a different drop-off location for one-way rentals.
- 📅 **Schedule-Friendly Dates**: Use relative dates like `14 days` so scheduled runs always monitor a rolling future window.
- 💱 **Currency Control**: Request prices in USD, EUR, GBP and 11 more currencies.

### 🛠️ How It Works

1. **Enter Pick-up Locations** – A list of airport names, IATA codes, cities or coordinates (e.g. `London Heathrow`, `LAX`, `Barcelona`).
2. **Pick Your Rental Window** – Set pick-up and drop-off dates (absolute, or relative like `14 days`), times and the driver's age.
3. **Run the Scraper** – Every available offer for that window is collected, up to your **Max Items** limit.
4. **Export** – Download the dataset as JSON, CSV, Excel or HTML, or pull it via the Apify API and connect it to your BI tool, spreadsheet or pricing model.

### 📥 Input

| Field                | Type    | Description                                                                                  |
| -------------------- | ------- | -------------------------------------------------------------------------------------------- |
| `pickUpLocations`    | array   | Airport names, IATA codes, cities/addresses or `lat,lng` pairs. Each is searched separately. |
| `dropOffLocation`    | string  | Leave empty for a round trip; set it for one-way rentals.                                    |
| `pickUpDate`         | string  | Rental start date — absolute (`2026-08-15`) or relative (`14 days`).                         |
| `dropOffDate`        | string  | Rental end date — absolute or relative (`17 days`).                                          |
| `driversAge`         | integer | Age of the main driver — prices change under 25 and over 70. Default `30`.                   |
| `maxItems`           | integer | Maximum offers stored in the dataset (`0` = unlimited). Default `50`.                        |
| `currency`           | string  | Preferred price currency. Default `USD`.                                                     |
| `pickUpTime`         | string  | Pick-up time in 24h `HH:MM` format. Default `10:00`.                                         |
| `dropOffTime`        | string  | Drop-off time in 24h `HH:MM` format. Default `10:00`.                                        |
| `proxyConfiguration` | object  | Proxy settings. Apify `RESIDENTIAL` proxies are recommended.                                 |

Example input:

```json
{
    "pickUpLocations": ["London Heathrow", "LAX", "Barcelona"],
    "pickUpDate": "14 days",
    "dropOffDate": "17 days",
    "driversAge": 30,
    "currency": "USD",
    "maxItems": 50
}
```

### 📊 Sample Output Data

The scraper provides structured JSON output with one item per rental offer. Example:

```json
[
    {
        "pickUpLocation": "London Heathrow Airport",
        "dropOffLocation": "London Heathrow Airport",
        "pickUpDateTime": "2026-08-14T10:00:00",
        "dropOffDateTime": "2026-08-17T10:00:00",
        "rentalDays": 3,
        "driversAge": 30,
        "vehicleId": "841934161",
        "makeAndModel": "MG HS",
        "carClass": "IFAR",
        "carCategories": ["suvs", "intermediate"],
        "transmission": "AUTOMATIC",
        "numberOfSeats": "5",
        "numberOfDoors": "4",
        "airConditioning": true,
        "bigSuitcase": 3,
        "smallSuitcase": 0,
        "carImageUrl": "https://cdn.rcstatic.com/images/car_images/new_images/mg/hs_lrg.jpg",
        "price": 218.15,
        "currency": "USD",
        "pricePerDay": 72.72,
        "payWhen": "PAY_NOW",
        "mileageType": "UNLIMITED",
        "freeCancellation": true,
        "creditCardRequired": false,
        "supplierName": "Avis",
        "supplierLogoUrl": "https://cdn.rcstatic.com/sp/images/suppliers/47_logo_200.png",
        "pickUpDepot": {
            "name": "London Heathrow Airport",
            "address": "London Heathrow Airport T2-3-4, Northrop Road, London, UK, TW6 2QA",
            "city": "London",
            "countryCode": "GB",
            "iataCode": "LHR",
            "latitude": 51.472428,
            "longitude": -0.450725,
            "locationType": "SHUTTLE_BUS",
            "rating": { "average": 8, "cleanliness": 8.2, "collectTime": 7.4, "numRatings": 2588 }
        },
        "fees": [
            { "name": "DEPOSIT", "amount": 2685.5, "currency": "USD", "isPayableLocally": false },
            { "name": "MILEAGE", "amount": 0.27, "currency": "USD", "includedDistance": 300, "unlimited": false }
        ],
        "extras": [
            { "type": "BABY_SEAT", "amount": 62.61, "currency": "USD" },
            { "type": "ADDITIONAL_DRIVER", "amount": 66.79, "currency": "USD" }
        ],
        "scrapedAt": "2026-07-31T12:00:00.000Z"
    }
]
```

### 📋 Data Fields

| Field                                                              | Description                                                         |
| ------------------------------------------------------------------ | ------------------------------------------------------------------- |
| `pickUpLocation`, `dropOffLocation`                                | Resolved location names for the search                              |
| `pickUpDateTime`, `dropOffDateTime`, `rentalDays`, `driversAge`    | The rental window the quote applies to                              |
| `makeAndModel`, `carClass`, `carCategories`, `vehicleGroup`        | Vehicle identity and ACRISS classification                          |
| `transmission`, `fuel`, `numberOfSeats`, `numberOfDoors`           | Vehicle specification                                               |
| `bigSuitcase`, `smallSuitcase`, `suitcaseCount`, `airConditioning` | Capacity and comfort                                                |
| `price`, `currency`, `pricePerDay`, `driveAwayPrice`               | Quoted rental price for the whole period and per day                |
| `payWhen`, `creditCardRequired`, `freeCancellation`, `skipCounter` | Booking and payment conditions                                      |
| `mileageType`                                                      | Unlimited or limited mileage                                        |
| `specialOfferMessage`                                              | Active promotion on the offer, when present                         |
| `supplierName`, `supplierId`, `supplierType`, `supplierLogoUrl`    | Rental company behind the offer                                     |
| `pickUpDepot`, `dropOffDepot`                                      | Branch name, address, coordinates, IATA code, type and rating block |
| `fees`                                                             | Deposit, damage/theft excess, fuel policy, mileage, airport fees…   |
| `extras`                                                           | Priced add-ons: baby seat, additional driver, GPS, booster seat     |
| `carImageUrl`                                                      | Vehicle photo                                                       |
| `scrapedAt`                                                        | Timestamp of the quote — rental prices are perishable               |

### 💰 Pricing

This Actor uses Apify's **pay-per-event** pricing, so you only pay for the searches you run and the offers you keep — there is **no per-run start fee**.

| Event              | Price (USD) | When it fires                        | What you get                                                          |
| ------------------ | ----------- | ------------------------------------ | --------------------------------------------------------------------- |
| `search-request`   | **$0.005**  | Once per pick-up location searched   | A live availability search for your dates, location and driver age    |
| `car-rental-offer` | **$0.002**  | Once per offer stored in the dataset | Full offer record: vehicle, prices, fees, extras, supplier and branch |

**Example run costs:**

- Default run — 1 location, 50 offers: **$0.105**
- Deep single-market snapshot — 1 location, 500 offers: **$1.005**
- Daily rate monitoring — 10 airports × 50 offers: **$1.05**

Set **Max Items** to control your spend exactly: a single search can return up to 500 offers, so keep the limit low for price-tracking runs and raise it when you need the whole market.

### ❓ FAQ

**How many offers can one search return?**
Up to 500 per pick-up location and rental window — across every supplier serving that area, including off-airport depots.

**Are the prices live?**
Yes. Every record is a quote at the moment of the search, which is why `scrapedAt` is included. For rate monitoring, schedule the Actor with relative dates (`14 days`) so it keeps tracking a rolling window.

**Why is the currency sometimes different from what I asked for?**
Some markets always quote in the local currency. The `currency` field on each result is the authoritative one.

**Can I search a city instead of an airport?**
Yes — enter a city or address (for example `Manhattan, New York`) and the search covers the depots around that point, or pass raw `lat,lng` coordinates for full control.

**Do I need a proxy?**
Residential proxies are recommended and set by default. Datacenter IPs are frequently blocked.

**Is scraping Rentalcars.com legal?**
The Actor collects publicly available listing data only — no personal data and no login required. You are responsible for how the collected data is used and for complying with the target site's terms and any applicable laws.

**Something isn't working — where do I report it?**
Use the **Issues** tab on the Actor page. Custom versions and bespoke scraping solutions can be arranged there too.

Start tracking car rental rates with the **Rentalcars Listings Scraper** today! 🚀

# Actor input Schema

## `pickUpLocations` (type: `array`):

Where to pick the car up. Use an airport name or IATA code (e.g. "London Heathrow" or "LHR"), a city or address (e.g. "Manhattan, New York"), or raw coordinates ("51.5073,-0.1276"). Each entry is searched separately.

## `dropOffLocation` (type: `string`):

Leave empty for a round trip (car returned where it was picked up). Set it for one-way rentals.

## `pickUpDate` (type: `string`):

Rental start date. Accepts an absolute date or a relative one such as "14 days", which keeps scheduled runs always searching a future window.

## `dropOffDate` (type: `string`):

Rental end date. Accepts an absolute date or a relative one such as "17 days".

## `driversAge` (type: `integer`):

Age of the main driver. Prices and availability change for drivers under 25 and over 70.

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

Maximum number of car offers to store in the dataset. Set 0 for unlimited (a single search returns up to 500 offers).

## `currency` (type: `string`):

Preferred currency for prices. Some markets always quote in the local currency, so treat the currency field on each result as the authoritative one.

## `pickUpTime` (type: `string`):

Time of day for the pick-up, in 24h HH:MM format.

## `dropOffTime` (type: `string`):

Time of day for the drop-off, in 24h HH:MM format.

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

Proxy settings used for the search requests. Residential proxies are strongly recommended — datacenter IPs are frequently blocked.

## Actor input object example

```json
{
  "pickUpLocations": [
    "London Heathrow"
  ],
  "pickUpDate": "14 days",
  "dropOffDate": "17 days",
  "driversAge": 30,
  "maxItems": 50,
  "currency": "USD",
  "pickUpTime": "10:00",
  "dropOffTime": "10:00",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (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 = {
    "pickUpLocations": [
        "London Heathrow"
    ],
    "pickUpDate": "14 days",
    "dropOffDate": "17 days"
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/rentalcars-listings-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 = {
    "pickUpLocations": ["London Heathrow"],
    "pickUpDate": "14 days",
    "dropOffDate": "17 days",
}

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/rentalcars-listings-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 '{
  "pickUpLocations": [
    "London Heathrow"
  ],
  "pickUpDate": "14 days",
  "dropOffDate": "17 days"
}' |
apify call piotrv1001/rentalcars-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/rentalcars-listings-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/AnsOu6qKQ6nAsijAr/builds/A6QFGrvOhRW8YgbBj/openapi.json
