# Flexicar Scraper (`rastriq/flexicar-scraper`) Actor

Scrape used cars from Flexicar Spain & Portugal: prices, price drops, cash vs financed price, finance plans, specs, equipment and dealerships. Public API, 25+ filters.

- **URL**: https://apify.com/rastriq/flexicar-scraper.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.40 / 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

## Flexicar Scraper — Spain & Portugal Used Car Prices, Finance Offers and Dealer Stock

**Flexicar Scraper** extracts the full used car stock of [Flexicar](https://www.flexicar.es), Spain's largest used car dealer network (≈23,000 cars across 179 dealerships), plus [Flexicar Portugal](https://www.flexicar.pt). Get financed and cash prices, price drops, monthly payments, DGT environmental labels, power, equipment, technical sheet and dealership location — through Flexicar's public API, without a browser.

### 🚗 What is Flexicar Scraper?

Flexicar Scraper is a fast Flexicar API scraper for pricing analysts, dealers, car buyers' platforms, leasing and remarketing teams who need structured Spanish used car market data.

- 📉 **Track used car prices in Spain** — full-stock snapshots with previous price and price-drop amount.
- 💳 **Cash vs financed price** — Flexicar's headline price requires financing; you also get the cash price, instalment, down payment, term, TAN / TAE.
- 🏷️ **DGT labels** — filter and analyse 0, ECO, C and B cars.
- 🧰 **Full equipment and technical sheet** with vehicle details enabled.
- 📍 **Dealer network mapping** — dealership address, province, postal code, GPS, business phone and opening hours.
- 🇵🇹 **Portugal included** — switch `country` to `pt`.

### 📋 What data does Flexicar Scraper extract?

| Group | Fields |
|---|---|
| 🆔 Identity | `id` (durable), `slug`, `url`, `country`, `title` |
| 🚘 Vehicle | `brand`, `model`, `version`, `year`, `km`, `fuel`, `transmission`, `color`, `ecoSticker` |
| 💶 Price | `price`, `cashPrice`, `previousPrice`, `priceDropAmount`, `retailPrice`, `savingVsRetailPct`, `quotaPrice` |
| 💳 Finance | `financingInitialPayment`, `financingQuota`, `financingMonths`, `financingTAN`, `financingTAEG`, `financingTotalAmount`, `financingOpeningCommission` |
| 🏷️ Status | `offer`, `outlet`, `reserved`, `taxDeductible`, `financiable`, `internalStock` |
| 🔧 Details *(optional)* | `powerHp`, `engineLiters`, `bodyType`, `doors`, `seats`, `registrationDate`, consumption, `equipmentSafety`, `equipmentComfort`, `equipmentMultimedia`, `equipmentInterior`, `equipmentExterior`, `equipmentExtras`, `technicalSheet`, `reservable` |
| 📍 Dealership | `dealershipName`, `dealershipSlug` + *(optional)* city, province, address, postal code, phone, email, GPS, opening hours |
| 🖼️ Media | `mainImageUrl` + *(optional)* `images`, `images360` |
| ✅ Quality | `_quality_flags`, `_validation_errors`, `_detail_status`, `scrapedAt`, `sourceUrl` |

Up to **81 fields per car**. Suspicious values are flagged, never silently dropped.

### ▶️ How to use Flexicar Scraper

1. Click **Try for free** and open the Input tab.
2. Choose the country and, optionally, filters: brands, models, fuel, body type, DGT label, transmission, province, dealership, price, monthly payment, year, km, power, seats, offers, outlet, VAT-deductible.
3. Pick a sort order and **Max items** (empty = full stock).
4. Enable **vehicle details** and/or **dealership details** if you need them.
5. Click **Start** and export to JSON, CSV or Excel. Use the views *Overview*, *Prices & finance*, *Specs & equipment*, *Dealerships* and *Data quality*.

### ⚙️ Input parameters

| Parameter | Type | Description |
|---|---|---|
| `country` | select | `es` or `pt` |
| `brands`, `models` | list | Slugs, e.g. `["toyota","kia"]`, `["corolla"]` |
| `fuels` | multi-select | `gasolina`, `diesel`, `hibrido-no-enchufable`, `hibrido-enchufable`, `electrico`, `glp` |
| `bodyTypes` | multi-select | `turismo`, `suv-4x4`, `compacto`, `familiar`, `monovolumen`, `deportivo`, `cabrio`, `furgoneta`, `pick-up` |
| `ecoStickers` | multi-select | `0`, `E` (ECO), `C`, `B` |
| `province`, `dealership` | text | Slugs, e.g. `madrid`, `alicante` |
| `minPrice` … `maxSeats` | integer | Price, monthly payment, year, km, hp and seat ranges |
| `offersOnly`, `outletOnly`, `taxDeductibleOnly`, `premiumOnly` | boolean | Flags |
| `sortBy` | select | Relevance, price, km, newest, latest listings, power, monthly payment, brand |
| `maxItems` | integer | 0 / empty = all |
| `includeDetails`, `includeDealerships`, `includeFinancing`, `includeImages` | boolean | Output options |

Example — hybrid Toyota and Kia under €20,000 in Madrid, cheapest first, with details:

```json
{
  "brands": ["toyota", "kia"],
  "fuels": ["hibrido-no-enchufable"],
  "province": "madrid",
  "maxPrice": 20000,
  "sortBy": "price_asc",
  "includeDetails": true,
  "includeDealerships": true,
  "maxItems": 200
}
```

### 📦 Output example

```json
{
  "id": 903000000264619,
  "url": "https://www.flexicar.es/coches-ocasion/kia-niro-16-gdi-hibrido-104kw-141cv-concept-hibrido-no-enchufable-automatica-huesca_903000000264619/",
  "country": "es",
  "title": "Kia Niro 1.6 GDi Híbrido 104kW (141CV) Concept",
  "year": 2018,
  "registrationDate": "2018-11",
  "km": 137000,
  "fuel": "Híbrido no enchufable",
  "transmission": "Automática",
  "ecoSticker": "E",
  "price": 10390,
  "cashPrice": 12390,
  "previousPrice": 12390,
  "retailPrice": 25600,
  "savingVsRetailPct": 59.4,
  "quotaPrice": 162,
  "financingInitialPayment": 9390,
  "financingMonths": 120,
  "offer": true,
  "powerHp": 141,
  "bodyType": "Turismo",
  "seats": 5,
  "equipmentCount": 33,
  "dealershipName": "Huesca",
  "dealershipProvince": "Huesca",
  "dealershipLatitude": 42.1309122,
  "dealershipLongitude": -0.4156348,
  "scrapedAt": "2026-11-04T20:58:43.569Z",
  "_quality_flags": []
}
```

A `RUN_SUMMARY` record (available vs extracted, coverage %, failed pages, retries) is saved in the key-value store for monitoring scheduled runs.

### 💰 How much does it cost to scrape Flexicar?

Flexicar 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. Vehicle details, full equipment and dealership data are included — no extra fee per detail. Platform usage is included in the price.

| Apify plan | Price per 1,000 cars | Full Flexicar Spain stock (~23,000 cars) |
|---|---|---|
| Free | $2.00 | ≈ $46 |
| Starter (Bronze) | $1.80 | ≈ $41 |
| Scale (Silver) | $1.60 | ≈ $37 |
| Business (Gold) and above | $1.40 | ≈ $32 |

Run start: $0.005. Example: a 1,000-car test on the Free plan costs about $2.00. 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 used cars in 9 European countries, including Spain.
- [Autosphere.fr Scraper](https://apify.com/rastriq/autosphere-fr-scraper) — French dealer group stock with promotions and LOA offers.
- [Aramis Group Stock](https://apify.com/rastriq/aramis-group-stock) — Clicars (Spain), Aramisauto, Cardoen, brumbrum and CarSupermarket.

### ❓ FAQ

**Is it legal to scrape Flexicar?** Flexicar Scraper only reads publicly available vehicle listings and dealership business contact data. It does not log in or bypass protections. Review Flexicar's terms and your local rules for your use case.

**Why is `price` lower than `cashPrice`?** Flexicar advertises a financed price; `cashPrice` is what you pay without their financing.

**Where do I find slugs for brands, provinces or dealerships?** Use the lowercase name with dashes (e.g. `mercedes-benz`, `santa-cruz-tenerife`), or run once and read `dealershipSlug` / `dealershipProvinceSlug` from the output.

**How fresh is the data?** Read live at run time. Schedule daily runs to build price-drop histories.

**Need another field or found a bug?** Open an issue in the Issues tab.

# Actor input Schema

## `country` (type: `string`):

flexicar.es (Spain) or flexicar.pt (Portugal).

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

Brand slugs, e.g. <code>toyota</code>, <code>kia</code>, <code>mercedes-benz</code>. Several brands are combined with OR.

## `models` (type: `array`):

Model slugs, e.g. <code>corolla</code>, <code>c-hr</code>, <code>serie-3</code>. Best used together with one brand.

## `fuels` (type: `array`):

Empty = all.

## `bodyTypes` (type: `array`):

Empty = all.

## `ecoStickers` (type: `array`):

Spanish DGT sticker. Empty = all.

## `transmission` (type: `string`):

Gearbox.

## `province` (type: `string`):

Province slug, e.g. <code>madrid</code>, <code>barcelona</code>, <code>valencia</code>, <code>vizcaya</code>, <code>islas-baleares</code>.

## `dealership` (type: `string`):

Single dealership slug (see <code>dealershipSlug</code> in the output), e.g. <code>alicante</code>.

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

Lower price bound.

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

Upper price bound.

## `minMonthlyPayment` (type: `integer`):

Lower instalment bound.

## `maxMonthlyPayment` (type: `integer`):

Upper instalment bound.

## `minYear` (type: `integer`):

Earliest registration year.

## `maxYear` (type: `integer`):

Latest registration year.

## `minKm` (type: `integer`):

Lower mileage bound.

## `maxKm` (type: `integer`):

Upper mileage bound.

## `minHp` (type: `integer`):

Lower power bound.

## `maxHp` (type: `integer`):

Upper power bound.

## `minSeats` (type: `integer`):

e.g. 7 for 7-seaters.

## `maxSeats` (type: `integer`):

Upper seat bound.

## `offersOnly` (type: `boolean`):

Only cars flagged as offer.

## `outletOnly` (type: `boolean`):

Only outlet cars.

## `taxDeductibleOnly` (type: `boolean`):

Only cars with deductible VAT (B2B).

## `premiumOnly` (type: `boolean`):

Only Flexicar's premium / luxury selection.

## `sortBy` (type: `string`):

Result order — combine with Max items, e.g. the 100 cheapest cars.

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

Maximum cars. Empty or 0 = all matching cars.

## `includeDetails` (type: `boolean`):

Adds power (hp), engine size, doors, seats, body type, registration month, consumption and the full equipment & technical sheet (safety, comfort, multimedia, interior, exterior, extras). One small extra request per car.

## `includeDealerships` (type: `boolean`):

Adds dealership city, province, address, postal code, business phone & email, GPS and opening hours. A single extra request per run.

## `includeFinancing` (type: `boolean`):

Down payment, instalment, term, TAN/TAE and total payable.

## `includeImages` (type: `boolean`):

Full photo gallery and 360° images. The main photo is always included.

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

Parallel API requests.

## `maxRequestRetries` (type: `integer`):

Exponential backoff on errors.

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

Not needed: Flexicar's API is public. Enable only if you get blocked.

## `debug` (type: `boolean`):

Verbose logs.

## Actor input object example

```json
{
  "country": "es",
  "brands": [],
  "transmission": "any",
  "offersOnly": false,
  "outletOnly": false,
  "taxDeductibleOnly": false,
  "premiumOnly": false,
  "sortBy": "relevance",
  "maxItems": 50,
  "includeDetails": false,
  "includeDealerships": false,
  "includeFinancing": true,
  "includeImages": false,
  "maxConcurrency": 4,
  "maxRequestRetries": 4,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "debug": false
}
```

# Actor output Schema

## `vehicles` (type: `string`):

All extracted vehicles.

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

No description

## `summary` (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 = {
    "brands": [],
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rastriq/flexicar-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 = {
    "brands": [],
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("rastriq/flexicar-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 '{
  "brands": [],
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call rastriq/flexicar-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rastriq/flexicar-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/3pf6nNrWURwJyOqgP/builds/qUZCGBX3ICJxtR5a9/openapi.json
