# Autoplac.pl Scraper (`trev0n/autoplac-pl-scraper`) Actor

Scrape vehicle listings from autoplac.pl - Polish automotive auction and classified ads platform. Extract prices, specifications, images, and seller information for cars, motorcycles, trucks, and other vehicles.

- **URL**: https://apify.com/trev0n/autoplac-pl-scraper.md
- **Developed by:** [Paweł](https://apify.com/trev0n) (community)
- **Categories:** Automation, Developer tools, Other
- **Stats:** 4 total users, 1 monthly users, 96.8% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

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

## Autoplac.pl Vehicle Scraper

A fast and efficient Apify Actor for scraping vehicle listings from Autoplac.pl, Poland's leading vehicle auction and classified ads platform. Extract comprehensive vehicle data including prices, specifications, VIN numbers, registration plates, seller information, and detailed descriptions.

### Features

- **Comprehensive Data** - Extracts 25+ fields per vehicle including registration numbers and VIN
- **Full Vehicle Details** - Optional extraction of complete specifications, equipment, vehicle history, and seller information
- **Automatic Pagination** - Scrape multiple pages automatically with configurable item limits
- **Flexible Filtering** - Filter by brand, model, price range, year, mileage, fuel type, and more
- **Multiple Vehicle Types** - Support for passenger cars, motorcycles, trucks, commercial vehicles
- **Cost-Effective** - Minimal compute usage with automatic proxy support on Apify
- **100% Reliable** - No browser timeouts or JavaScript issues

### Input Configuration

The actor accepts the following input parameters:

| Parameter | Type | Description | Required | Default |
|-----------|------|-------------|----------|---------|
| `startUrls` | Array | Direct URLs to Autoplac.pl search results or specific offers | Yes | `[{"url": "https://autoplac.pl/oferty/samochody-osobowe"}]` |
| `maxItems` | Integer | Maximum number of items to scrape (0 = unlimited) | No | `100` |
| `scrapeDetails` | Boolean | Fetch detailed information including licensePlateNumber (requires proxy) | No | `true` |
| `proxyConfiguration` | Object | Proxy settings (required when scrapeDetails=true) | No | `{"useApifyProxy": true}` |

#### Example Input - BMW Vehicles

```json
{
  "startUrls": [
    {
      "url": "https://autoplac.pl/oferty/samochody-osobowe/bmw"
    }
  ],
  "maxItems": 50,
  "scrapeDetails": true
}
```

#### Example Input - Specific Price Range

```json
{
  "startUrls": [
    {
      "url": "https://autoplac.pl/oferty/samochody-osobowe/cena-od-50-tysiecy/cena-do-100-tysiecy"
    }
  ],
  "maxItems": 100,
  "scrapeDetails": false
}
```

#### Example Input - Multiple Categories

```json
{
  "startUrls": [
    {
      "url": "https://autoplac.pl/oferty/samochody-osobowe/bmw"
    },
    {
      "url": "https://autoplac.pl/oferty/samochody-osobowe/mercedes-benz"
    },
    {
      "url": "https://autoplac.pl/oferty/motocykle"
    }
  ],
  "maxItems": 200,
  "scrapeDetails": true
}
```

### Output Format

#### Basic Output (scrapeDetails: false)

Each vehicle listing contains core information:

```json
{
  "url": "https://autoplac.pl/oferta/bmw/seria-3/f30-f31-2012-2020-2-0-2019r-bmw-seria-3-AGRAEqZIwHN",
  "offerId": "f30-f31-2012-2020-2-0-2019r-bmw-seria-3-AGRAEqZIwHN",
  "title": "BMW Seria 3 F30/F31 (2012 - 2020)",
  "brand": "BMW",
  "model": "Seria 3",
  "generation": "F30/F31 (2012 - 2020)",
  "version": null,
  "price": 85000,
  "priceCurrency": "PLN",
  "year": 2019,
  "mileage": 89000,
  "fuelType": "DIESEL",
  "bodyType": "SEDAN",
  "scrapedAt": "2025-01-15T10:30:00.000Z"
}
```

#### Full Output (scrapeDetails: true)

Includes all basic fields plus detailed information from the vehicle page:

```json
{
  "url": "https://autoplac.pl/oferta/bmw/x3/e83-2003-2010-2-0-2006r-bmw-x3-d-m47-AGRAEqZIwHN",
  "offerId": "e83-2003-2010-2-0-2006r-bmw-x3-d-m47-AGRAEqZIwHN",
  "title": "BMW X3 E83 (2003 - 2010)",
  "brand": "BMW",
  "model": "X3",
  "generation": "E83 (2003 - 2010)",
  "version": "Inny",
  "price": 21700,
  "priceCurrency": "PLN",
  "year": 2006,
  "mileage": 260000,
  "fuelType": "DIESEL",
  "bodyType": "SUV",
  "transmission": "MANUAL",
  "color": "SILVER",
  "driveType": "FOUR_WHEEL",
  "enginePowerKW": 110,
  "engineCapacity": 1995,
  "doors": 5,
  "seats": 5,
  "vin": "WBAPB11090WE48000",
  "registrationNumber": "SRAAA10",
  "isAccidentFree": true,
  "isFirstOwner": false,
  "isDamaged": false,
  "isDomestic": false,
  "isBrandNew": false,
  "isRegistered": true,
  "location": {
    "city": "Świerklany",
    "voivodeship": "Śląskie",
    "district": "Rybnicki",
    "postCode": "44-266",
    "coordinates": {
      "latitude": 50.01919174194333,
      "longitude": 18.577800750732420
    }
  },
  "seller": {
    "type": "PRIVATE",
    "dealerId": null,
    "userId": 2008460
  },
  "images": [
    "https://euw2-cdn.autoplac.pl/v1/p/e1e2bc39-ba21-43a3-9f00-1fd2b14ecba1?f=1920:webp&c=e55adf28",
    "https://euw2-cdn.autoplac.pl/v1/p/4f532a19-5c93-4dd0-a3b7-fdd0fa966b9d?f=1920:webp&c=e55adf28"
  ],
  "description": "Witam.\n\nNa sprzedaż prywatne BMW X3 E83 2.0D (M47) 2006r (bez dpf)...",
  "specifications": [
    "Ubezpieczenie do: 1.10.2026"
  ],
  "lastUpdate": "2025-11-12T20:33:48.296Z",
  "scrapedAt": "2025-01-15T10:30:00.000Z"
}
```

#### Output Fields Reference

**Basic fields (always extracted):**

- `url` - Direct URL to the vehicle listing
- `offerId` - Unique offer identifier (hashed ID)
- `title` - Vehicle title/name
- `brand` - Manufacturer (e.g., BMW, Mercedes-Benz, Audi)
- `model` - Vehicle model (e.g., X3, Seria 3, C-Class)
- `generation` - Model generation (e.g., "F30/F31 (2012 - 2020)")
- `version` - Specific version/trim level
- `price` - Price in PLN (numeric value)
- `priceCurrency` - Currency code (always "PLN")
- `year` - Production year
- `mileage` - Mileage in kilometers
- `fuelType` - Fuel type: DIESEL, GASOLINE, ELECTRIC, HYBRID, LPG, CNG
- `bodyType` - Body type: SUV, SEDAN, KOMBI, HATCHBACK, COUPE, VAN, CABRIO, etc.
- `scrapedAt` - ISO 8601 timestamp of scraping time

**Detailed fields (only with scrapeDetails: true):**

- `transmission` - Transmission type: MANUAL, AUTOMATIC
- `color` - Exterior color
- `driveType` - Drive type: FOUR\_WHEEL, FRONT\_WHEEL, REAR\_WHEEL
- `enginePowerKW` - Engine power in kilowatts
- `engineCapacity` - Engine capacity in cubic centimeters
- `doors` - Number of doors
- `seats` - Number of seats
- `vin` - Vehicle Identification Number
- `registrationNumber` - License plate number (e.g., "SRBAX10")
- `isAccidentFree` - Boolean indicating if vehicle has no accident history
- `isFirstOwner` - Boolean indicating if this is the first owner
- `isDamaged` - Boolean indicating if vehicle is damaged
- `isDomestic` - Boolean indicating if vehicle was first registered in Poland
- `isBrandNew` - Boolean indicating if vehicle is brand new
- `isRegistered` - Boolean indicating if vehicle is currently registered
- `location` - Object with city, voivodeship, district, postCode, and coordinates
- `seller` - Object with type (DEALER/PRIVATE), dealerId, and userId
- `images` - Array of image URLs
- `description` - Full vehicle description text
- `features` - Array of vehicle equipment and features
- `specifications` - Array of additional specifications
- `listingDate` - ISO 8601 timestamp when listing was created
- `lastUpdate` - ISO 8601 timestamp of last update

**Notes:**

- Fields may be `null` or empty arrays if information is not available
- Not all vehicles have registration numbers - some sellers choose not to disclose them
- VIN numbers are available for most vehicles but may be `null` for some listings
- The `scrapeDetails: false` mode is ~10x faster but provides only basic information

### Use Cases

- **Vehicle Market Analysis** - Analyze pricing trends and market dynamics across Poland
- **Price Monitoring** - Track specific models and get alerts when prices drop
- **Dealership Intelligence** - Monitor competitor inventory and pricing strategies
- **VIN Verification** - Collect VIN numbers for vehicle history checks
- **Market Research** - Understand supply and demand for specific vehicle types
- **Investment Analysis** - Identify undervalued vehicles for resale opportunities
- **Location Analysis** - Understand vehicle availability across different Polish cities
- **Auction Monitoring** - Track auction listings and winning bids
- **Fleet Management** - Find bulk purchasing opportunities for company fleets
- **Export Business** - Identify vehicles suitable for international export

#### Performance Tips

- **Set `maxItems`** to control the number of vehicles scraped and limit run duration
- **Use specific URLs** with filters already applied for targeted scraping
- **Proxy automatically enabled on Apify** - ensures reliable scraping at scale

#### Important Notes

- **Proxy Required**: When `scrapeDetails: true`, proxy configuration is required to fetch registration numbers (licensePlateNumber) from HTML pages
  - API calls work without proxy (fast & reliable)
  - HTML fetching for registration numbers requires proxy on Apify platform
  - Proxy is automatically configured when using Apify Proxy

- The scraper extracts publicly available data from Autoplac.pl

- Not all vehicle listings have complete information:
  - Registration numbers are optional (~30-40% of listings include them)
  - VIN numbers are available for most vehicles (~80-90%)
  - Some detailed fields may be empty even with `scrapeDetails: true`

- The scraper automatically handles pagination until `maxItems` is reached

- All numeric values (price, mileage, year, etc.) are returned as numbers, not strings

- Location coordinates are provided when available for geographic analysis

#### URL Filtering Examples

You can apply filters directly in the URL:

**By brand:**

```
https://autoplac.pl/oferty/samochody-osobowe/bmw
https://autoplac.pl/oferty/samochody-osobowe/mercedes-benz
```

**By price range:**

```
https://autoplac.pl/oferty/samochody-osobowe/cena-od-50-tysiecy/cena-do-100-tysiecy
```

**By year:**

```
https://autoplac.pl/oferty/samochody-osobowe/2020-rok
https://autoplac.pl/oferty/samochody-osobowe/rok-od-2018
```

**By location:**

```
https://autoplac.pl/oferty/samochody-osobowe/warszawa
https://autoplac.pl/oferty/samochody-osobowe/mazowieckie
```

**Combined filters:**

```
https://autoplac.pl/oferty/samochody-osobowe/bmw/x3/2019-rok/warszawa
```

### Supported Vehicle Types

The scraper supports all vehicle categories on Autoplac.pl:

- **samochody-osobowe** - Passenger cars
- **samochody-dostawcze** - Commercial vehicles / vans
- **ciezarowe** - Trucks
- **motocykle** - Motorcycles
- **przyczepy** - Trailers
- **maszyny-budowlane** - Construction machinery
- **maszyny-rolnicze** - Agricultural machinery
- **autobusy** - Buses

***

### Your Feedback

We are always working to improve Actors' performance. If you have any technical feedback about Autoplac.pl Vehicle Scraper or found a bug, please create an issue on the Actor's Issues tab in Apify Console.

# Actor input Schema

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

URLs to start scraping from. Can be category pages (e.g., https://autoplac.pl/oferty/samochody-osobowe/bmw) or specific offer pages (e.g., https://autoplac.pl/oferta/bmw/x3/AGAR8xlCWHJ)

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

Maximum number of items to scrape. Leave empty for unlimited.

## `maxConcurrency` (type: `integer`):

How many offer detail requests to run in parallel. Higher is faster but hits the site harder. Lower it if you see rate-limiting (HTTP 429).

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

Proxy settings for the scraper. Use Apify Proxy for best results.

## `scrapeDetails` (type: `boolean`):

If enabled, scraper will fetch detailed information including licensePlateNumber (registration number). Note: Requires proxy to be enabled (RESIDENTIAL - Poland) for HTML fetching.

## `vehicleTypes` (type: `array`):

Filter by vehicle types. Leave empty to scrape all types.

## `minPrice` (type: `integer`):

Minimum vehicle price in PLN

## `maxPrice` (type: `integer`):

Maximum vehicle price in PLN

## `brands` (type: `array`):

Filter by specific brands (e.g., BMW, Mercedes, Audi). Leave empty for all brands.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://autoplac.pl/oferty/samochody-osobowe"
    }
  ],
  "maxItems": 10,
  "maxConcurrency": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "scrapeDetails": false
}
```

# Actor output Schema

## `overview` (type: `string`):

Basic information about scraped vehicles

## `full` (type: `string`):

Complete vehicle information including images and specifications

## `all` (type: `string`):

All scraped data without any view filters

# 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://autoplac.pl/oferty/samochody-osobowe"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("trev0n/autoplac-pl-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://autoplac.pl/oferty/samochody-osobowe" }],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("trev0n/autoplac-pl-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://autoplac.pl/oferty/samochody-osobowe"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call trev0n/autoplac-pl-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/qe0tV5brN4CEyWQzO/builds/rEDFmwojWHLkixRgS/openapi.json
