Mobile.de Scraper — Vehicle Inventory Monitor avatar

Mobile.de Scraper — Vehicle Inventory Monitor

Pricing

from $1.80 / 1,000 vehicle listing returneds

Go to Apify Store
Mobile.de Scraper — Vehicle Inventory Monitor

Mobile.de Scraper — Vehicle Inventory Monitor

Scrape public Mobile.de vehicle listings from search or listing URLs. Get prices, mileage, specs, sellers, images, and monitored inventory price changes.

Pricing

from $1.80 / 1,000 vehicle listing returneds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

3 days ago

Last modified

Share

Use this Apify Actor to collect public Mobile.de vehicle listings from a search URL or a listing URL, and to monitor repeated runs for inventory price changes when you supply a stable monitoring key. Each dataset record represents one vehicle listing, so a single row captures one vehicle and its public listing context. Useful fields include listing URL, title, make, model, price, mileage, first registration, fuel type, transmission, power, seller information, image URLs, change type, previous price, source search URL, scrape timestamp, and parse warnings. The actor is usable through Apify MCP and writes normalized records to the default dataset for exports, analysis, and agent workflows.

Best fit and connected workflows

This Actor fits workflows that begin with a Mobile.de results page or a direct listing page and need structured vehicle inventory data for a spreadsheet, warehouse, dashboard, or AI agent. It routes naturally into:

  • inventory snapshots from public Mobile.de search URLs
  • repeated monitoring of the same search with monitoringKey
  • price-change tracking with changesOnly
  • concise exports for agents that need compact vehicle records
  • detailed exports when description, equipment, more images, and public phone data are useful

The input keeps the source context on Mobile.de itself, then passes that exact URL into the Actor so the returned record preserves the same search or listing context in sourceSearchUrl.

Focused standalone workflow

This Actor is designed as a focused standalone workflow.

Practical scenario

A used-car analyst opens a Berlin-focused Mobile.de search result page for BMW estates, copies the URL, and runs the Actor with includeDetails: true and a stable monitoringKey. The returned record includes priceEur, mileageKm, firstRegistration, sellerName, changeType, and previousPriceEur. If the record is marked price_changed, the analyst updates a tracking sheet and schedules the same search URL for the next run.

Input fields

FieldTypePurpose
dataSourcestringSelects browser for public Mobile.de pages or officialApi when the owner has configured authorized Mobile.de Search API access.
startUrlsarrayOne or more Mobile.de results or listing URLs for the selected source. Required.
maxResultsintegerMaximum number of vehicle records written to the dataset. Range 1 to 500.
includeDetailsbooleanAdds listing descriptions, equipment, extra images, and seller fields when detail pages are fetched successfully.
responseFormatstringChooses concise or detailed record content. Core vehicle fields remain available in both.
monitoringKeystringStable label for repeated runs of the same search. Enables comparison with prior runs using the same key.
changesOnlybooleanReturns only new or price-changed listings when used with a monitoring key.
proxyCountrystringSelects the residential browser session country in browser mode. Supported values: DE, AT, BE, CH, FR, NL.

Focused JSON input example

{
"startUrls": [
{
"url": "https://suchen.mobile.de/auto/gebrauchtwagen.html"
}
],
"dataSource": "browser",
"maxResults": 25,
"includeDetails": true,
"responseFormat": "concise",
"monitoringKey": "berlin-bmw-inventory",
"changesOnly": false,
"proxyCountry": "DE"
}

Output fields

Each dataset item is one normalized vehicle record.

FieldTypeMeaning
listingIdstringStable Mobile.de listing identifier extracted from the listing URL.
listingUrlstringCanonical public URL for the vehicle listing.
titlestringVehicle title shown on Mobile.de.
makestring or nullFirst title token used as a available vehicle make.
modelstring or nullRemaining title text after the available make.
priceEurnumber or nullAdvertised price in euros.
currencystring or nullISO currency code for the advertised price.
firstRegistrationstring or nullFirst registration month and year.
mileageKmnumber or nullAdvertised mileage in kilometers.
fuelTypestring or nullPublicly listed fuel or drive type.
transmissionstring or nullPublicly listed transmission type.
powerKwnumber or nullPublicly listed engine power in kilowatts.
bodyTypestring or nullPublicly listed body style when detected.
vehicleConditionstring or nullPublicly listed condition when detected.
locationstring or nullPublic seller or dealer location text.
postalCodestring or nullPostal code extracted from the public location text when available.
sellerNamestring or nullPublic seller or dealer name when shown.
sellerTypestring or nullPublic seller classification when shown.
sellerPhonestring or nullPublic phone number when exposed by Mobile.de and detailed output is selected.
descriptionstring or nullPublic listing description when detailed output is selected.
equipmentarrayPublic vehicle equipment entries when detailed output is selected.
imageUrlsarrayPublic vehicle image URLs; concise mode returns the primary image where available.
listingDatestring or nullPublic listing date when Mobile.de exposes it.
changeTypestringInventory comparison status: new, price_changed, unchanged, or unknown.
previousPriceEurnumber or nullPrior price for changed listings when monitoring is enabled.
sourceSearchUrlstringSource search or listing URL used for the record.
scrapedAtstringISO 8601 extraction timestamp.
parseWarningsarrayNon-fatal extraction warnings for the record.

Illustrative output record

