# Turo.com Vehicle Scraper (`shahidirfan/turo-com-vehicle-scraper`) Actor

Extract Turo vehicle listings with car names, makes, models, prices, locations, ratings, reviews, features, images, availability, host details, and listing URLs. Ideal for car rental market research, pricing analysis, competitor tracking, travel data, and vehicle datasets.

- **URL**: https://apify.com/shahidirfan/turo-com-vehicle-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## 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 Turo Vehicle Scraper do?

Turo Vehicle Scraper collects public vehicle listings from Turo and saves them as structured dataset records. Search with a Turo results URL, a vehicle make or model keyword, a vehicle type, a location, or a keyword and location together. The results can support vehicle availability research, rental-price comparisons, market monitoring, and data enrichment.

Each result can include the vehicle name, make, model, year, daily price, rating, completed trips, host and listing flags, location, delivery availability, images, badges, tags, and a direct listing link. Only values present in the source are included, so unavailable data is omitted rather than filled with `null`.

### Why use Turo Vehicle Scraper?

- **Compare rental listings** - Review vehicle types, years, daily prices, ratings, and locations in one dataset.
- **Research local supply** - Search a city or use a saved Turo search URL to focus on a market.
- **Track vehicle segments** - Search by make, model, or supported vehicle type, such as `Tesla Model 3` or `SUV`.
- **Automate collection** - Run the Actor on demand or schedule recurring searches in Apify.
- **Export and connect results** - Download data or use Apify integrations to move it into spreadsheets, webhooks, and other workflows.

### What data can you extract from Turo?

| Field | Type | Description |
|---|---|---|
| `id` | Integer | Turo vehicle listing ID. |
| `title` | String | Vehicle year, make, and model combined when available. |
| `make` | String | Vehicle manufacturer. |
| `model` | String | Vehicle model. |
| `year` | Integer | Vehicle model year. |
| `vehicle_type` | String | Vehicle type reported by Turo. |
| `category` | String | Turo listing category, such as `SUV` or `CAR`. |
| `vehicle_url` | String | Direct Turo vehicle listing link when it can be constructed from the returned listing data. |
| `avg_daily_price` | Number | Average daily price shown in the search results. |
| `price_currency` | String | Currency code for the listed daily price. |
| `rating` | Number | Vehicle rating when available. |
| `completed_trips` | Integer | Completed trip count when available. |
| `is_all_star_host` | Boolean | Whether Turo marks the host as an All-Star Host. |
| `is_new_listing` | Boolean | Whether the vehicle is marked as a new listing. |
| `availability_start` | String | Availability start value when supplied by the search result. |
| `availability_end` | String | Availability end value when supplied by the search result. |
| `location_city` | String | Listing city. |
| `location_state` | String | Listing state or region. |
| `location_country` | String | Listing country code. |
| `location_distance_miles` | Number | Distance from the searched location in miles when supplied. |
| `is_delivery` | Boolean | Whether delivery is available for the listing. |
| `image_urls` | Array of strings | Listing image URLs. |
| `badges` | Array of strings | Listing badges, when present. |
| `tags` | Array of strings | Listing tags, when present. |
| `search_id` | String | Identifier returned for the Turo search. |
| `source_url` | String | The Turo search URL used for URL-based searches. Keyword and location searches do not report an unrelated URL. |

Fields such as ratings, availability, badges, or delivery details can vary by listing. A missing value is omitted from that record.

### How to use Turo Vehicle Scraper

1. Open the Actor in Apify Console.
2. Choose a Turo search URL, a vehicle keyword, a location, or a keyword and location together.
3. Set the maximum number of results to save.
4. Run the Actor and inspect the dataset preview.
5. Download the dataset or connect it to your Apify workflow.

When using the Console form, clear the prefilled URL if you want to run a URL-only search with your own URL. If a keyword or location is entered, that search input takes precedence over the URL.

### Input Parameters

