# Aramis Group Used Car Scraper (`rastriq/aramis-group-stock`) Actor

Used car stock of Aramis Group in one dataset: Aramisauto (FR), Cardoen (BE), Clicars (ES), brumbrum (IT) and CarSupermarket (UK). Prices, finance, specs, availability, coverage report.

- **URL**: https://apify.com/rastriq/aramis-group-stock.md
- **Developed by:** [Rastriq — Structured data from the world](https://apify.com/rastriq) (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 $1.60 / 1,000 cars

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

## Aramis Group Used Car Scraper — Aramisauto, Clicars, Cardoen, brumbrum & CarSupermarket in One Dataset

**Aramis Group Used Car Scraper** extracts the published used car stock of **Aramis Group**, Europe's leading online used car retailer, across five websites and five countries: [Aramisauto](https://www.aramisauto.com) (France), [Cardoen](https://www.cardoen.be) (Belgium), [Clicars](https://www.clicars.com) (Spain), [brumbrum](https://www.brumbrum.it) (Italy) and [CarSupermarket](https://www.carsupermarket.com) (UK) — about 8,000 cars, all normalised into **one common schema**.

### 🚗 What is Aramis Group Used Car Scraper?

Aramis Group Used Car Scraper is built for pricing analysts, competitors, investors and data teams that track online used car retail in Europe.

- 🧩 **One schema for five sites** — brand, model, version, year, km, hp, fuel, gearbox and prices normalised across languages.
- 📸 **Weekly snapshots** — compare two runs to measure stock additions, exits, days in stock and price changes.
- ✅ **Built-in coverage report** — every run stores `COVERAGE` per brand: cars declared by the site vs extracted, duplicates, requests, status.
- 💶 **Comparable prices** — cash price in EUR, list / new-car price, catalogue discount, financed price, monthly payment, TAN / TAEG.
- 🏷️ **Stock class & availability** — used, km0, nearly-new, new; available, reserved or sold.
- 🤝 **Polite by design** — robots.txt and Crawl-delay are applied in code, one request at a time per site, no proxy, no browser.

### 📋 What data does Aramis Group Used Car Scraper extract?

| Group | Fields |
|---|---|
| 🆔 Identity | `id` (`brand:siteId`, durable), `url`, `title`, `ext_group_brand`, `ext_country`, `ext_offer_id` |
| 🚘 Vehicle | `brand`, `model`, `version`, `year`, `ext_first_registration`, `km`, `hp`, `ext_power_kw`, `ext_engine_cc`, `fuel` (+ `fuel_raw`), `gearbox` (+ `gearbox_raw`), `ext_body`, `ext_color`, `ext_manufacturer_color`, `env_label`, `ext_electric_range_km` |
| 💶 Price | `price` (EUR), `ext_price_local`, `ext_currency`, `financed_price`, `ext_price_list`, `ext_price_offer`, `ext_catalog_discount_pct`, `ext_price_drop_original`, `ext_price_drop_pct`, `ext_badges` |
| 💳 Finance | `ext_monthly_payment`, `ext_financing_months`, `ext_leasing_monthly`, `ext_leasing_months`, `ext_loan_monthly`, `ext_tan`, `ext_taeg`, `ext_down_payment`, `ext_vat_deductible` |
| 📦 Stock | `ext_stock_class`, `ext_availability`, `reserved`, `is_refurbished`, `has_warranty`, `warranty_period`, `ext_legal_warranty_amount` |
| 🚚 Delivery | `ext_delivery_days`, `ext_delivery_location`, `ext_ready_for_delivery`, `ext_transfer_fee` |
| 🧰 Equipment | `ext_equipment_highlights`, `ext_variant_count` |
| 🖼️ Media | `image_url` |
| ✅ Control | `_snapshot_week`, `_field_source`, `_quality_flags`, `run_id`, `scraped_at`, `parse_confidence` |

Fields a site does not publish are `null`, so every row has the same keys. What each site publishes:

| Site | Source | Notes |
|---|---|---|
| Aramisauto 🇫🇷 / Cardoen 🇧🇪 | Listing payload + JSON-LD | Richest: list price, discount %, LOA / credit, highlights, EV range, delivery point |
| Clicars 🇪🇸 | Listing cards | `price` = cash price; `financed_price` separate; delivery days, warranty amount |
| brumbrum 🇮🇹 | Listing `__NEXT_DATA__` | TAN / TAEG, down payment, engine cc, warranty, transfer fee |
| CarSupermarket 🇬🇧 | Sitemap + car page | GBP in `ext_price_local`, miles in `ext_miles` |

### ▶️ How to use Aramis Group Used Car Scraper

1. Click **Try for free**. The default input returns 10 cars per brand in about 30 seconds.
2. Choose the brands / countries.
3. Set **Max cars per brand** to `0` for a full snapshot (cross-checked against each sitemap). Full snapshots respect crawl delays and take 1–3 hours.
4. For weekly runs, put last week's dataset ID in **Previous snapshot dataset ID** to skip known CarSupermarket pages.
5. Read the `COVERAGE` record before using a brand: only `ok` means a complete snapshot.

```json
{ "brands": ["aramisauto", "clicars"], "maxItemsPerBrand": 0 }
```

### ⚙️ Input parameters

| Parameter | Default | Description |
|---|---|---|
| `brands` | 5 brands | `aramisauto`, `cardoen`, `clicars`, `brumbrum`, `carsupermarket` (`onlinecars` is usually blocked) |
| `maxItemsPerBrand` | 10 | 0 = full snapshot |
| `mode` | `snapshot` | `verify` checks known car pages: `live`, `gone`, `redirected`, plus `verify_availability` (e.g. `SoldOut`) |
| `minCoveragePct` | 95 | Below it a brand is `partial` |
| `maxDetailRequests` | 50 | CarSupermarket car pages per run (0 = no limit) |
| `detailSamplePct` | 10 | Share of known CarSupermarket cars re-fetched each week |
| `baselineDatasetId` | — | Previous snapshot for carry-over |
| `pending` | — | `[{"id","url"}]` for verify mode |

### 📦 Output example

```json
{
  "id": "aramisauto:1024678",
  "url": "https://www.aramisauto.com/voitures/byd/seal-u/boost/v345551?vehicleId=1024678",
  "title": "BYD Seal U 1.5l DM-i 218 ch PHEV Boost",
  "ext_group_brand": "aramisauto",
  "ext_country": "FR",
  "brand": "byd",
  "model": "Seal U",
  "year": 2026,
  "km": 10,
  "fuel": "hybrid_plug_in",
  "gearbox": "automatic",
  "ext_body": "suv",
  "ext_color": "grey",
  "price": 29499,
  "ext_price_list": 40600,
  "ext_catalog_discount_pct": 27.34,
  "ext_monthly_payment": 256,
  "ext_financing_months": 84,
  "ext_stock_class": "km0",
  "ext_availability": "available",
  "ext_electric_range_km": 80,
  "ext_equipment_highlights": ["Android Auto", "Apple CarPlay", "Caméra de recul"],
  "ext_delivery_days": 1,
  "ext_delivery_location": "Melun",
  "image_url": "https://storage.googleapis.com/aramis_vehicles/production/betamodels/i_6ad08c951d80b.jpg",
  "_snapshot_week": "2026-W45",
  "_quality_flags": []
}
```

`COVERAGE` (key-value store), one item per brand:

| Status | Meaning | What to do |
|---|---|---|
| `ok` | Coverage ≥ minimum | Use normally |
| `partial` | Low coverage or interrupted | Do not compute stock exits for that brand this week |
| `limited` | Stopped by `maxItemsPerBrand` | Test runs only |
| `failed` | 0 cars or blocked | The run ends as FAILED; other brands keep their data |

### 📐 Definitions that matter

- **`price` is always EUR.** For the UK it stays `null` and pounds go to `ext_price_local`. No currency conversion is done.
- **Clicars**: `price` is the cash price of the card; `financed_price` is the financed one (they are not comparable).
- **Sold cars**: Cardoen and brumbrum listings include sold cars — filter `ext_availability = available` to count stock.
- **Stock exits**: the listing is the source of truth, not the sitemap (sitemaps keep sold cars). Use `verify` mode to confirm.
- **`ext_stock_class`** is the site's own value (`used`, `km0`, `nearly-new`, `new`); filter on it before talking about used stock.

### 💰 How much does it cost to scrape Aramis Group?

Aramis Group Used Car Scraper uses pay-per-event pricing with volume discounts by Apify plan. You pay a small start fee per run and a flat price per car delivered. All five websites are billed the same way; the COVERAGE report is free. Platform usage is included in the price.

| Apify plan | Price per 1,000 cars | Full Aramis Group snapshot (~8,000 cars) |
|---|---|---|
| Free | $2.40 | ≈ $19 |
| Starter (Bronze) | $2.20 | ≈ $18 |
| Scale (Silver) | $1.90 | ≈ $15 |
| Business (Gold) and above | $1.60 | ≈ $13 |

Run start: $0.005. Example: a 1,000-car test on the Free plan costs about $2.40. Set a maximum cost per run in the run options to stay in control.

### 🔗 Related Actors

- [Autohero Scraper](https://apify.com/rastriq/autohero-scraper) — Autohero in 9 European countries.
- [Flexicar Scraper](https://apify.com/rastriq/flexicar-scraper) — Spain's largest used car dealer network, plus Portugal.
- [Autosphere.fr Scraper](https://apify.com/rastriq/autosphere-fr-scraper) — French dealer group stock with promotions and LOA.

### ❓ FAQ

**Is it legal?** The Actor reads publicly available listings, applies robots.txt and Crawl-delay, identifies itself and stops on 401 / 403 / 429 or challenge pages. It does not log in or bypass protections.

**Does it collect personal data?** No. VINs and licence plates are never stored (a final filter removes them if they slip into any field).

**Why is a full snapshot slow?** Some sites ask for 5–10 seconds between requests and the Actor honours it.

***

### 🇪🇸 Versión en español

**Aramis Group Used Car Scraper** extrae el stock publicado de las webs de Aramis Group —Aramisauto (Francia), Cardoen (Bélgica), **Clicars (España)**, brumbrum (Italia) y CarSupermarket (Reino Unido)— con un único esquema: marca, modelo, versión, año, km, CV, combustible, cambio, precio al contado en euros, precio de catálogo, descuento, financiación (cuota, meses, TAN/TAE), clase de stock (ocasión, km0, seminuevo, nuevo), disponibilidad, plazo y punto de entrega, equipamiento destacado y foto.

**Cómo usarlo:** pulsa *Start* para una prueba de 10 coches por marca; pon *Max cars per brand* a `0` para la foto completa. Revisa el registro `COVERAGE`: solo el estado `ok` garantiza una foto completa. En Clicars, `price` es el precio al contado y `financed_price` el financiado.

**Precio:** pago por evento con descuento por plan: $2,40 / 1.000 coches en Free, $2,20 en Starter, $1,90 en Scale y $1,60 en Business, más $0,005 por run. El consumo de plataforma está incluido.

# Actor input Schema

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

Aramis Group websites to scrape. Onlinecars (Austria) is not selected by default: its website answers with a Cloudflare challenge and this Actor does not try to bypass it.

## `maxItemsPerBrand` (type: `integer`):

Safety limit per brand. <b>0 = no limit</b> (full snapshot, also cross-checked against each site's sitemap). Full runs respect each site's crawl delay and can take 1–3 hours.

## `mode` (type: `string`):

<b>snapshot</b>: extract the published stock. <b>verify</b>: check a list of known car pages (live, gone, redirected, sold) without following redirects.

## `minCoveragePct` (type: `integer`):

Below this share of the site's declared stock, the brand is marked <code>partial</code> in COVERAGE.

## `maxDetailRequests` (type: `integer`):

Maximum CarSupermarket car pages per run. 0 = no limit.

## `detailSamplePct` (type: `integer`):

With a previous snapshot, share of already-known CarSupermarket cars whose page is fetched again to catch price changes.

## `baselineDatasetId` (type: `string`):

Dataset of a previous run. Known CarSupermarket cars are carried over (flag <code>price_carried_from_baseline</code>) instead of being fetched again — much faster weekly runs.

## `pending` (type: `array`):

Only for mode = verify. List of <code>{"id": "aramisauto:1030143", "url": "https://www.aramisauto.com/voitures/..."}</code>. URLs of other domains are rejected; CarSupermarket and Onlinecars cannot be verified individually.

## Actor input object example

```json
{
  "brands": [
    "aramisauto",
    "cardoen",
    "clicars",
    "brumbrum",
    "carsupermarket"
  ],
  "maxItemsPerBrand": 10,
  "mode": "snapshot",
  "minCoveragePct": 95,
  "maxDetailRequests": 50,
  "detailSamplePct": 10
}
```

# Actor output Schema

## `cars` (type: `string`):

All extracted cars.

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

No description

## `coverage` (type: `string`):

status (ok | partial | limited | failed), declared, extracted, coverage_pct, duplicates, requests.

# 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 = {
    "maxItemsPerBrand": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("rastriq/aramis-group-stock").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 = { "maxItemsPerBrand": 10 }

# Run the Actor and wait for it to finish
run = client.actor("rastriq/aramis-group-stock").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 '{
  "maxItemsPerBrand": 10
}' |
apify call rastriq/aramis-group-stock --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rastriq/aramis-group-stock"
        }
    }
}
```

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/5cBGTCrNvj92afFEL/builds/PudAfRDZudoRX8Pm2/openapi.json
