# Kavak Used Cars Inventory Scraper (`scrapers_lat/kavak-used-cars-scraper`) Actor

Scrape Kavak used-car listings with make, model, version, year, mileage, VIN, full pricing (cash, financed and monthly payment), colour, body type, fuel, transmission and location. Real-time inventory. Export to JSON, CSV or Excel.

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

## Pricing

from $6.80 / 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/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

[![Kavak Used Cars Inventory Scraper](https://scrapers.lat/banners/kavak-used-cars-scraper.png)](https://console.apify.com/actors/JI2PJoLPRmYe4JFsL/input)

## Kavak Used Cars Inventory Scraper

Here is one real result, with every field the actor returns (the long `imageUrl` and `aiListingSummary` values are trimmed here for readability; the dataset returns them in full):

```json
{
  "kavakId": "533983",
  "make": "Chirey",
  "model": "Tiggo 7 Pro",
  "version": "1.5 LUXURY CVT",
  "year": 2023,
  "priceAmount": 293999,
  "currency": "MXN",
  "cashPrice": 293999,
  "financedPrice": 280999,
  "monthlyPayment": 5408.02,
  "promoPercentageCash": null,
  "promoPercentageFinanced": null,
  "kilometers": 43403,
  "transmission": "Automático",
  "fuelType": "Gasolina",
  "bodyType": "Suv",
  "traction": "4x2",
  "color": "Negro",
  "passengers": 5,
  "vin": "LVVDB21B2PD712607",
  "region": "Guadalajara",
  "locationName": "Midtown Guadalajara",
  "country": "Mexico",
  "countryCode": "mx",
  "availability": "Disponible",
  "listingUrl": "https://www.kavak.com/mx/usado/chirey-tiggo_7_pro-15_luxury_cvt-suv-2023",
  "imageUrl": "https://images.prd.kavak.io/eyJidWNrZXQiOiJrYXZhay1pbWFnZXMiLCJrZXkiOiJpbWFnZXMvNTMzOTgzL0VYVEVSSU9SL... (full URL in dataset)",
  "source": "Kavak",
  "observedAt": "2026-08-14T08:23:59.423Z",
  "aiListingSummary": "This 2023 Chirey Tiggo 7 Pro 1.5 LUXURY CVT has a mileage of 43,403 km ... (AI add-on output, trimmed)",
  "aiEnglishSpecs": {
    "transmission": "Automatic",
    "fuelType": "Gasoline",
    "bodyType": "SUV",
    "traction": "FWD",
    "color": "Black"
  }
}
```

The most complete Kavak used-car scraper available. It returns every field the Kavak catalog exposes for each car, including cash and financed price, monthly payment, mileage, VIN, full specs and dealership location, and gives you a multi-country input plus optional AI add-ons that summarize each car and normalize its Spanish specs to English.

**📥 [Input](https://apify.com/scrapers_lat/kavak-used-cars-scraper/input-schema) · 📤 [Output](https://apify.com/scrapers_lat/kavak-used-cars-scraper/output-schema) · 💰 [Pricing](https://apify.com/scrapers_lat/kavak-used-cars-scraper/pricing) · ▶️ [Examples](https://apify.com/scrapers_lat/kavak-used-cars-scraper/examples)**

![Apify](https://img.shields.io/badge/Platform-Apify-1CE1CE?logo=apify\&logoColor=white)
![Coverage](https://img.shields.io/badge/Coverage-Mexico%20%2B%20LatAm-blue)
![Output](https://img.shields.io/badge/Output-JSON%20%7C%20CSV%20%7C%20Excel-orange)
![Billing](https://img.shields.io/badge/Billing-Pay%20per%20result-brightgreen)

### Table of contents

- [What it does](#what-it-does)
- [Quickstart](#quickstart)
- [Input reference](#input-reference)
- [Output reference](#output-reference)
- [Example output record](#example-output-record)
- [Run via API and CLI](#run-via-api-and-cli)
- [Fetch results](#fetch-results)
- [Billing and limits](#billing-and-limits)
- [FAQ and troubleshooting](#faq-and-troubleshooting)

### What it does

The actor reads the Kavak used-car catalog for each selected country and writes one normalized record per car to the run's dataset. Each record carries the vehicle identity (make, model, version, year, VIN), pricing (`cashPrice`, `financedPrice`, `monthlyPayment`, promo percentages), condition (`kilometers`), specs (`transmission`, `fuelType`, `bodyType`, `traction`, `color`, `passengers`), dealership location, availability and the listing URL. Missing source values are returned as `null`, never invented.

Mexico (`mx`) has the fullest structured catalog. Other markets are attempted and skipped cleanly when no catalog feed is available. Optional AI add-ons write an English sales summary and normalize the Spanish spec values to standard English. Both are off by default and require a paid Apify plan.

### Quickstart

Open the actor, paste this into the input, and press Run. It collects up to 10 cars from the Mexico catalog.

```json
{
  "countries": ["mx"],
  "maxCars": 10
}
```

Every input field is optional; `countries` defaults to `["mx"]`.

### Input reference

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `countries` | string\[] | no | `["mx"]` | Kavak country markets to scrape. Mexico (`mx`) has the fullest structured catalog. Other markets are attempted and skipped cleanly when no feed is available. |
| `maxCars` | integer | no | `10` | Maximum number of cars to collect across the selected countries. |
| `withAiListingSummary` | boolean | no | `false` | Paid add-on. Write a concise English sales summary of each car from its specs. Requires a paid Apify plan. Billed only when produced. |
| `withAiTranslate` | boolean | no | `false` | Paid add-on. Normalize the Spanish spec values (transmission, fuel type, body type, drivetrain, colour) to standard English. Requires a paid Apify plan. Billed only when produced. |

### Output reference

One dataset item per car. Types: `string`, `number`, `integer`, `object`, or `null` when the source value is absent.

| Field | Type | Description |
|---|---|---|
| `kavakId` | string | Kavak internal listing id, unique per car. |
| `make` | string | Vehicle make/brand. |
| `model` | string | Vehicle model. |
| `version` | string | Trim/version. |
| `year` | integer | Model year. |
| `priceAmount` | number | Headline price in local currency. |
| `currency` | string | Currency code (for example `MXN`). |
| `cashPrice` | number | Cash purchase price. |
| `financedPrice` | number | Price when financed, or `null`. |
| `monthlyPayment` | number | Estimated monthly payment, or `null`. |
| `promoPercentageCash` | number | Cash promo discount percent, or `null`. |
| `promoPercentageFinanced` | number | Financed promo discount percent, or `null`. |
| `kilometers` | integer | Odometer reading in km. |
| `transmission` | string | Transmission (source language, for example `Automático`). |
| `fuelType` | string | Fuel type (source language, for example `Gasolina`). |
| `bodyType` | string | Body type (source language, for example `Suv`). |
| `traction` | string | Drivetrain (for example `4x2`). |
| `color` | string | Exterior colour (source language, for example `Negro`). |
| `passengers` | integer | Seating capacity. |
| `vin` | string | Vehicle identification number. |
| `region` | string | City/region of the dealership. |
| `locationName` | string | Kavak dealership/hub name. |
| `country` | string | Country name. |
| `countryCode` | string | Two-letter country code. |
| `availability` | string | Availability status (source language, for example `Disponible`). |
| `listingUrl` | string | Public listing URL. |
| `imageUrl` | string | Primary image URL. |
| `source` | string | Always `Kavak`. |
| `observedAt` | string | ISO 8601 timestamp of when the record was collected. |
| `aiListingSummary` | string | AI English sales summary (paid add-on), else `null`. |
| `aiEnglishSpecs` | object | AI-normalized English specs: `transmission`, `fuelType`, `bodyType`, `traction`, `color` (paid add-on), else `null`. |
| `error` | string | `null` on success. On a failed run, a single item with a populated `error` field is written instead. |

### Example output record

Real record from a live run (input `{"countries":["mx"]}` with AI add-ons enabled). The `imageUrl` and `aiListingSummary` values are trimmed here for readability; the dataset returns them in full.

```json
{
  "kavakId": "533983",
  "make": "Chirey",
  "model": "Tiggo 7 Pro",
  "version": "1.5 LUXURY CVT",
  "year": 2023,
  "priceAmount": 293999,
  "currency": "MXN",
  "cashPrice": 293999,
  "financedPrice": 280999,
  "monthlyPayment": 5408.02,
  "promoPercentageCash": null,
  "promoPercentageFinanced": null,
  "kilometers": 43403,
  "transmission": "Automático",
  "fuelType": "Gasolina",
  "bodyType": "Suv",
  "traction": "4x2",
  "color": "Negro",
  "passengers": 5,
  "vin": "LVVDB21B2PD712607",
  "region": "Guadalajara",
  "locationName": "Midtown Guadalajara",
  "country": "Mexico",
  "countryCode": "mx",
  "availability": "Disponible",
  "listingUrl": "https://www.kavak.com/mx/usado/chirey-tiggo_7_pro-15_luxury_cvt-suv-2023",
  "imageUrl": "https://images.prd.kavak.io/eyJidWNrZXQiOiJrYXZhay1pbWFnZXMi... (trimmed; full URL in dataset)",
  "source": "Kavak",
  "observedAt": "2026-08-14T08:23:59.423Z",
  "aiListingSummary": "This 2023 Chirey Tiggo 7 Pro 1.5 LUXURY CVT has a mileage of 43,403 km ... (trimmed; full text in dataset)",
  "aiEnglishSpecs": {
    "transmission": "Automatic",
    "fuelType": "Gasoline",
    "bodyType": "SUV",
    "traction": "FWD",
    "color": "Black"
  }
}
```

### Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace `<TOKEN>` with your Apify API token.

Run synchronously and get dataset items in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~kavak-used-cars-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"countries":["mx"],"maxCars":25}'
```

Start a run asynchronously:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~kavak-used-cars-scraper/runs?token=<TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"countries":["mx"],"maxCars":200,"withAiTranslate":true}'
```

Apify CLI:

```bash
apify call scrapers_lat/kavak-used-cars-scraper \
  --input '{"countries":["mx"]}'
```

### Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing `format`:

```bash
## JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"

## CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"

## Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
```

`<DATASET_ID>` is returned as `defaultDatasetId` in the run object. Use `offset` and `limit` to page through large result sets. `clean=true` drops empty and internal fields.

### Billing and limits

- **Pay per result.** You are charged per car record returned (`result` event). See the [pricing tab](https://apify.com/scrapers_lat/kavak-used-cars-scraper/pricing) for the current per-result price.
- **No charge on failure.** If a run errors, the actor writes a single item with a populated `error` field and does not charge for it. Empty runs cost nothing.
- **Spend cap respected.** Set `maxTotalChargeUsd` on the run; once reached, the actor stops emitting and charging further billable results.
- **Free Apify plans** are capped at 10 records per run. The AI add-ons require a paid Apify plan. Upgrade for higher `maxCars` and AI enrichment.

### FAQ and troubleshooting

**Which countries work best?**
Mexico (`mx`) has the fullest structured catalog. Other markets are attempted and skipped cleanly when no catalog feed is available, so a run may return fewer or no cars for them.

**What is the difference between `cashPrice` and `financedPrice`?**
`cashPrice` is the price when paying outright; `financedPrice` is the price under Kavak financing, and `monthlyPayment` is the estimated monthly installment.

**Are the spec values in Spanish?**
Yes, the raw `transmission`, `fuelType`, `bodyType`, `color` and `availability` are returned as Kavak shows them (Spanish for `mx`). Enable `withAiTranslate` to also get `aiEnglishSpecs` normalized to English.

**A run returned 0 records. Why?**
The selected country may have no available catalog feed, or the catalog was empty at run time. Zero-result runs are not charged.

**Are the AI add-ons free?**
No. `withAiListingSummary` and `withAiTranslate` require a paid Apify plan and are billed only when they return usable output. They are off by default.

**Is this an official Kavak tool?**
No. This actor is independent and has no affiliation with Kavak. It only accesses publicly available catalog data. Use the results in accordance with the source's terms.

### Related scrapers

- [Jumbo Argentina Grocery Price Scraper](https://apify.com/scrapers_lat/jumbo-ar-scraper): grocery prices from Jumbo Argentina.
- [Jumia Products Scraper](https://apify.com/scrapers_lat/jumia-products-scraper): product listings and prices from Jumia.
- [Aircraft For Sale Scraper](https://apify.com/scrapers_lat/aircraft-for-sale-scraper): aircraft listings and prices.
- [MercadoLibre Scraper](https://apify.com/scrapers_lat/mercadolibre-scraper): listings and prices across MercadoLibre marketplaces.

### More scrapers at scrapers.lat

Built and maintained by [scrapers.lat](https://scrapers.lat), where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at [scrapers.lat](https://scrapers.lat).

***

> Independent tool, not affiliated with Kavak. Accesses only publicly available catalog data. Use the results in accordance with the source's terms.

# Actor input Schema

## `countries` (type: `array`):

Kavak country markets to scrape. Mexico ('mx') has the fullest structured catalog. Other markets are attempted and skipped cleanly when no catalog feed is available.

## `maxCars` (type: `integer`):

Maximum number of cars to collect across the selected countries.

## `withAiListingSummary` (type: `boolean`):

Off by default. When on, writes a concise English sales summary of each car from its specs. Requires a paid Apify plan. Billed only when a summary is produced.

## `withAiTranslate` (type: `boolean`):

Off by default. When on, normalizes the Spanish spec values (transmission, fuel type, body type, drivetrain, colour) to standard English. Requires a paid Apify plan. Billed only when values are produced.

## Actor input object example

```json
{
  "countries": [
    "mx"
  ],
  "maxCars": 10,
  "withAiListingSummary": false,
  "withAiTranslate": false
}
```

# 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 = {
    "countries": [
        "mx"
    ],
    "maxCars": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/kavak-used-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 = {
    "countries": ["mx"],
    "maxCars": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/kavak-used-cars-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 '{
  "countries": [
    "mx"
  ],
  "maxCars": 10
}' |
apify call scrapers_lat/kavak-used-cars-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapers_lat/kavak-used-cars-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/JI2PJoLPRmYe4JFsL/builds/P4WXh2uk9QzvTZMgb/openapi.json