| Parameter | Type | Required | Default | Description |
|---|---|---:|---|---|
| `url` | String | No | Los Angeles Turo search URL | Turo search-results URL. Used when neither `keyword` nor `location` is supplied. |
| `keyword` | String | No | - | Vehicle make, model, or supported type. A make and model can be combined, for example `Tesla Model 3`. Takes precedence over `url`. |
| `location` | String | No | - | City or place name. Can be used alone or together with `keyword`; takes precedence over `url`. |
| `results_wanted` | Integer | No | `20` | Maximum number of results to save from the available search response. Minimum: `1`. |
| `max_pages` | Integer | No | `1` | Page limit setting. Turo currently returns one batch without a working continuation token, so increasing this value does not fetch additional batches. |
| `proxyConfiguration` | Object | No | Apify Unblocker | Proxy configuration. The default was selected because Turo declined direct requests from Apify. Proxy usage can incur account charges; replace or disable the default if appropriate for your account. |

If no search input is provided, the Actor uses the Los Angeles URL shown as the default. A supplied keyword and/or location takes priority over the URL. Keyword-only searches use the United States as the country scope; a supplied location is resolved to its search area.

### Usage Examples

#### Search with a Turo URL

Use the provided Los Angeles search URL or replace it with another Turo search-results URL. The Actor keeps supported location, date, vehicle, and sort filters from the URL.

```json
{
  "url": "https://turo.com/us/en/search?age=30&country=US&defaultZoomLevel=11&deliveryLocationType=googlePlace&endDate=&endTime=&flexibleType=NOT_FLEXIBLE&isMapSearch=false&itemsPerPage=200&latitude=34.0549076&location=Los%20Angeles&locationType=CITY&longitude=-118.242643&monthlyEndDate=01%2F12%2F2027&monthlyStartDate=10%2F12%2F2026&pickupType=ALL&placeId=ChIJE9on3F3HwoAR9AhGJW_fL-I&region=CA&searchDurationType=DAILY&sortType=RELEVANCE&startDate=&startTime=",
  "results_wanted": 20
}
```

#### Search a vehicle keyword and location

Combine a make/model or supported vehicle type with a city to narrow the search.

```json
{
  "keyword": "Tesla Model 3",
  "location": "Los Angeles",
  "results_wanted": 50
}
```

#### Search by location only

Use a city or place name to collect listings around that location.

```json
{
  "location": "Miami, Florida",
  "results_wanted": 30
}
```

#### Search a date-filtered Turo URL

A URL can include trip dates and times. Use both `startDate` and `endDate` when providing dates.

```json
{
  "url": "https://turo.com/us/en/search?country=US&latitude=34.0549076&longitude=-118.242643&location=Los%20Angeles&startDate=10%2F16%2F2026&endDate=10%2F19%2F2026&startTime=10%3A00&endTime=10%3A00",
  "results_wanted": 100,
  "max_pages": 1
}
```

### Sample Output

The following example shows a listing shape returned for a Los Angeles search. Results change as Turo listings and prices change.

```json
{
  "id": 3905389,
  "title": "2023 Ford Escape",
  "make": "Ford",
  "model": "Escape",
  "year": 2023,
  "vehicle_type": "SUV",
  "category": "SUV",
  "vehicle_url": "https://turo.com/us/en/suv-rental/united-states/los-angeles-ca/ford/escape/3905389",
  "avg_daily_price": 45.09,
  "price_currency": "USD",
  "rating": 5,
  "completed_trips": 2,
  "is_all_star_host": true,
  "is_new_listing": true,
  "location_city": "Los Angeles",
  "location_state": "CA",
  "location_country": "US",
  "location_distance_miles": 1.5274172055900106,
  "is_delivery": false,
  "image_urls": [
    "https://images.turo.com/media/vehicle/images/9RjG2t7cSw-VjnV5orp5IA.jpg"
  ],
  "tags": [
    "Unlimited miles"
  ],
  "search_id": "Kz0KJZ2D",
  "source_url": "https://turo.com/us/en/search?age=30&country=US&defaultZoomLevel=11&endDate=10%2F19%2F2026&endTime=10%3A00&flexibleType=NOT_FLEXIBLE&isMapSearch=false&itemsPerPage=200&latitude=34.0549076&location=Los%20Angeles&locationType=CITY&longitude=-118.242643&monthlyEndDate=01%2F12%2F2027&monthlyStartDate=10%2F12%2F2026&pickupType=ALL&placeId=ChIJE9on3F3HwoAR9AhGJW_fL-I&region=CA&searchDurationType=DAILY&sortType=RELEVANCE&startDate=10%2F16%2F2026&startTime=10%3A00"
}
```

