# Via Mobilis Scraper — Planet Trucks & Europe Camions (`crawloop/via-mobilis-scraper`) Actor

Via Mobilis / Planet Trucks / Europe Camions scraper for used trucks, construction equipment, forklifts, and agri ads. Export price, year, hours, specs, images, and seller phone. Listings or full details via Apify.

- **URL**: https://apify.com/crawloop/via-mobilis-scraper.md
- **Developed by:** [Andrej Kiva](https://apify.com/crawloop) (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 $1.29 / 1,000 scraped via mobilis listings

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?

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

## Via Mobilis Scraper — Planet Trucks & Europe Camions

> **Disclaimer:** Unofficial tool — not affiliated with, sponsored by, or endorsed by Via Mobilis, Planet Trucks, Europe Camions, Europe Construction Equipment, or related operators or its affiliates. Data is read from publicly accessible pages only. No login. You are responsible for complying with applicable law (including GDPR where personal data appears) and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.

> **Contact-data controls:** Phone/WhatsApp/fax fields are omitted from the dataset by default. Enable `includePhones` only for numbers already published on public pages and only when you have a lawful basis. Any contact-field examples below assume that explicit opt-in; otherwise those fields are absent.

> **Crawloop Machinery & Commercial Vehicles** — Used equipment and vehicle listings across European marketplaces and dealers.

| Via Mobilis | Truck1 | MachineSeeker | Machineryline | Surplex |
| :--- | :--- | :--- | :--- | :--- |
| **Via Mobilis Scraper** ◄── you are here | [Truck1 Scraper](https://apify.com/crawloop/truck1-scraper) | [MachineSeeker Scraper](https://apify.com/crawloop/machineseeker-scraper) | [Machineryline Scraper](https://apify.com/crawloop/machineryline-scraper) | [Surplex Scraper](https://apify.com/crawloop/surplex-scraper) |

**Via Mobilis scraper** (Planet Trucks / Europe Camions / Europe TP network) for Europe’s used **trucks**, **tractor units**, **semi-trailers**, **excavators**, **forklifts**, **vans**, and **farm machines** — into clean JSON via Apify. Paste category or listing URLs, or pick presets, then export **price (often excl. VAT)**, **year**, **hours / km**, **make / model**, **specs**, **images**, and **seller phone** when published. Fast HTTP path (curl\_cffi) with French residential proxy recommended for Cloudflare. Use as a **Via Mobilis / Planet Trucks / Europe Camions API alternative** from **Python**, **Node.js**, cURL, or **MCP**.

**Best for:** EU used-truck and construction-equipment comps, dealer lead lists, fleet sourcing, and cross-border inventory monitoring.

### When to use this Actor

Use the **Via Mobilis Scraper** when you need:

- **Truck & trailer pricing** — tractor units, tippers, semi-trailers across Planet Trucks / Europe Camions mirrors
- **Construction equipment intelligence** — excavators, loaders, bulldozers, telehandlers with hours and weight
- **Handling & agri stock** — forklifts, aerial platforms, farm tractors
- **Dealer contacts** — seller name + phone on detail pages when disclosed
- **One catalog, many portals** — shared `listingId` across language / vertical mirrors of the Via Mobilis network

Ideal for truck dealers, construction equipment brokers, fleet buyers, market analysts, and CRM enrichment pipelines.

### Data pipeline

```
Input                              Mode                         Output
─────────────────────────         ────────────────────         ──────────────────────────

  Category / portal URL      ──►   listings (fast cards)  ──►  price, year, hours/km
  categories[] presets       ──►   details  (full PDP)   ──►  specs, images, seller phone
  Direct /ts-vi{ID}/ URL     ──►                           ──►  make, model, location

  Dedupe by listingId across Planet Trucks / Europe Camions / Europe TP mirrors
```

### Key features

- **Network coverage** — Via Mobilis hub plus Planet Trucks, Europe Camions, Europe Construction Equipment, forklift, agri, and commercial-van mirrors
- **Two extraction modes** — `listings` for card-level catalogs; `details` for technical sheets with gallery and seller phone
- **Category presets** — trucks, construction, vans, handling, farm, plus excavator, forklift, tractor unit, and more
- **Rich listing cards** — price, make, year, hours/km, city, country code, thumbnail, sale / rent / auction flags when present
- **Detail enrichment** — model, condition, engine power (kW), weight, specs table, photo gallery, dealer phone
- **Fast concurrent HTTP** — curl\_cffi TLS fingerprinting; FR/EU residential proxy recommended at scale

### Input parameters

| Parameter | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `startUrls` | Array | excavator sample | Category, search, or `/ts-vi{ID}/` detail URLs on any network host |
| `categories` | Array | `["excavator"]` | Used when `startUrls` is empty |
| `runMode` | String | `listings` | `listings` (cards) or `details` (full PDP) |
| `maxItems` | Integer | `50` | Cap (`0` = unlimited) |
| `maxPagesPerUrl` | Integer | `3` | Pages per start URL (~20 ads/page; `0` = until exhausted) |
| `concurrencyLimit` | Integer | `4` | Parallel detail workers (1–20) |
| `proxyConfiguration` | Object | FR residential | Apify Proxy; FR/EU residential recommended |

#### Input example

```json
{
  "startUrls": [
    { "url": "https://www.via-mobilis.com/used/excavator/~a2b1" }
  ],
  "runMode": "listings",
  "maxItems": 50,
  "maxPagesPerUrl": 3,
  "concurrencyLimit": 4,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "FR"
  }
}
```

### Output format

Each row is pushed to the default dataset.

| Field | Description |
| :--- | :--- |
| `listingId` | Via Mobilis ad id (`ts-vi` number) |
| `url`, `title`, `portal` | Listing URL, title, hostname |
| `category`, `family` | Category label and family (trucks / construction / …) |
| `make`, `model`, `year`, `condition` | Identity fields |
| `price`, `priceCurrency`, `priceFormatted`, `priceExVat` | Asking price |
| `forSale`, `forRent`, `forAuction` | Offer type flags when present |
| `hours`, `mileageKm`, `powerKw`, `weightTonnes` | Usage / technical measures |
| `countryCode`, `city`, `location` | Geo |
| `sellerName`, `sellerPhone` | Dealer contact on details |
| `specs`, `imageUrl`, `images` | Specs map + gallery |
| `scrapedAt` | UTC timestamp |

#### Output example

```json
{
  "listingId": "11383699",
  "url": "https://www.europe-construction-equipment.com/kubota-mini-excavator/lodi/ts-vi11383699/used.html",
  "title": "Used Kubota mini excavator KX016-4",
  "make": "Kubota",
  "model": "KX016-4",
  "year": 2015,
  "price": 15500,
  "priceCurrency": "EUR",
  "priceExVat": true,
  "hours": 1771,
  "powerKw": 9.6,
  "weightTonnes": 16,
  "city": "Lodi",
  "countryCode": "IT",
  "sellerName": "Deal Di Balliu Mentor & c. Sas",
  "sellerPhone": "+393293779028"
}
```

### Use cases

1. **EU excavator comps** — track € excl. VAT and hours for Cat / Komatsu / Kubota stock
2. **Truck dealer monitoring** — watch Planet Trucks / Europe Camions inventory by category URL
3. **Lead lists** — export seller phones from detail mode into CRM
4. **Cross-portal dedupe** — join on `listingId` across language mirrors of the same network
5. **Fleet sourcing** — filter by year, hours, and country before contacting dealers

### Integration examples

#### Node.js

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/via-mobilis-scraper').call({
  startUrls: [{ url: 'https://www.via-mobilis.com/used/excavator/~a2b1' }],
  runMode: 'listings',
  maxItems: 50,
  maxPagesPerUrl: 2,
  proxyConfiguration: {
    useApifyProxy: true,
    apifyProxyGroups: ['RESIDENTIAL'],
    apifyProxyCountry: 'FR',
  },
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 3));
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("crawloop/via-mobilis-scraper").call(run_input={
    "startUrls": [{"url": "https://www.via-mobilis.com/used/excavator/~a2b1"}],
    "runMode": "details",
    "maxItems": 25,
    "maxPagesPerUrl": 1,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "FR",
    },
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item.get("listingId"), item.get("price"), item.get("sellerPhone"))
```

#### cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/crawloop~via-mobilis-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "startUrls": [{"url": "https://www.via-mobilis.com/used/excavator/~a2b1"}],
    "runMode": "listings",
    "maxItems": 20,
    "maxPagesPerUrl": 1
  }'
```

