# Mobile.de Search Scraper (`parsebird/mobile-de-search-scraper`) Actor

Scrape mobile.de car listings from any search URL, listing URL, or dealer page. Get price, mileage, first registration, power, fuel, features, images, price rating, and dealer contact. Export as JSON, CSV, or Excel.

- **URL**: https://apify.com/parsebird/mobile-de-search-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.49 / 1,000 vehicles

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

### Mobile.de Search Scraper

Mobile.de Search Scraper extracts car and vehicle listings from [mobile.de](https://www.mobile.de), Germany's largest vehicle marketplace. It returns price, mileage, first registration, power, fuel, transmission, equipment, images, price rating, condition, location, and seller contact for every listing.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Paste any mobile.de search URL with all its filters, single listing URLs, or a dealer's home.mobile.de page, and get every matching vehicle with 30+ detail fields in 11 languages. Large searches go past mobile.de's 2,000-result limit automatically.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```text
Apify Actor parsebird/mobile-de-search-scraper scrapes vehicle listings from mobile.de (Germany). Call it with the apify-client package: client.actor("parsebird/mobile-de-search-scraper").call(run_input={"startUrls": [{"url": "https://suchen.mobile.de/fahrzeuge/search.html?vc=Car&ms=3500%3B9&p=10000%3A30000"}], "maxItems": 100}). Inputs: startUrls (array of {"url": ...}; supported: mobile.de search result URLs https://suchen.mobile.de/fahrzeuge/search.html?... with any filters, listing URLs https://suchen.mobile.de/auto-inserat/.../<id>.html, dealer pages https://home.mobile.de/<DEALER> or https://home.mobile.de/home/redirect.html?customerId=<id>), maxItems (int, default 100, 0 = no limit), scrapeDetails (bool, default true; false = search card data only), language (string: "en","de","fr","it","es","pl","nl","ro","ru","tr","cs", default "en"), maxConcurrency (int, default 10), minConcurrency (int, default 1), maxRequestRetries (int, default 10), proxy (Apify proxy object, default off; the actor switches to residential proxy itself when blocked). Output: one dataset item per vehicle with id, url, title, makeName, modelName, priceAmount, priceCurrency, priceLocalized, priceType, priceRatingLabel, mileageKm, firstRegistration (YYYY-MM), powerKw, powerHp, fuel, transmission, vehicleCategory, sellerType (DEALER, FSBO, COMM_FSBO), sellerName, sellerPhone, city, postalCode, countryCode, latitude, longitude, accidentFree, currentlyDamaged, roadworthy, imageUrls, createdAt, modifiedAt, detailsScraped, sourceUrl, scrapedAt, plus the raw mobile.de fields attributes, features, contact (phones, messengers, address, opening hours, rating), priceRating, htmlDescription, images, make, model, kba, financePlans, and basicInfo (search card). API docs: https://apify.com/parsebird/mobile-de-search-scraper/api. Get a token: https://console.apify.com/settings/integrations
```

### What is Mobile.de Search Scraper?

**Mobile.de Search Scraper** is a data extraction tool for **mobile.de vehicle listings**. Mobile.de lists more than 1.5 million cars plus motorbikes, motorhomes, trucks, and trailers from dealers and private sellers. The Actor works as a **mobile.de API alternative**: you run a search on mobile.de with any filters, paste the URL, and get clean JSON records for every vehicle instead of copying listings by hand.

The easiest way to try it: open the **Input** tab, keep the prefilled BMW search URL, and click **Start**. You get 20 vehicles with full details in under a minute.

### What can Mobile.de Search Scraper do?

- 🔍 **Scrape any mobile.de search**: every filter in the URL is kept, including make and model, price, first registration, mileage, fuel, power, colour, emission class, features, seller type, and radius around a city.
- 🚗 **Scrape single listings**: paste listing URLs from suchen.mobile.de or m.mobile.de, or `details.html?id=` links.
- 🏢 **Scrape a dealer's full stock**: paste the dealer's home.mobile.de page and the Actor finds the dealer's ID and collects all their vehicles.
- 📄 **Get full vehicle details**: all technical attributes, equipment list, seller description, all images, price rating, financing offers, KBA key numbers, and dealer phone, WhatsApp, address, opening hours, and ratings.
- 📈 **Go past the 2,000-result limit**: mobile.de shows at most 2,000 results per search. For larger searches, the Actor splits the search into price and mileage bands and collects each band.
- 🌍 **Pick the language**: labels and values in English, German, French, Italian, Spanish, Polish, Dutch, Romanian, Russian, Turkish, or Czech.
- ✅ **Get clean condition flags**: `accidentFree`, `currentlyDamaged`, and `roadworthy` as true/false/null, the same in every language.

On the Apify platform you also get [scheduled runs](https://docs.apify.com/platform/schedules), a full [REST API](https://docs.apify.com/api/v2), [integrations](https://apify.com/integrations) with Make, Zapier, n8n, Google Sheets, Slack, and webhooks, and export to JSON, CSV, Excel, XML, or HTML.

### What data can you extract from mobile.de?

| Field | Description |
|-------|-------------|
| `id` / `url` / `title` | mobile.de listing ID, listing URL, and title |
| `makeName` / `modelName` | Make and model, e.g. BMW / 318 |
| `priceAmount` / `priceCurrency` / `priceLocalized` | Gross price as a number, currency, and as shown on mobile.de |
| `priceRatingLabel` / `priceRating` | mobile.de price rating (e.g. Good price, Increased price) with the price bands |
| `mileageKm` / `firstRegistration` | Mileage in km and first registration as `YYYY-MM` |
| `powerKw` / `powerHp` | Engine power in kW and hp |
| `fuel` / `transmission` / `vehicleCategory` | Fuel type, gearbox, and body type in your chosen language |
| `accidentFree` / `currentlyDamaged` / `roadworthy` | Condition flags as declared by the seller (`null` = not stated) |
| `sellerType` / `sellerName` / `sellerPhone` | `DEALER`, `FSBO` (private seller), or `COMM_FSBO` (commercial private), dealer name, and first phone number |
| `city` / `postalCode` / `countryCode` / `latitude` / `longitude` | Vehicle location |
| `imageUrls` | Full-size image URLs (1600 px) |
| `attributes` | Every technical attribute shown on the listing, with label, tag, and value |
| `features` | Equipment list, e.g. ABS, Navigation system, Heated seats |
| `contact` | Seller address, phones, WhatsApp, opening hours, languages, and dealer rating |
| `htmlDescription` | The seller's own description as HTML |
| `createdAt` / `modifiedAt` | When the listing was created and last changed |
| `basicInfo` | The search result card for the vehicle, as mobile.de returns it |

### How to scrape mobile.de

1. Go to [mobile.de](https://suchen.mobile.de/fahrzeuge/search.html?vc=Car), set your filters, and click to show the results.
2. Copy the URL from your browser's address bar.
3. Open [Mobile.de Search Scraper](https://apify.com/parsebird/mobile-de-search-scraper) and paste the URL into **Start URLs**. Add more search, listing, or dealer URLs if you like.
4. Set **Max vehicles** and pick a **Language**.
5. Click **Start**.
6. Download the results from the **Output** tab as JSON, CSV, Excel, XML, or HTML, or fetch them through the API.

To watch prices or new listings for a search, add the run to a [schedule](https://docs.apify.com/platform/schedules), for example every morning.

### Input example

```json
{
    "startUrls": [
        { "url": "https://suchen.mobile.de/fahrzeuge/search.html?dam=false&isSearchRequest=true&ms=3500%3B9%3B%3B%3B&ref=srp&s=Car&sb=rel&vc=Car" },
        { "url": "https://suchen.mobile.de/auto-inserat/bmw-318-baureihe-3-touring-318d-edition-exclusive-merzig/384854873.html" },
        { "url": "https://home.mobile.de/SPAUTOHANDELUNDREIFENSERVICE" },
        { "url": "https://suchen.mobile.de/fahrzeuge/search.html?asl=true&cn=DE&gn=Berlin&isSearchRequest=true&ll=52.516071%2C13.37698&rd=100&ref=dsp&s=Car&vc=Car" }
    ],
    "maxItems": 500,
    "scrapeDetails": true,
    "language": "en"
}
```

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| startUrls | array | **Yes** | — | mobile.de search result URLs, listing URLs, or home.mobile.de dealer URLs |
| maxItems | integer | No | 100 | Maximum vehicles to save across all URLs. 0 = no limit |
| scrapeDetails | boolean | No | `true` | Open each listing for full details. Off = search card data only, faster |
| language | string | No | `en` | `en`, `de`, `fr`, `it`, `es`, `pl`, `nl`, `ro`, `ru`, `tr`, `cs` |
| maxConcurrency | integer | No | 10 | Maximum parallel requests |
| minConcurrency | integer | No | 1 | Parallel requests at the start. Grows while requests succeed |
| maxRequestRetries | integer | No | 10 | Retries per failed request |
| proxy | object | No | off | Optional proxy. When mobile.de blocks the connection, the Actor switches to Apify residential proxy (Germany) by itself |

Supported URL types:

| URL type | Example |
|----------|---------|
| Search results | `https://suchen.mobile.de/fahrzeuge/search.html?vc=Car&ms=3500%3B9&p=10000%3A30000` |
| Dealer search (radius around a city) | `https://suchen.mobile.de/fahrzeuge/search.html?cn=DE&ll=52.516071%2C13.37698&rd=100&vc=Car` |
| Single listing | `https://suchen.mobile.de/auto-inserat/<title>/<id>.html` |
| Dealer homepage | `https://home.mobile.de/SPAUTOHANDELUNDREIFENSERVICE` |
| Dealer redirect link | `https://home.mobile.de/home/redirect.html?customerId=26102486` |
| Listing inside a dealer page | `https://home.mobile.de/home/vip?customerId=26102486&id=43224224654272` |

### Output example

```json
{
    "id": "384854873",
    "url": "https://suchen.mobile.de/auto-inserat/bmw-318-baureihe-3-touring-318d-edition-exclusive-merzig/384854873.html",
    "title": "BMW 318 Baureihe 3 Touring 318d Edition Exclusive",
    "makeName": "BMW",
    "modelName": "318",
    "priceAmount": 490.0,
    "priceCurrency": "EUR",
    "priceLocalized": "€490",
    "priceType": "FIXED",
    "priceRatingLabel": "No rating",
    "mileageKm": 269000,
    "firstRegistration": "2005-06",
    "powerKw": 85,
    "powerHp": 116,
    "fuel": "Diesel",
    "transmission": "Manual gearbox",
    "vehicleCategory": "Estate car",
    "sellerType": "DEALER",
    "sellerName": "Automobile Merzig/Saar",
    "sellerPhone": "+49 (0)172 7400748",
    "city": "Merzig",
    "postalCode": "66663",
    "countryCode": "DE",
    "latitude": 49.4421869,
    "longitude": 6.6233517,
    "accidentFree": null,
    "currentlyDamaged": false,
    "roadworthy": null,
    "imageUrls": [
        "https://img.classistatic.de/api/v1/mo-prod/images/8e/8e36f772-154b-4659-9006-0a3bfb5f7d9e?rule=mo-1600.jpg"
    ],
    "createdAt": "2024-02-14T14:02:16+00:00",
    "modifiedAt": "2026-10-27T22:36:09+00:00",
    "detailsScraped": true,
    "attributes": [
        { "label": "Mileage", "tag": "mileage", "value": "269,000 km" },
        { "label": "Cubic Capacity", "tag": "cubicCapacity", "value": "1,995 ccm" }
    ],
    "features": ["ABS", "Alarm system", "Alloy wheels", "Arm rest", "CD player", "Central locking"],
    "contact": {
        "enumType": "DEALER",
        "name": "Automobile Merzig/Saar",
        "address1": "Merzigerstraße",
        "address2": "DE-66663 Merzig",
        "phones": [{ "type": "MOBILE", "number": "+49 (0)172 7400748", "uri": "tel:+491727400748" }],
        "messengers": [{ "type": "WHATS_APP", "number": "+49 172 7400748", "uri": "https://wa.me/491727400748?ref=wa" }],
        "openingHours": [{ "day": "Mon - Fri", "time": "09:00 h - 18:00 h" }],
        "rating": { "count": 2, "totalCount": 36, "score": 4.0 },
        "homepageUrl": "https://home.mobile.de/home/redirect.html?customerId=8723021"
    },
    "priceRating": { "rating": "NO_RATING", "ratingLabel": "No rating" },
    "htmlDescription": "<b>Sonderausstattung:</b><br>Bordcomputer, CD-Laufwerk, Dachreling, Klimaautomatik, ..."
}
```

The example is shortened. Each record also has the remaining raw mobile.de fields (`shortTitle`, `subTitle`, `make`, `model`, `images`, `kba`, `financePlans`, `sellerId`, `segment`, `adMobTargeting`, and others) and `basicInfo`, the search result card.

### Use cases

- 📊 **Used car price analysis**: compare prices by make, model, year, mileage, and region, and see how mobile.de rates each price.
- 🏷️ **Dealer stock monitoring**: track a competitor dealer's inventory and price changes from their home.mobile.de page.
- 🔔 **Deal alerts**: schedule a search and send new listings below a target price to Slack, email, or Google Sheets.
- 🚚 **Vehicle sourcing and export**: collect cars, vans, trucks, or motorhomes that match your criteria, with dealer contact details.
- 🤖 **Valuation models and AI agents**: feed structured vehicle data into pricing models, dashboards, or LLM tools.

### How it works

1. The Actor reads each start URL and keeps all search filters from it.
2. It requests the matching vehicles from mobile.de, up to 100 per page. When a search has more than 2,000 results and you want more than 2,000 vehicles, it splits the search into price bands (and mileage bands within a single price) that each fit under the limit.
3. With **Scrape full vehicle details** on, it opens every listing in parallel and adds the full detail data to the search card.
4. Dealer homepage URLs are resolved to the dealer's mobile.de ID, then scraped like a search.
5. Duplicate vehicles across your URLs are saved once. Each vehicle is charged as it is saved, so the run stops when your spending limit is reached.

### How much does it cost to scrape mobile.de?

Mobile.de Search Scraper uses pay-per-event pricing. You pay per vehicle saved to the dataset. Compute and proxy traffic are included in the event price, so they are not billed separately.

| Event | Price per event | Price per 1,000 |
|-------|----------------|-----------------|
| vehicle-scraped (Free plan) | $0.00079 | **$0.79** |
| vehicle-scraped (Bronze plan) | $0.00069 | **$0.69** |
| vehicle-scraped (Silver plan) | $0.00059 | **$0.59** |
| vehicle-scraped (Gold plan) | $0.00049 | **$0.49** |

One event is one vehicle in the dataset, with or without full details. A small platform **Actor start** fee also applies per run. For example, 10,000 vehicles cost $7.90 on the Free plan and $4.90 on the Gold plan. Apify's free plan includes monthly platform credit you can use for this Actor.

### Python and JavaScript API examples

Python ([apify-client](https://docs.apify.com/api/client/python)):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("parsebird/mobile-de-search-scraper").call(run_input={
    "startUrls": [{"url": "https://suchen.mobile.de/fahrzeuge/search.html?vc=Car&ms=3500%3B9&p=10000%3A30000"}],
    "maxItems": 200,
})
for car in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(car["title"], "|", car["priceAmount"], "|", car["mileageKm"], "|", car["city"])
```

JavaScript ([apify-client](https://docs.apify.com/api/client/js)):

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('parsebird/mobile-de-search-scraper').call({
    startUrls: [{ url: 'https://home.mobile.de/SPAUTOHANDELUNDREIFENSERVICE' }],
    maxItems: 200,
    language: 'de',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((car) => console.log(car.title, car.priceLocalized, car.sellerName));
```

Find all endpoints on the [API tab](https://apify.com/parsebird/mobile-de-search-scraper/api).

### FAQ

**Do I need a mobile.de account?**
No. The Actor reads the listings mobile.de shows to every visitor. You don't need a login or an API key.

**How many vehicles can I scrape from one search?**
Mobile.de returns at most 2,000 results per search. When a search has more and **Max vehicles** is above 2,000, the Actor splits it into price bands, and a single price with more than 2,000 vehicles into mileage bands, so you can collect tens of thousands of vehicles from one URL. Results then come in order of price band instead of your chosen sort order.

**Which vehicle types are supported?**
Every type mobile.de search supports, including cars (`vc=Car`), motorbikes (`vc=Motorbike`), motorhomes (`vc=Motorhome`), trucks over 7.5 t (`vc=TruckOver7500`), and trailers (`vc=Trailer`). Just paste the search URL.

**Why are phone numbers missing for some vehicles?**
Mobile.de does not include private sellers' phone numbers (`sellerType: FSBO`) in the public listing data, so private listings have the city, postcode, and coordinates but no phone. Dealer listings include phone numbers, WhatsApp, address, and opening hours.

**What do accidentFree, currentlyDamaged, and roadworthy mean?**
`accidentFree` is the seller's statement on accident history: `true` = accident-free, `false` = had an accident (repaired or not), `null` = not stated. `currentlyDamaged` is `true` when mobile.de marks the vehicle as damaged now (for example hail, engine, or accident damage that is not repaired). `roadworthy` is `false` when the listing says "Not roadworthy". These flags are the same in every language.

**Can I paste mobile.de pages like /auto/bmw.html?**
Not yet. Use a search results URL instead: open the page, apply any filter, and copy the `search.html?...` URL from your browser.

**Why are some listings skipped?**
Listings that are sold or removed between the search and the detail request are skipped and not charged. If a single listing URL is no longer online, the log says so.

**Can I schedule the scraper and connect it to other tools?**
Yes. Use [Apify schedules](https://docs.apify.com/platform/schedules) to run it daily or weekly, and send the results to Google Sheets, Slack, Make, Zapier, n8n, or your own system through [integrations](https://apify.com/integrations), webhooks, or the API.

**Something does not work or a field is missing.**
Open an issue on the **Issues** tab with your input and run ID, and we will look into it.

### Is it legal to scrape mobile.de?

The Actor collects only listing data that mobile.de publishes openly to all visitors. Dealer listings include business contact details, and some listings include names of contact persons, which are personal data under the GDPR. Make sure you have a lawful basis for storing and using them, and do not use them for unsolicited bulk messaging. Check mobile.de's terms for your use case. For more background, read Apify's article [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/) and consult a lawyer if you are unsure.

### Other car scrapers from ParseBird

| Actor | What it scrapes |
|-------|-----------------|
| [AutoTrader.co.uk Scraper](https://apify.com/parsebird/autotrader-scraper) | UK car listings from AutoTrader.co.uk |
| [AutoTrader Canada Scraper](https://apify.com/parsebird/autotrader-ca-scraper) | Canadian car listings from AutoTrader.ca |
| [Cars.com Scraper with Contacts](https://apify.com/parsebird/cars-com-scraper) | US car listings with dealer contacts |
| [Otomoto.pl Scraper with Contacts](https://apify.com/parsebird/otomoto-scraper) | Polish car listings with seller phones |
| [Bid.cars Scraper](https://apify.com/parsebird/bid-cars-scraper) | US auction cars from Copart and IAAI |
| [che168 二手车 Autohome Scraper](https://apify.com/parsebird/che168-scraper) | Chinese used car listings from che168 |

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/mobile-de-search-scraper/changelog.md

# Actor input Schema

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

Add mobile.de URLs. Supported: search results (https://suchen.mobile.de/fahrzeuge/search.html?…) with any filters, single listings (https://suchen.mobile.de/auto-inserat/…/<id>.html), and dealer homepages (https://home.mobile.de/<DEALER> or https://home.mobile.de/home/redirect.html?customerId=<id>). Cars, motorbikes, motorhomes, trucks, and trailers all work.

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

Maximum number of vehicles to save across all start URLs. Set 0 for no limit. One search returns up to 2,000 vehicles; larger searches are split into price and mileage bands automatically.

## `scrapeDetails` (type: `boolean`):

Open each listing for the full data: description, all technical attributes, equipment features, all images, dealer phone numbers, opening hours, ratings, and price rating. Turn off to save only the search result card data, which is faster.

## `language` (type: `string`):

Language of labels and values such as fuel type, transmission, attribute names, and features. The seller's own description is never translated.

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

Maximum number of requests sent at the same time.

## `minConcurrency` (type: `integer`):

Number of parallel requests at the start. The scraper adds more while requests succeed (up to Max concurrency) and slows down when mobile.de throttles.

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

How many times a failed request is retried, with a new proxy IP each time when a proxy is used.

## `proxy` (type: `object`):

Leave off to let the scraper handle it: it connects directly and switches to Apify residential proxy (Germany) automatically if mobile.de blocks the connection. Apify datacenter proxies are blocked by mobile.de.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://suchen.mobile.de/fahrzeuge/search.html?dam=false&isSearchRequest=true&ms=3500%3B9%3B%3B%3B&ref=srp&s=Car&sb=rel&vc=Car"
    }
  ],
  "maxItems": 20,
  "scrapeDetails": true,
  "language": "en",
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 10,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://suchen.mobile.de/fahrzeuge/search.html?dam=false&isSearchRequest=true&ms=3500%3B9%3B%3B%3B&ref=srp&s=Car&sb=rel&vc=Car"
        }
    ],
    "maxItems": 20,
    "proxy": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/mobile-de-search-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://suchen.mobile.de/fahrzeuge/search.html?dam=false&isSearchRequest=true&ms=3500%3B9%3B%3B%3B&ref=srp&s=Car&sb=rel&vc=Car" }],
    "maxItems": 20,
    "proxy": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/mobile-de-search-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://suchen.mobile.de/fahrzeuge/search.html?dam=false&isSearchRequest=true&ms=3500%3B9%3B%3B%3B&ref=srp&s=Car&sb=rel&vc=Car"
    }
  ],
  "maxItems": 20,
  "proxy": {
    "useApifyProxy": false
  }
}' |
apify call parsebird/mobile-de-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/mobile-de-search-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/RrXi9aFJK5hxxWGsW/builds/zXSZXC8hqQZXcoXtl/openapi.json
