# Mobile.de Listings Scraper - Cars, Prices & Dealers (`parseforge/mobile-de-listings-scraper`) Actor

Scrape mobile.de car, motorbike and motorhome listings by URL or filters: prices, specs, dealer phones, photos, equipment. Export CSV, Excel, JSON or XML.

- **URL**: https://apify.com/parseforge/mobile-de-listings-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** E-commerce, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.60 / 1,000 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?

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

![ParseForge Banner](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner-v4.webp)

## 🚗 Mobile.de Listings Scraper

> 🚀 **Export mobile.de vehicle listings in seconds, with price rating, dealer phones, GPS, photos and the full equipment list on every row.** Search 1.5 million cars, motorbikes, motorhomes and commercial vehicles by URL or by filters, with no account and no browser.

This Actor reads the same data service that powers the mobile.de web app, so you get the exact listings, prices and dealer details a visitor sees, already structured. Paste a search URL you built on mobile.de, or describe the search with make, model, price, year, mileage, fuel, location and more.

Every row has 62 fields: the vehicle (make, model, registration, mileage, power, fuel, gearbox, emissions, colour, interior), the price (gross, net and VAT for dealers, plus mobile.de's own price rating), the seller (name, address, phones, WhatsApp, coordinates, dealer review score) and the listing (all photos, equipment, description, timestamps).

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Car dealers and dealer groups | Watch competitor stock and price moves in your region |
| Importers and exporters | Find under-priced cars across Germany and Europe |
| Lenders, insurers and leasing firms | Feed valuation models with real asking prices and mileage |
| Market analysts and journalists | Track depreciation, EV adoption and price trends |
| Marketplaces and aggregators | Sync listings, photos and dealer data into your own product |
| Data and AI teams | Build clean vehicle datasets with structured specs |

### 📋 What the Mobile.de Listings Scraper does

1. Accepts mobile.de **search URLs** (with all the filters you set on the site) and **single listing URLs**, or builds the search from the input form.
2. Filters by category (12 marketplaces), make, model (2,733 car models), price, first registration year, mileage, power, engine size, seats, body type, fuel, gearbox, drive, condition, doors, emission class, colour, usage type, seller type, country, price rating, listing age, extras, damage and VAT.
3. Searches around a **German postal code** or exact coordinates with a radius in km.
4. Sorts by newest, relevance, price, mileage, first registration or power.
5. **Goes past the 2,000 results per search limit.** mobile.de serves at most 2,000 rows for one query, so the Actor slices big searches into price bands and merges them without duplicates.
6. With **Include full details** on (the default), opens each listing for the description, equipment, colour, interior, emission sticker, previous owners, inspection date and the labelled spec sheet.
7. Writes one row per listing, deduplicated by listing ID.

> 💡 **Why it matters:** mobile.de is Europe's largest car marketplace and its site is guarded against bots. This Actor gets the structured data service behind the site, so you skip both the blocking and the HTML parsing, and you can pull a whole market instead of the first 2,000 rows.

### 🎬 Full Demo (🚧 Coming soon)

### 📊 Output

Each dataset row is one mobile.de listing. 62 columns per row. Text values keep mobile.de's German wording (for example `Automatik`, `Händler`, `Sehr guter Preis`).

| Field | Type | Description |
|---|---|---|
| 🖼 `imageUrl` | string | First photo |
| 🚗 `title` | string | Listing headline |
| 🆔 `id` | string | mobile.de listing ID |
| 🔗 `url` | string | Listing page |
| 🏭 `make` | string | Vehicle make |
| 🚙 `model` | string | Vehicle model |
| 🏷 `variant` | string | Trim or variant line |
| 🚘 `bodyType` | string | Body style |
| 📂 `vehicleCategory` | string | Marketplace, for example Car or Motorbike |
| 🛠 `condition` | string | Condition and damage status (full details) |
| 💶 `price` | number | Gross asking price |
| 💱 `currency` | string | Price currency |
| 🧾 `priceFormatted` | string | Price as mobile.de shows it |
| 🤝 `priceType` | string | FIXED or NEGOTIABLE |
| 📉 `netPrice` | number | Net price without VAT, when the dealer shows VAT |
| 🧮 `vatRate` | number | VAT rate in percent, when shown |
| 📊 `priceRating` | string | mobile.de's price rating against the market |
| 📅 `firstRegistration` | string | First registration, MM/YYYY |
| 🛣 `mileageKm` | number | Odometer in km |
| ⚡ `powerKw` | number | Power in kW |
| 🐎 `powerPs` | number | Power in PS |
| ⛽ `fuel` | string | Fuel or power source |
| ⚙ `transmission` | string | Gearbox |
| 🔧 `engineCapacityCc` | number | Displacement in cc |
| 🚪 `doors` | string | Door band |
| 💺 `seats` | string | Seats |
| 🌿 `emissionClass` | string | Emission standard |
| 🟢 `emissionSticker` | string | German emission sticker (full details) |
| 👥 `previousOwners` | string | Previous owners |
| 🔍 `generalInspection` | string | HU valid until |
| 🎨 `color` | string | Exterior colour (full details) |
| 🛋 `interior` | string | Interior material and colour (full details) |
| ❄ `climatisation` | string | Air conditioning (full details) |
| 🛡 `airbags` | string | Airbag package (full details) |
| 🅿 `parkAssists` | string | Parking aids (full details) |
| 🔋 `engineType` | string | Combustion, electric or hybrid (full details) |
| 🏪 `sellerType` | string | Dealer, private or company vehicle |
| 👤 `sellerName` | string | Dealer name |
| 🔢 `sellerId` | number | Seller ID |
| 🏠 `sellerAddress` | string | Seller address |
| 📍 `city` | string | Vehicle city |
| 📮 `zipCode` | string | Vehicle postal code |
| 🌍 `country` | string | Country code |
| 🧭 `latitude` | number | Seller latitude |
| 🧭 `longitude` | number | Seller longitude |
| 📞 `phones` | array | Seller phone numbers |
| 💬 `whatsapp` | string | Seller WhatsApp number |
| ⭐ `dealerRating` | number | Dealer score out of 5 |
| 🔢 `dealerReviewCount` | number | Dealer review count |
| 🔗 `dealerReviewsUrl` | string | Dealer reviews page |
| 🎥 `hasVideo` | string | Yes or No |
| ✅ `readyToDrive` | string | Yes or No |
| 💥 `damaged` | string | Yes when unrepaired damage is reported |
| 🖼 `imageCount` | integer | Number of photos |
| 📷 `images` | array | All photo URLs, 1024 px wide |
| 🧰 `features` | array | Equipment list (full details) |
| 📝 `description` | string | Seller description (full details) |
| 📋 `specifications` | object | Every labelled spec from the listing (full details) |
| 🕐 `createdAt` | string | Ad creation time, ISO 8601 |
| 🔄 `modifiedAt` | string | Last modification, ISO 8601 |
| 🕒 `scrapedAt` | string | When the row was collected |
| ❌ `error` | string | Populated only on failed rows |

Fields the source withholds show `Not Disclosed`. Fields that only exist on the listing page show `N/A` when you turn full details off.

#### Real sample records

Photos, equipment and spec lists are shortened here for space. The Actor returns them in full.

```json
[
  {
    "imageUrl": "https://img.classistatic.de/api/v1/mo-prod/images/97/971dd2d2-ee54-4c2e-a064-0de82862a433?rule=mo-1024.jpg",
    "title": "BMW 330e Lim. Plug-in-Hybrid/LED/CarPlay/LiveCockpit",
    "id": "42227257922464",
    "make": "BMW",
    "model": "330",
    "price": 24650,
    "currency": "EUR",
    "priceRating": "Sehr guter Preis",
    "firstRegistration": "01/2021",
    "mileageKm": 62473,
    "powerKw": 135,
    "powerPs": 184,
    "fuel": "Hybrid (Benzin/Elektro), Plug-in-Hybrid",
    "transmission": "Automatik",
    "engineCapacityCc": 1998,
    "emissionSticker": "4 (Grün)",
    "color": "Schwarz",
    "sellerType": "Händler",
    "sellerName": "Autohaus Prisdorf GbR",
    "city": "Prisdorf bei Hamburg",
    "zipCode": "25497",
    "phones": ["+49 (0)4101 7762644"],
    "whatsapp": "+49 176 22823694",
    "dealerRating": 4.6,
    "dealerReviewCount": 61,
    "imageCount": 24,
    "features": ["ABS", "Alarmanlage", "Android Auto", "... 53 more"],
    "createdAt": "2026-08-27T15:26:18.000Z",
    "error": null
  },
  {
    "imageUrl": "https://img.classistatic.de/api/v1/mo-prod/images/cc/cc527f3c-138b-4d5f-9101-daf6fcf7daaf?rule=mo-1024.jpg",
    "title": "BMW X1 sDrive 18 d Sport Line PANO-LEDER-NAVI",
    "id": "41119392457216",
    "make": "BMW",
    "model": "X1",
    "price": 21990,
    "netPrice": 18478.99,
    "vatRate": 19,
    "priceRating": "Fairer Preis",
    "firstRegistration": "06/2022",
    "mileageKm": 100000,
    "powerPs": 150,
    "fuel": "Diesel",
    "sellerType": "Händler",
    "sellerName": "Böhmer Automobile",
    "city": "Salzgitter",
    "phones": ["+49 (0)176 11212121", "+49 (0)163 9896749"],
    "dealerRating": 4.9,
    "dealerReviewCount": 123,
    "error": null
  },
  {
    "imageUrl": "https://img.classistatic.de/api/v1/mo-prod/images/6c/6c47302d-0fdf-4638-b5a6-b7683c9be4cd?rule=mo-1024.jpg",
    "title": "BMW X2 sDrive18i Advantage (gepflegt, sche...",
    "id": "47927931569152",
    "make": "BMW",
    "model": "X1",
    "price": 19600,
    "priceRating": "Fairer Preis",
    "firstRegistration": "12/2020",
    "mileageKm": 63000,
    "powerKw": 100,
    "fuel": "Benzin",
    "sellerType": "Privatanbieter",
    "sellerName": "Not Disclosed",
    "city": "Seligenstadt",
    "zipCode": "63500",
    "phones": ["+49 (0)30 2290855311"],
    "dealerRating": "Not Disclosed",
    "imageCount": 6,
    "createdAt": "2026-09-28T20:38:30.000Z",
    "error": null
  }
]
```

### ✨ Why choose this Actor

- **Past the 2,000 row limit.** One search on the site stops at 2,000 rows. The Actor slices by price band and pulled 4,493 unique BMW listings in a single test run with zero duplicates.
- **Price rating on every row.** mobile.de's own verdict, from very good to high price, ready to filter or sort.
- **Dealer contact included.** Phones, WhatsApp, address, coordinates and the dealer review score, where the seller publishes them.
- **Net price and VAT.** Dealer offers carry the net amount and VAT rate, so business buyers can compare properly.
- **Any category.** Cars, motorbikes, motorhomes, vans, trucks, trailers, buses, construction, farm and forklift vehicles.
- **Search by postal code.** Give a German PLZ and a radius, or coordinates for anywhere in Europe.
- **Exact numbers.** Mileage, power and engine size arrive as plain numbers next to mobile.de's original text.
- **Fast and light.** No browser. About 9 listings per second with full details and far more without them.
- **Clean output.** Deduplicated by listing ID, no nulls, photos at 1024 px.

### 📈 How it compares to alternatives

| | This Actor | Typical mobile.de scrapers | Copying by hand |
|---|---|---|---|
| Requires a mobile.de login | No | No | No |
| Paste a search URL | Yes | Yes | Not applicable |
| Build a search from filters | Yes, 35+ inputs with verified values | Often a few filters | Use the site form |
| Postal code and radius search | Yes | Varies | Yes, one search at a time |
| More than 2,000 rows per search | Yes, by price bands | Usually capped at the site limit | No |
| Price rating and net price and VAT | Yes | Varies | Read them on each page |
| Dealer phones and WhatsApp | Yes, when published | Varies | Copy by hand |
| All 12 vehicle categories | Yes | Often cars only | Yes |
| Full equipment list and spec sheet | Yes | Varies | Read each page |

The Actor sees what any visitor sees. Phone numbers appear only when the seller publishes them, and some private sellers use the contact form only. Sorting inside a price band is exact, but across the bands of a very large search the rows are grouped by price, not globally sorted. Text values follow mobile.de's German wording.

### 🚀 How to use

1. Create a free Apify account. New accounts include $5 of free platform credit, which is plenty to try this out: [console.apify.com/sign-up](https://console.apify.com/sign-up?fpr=vmoqkp)
2. Open the Actor and go to the Input tab.
3. Paste mobile.de search or listing URLs, or pick a category, make, model and filters.
4. Set **Max Items** to the number of listings you want.
5. Leave **Include full details** on for the richest rows, or turn it off for the fastest run.
6. Click **Start**, then open the **Dataset** tab and download as CSV, Excel, JSON or XML, or pull it from the API.

```json
{
  "vehicleCategory": "Car",
  "makes": ["BMW"],
  "minYear": 2020,
  "maxPrice": 30000,
  "zipCode": "80331",
  "radiusKm": 100,
  "sortBy": "p",
  "sortOrder": "up",
  "maxItems": 500
}
```

### 💼 Business use cases

#### Dealer stock and price monitoring

Run the same search daily for your region and rivals. Compare asking prices, price ratings and days online, and react when a competitor cuts a price.

#### Sourcing and arbitrage

Filter for **Very good price** or **Good price** in the price rating, sort by newest, and get alerted to the deals before they are gone. Importers can pull the same model across Germany, Italy and the Netherlands.

#### Valuation and risk models

Lenders and insurers can build depreciation curves from millions of real asking prices with mileage, first registration and power as clean numbers.

#### Market research and journalism

Track how fast electric and hybrid cars grow, how prices move by fuel type, or how many listings drop below a price line, week by week.

### 🔌 Automating Mobile.de Listings Scraper

- **Make** and **Zapier**: run the Actor every morning for your saved search and send new listings to a sheet, CRM or chat.
- **Slack**: post a message when a car with a very good price rating appears in your radius.
- **Airbyte**: sync datasets into Snowflake, BigQuery or Postgres to keep price history.
- **GitHub**: schedule runs from Actions and keep versioned snapshots of a market.
- **Google Drive**: drop a CSV or Google Sheet into a shared folder after every run.
- **API and webhooks**: every run emits a dataset ID; subscribe to the run succeeded webhook and process rows wherever you need them.

### 🌟 Beyond business use cases

- **Research:** study used car markets, energy transition and price formation with an open dataset.
- **Personal:** find your next car by postal code, budget and mileage, and see which offers mobile.de itself rates as a good price.
- **Non-profit:** help mobility projects compare affordable used vehicles across regions.
- **Experimentation:** train models on prices, photos and equipment lists.

### 🤖 Ask an AI assistant about this scraper

Paste this into ChatGPT, Claude or any assistant to get help designing your run:

> I am using the ParseForge Mobile.de Listings Scraper on Apify. It takes mobile.de search URLs, listing URLs or filters (category, make, model, price, year, mileage, fuel, gearbox, seller type, postal code and radius) and returns one row per listing with 62 fields, including price, priceRating, firstRegistration, mileageKm, powerKw, fuel, sellerName, phones, latitude, longitude, images, features and description. Help me design an input for \[describe your goal], choose Max Items, and explain how to read the output.

### ❓ Frequently Asked Questions

**🔐 Do I need a mobile.de account?**
No. The Actor reads only public listing data. You never supply credentials.

**🔎 Can I paste a search URL?**
Yes. Build the search on mobile.de with any filters, copy the address bar URL and paste it into **Search or listing URLs**. You can add more filters from the form on top.

**📊 How many listings can I get from one search?**
As many as match, up to your Max Items. mobile.de itself serves 2,000 rows per search, so the Actor splits large searches into price bands. In our test it collected 4,493 unique listings for one make in a single run.

**📞 Do I get phone numbers?**
When the seller publishes them, yes: phones, WhatsApp and address for dealers, and phones for many private sellers. Some sellers use the contact form only, and the field then shows `[]` or `Not Disclosed`.

**📍 How does the postal code search work?**
Enter a German postal code and a radius in km. The Actor converts the code to coordinates and uses mobile.de's own radius filter. For other countries, enter latitude and longitude.

**🔢 Which models can I pick?**
All 2,733 car models of 182 makes, from a searchable list. For other categories use makes, or paste a search URL.

**💶 What does the price rating mean?**
It is mobile.de's own comparison of the asking price with similar cars, from very good price to high price, or no rating when there is not enough comparable data.

**🌐 Why are values in German?**
The Actor keeps the wording mobile.de uses, such as Automatik, Händler and Schaltgetriebe, next to plain numbers for mileage, power and price.

**🚫 Why did a listing come back with fewer fields?**
Listings that were removed while the run was open, or that mobile.de did not serve, come back with the search data only. The log says how many.

**⚡ How fast is it?**
About 9 listings per second with full details and much faster without them. A 600 listing test finished in about a minute.

**🌍 Which proxy does it use?**
Apify datacenter proxies by default, which is enough for this data. You can switch to residential in the input for very large runs.

### 🔌 Integrate with any app

Every run writes to an Apify dataset reachable through a REST API, so the output drops into whatever you already use. Native integrations cover Make, Zapier, Airbyte, Slack, Google Drive, GitHub, Google Sheets and webhooks. Export as CSV, Excel, JSON or XML.

### 🔗 Recommended Actors

- [AutoTrader Car Listings Scraper](https://apify.com/parseforge/autotrader-scraper) - used car listings from AutoTrader.
- [CarMax Vehicle Listings Scraper](https://apify.com/parseforge/carmax-scraper) - CarMax inventory with prices and specs.
- [Carvana Scraper](https://apify.com/parseforge/carvana-scraper) - Carvana vehicle listings and prices.
- [Gumtree Cars Scraper](https://apify.com/parseforge/gumtree-cars-scraper) - UK private and dealer car ads.
- [Cars For Sale Scraper](https://apify.com/parseforge/cars-for-sale-scraper) - more used car classifieds.

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge).

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA)

> **⚠️ Disclaimer:** independent tool, not affiliated with mobile.de; only publicly available data.

# Actor input Schema

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

Paste mobile.de search result URLs (suchen.mobile.de/fahrzeuge/search.html?...) or single listing URLs (.../auto-inserat/... or details.html?id=...). Leave empty to use the filters below.

## `vehicleCategory` (type: `string`):

Which mobile.de marketplace to search. Used when no search URL is given.

## `makes` (type: `array`):

Limit results to these makes. Works for every category that lists the make on mobile.de.

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

Limit results to these car models, written as Make|Model. Pick a model only together with its make.

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

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

Open every listing for the full description, equipment list, colour, interior, emission sticker, previous owners, inspection date and airbags. Turn off for the fastest run, with the core fields only.

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

Lowest asking price in euros.

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

Highest asking price in euros.

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

Earliest first-registration year.

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

Latest first-registration year.

## `minMileage` (type: `integer`):

Lowest odometer reading.

## `maxMileage` (type: `integer`):

Highest odometer reading.

## `minPower` (type: `integer`):

Lowest engine power in kW.

## `maxPower` (type: `integer`):

Highest engine power in kW.

## `minEngineCapacity` (type: `integer`):

Lowest displacement in cubic centimetres.

## `maxEngineCapacity` (type: `integer`):

Highest displacement in cubic centimetres.

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

Fewest seats.

## `maxPreviousOwners` (type: `string`):

Cars with up to this many previous owners.

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

Car body styles.

## `fuelTypes` (type: `array`):

Engine fuel or power source.

## `transmissions` (type: `array`):

Gearbox type.

## `driveType` (type: `string`):

Driven wheels.

## `condition` (type: `string`):

New or used vehicles.

## `doors` (type: `string`):

Number of doors.

## `emissionClass` (type: `string`):

Minimum standard listed on the ad.

## `colors` (type: `array`):

Exterior colour.

## `usageTypes` (type: `array`):

Special vehicle history.

## `sellerType` (type: `string`):

Dealer, private seller or company vehicle.

## `sellerCountries` (type: `array`):

Only listings located in these countries.

## `priceRatings` (type: `array`):

mobile.de's own rating of the price against the market.

## `listedSince` (type: `string`):

Only ads created in the last days.

## `adOptions` (type: `array`):

Require pictures, video, a quality seal or a reduced price.

## `excludeDamaged` (type: `boolean`):

Hide vehicles with unrepaired damage.

## `vatReclaimable` (type: `boolean`):

Only listings that show VAT (business buyers).

## `latitude` (type: `string`):

Centre of a radius search, for example 52.52. Use together with longitude and radius.

## `longitude` (type: `string`):

Centre of a radius search, for example 13.40.

## `zipCode` (type: `string`):

A German postal code (PLZ), for example 10115. It is converted to coordinates. Ignored when latitude and longitude are set.

## `radiusKm` (type: `integer`):

Distance around the centre point.

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

Ordering of the results. Newest first is the most stable choice for repeated runs.

## `sortOrder` (type: `string`):

Ascending or descending. Ignored for relevance.

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

mobile.de blocks direct requests from cloud servers, so the default uses Apify datacenter proxies, which is enough for this data API. Switch to residential only if you see blocks at very high volume.

## Actor input object example

```json
{
  "startUrls": [],
  "vehicleCategory": "Car",
  "maxItems": 10,
  "includeDetails": true,
  "excludeDamaged": false,
  "vatReclaimable": false,
  "radiusKm": 50,
  "sortBy": "doc",
  "sortOrder": "down",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

Photo, price, specs, location and dealer phone

## `fullData` (type: `string`):

Complete dataset with all 62 fields

# 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": [],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/mobile-de-listings-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": [],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/mobile-de-listings-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": [],
  "maxItems": 10
}' |
apify call parseforge/mobile-de-listings-scraper --silent --output-dataset

```

## MCP server setup

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