### MCP and AI assistants

Use this Actor from AI tools via [Apify MCP](https://docs.apify.com/platform/integrations/mcp).
Connect your Apify account, then call this Actor by its Store ID / name.

Example prompts:

- "Run Via Mobilis Scraper for excavators, max 40 listings, and return price, year, hours as JSON"
- "Scrape Planet Trucks / Via Mobilis tractor units in details mode and list seller phones"
- "Chain Via Mobilis Scraper then Truck1 Scraper to compare excavator asking prices in Europe"

### Suite next step

After catalog extraction here, enrich overlapping EU truck inventory with [Truck1 Scraper](https://apify.com/crawloop/truck1-scraper) or broaden construction coverage with [Machineryline Scraper](https://apify.com/crawloop/machineryline-scraper).

### FAQ

**Which sites does this Via Mobilis scraper cover?**\
Any URL on the Via Mobilis network that shares the same catalog IDs (`ts-vi…`), including via-mobilis.com, Planet Trucks, Europe Camions, Europe Construction Equipment, forklift and agri mirrors.

**Is this a Planet Trucks / Europe Camions API alternative?**\
Yes for public listing extraction into JSON/CSV via Apify — category crawls, detail enrichment, and MCP / Python / Node workflows. Respect site terms and applicable law.

**Why FR residential proxy?**\
The network sits behind Cloudflare. French/EU residential sessions are more reliable for larger crawls.

**Listings vs details?**\
Use `listings` for fast discovery cards; use `details` when you need model, specs, gallery, and seller phone.

### Related Actors

- [Truck1 Scraper](https://apify.com/crawloop/truck1-scraper)
- [MachineSeeker Scraper](https://apify.com/crawloop/machineseeker-scraper)
- [Machineryline Scraper](https://apify.com/crawloop/machineryline-scraper)
- [Surplex Scraper](https://apify.com/crawloop/surplex-scraper)
- [Mobile.de Scraper](https://apify.com/crawloop/mobile-de-scraper)

# Actor input Schema

## `includePhones` (type: `boolean`):

Off by default. Include phone, mobile, WhatsApp, or fax fields already published on public pages only when you have a lawful basis.

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

Category, search, or listing detail URLs on Via Mobilis network domains (via-mobilis.com, planet-trucks.com, europe-camions.com, europe-construction-equipment.com, europe-forklift.com, europe-agriculture.com, europe-commercial-vehicle.com, and language mirrors). Detail pages contain /ts-vi{ID}/. If empty, categories below are used.

## `categories` (type: `array`):

Used when startUrls is empty. Family-level and popular subcategories on via-mobilis.com.

## `runMode` (type: `string`):

listings = fast card-level data from category pages. details = visit each listing page for full specs, gallery, and seller phone.

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

Maximum listings to return. 0 = unlimited.

## `maxPagesPerUrl` (type: `integer`):

Pagination depth per category URL (~20 ads/page). 0 = until the site has no more pages.

## `concurrencyLimit` (type: `integer`):

Parallel detail-page workers. Keep moderate to avoid rate limits.

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

Residential proxies recommended (FR/EU). Cloudflare is present on the network.

## Actor input object example

```json
{
  "includePhones": false,
  "startUrls": [
    {
      "url": "https://www.via-mobilis.com/used/excavator/~a2b1"
    }
  ],
  "categories": [
    "excavator"
  ],
  "runMode": "listings",
  "maxItems": 50,
  "maxPagesPerUrl": 3,
  "concurrencyLimit": 4,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "FR"
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Default dataset items.

# 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://www.via-mobilis.com/used/excavator/~a2b1"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawloop/via-mobilis-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://www.via-mobilis.com/used/excavator/~a2b1" }] }

# Run the Actor and wait for it to finish
run = client.actor("crawloop/via-mobilis-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 '{
  "startUrls": [
    {
      "url": "https://www.via-mobilis.com/used/excavator/~a2b1"
    }
  ]
}' |
apify call crawloop/via-mobilis-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawloop/via-mobilis-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/GE1xZqj6UyUXZediM/builds/WI19UvCi4bbvl7VJk/openapi.json
