# Sauto.cz Cars Scraper (`shahidirfan/sauto-cz-cars-scraper`) Actor

Extract car listings from Sauto.cz with detailed vehicle data, including prices, makes, models, mileage, fuel types, transmissions, locations, seller details, images, and listing URLs. Ideal for Czech car market research, price tracking, analysis, and automotive datasets.

- **URL**: https://apify.com/shahidirfan/sauto-cz-cars-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 1 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?

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

### What does Sauto.cz Cars Scraper do?

Sauto.cz Cars Scraper collects structured personal-car listings from [Sauto.cz](https://www.sauto.cz/inzerce/osobni), one of the main Czech car marketplaces. Provide one listing URL to keep its filters, or search with a vehicle keyword and Czech location. The dataset includes vehicle identity, price, mileage, fuel, gearbox, images, seller information, locality, dates, and direct listing URLs.

The Actor is useful for Czech car market research, stock monitoring, price comparisons, dealership analysis, vehicle sourcing, and recurring inventory checks. Results are saved as clean records that can be downloaded from Apify or connected to another workflow.

### Why use Sauto.cz Cars Scraper?

- **URL-first collection** - Start with a Sauto personal-car URL and keep supported filters such as make, model, fuel, body type, price, condition, seller type, region, district, and page number.
- **Search-based collection** - Use a keyword such as `skoda`, `BMW X5`, or a model phrase when you do not have a saved listing URL.
- **Location filtering** - Enter a Czech region or district such as `Hlavní město Praha`, `Brno-město`, or `Praha-východ`.
- **Vehicle-rich records** - Receive pricing, dates, mileage, fuel, gearbox, category, manufacturer, model, images, locality, seller, and listing-status data when published by Sauto.cz.
- **Clean output** - Empty and null-only source properties are left out of each record. Valid `false` and `0` values are retained.
- **Controlled pagination** - Set both the maximum number of results and the maximum number of listing pages.
- **Automation ready** - Run on demand, schedule repeat collections, use webhooks, or download the dataset in common formats.

### What data can you extract from Sauto.cz?

Every record keeps the non-empty properties supplied by Sauto.cz. The most useful fields include:

| Field | Description |
|---|---|
| `id` | Unique Sauto listing ID |
| `name` | Listing title |
| `url` | Direct Sauto listing URL created from the listing ID and vehicle path |
| `price` | Advertised price in Czech koruna when available |
| `manufacturer_cb` | Manufacturer name, SEO name, and value |
| `model_cb` | Model name, SEO name, and value |
| `additional_model_name` | Trim, engine, or model specification |
| `manufacturing_date` | Manufacturing date when published |
| `in_operation_date` | Date the vehicle entered operation when published |
| `tachometer` | Mileage in kilometres |
| `fuel_cb` | Fuel name, SEO name, and value |
| `gearbox_cb` | Gearbox name, SEO name, and value |
| `category` | Sauto vehicle category |
| `locality` | Region, district, municipality, country, and related location data |
| `images` | Image URLs included in the search response; Sauto currently returns a maximum three-image preview here |
| `images_total_count` | Number of images published in the listing's full gallery, when available |
| `premise` | Dealership or seller information when available |
| `create_date` | Listing creation timestamp |
| `edit_date` | Last edit timestamp |
| `sorting_date` | Marketplace sorting timestamp |
| `deal_type` | Sale or other published deal type |
| `price_by_agreement` | Whether the price is negotiable or by agreement |
| `topped` | Whether the listing is promoted |
| `home_delivery` | Whether home delivery is offered |
| `is_cebia_smart_code_url_verified` | Cebia verification flag when published |
| `source` | Source classification supplied by Sauto.cz |
| `user` | Seller user information when published |

Fields that are not published for a listing are omitted instead of being saved as permanent null columns. The search API returns only a three-image preview in `images` even when `images_total_count` is higher. Collecting the complete gallery would require an additional listing request, which this Actor intentionally does not make.

### How to use Sauto.cz Cars Scraper

1. Open the Actor in Apify Console.
2. Add one Sauto.cz personal-car listing URL, or leave the URL empty and enter a keyword or location.
3. Set the result limit and page limit.
4. Run the Actor and review the dataset preview.
5. Download JSON, CSV, Excel, XML, or connect the run to an integration.

When `url` is provided, it has priority over `keyword` and `location`. This lets you reproduce a saved Sauto search without accidentally adding separate search filters.

### Input Parameters

| Parameter | Type | Required | Default | Description |
|---|---|---:|---:|---|
| `url` | String | No | Sauto personal-car URL | One URL such as `https://www.sauto.cz/inzerce/osobni` or a make/model URL. URL filters take priority. |
| `keyword` | String | No | `skoda` in the form prefill | Vehicle make, model, engine, or phrase. Used when `url` is empty. |
| `location` | String | No | `Hlavní město Praha` in the form prefill | Czech region or district. Used when `url` is empty. |
| `results_wanted` | Integer | No | `20` | Maximum number of unique listings to save. |
| `max_pages` | Integer | No | `10` | Maximum number of listing pages to request. Each page contains up to 20 listings. |
| `proxyConfiguration` | Object | No | Apify Proxy enabled in the form | Optional Apify Proxy or custom proxy configuration. |

### Usage Examples

#### Collect the main personal-car listings

Use the main Sauto personal-car URL for a broad inventory snapshot:

```json
{
  "url": "https://www.sauto.cz/inzerce/osobni",
  "results_wanted": 20,
  "max_pages": 2
}
```

#### Search by make and location

Leave `url` empty to use a keyword and a Czech location:

```json
{
  "keyword": "skoda",
  "location": "Hlavní město Praha",
  "results_wanted": 50,
  "max_pages": 4
}
```

#### Keep a make, model, and URL filter

Use a working Sauto URL when you need the marketplace filter combination to remain unchanged:

```json
{
  "url": "https://www.sauto.cz/inzerce/osobni/skoda/fabia?palivo=benzin&stav=ojete&strana=2",
  "results_wanted": 40,
  "max_pages": 3
}
```

### Sample Output

A dataset item contains the non-empty values available for that listing. The source may contain additional fields for some vehicles.

```json
{
  "id": 210973017,
  "name": "Škoda Kodiaq, L&K 2.0TSI 140kW DSG 4x4 TAŽNÉ",
  "url": "https://www.sauto.cz/osobni/detail/skoda/kodiaq/210973017",
  "price": 809900,
  "additional_model_name": "L&K 2.0TSI 140kW DSG 4x4 TAŽNÉ",
  "manufacturing_date": "2023-01-01",
  "tachometer": 136000,
  "fuel_cb": {
    "name": "Benzín",
    "seo_name": "benzin",
    "value": 1
  },
  "gearbox_cb": {
    "name": "Automatická",
    "seo_name": "automaticka",
    "value": 3
  },
  "manufacturer_cb": {
    "name": "Škoda",
    "seo_name": "skoda",
    "value": 93
  },
  "model_cb": {
    "name": "Kodiaq",
    "seo_name": "kodiaq",
    "value": 7595
  },
  "locality": {
    "country_id": 112,
    "district": "Hlavní město Praha",
    "district_id": 47,
    "district_seo_name": "hlavni-mesto-praha",
    "region": "Hlavní město Praha",
    "region_id": 10,
    "region_seo_name": "hlavni-mesto-praha",
    "source": "regionserver"
  },
  "images": [
    {
      "url": "https://d19-a.sdn.cz/d_19/c_img_qE_B/nPYADvcUkmDOhBEBWkHjNJBa/087f.jpeg"
    }
  ],
  "images_total_count": 11,
  "price_by_agreement": false,
  "topped": true,
  "source": "import_source"
}
```

### Tips for best results

- Use a complete public URL copied from the Sauto personal-car section.
- For a saved search, keep the URL as the primary input instead of copying its filters into separate fields.
- Start with `results_wanted: 20` to verify the dataset before scheduling larger runs.
- Use `max_pages` as a safety limit when collecting a large inventory.
- Use Sauto Czech region or district names for the best location match. The Actor also accepts their SEO-style names.
- Check `price`, `tachometer`, `manufacturing_date`, `locality`, `images`, and `images_total_count` together when comparing vehicles. `images` is the search-result preview, not necessarily the complete gallery.
- Public listings can change or disappear between runs. Re-run the same input when you need a current snapshot.

### Integrations

- **Apify API** - Read completed datasets from your application.
- **Google Sheets** - Export listings for review and price comparisons.
- **Webhooks** - Start downstream processing after a run finishes.
- **Make or Zapier** - Connect vehicle records to alerts, CRM systems, and reporting tools.
- **Scheduled runs** - Refresh inventory hourly, daily, or weekly.
- **JSON, CSV, Excel, and XML** - Download the results in a format that fits your workflow.

### Frequently Asked Questions

#### Can I use a Sauto make or model URL?

Yes. URLs such as `/inzerce/osobni/skoda` and `/inzerce/osobni/skoda/fabia` are supported. Query filters and a page number in the URL are retained.

#### Can I search without a URL?

Yes. Leave `url` empty and provide `keyword`, `location`, or both. The search fields are used only when the URL is empty.

#### Which location names work?

Use Czech regions and districts shown by Sauto.cz, such as `Hlavní město Praha`, `Jihomoravský kraj`, `Brno-město`, or `Praha-východ`. The Actor resolves the human-readable name to the corresponding marketplace location.

#### Are missing properties saved as null?

No. Null and empty-string properties are omitted from each dataset item. This keeps exports easier to use while retaining meaningful boolean and numeric values.

#### Does `images` contain every image for a vehicle?

No. Sauto's search API currently returns a maximum three-image preview in `images`; `images_total_count` can be higher and indicates the size of the full gallery. This Actor does not visit listing detail pages or make extra per-listing requests, so it cannot collect the remaining gallery URLs without violating that single-request constraint.

#### Can I collect more than one page?

Yes. Increase `results_wanted` and set `max_pages` to the maximum number of pages you want checked. The Actor stops when it reaches the result limit or the marketplace has no more results.

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

Yes. Apify dataset exports include JSON, CSV, Excel, XML, and other supported formats.

#### Can I run this Actor on a schedule?

Yes. Create an Apify schedule and use the same URL or search input for recurring inventory and price monitoring.

#### Is it legal to collect Sauto.cz data?

You are responsible for following Sauto.cz terms, applicable laws, privacy requirements, and any restrictions connected to your intended use. Collect and use public data responsibly.

### Related Actors

No second verified automotive or Sauto.cz Actor was visible on the developer's public Actor profile during README preparation. To avoid publishing invented or unrelated links, this section does not include guessed Actor URLs. Relevant related Actors can be added after verified automotive Actor pages are available.

### Support

For a broken URL pattern, changed listing field, or feature request, use the Issues tab on the Actor page and include the input pattern that produced the problem. Do not include private proxy credentials or personal account information.

### Legal Notice

This Actor is intended for legitimate collection of publicly available vehicle listing data. Users are responsible for complying with Sauto.cz terms of use, robots and access rules, applicable privacy laws, copyright requirements, and any contractual restrictions. Do not use collected data for unlawful discrimination, unwanted contact, fraud, or other harmful activity.

# Actor input Schema

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

One Sauto.cz personal-car listing URL. When provided, URL filters take priority over keyword and location.

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

Optional vehicle keyword, manufacturer, model, or listing phrase. Used only when URL is empty.

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

Optional Czech region or district, for example Hlavní město Praha, Brno-město, or Praha-východ. Used only when URL is empty.

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

Maximum number of unique listings to save.

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

Maximum number of API pages to request. Each page contains up to 20 listings.

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

Optional Apify Proxy or custom proxy settings for reliable runs.

## Actor input object example

```json
{
  "url": "https://www.sauto.cz/inzerce/osobni",
  "keyword": "skoda",
  "location": "Hlavní město Praha",
  "results_wanted": 20,
  "max_pages": 3,
  "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 = {
    "url": "https://www.sauto.cz/inzerce/osobni",
    "keyword": "skoda",
    "location": "Hlavní město Praha",
    "results_wanted": 20,
    "max_pages": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/sauto-cz-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 = {
    "url": "https://www.sauto.cz/inzerce/osobni",
    "keyword": "skoda",
    "location": "Hlavní město Praha",
    "results_wanted": 20,
    "max_pages": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/sauto-cz-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 '{
  "url": "https://www.sauto.cz/inzerce/osobni",
  "keyword": "skoda",
  "location": "Hlavní město Praha",
  "results_wanted": 20,
  "max_pages": 3
}' |
apify call shahidirfan/sauto-cz-cars-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,shahidirfan/sauto-cz-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/8S7bhbuF2PlCsbEvd/builds/ZQPSAckGN2CiCiqEh/openapi.json