{
"listingId": "1001",
"listingUrl": "https://suchen.mobile.de/fahrzeuge/details.html?id=1001",
"title": "BMW 320d Touring",
"make": "BMW",
"model": "320d Touring",
"priceEur": 23490,
"currency": "EUR",
"firstRegistration": "03/2021",
"mileageKm": 71200,
"fuelType": "Diesel",
"transmission": "Automatic",
"powerKw": 140,
"bodyType": "Estate",
"vehicleCondition": "Used",
"location": "10115 Berlin",
"postalCode": "10115",
"sellerName": "Example Autohaus GmbH",
"sellerType": "Dealer",
"sellerPhone": "+49 30 123456",
"description": "Well-maintained estate car.",
"equipment": [
"Navigation system",
"Parking sensors"
],
"imageUrls": [
"https://images.example.test/car.jpg"
],
"listingDate": "2026-07-14",
"changeType": "price_changed",
"previousPriceEur": 24990,
"sourceSearchUrl": "https://suchen.mobile.de/auto/gebrauchtwagen.html",
"scrapedAt": "2026-07-14T12:00:00.000Z",
"parseWarnings": []
}

How it works

This Actor accepts Mobile.de results or listing URLs and writes normalized vehicle records to the default dataset. In browser mode, it uses an actor-managed residential browser session with the selected proxy country. In officialApi mode, it uses the authorized Mobile.de Search API path configured by the actor owner. The input controls how many records are written, whether detail pages are fetched, how much optional text is included, and whether repeated runs are compared with prior runs for the same monitoringKey.

The dataset schema keeps the core vehicle fields stable across runs. Monitoring runs set changeType to new, price_changed, unchanged, or unknown, and previousPriceEur is populated when a tracked listing changes.

Pricing

This actor uses Pay per event plus Apify platform usage. Event charges are based on actor memory at startup, each validated vehicle record written to the dataset, and each successfully enriched detail page. Apify compute and any platform usage are billed separately. For current live pricing, check the Pricing tab on the Actor page.

For example, a run that returns twenty-five vehicle listings charges twenty-five Vehicle listing returned events, plus one Actor start event, and may also include Vehicle details enriched events when detail pages are fetched successfully. The total depends on the live pricing shown in Apify and on the selected input.

Use with AI agents (MCP)

This Actor is available through Apify MCP as a compact Mobile.de inventory tool for search URLs and listing URLs.

Tool description: collect one-record-per-listing Mobile.de inventory data with stable vehicle fields, optional detail enrichment, and monitoring-aware change tracking.

The exact Actor identity is khadinakbar/mobile-de-scraper.

"Use the Actor khadinakbar/mobile-de-scraper with this Mobile.de search URL, return up to 25 vehicle listings, include details, and keep the output compact for downstream analysis. Then read the dataset items and summarize any records where changeType is price_changed."

Output interpretation for agents:

  • listingUrl, title, priceEur, mileageKm, and sellerName identify each vehicle.
  • changeType and previousPriceEur indicate monitored inventory movement.
  • sourceSearchUrl preserves provenance back to the original Mobile.de page.
  • parseWarnings can signal that some public fields were only partially extracted.
  • Pagination is controlled by maxResults, which bounds the number of listing records written.
  • Cost guidance is event-based: one listing record maps to one charged Vehicle listing returned event, and optional detail enrichment adds Vehicle details enriched events when fetched successfully. Apify platform usage is separate.

Apify API example

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('khadinakbar/mobile-de-scraper').call({
startUrls: [{ url: 'https://suchen.mobile.de/auto/gebrauchtwagen.html' }],
maxResults: 25,
includeDetails: true,
responseFormat: 'concise',
monitoringKey: 'berlin-bmw-inventory',
changesOnly: false,
proxyCountry: 'DE',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python:

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("khadinakbar/mobile-de-scraper").call(run_input={
"startUrls": [{"url": "https://suchen.mobile.de/auto/gebrauchtwagen.html"}],
"maxResults": 25,
"includeDetails": True,
"responseFormat": "concise",
"monitoringKey": "berlin-bmw-inventory",
"changesOnly": False,
"proxyCountry": "DE",
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Best results and outcome guidance

Use a Mobile.de results URL that already contains the filters you want, since the Actor reads the page context from the URL itself. Reuse the same monitoringKey with the same search URL when you want comparisons across runs. Keep maxResults aligned with the number of listings you actually need, and choose includeDetails: false only when the core search-card fields are enough for your workflow. responseFormat: concise keeps records compact for agents, while detailed adds more public text and media fields.

Design note

I found that the dataset contract always requires listingId, listingUrl, title, priceEur, currency, sourceSearchUrl, and scrapedAt, which makes each record traceable back to the source page and a single extraction moment.

FAQ

How should I choose between browser and officialApi?
Use browser for public Mobile.de results or listing URLs. Use officialApi only when the actor owner has configured authorized Mobile.de Search API access for the documented search or ad URL path.

What makes one dataset row equal to one vehicle?
The output contract defines each item as one normalized vehicle listing, and the dataset schema requires a single listingId and listingUrl per row.

How does monitoring work across runs?
Provide the same monitoringKey and the same search URL on later runs. The Actor compares the current result set with the previous run for that key and sets changeType accordingly.

What fields are most useful for filtering inventory changes?
priceEur, previousPriceEur, changeType, mileageKm, firstRegistration, fuelType, sellerType, and location are useful for prioritizing vehicles.

Can an AI agent read the output directly?
Yes. The dataset contains normalized records, and the OUTPUT and RUN_SUMMARY key-value records provide run-level outcome and billing information for orchestration.

Responsible use

Use this Actor for lawful collection and processing of public Mobile.de data. Review the Mobile.de terms, the relevant data-protection obligations, and any downstream sharing rules that apply to your use case and jurisdiction. Public seller information should be handled with appropriate care in sales, enrichment, and monitoring workflows.