# Standvirtual Scraper | Portugal Used Cars, Prices & Specs (`plum_spear/aztec-standvirtual`) Actor

Scrape Standvirtual - Portugal's #1 automotive marketplace - by brand, model, and price. Extract car prices in EUR, mileage, fuel type, year, and ad URLs as clean structured JSON.

- **URL**: https://apify.com/plum\_spear/aztec-standvirtual.md
- **Developed by:** [Roberto Kerber](https://apify.com/plum_spear) (community)
- **Categories:** E-commerce, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.30 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

## Standvirtual Scraper - Portugal Used Cars, Prices & Specs

> Built and maintained by **Az Digital Consulting LU**.

**Scrape Standvirtual at scale.** This scraper extracts structured data from [Standvirtual](https://www.standvirtual.com/) - Portugal's #1 automotive marketplace and part of the OLX Group. Filter by car brand, model, price range, or registration year, and receive clean, flat JSON for every listing: **title, brand, model, price in EUR, registration year, mileage (km), fuel type, and direct URL to the listing**.

Fast, lightweight, and cost-effective. The scraper extracts structured schema.org data directly from Standvirtual pages, eliminating the need for heavy headless browsers. Run it once for a market snapshot, or **schedule it daily via Apify Scheduler** to track how car prices and inventory evolve across Portugal.

***

### What does Standvirtual Scraper do?

Instead of manually checking listings, you give it a brand (e.g. `bmw`, `mercedes-benz`, `audi`, `volkswagen`, `tesla`, `renault`) or model (e.g. `serie-3`, `classe-a`, `model-3`), set optional price and year constraints, and download the full market data in seconds.

- **Numeric EUR prices**: Prices are formatted as clean numbers (`18900`), ready for instant calculations, average valuations, and spread analysis.
- **Kilometers and year included**: Easily filter out high-mileage vehicles or older registrations.
- **Direct ad links**: Jump directly to any listing on Standvirtual.com.

***

### Use Cases

- **Automotive Arbitrage & Reselling**: Identify underpriced cars in Portugal and compare prices against European platforms (Mobile.de, AutoScout24).
- **Dealership Price Monitoring**: Track competitor asking prices across Lisbon, Porto, and all Portuguese districts.
- **Fleet Valuation & Residual Value Models**: Build historic datasets to quantify vehicle depreciation over time.
- **Market Research & Consulting**: Quantify electric vehicle (EV) vs diesel market share and price evolution in Portugal.

***

### How to use Standvirtual Scraper

1. Click **Try for free**.
2. Select or type a **Car brand** (e.g. `bmw`, `audi`, `mercedes-benz`, or leave empty for all brands).
3. *(Optional)* Add a **Model**, **Price range**, or **Registration year**.
4. Set **Max cars** (e.g. `50`, `200`).
5. Click **Start** and export your results as JSON, CSV, or Excel.

***

### Input Parameters

| Field | Type | Description | Default |
|---|---|---|---|
| `brand` | String | Brand slug (e.g. `bmw`, `mercedes-benz`, `audi`, `volkswagen`) | `"bmw"` |
| `model` | String | Model slug (e.g. `serie-3`, `classe-a`, `golf`, `clio`) | `""` (all) |
| `priceMin` / `priceMax` | Integer | Price range filter in EUR | `null` |
| `yearMin` / `yearMax` | Integer | Minimum and maximum registration year | `null` |
| `maxCars` | Integer | Total number of listings to collect | `50` |

```json
{
  "brand": "bmw",
  "model": "serie-3",
  "priceMax": 30000,
  "yearMin": 2019,
  "maxCars": 100
}
```

***

### Output Example

```json
{
  "id": "8Q0NET",
  "title": "BMW 740",
  "brand": "BMW",
  "price": 17900,
  "currency": "EUR",
  "year": 2012,
  "mileage": 174005,
  "fuelType": "Diesel",
  "url": "https://www.standvirtual.com/carros/anuncio/bmw-740-ver-d-auto-ID8Q0NET.html"
}
```

***

### Automated & Recurring Workflows (Apify Scheduler)

To monitor price changes, price drops, and new car arrivals automatically:

1. In the Actor console, click **Schedules** > **Add new schedule**.
2. Choose frequency (e.g. `@daily` at 8:00 AM).
3. Connect your output via **Webhook**, **Google Sheets**, **Make**, or **n8n**.

#### Python Integration Example

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run = client.actor("plum_spear/aztec-standvirtual").call(
    run_input={"brand": "tesla", "maxCars": 50}
)

cars = client.dataset(run["defaultDatasetId"]).list_items().items
for car in cars:
    print(f"{car['title']} - €{car['price']} ({car['year']}, {car['mileage']} km)")
```

***

### Pricing

This Actor operates on transparent **Pay-Per-Event (PPE)** pricing:

- **$0.30 per 1,000 car listings**
- Small start fee per execution.
- Testing is covered by Apify's free monthly platform credits.

# Actor input Schema

## `brand` (type: `string`):

Car brand or manufacturer (e.g., 'bmw', 'mercedes-benz', 'audi', 'volkswagen', 'renault', 'peugeot', 'tesla'). Leave empty for all brands.

## `model` (type: `string`):

Specific model (e.g., 'serie-3', 'classe-a', 'golf', 'model-3'). Leave empty for all models of the chosen brand.

## `priceMin` (type: `integer`):

Minimum asking price in Euros.

## `priceMax` (type: `integer`):

Maximum asking price in Euros.

## `yearMin` (type: `integer`):

Filter by minimum registration year (e.g., 2018).

## `yearMax` (type: `integer`):

Filter by maximum registration year (e.g., 2024).

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

Maximum number of car listings to collect.

## Actor input object example

```json
{
  "brand": "bmw",
  "model": "",
  "maxCars": 50
}
```

# Actor output Schema

## `dataset` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("plum_spear/aztec-standvirtual").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("plum_spear/aztec-standvirtual").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 '{}' |
apify call plum_spear/aztec-standvirtual --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,plum_spear/aztec-standvirtual"
        }
    }
}

```

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/wczDaLMDm5MMZP3pE/builds/yUPyTbPggDbg9hiqR/openapi.json