### Result Limits and Pagination

Turo's current search response provides up to 200 vehicle records and does not expose a verified continuation token or page offset. The Actor saves up to `results_wanted` from that one response. If you request more listings than Turo returns in the response, the dataset cannot include additional pages; increasing `max_pages` does not change that limit. The Actor logs a warning when Turo reports more matches than it returned.

### Tips for Best Results

- Use a Turo search-results URL copied from Turo when you need specific dates, sort order, or vehicle filters.
- Enter a make and model together, such as `Toyota RAV4`, or use a supported vehicle type such as `SUV`.
- Use the city or place name Turo recognizes for more targeted location results.
- Start with a modest `results_wanted` limit to review the dataset fields before scheduling larger runs.
- Check results promptly when comparing prices because rental availability and prices can change.
- Do not expect more than the records available in Turo's single response, even if the search reports a larger total.
- The default Apify Unblocker setting may consume proxy units. Review your Apify usage and change the proxy setting if needed.

### Integrations and Exports

- **Apify datasets** - Download results as JSON, CSV, Excel, XML, and other supported formats.
- **Apify API** - Retrieve dataset items or connect the Actor to an application.
- **Google Sheets** - Send listing data to a spreadsheet for review and comparison.
- **Webhooks** - Notify another service when a run finishes.
- **Make and Zapier** - Pass results into no-code workflows.
- **Scheduling** - Run repeat searches to monitor changes over time.

### Frequently Asked Questions

#### Can I search by URL, keyword, or location?

Yes. Provide a Turo search URL, a vehicle make/model or supported type, a location, or a keyword and location together. Keyword and location inputs take precedence over the URL when supplied.

#### Can I search for a Tesla Model 3 in a particular city?

Yes. Set `keyword` to `Tesla Model 3` and `location` to the city name. Vehicle keyword matching is intended for makes, models, and supported vehicle types, not arbitrary listing descriptions.

#### Does `max_pages` retrieve more results?

No. Turo currently returns one batch of up to 200 listings without a working continuation parameter. `max_pages` is retained as a run setting but cannot advance beyond that batch.

#### Why is a field missing from a result?

Turo does not provide every field for every vehicle. The Actor omits absent or empty values, including values that would otherwise be `null`.

#### Can I export the results to CSV or Excel?

Yes. Apify datasets can be downloaded in CSV, Excel, JSON, XML, and other supported formats.

#### Can I schedule recurring searches?

Yes. Create a schedule in Apify Console to run the Actor repeatedly. Keep in mind that each run is a point-in-time search and does not guarantee a complete history of listing changes.

#### Does this Actor use Apify Proxy by default?

Yes. The default proxy setting uses Apify Unblocker because direct requests from the Apify environment were declined by Turo. Proxy usage can incur charges or consume account units. You can replace or disable the proxy setting in the Actor input.

#### Is Turo Vehicle Scraper affiliated with Turo?

No. This is an independent data-collection tool and is not endorsed by or affiliated with Turo.

### Support

For help with the Actor or to report a problem, use the Issues tab on its Apify page.

### Legal Notice

This Actor is intended for responsible collection of publicly available vehicle-search information. You are responsible for following applicable laws, privacy requirements, and Turo's terms and policies. Do not use collected data for unlawful purposes or to infringe the rights of hosts or other users.

