# Trovit Cars Vehicle Listings Scraper (`rainminer/trovit-cars-scraper`) Actor

Scrape Trovit Cars vehicle search results across supported countries. Export make, model, price, year, mileage, location, dealer signals, and listing URLs to JSON or CSV for automotive market monitoring, inventory tracking, and lead generation — no login required.

- **URL**: https://apify.com/rainminer/trovit-cars-scraper.md
- **Developed by:** [rainminer](https://apify.com/rainminer) (community)
- **Categories:** Travel, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.49 / 1,000 car listings

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.

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

## Trovit Cars Scraper

Extract used-car listings from [Trovit Cars](https://cars.trovit.com/) — a leading aggregator that collects vehicle ads from hundreds of dealers and classified sites into a single search interface.

![Trovit Cars](https://cars.trovit.com/images/global/trovit-logo.png)

### What does this Actor do?

The **Trovit Cars Scraper** crawls Trovit Cars search result pages and outputs structured data for every listing found. Because Trovit is a search-result aggregator (SERP), all the key details — title, price, location, mileage, description, and image — are embedded directly in the search-result cards. No separate detail-page visit is required, making the scraper fast and efficient.

For each listing the Actor collects:

- **id** — Trovit's internal unique identifier for the car
- **title** — Car make, model, and year (e.g. *2024 Toyota Tacoma*)
- **priceText** — Raw price string as shown on the page (e.g. *$28,400*)
- **price** — Parsed numeric price value
- **currency** — Detected currency code (USD, GBP, EUR, BRL)
- **location** — City or region where the car is listed
- **properties** — Array of specs extracted from property chips (mileage, year, fuel type, doors, etc.)
- **description** — Snippet description from the listing card
- **imageUrl** — Direct URL to the listing thumbnail image
- **updatedText** — Recency label (e.g. *30+ days ago*, *Today*)
- **isPremium** — Whether the listing is a sponsored/premium placement
- **clickUrl** — Outbound tracking link (to the originating dealer site)
- **searchUrl** — The Trovit search page the listing was found on

### Supported Country Versions

| Country        | Domain                 |
| -------------- | ---------------------- |
| United States  | `cars.trovit.com`      |
| United Kingdom | `cars.trovit.co.uk`    |
| Germany        | `de.trovit.com`        |
| Austria        | `at.trovit.com`        |
| France         | `voiture.trovit.fr`    |
| Italy          | `auto.trovit.it`       |
| Brazil         | `carros.trovit.com.br` |

### How to use

1. Open the Actor in [Apify Console](https://console.apify.com/).
2. Paste one or more **Trovit Cars search URLs** into the **Start URLs** field.
3. Set **Maximum items** to control how many listings to collect per URL.
4. Click **Start**. Results appear in the **Dataset** tab as JSON or CSV.

#### Example start URLs

```
https://cars.trovit.com/used-cars/toyota
https://cars.trovit.com/used-cars/honda-civic
https://cars.trovit.co.uk/used-cars/bmw
https://de.trovit.com/autos/volkswagen
```

#### Pagination

The Actor automatically follows Trovit's numeric pagination (`/2`, `/3`, …) until it has collected the requested number of items or no more results are available.

### Output example

```json
{
  "id": "s1o1lI1e1ox11",
  "title": "2024 Toyota Tacoma",
  "url": "https://rd.clk.thribee.com/...",
  "searchUrl": "https://cars.trovit.com/used-cars/toyota/",
  "clickUrl": "https://rd.clk.thribee.com/...",
  "priceText": "$28,400",
  "price": 28400,
  "currency": "USD",
  "location": "Plano, TX",
  "properties": ["1,550 Miles"],
  "description": "OBDII Diagnostics: no active emissions or transmission codes…",
  "imageUrl": "https://img-us-2.trovit.com/s1o1lI1e1ox11/s1o1lI1e1ox11.1_11.jpg",
  "updatedText": "30+ days ago",
  "isPremium": false
}
```

### Use cases

- **Price research** — Compare asking prices across makes, models, and regions without visiting multiple dealer sites.
- **Market monitoring** — Track how inventory and prices shift week over week for a specific vehicle segment.
- **Lead generation** — Build datasets of vehicles matching particular criteria (mileage, price range, location).
- **Competitive intelligence** — Understand how dealers position their stock across aggregator channels.
- **Academic / data journalism** — Analyse used-car market trends from aggregated listing data.

### Technical details

- Crawler: `CheerioCrawler` (pure HTTP — no browser required)
- Base image: `apify/actor-node:20`
- Proxy: disabled by default; enable via the *Proxy configuration* input if your region is geo-blocked
- Charging model: pay-per-event (`result-item`)
- TypeScript, Crawlee v3, Apify SDK v3

### Frequently asked questions

**Does the Actor visit individual dealer sites?**
No. Trovit embeds all listing metadata in its search-result cards. The Actor never navigates to the third-party dealer links.

**Can I scrape multiple searches at once?**
Yes — add multiple URLs to the *Start URLs* field. Each URL gets its own independent `maxItems` counter.

**Will it work for all Trovit country domains?**
The Actor validates the hostname against all known Trovit Cars country domains listed in the table above.

### Image Credit

Image credit: [trovit.com](https://www.trovit.com/)

# Actor input Schema

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

Trovit Cars search URLs to scrape (e.g. https://cars.trovit.com/used-cars/toyota). Supports cars.trovit.com, cars.trovit.co.uk, de.trovit.com/autos/, at.trovit.com/autos/, voiture.trovit.fr, auto.trovit.it, carros.trovit.com.br.

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

Maximum number of car listings to return per start URL.

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

Proxy settings. The scraper works without a proxy in most regions.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://cars.trovit.com/used-cars/toyota"
    }
  ],
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://cars.trovit.com/used-cars/toyota"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rainminer/trovit-cars-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 = {
    "startUrls": [{ "url": "https://cars.trovit.com/used-cars/toyota" }],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("rainminer/trovit-cars-scraper").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 '{
  "startUrls": [
    {
      "url": "https://cars.trovit.com/used-cars/toyota"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call rainminer/trovit-cars-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=rainminer/trovit-cars-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/Dd7zRPwmvKgQZZBlW/builds/q2Q44SaPHjdBSiKPD/openapi.json