# Actor input Schema

## `url` (type: `string`):

A Turo search-results URL. A supplied keyword or location takes precedence over this URL; when omitted, the default Los Angeles search is used.

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

A make, model, or vehicle type, for example Tesla Model 3 or SUV. Combine with Location to narrow the search.

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

A city or place name to search. When used with a keyword, filters the matching vehicles to that location.

## `results_wanted` (type: `integer`):

Maximum number of vehicle listings to save. Turo currently returns up to 200 vehicles per search response.

## `max_pages` (type: `integer`):

Maximum API pages to process. Turo currently returns one batch of up to 200 vehicles and provides no continuation token, so this setting cannot fetch additional pages.

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

Uses Apify Unblocker by default for Turo requests. Proxy usage may incur Apify charges; replace or disable this setting if needed.

## Actor input object example

```json
{
  "url": "https://turo.com/us/en/search?age=30&country=US&defaultZoomLevel=11&deliveryLocationType=googlePlace&endDate=&endTime=&flexibleType=NOT_FLEXIBLE&isMapSearch=false&itemsPerPage=200&latitude=34.0549076&location=Los%20Angeles&locationType=CITY&longitude=-118.242643&monthlyEndDate=01%2F12%2F2027&monthlyStartDate=10%2F12%2F2026&pickupType=ALL&placeId=ChIJE9on3F3HwoAR9AhGJW_fL-I&region=CA&searchDurationType=DAILY&sortType=RELEVANCE&startDate=&startTime=",
  "results_wanted": 20,
  "max_pages": 1,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ]
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "url": "https://turo.com/us/en/search?age=30&country=US&defaultZoomLevel=11&deliveryLocationType=googlePlace&endDate=&endTime=&flexibleType=NOT_FLEXIBLE&isMapSearch=false&itemsPerPage=200&latitude=34.0549076&location=Los%20Angeles&locationType=CITY&longitude=-118.242643&monthlyEndDate=01%2F12%2F2027&monthlyStartDate=10%2F12%2F2026&pickupType=ALL&placeId=ChIJE9on3F3HwoAR9AhGJW_fL-I&region=CA&searchDurationType=DAILY&sortType=RELEVANCE&startDate=&startTime="
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/turo-com-vehicle-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 = { "url": "https://turo.com/us/en/search?age=30&country=US&defaultZoomLevel=11&deliveryLocationType=googlePlace&endDate=&endTime=&flexibleType=NOT_FLEXIBLE&isMapSearch=false&itemsPerPage=200&latitude=34.0549076&location=Los%20Angeles&locationType=CITY&longitude=-118.242643&monthlyEndDate=01%2F12%2F2027&monthlyStartDate=10%2F12%2F2026&pickupType=ALL&placeId=ChIJE9on3F3HwoAR9AhGJW_fL-I&region=CA&searchDurationType=DAILY&sortType=RELEVANCE&startDate=&startTime=" }

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/turo-com-vehicle-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 '{
  "url": "https://turo.com/us/en/search?age=30&country=US&defaultZoomLevel=11&deliveryLocationType=googlePlace&endDate=&endTime=&flexibleType=NOT_FLEXIBLE&isMapSearch=false&itemsPerPage=200&latitude=34.0549076&location=Los%20Angeles&locationType=CITY&longitude=-118.242643&monthlyEndDate=01%2F12%2F2027&monthlyStartDate=10%2F12%2F2026&pickupType=ALL&placeId=ChIJE9on3F3HwoAR9AhGJW_fL-I&region=CA&searchDurationType=DAILY&sortType=RELEVANCE&startDate=&startTime="
}' |
apify call shahidirfan/turo-com-vehicle-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,shahidirfan/turo-com-vehicle-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/cKTRhnPhgFcDGxQOV/builds/0cTPUlB0UuukChBl2/openapi.json
