# Kleinanzeigen Scraper - Germany Classifieds & Seller Leads (`scrapesage/kleinanzeigen-scraper`) Actor

Scrape Kleinanzeigen.de, Germany's #1 classifieds. Cars, real estate, jobs, electronics, furniture & more — real prices, full attributes, all images, descriptions, geo, plus private/commercial seller leads. Filter by keyword, category, city, radius & price. Monitor new ads. Export JSON, CSV, Excel.

- **URL**: https://apify.com/scrapesage/kleinanzeigen-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (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 $4.00 / 1,000 classified ad scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

## Kleinanzeigen Scraper — Germany Classifieds, Prices & Seller Leads

Extract **complete Kleinanzeigen.de data** across every category — cars, real estate, jobs, electronics, furniture, fashion, pets, tickets and more — with the fields most scrapers miss: the **real price** and price type (fixed / VB-negotiable / free), the **full structured attribute table** (car make/model/mileage/fuel/year; flat rooms/m²/condition), the **complete image gallery**, the **full description**, location & zip, posted date, view count, and whether the seller is a **private person or a commercial / pro dealer**. Optionally roll every seller up into a **ready-to-contact lead**.

No login, no cookies stored, no browser — fast server-side HTML extraction straight from Kleinanzeigen with built-in retry and proxy rotation.

### Why this Kleinanzeigen scraper?

Most Kleinanzeigen scrapers cover a single vertical (just cars) or return only the search card with a price as a string. This actor reads both the search pages **and** the ad pages and ships the **richest, all-in-one dataset in the category**:

| Data | Typical scrapers | This actor |
|---|---|---|
| All categories in one actor (cars, property, jobs, electronics…) | ❌ one vertical | ✅ every category |
| Real numeric price **+ price type** (fixed / VB / free) | partial | ✅ parsed number + type |
| Full structured attribute table (`attributes`) | ❌ | ✅ nothing dropped |
| Car specs: make, model, **mileage (km)**, year, fuel, gearbox, power | ❌ | ✅ |
| Property specs: rooms, **m²**, condition, available-from | ❌ | ✅ |
| Complete image gallery (full resolution) | thumbnail only | ✅ full gallery |
| Location + **zip code** | city only | ✅ |
| Seller type — **private vs commercial / dealer** | ❌ | ✅ |
| Seller leads (name, storefront, active ads, member-since, lead score) | ❌ | ✅ opt-in |
| Commercial-dealer website / email / phone enrichment | ❌ | ✅ opt-in |
| Monitoring mode — only **new** ads since last run | ❌ | ✅ |

### Use cases

- **Lead generation** — Kleinanzeigen is full of **commercial sellers**: car dealers, electronics shops, furniture retailers, service providers. Turn them into a lead list (`includeSellerLeads`) with name, storefront, active-ad count, member-since, location, price range and a 0–100 lead score — plus optional website/email/phone for pro dealers.
- **Price & market intelligence** — track asking prices and inventory for any product, car model or neighbourhood across Germany. Compare cities, watch how prices move, size up the used market.
- **Car & property research** — pull thousands of structured car listings (make/model/year/km/fuel) or flats (rooms/m²/condition) for valuation models, dealer feeds, or buy-side sourcing.
- **Deal sniping & monitoring** — schedule recurring runs in **monitoring mode** to capture only newly posted ads matching your saved search (a specific model under a price, in a city) — perfect for flippers and arbitrage.
- **Aggregators & marketplaces** — feed your own vertical site, comparison tool, or CRM with clean, structured German classifieds data.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **Kleinanzeigen Scraper**, enter search queries and (optionally) a category, city, radius and price range, then click **Start**.
3. Watch results stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "searchQueries": ["bmw 3er"],
    "category": "Autos",
    "location": "München",
    "radius": 50,
    "minPrice": 5000,
    "maxPrice": 20000,
    "offerType": "commercial",
    "sort": "newest",
    "includeListingDetails": true,
    "includeSellerLeads": true,
    "maxItems": 100
}
```

- **searchQueries** — keywords, each combined with the filters. Leave empty to browse purely by category, or use `startUrls`.
- **startUrls** — paste any Kleinanzeigen search/category page, ad page, or seller page; the best way to target a specific category or city with the exact filters you set on the site.
- **listingUrls** — direct ad URLs (`/s-anzeige/...`) to scrape full detail for.
- **sellerUrls** — seller storefront URLs to scrape that seller's active listings (and a lead record).
- **category** — friendly name (`Autos`, `Immobilien`, `Jobs`, `Elektronik`, `Handy & Telefon`, `Mode & Beauty`, `Haustiere`, `Eintrittskarten & Tickets`) or a raw code like `c216`.
- **location / radius** — city name (auto-resolved) and an optional km radius around it.
- **minPrice / maxPrice** — price band in euros.
- **offerType** — `any`, `private`, or `commercial` (pro sellers only).
- **adType** — `any`, `offer` (Angebote) or `wanted` (Gesuche).
- **sort** — `newest`, `relevance`, `price_asc`.
- **includeListingDetails** *(default false)* — open each ad for the full description, attributes, gallery and seller.
- **includeSellerLeads** *(default false)* — also output one deduplicated lead per seller (implies listing details).
- **enrichSellerContacts** *(default false)* — best-effort website/email/phone for commercial dealers.
- **maxItems / maxSellerLeads** — caps per run.
- **monitorMode** *(default false)* — only emit ads/sellers not seen in previous runs (see below).

### Output

One record per ad (`type: "listing"`), plus optional seller-lead records (`type: "sellerLead"`):

```json
{
    "type": "listing",
    "listingId": "3421938471",
    "adId": "3421938471",
    "url": "https://www.kleinanzeigen.de/s-anzeige/bmw-116i-1er-2-hand-17-zoll-bbs-felgen-facelift/3421938471-216-5495",
    "title": "BMW 116i | 1er | 2. Hand | 17 Zoll BBS Felgen | Facelift",
    "price": 8900,
    "priceText": "8.900 € VB",
    "priceType": "negotiable",
    "currency": "EUR",
    "location": "13409 Berlin - Reinickendorf",
    "zip": "13409",
    "city": "Berlin - Reinickendorf",
    "category": "Autos",
    "categoryPath": ["Auto, Rad & Boot", "Autos", "BMW"],
    "description": "Verkaufe meinen gepflegten BMW 116i …",
    "attributes": {
        "Marke": "BMW",
        "Modell": "116",
        "Kilometerstand": "130.551 km",
        "Fahrzeugzustand": "Unbeschädigtes Fahrzeug",
        "Erstzulassung": "Juni 2016",
        "Kraftstoffart": "Benzin",
        "Leistung": "109 PS",
        "Getriebe": "Manuell",
        "Fahrzeugtyp": "Limousine",
        "Anzahl Türen": "4/5",
        "HU bis": "Januar 2029",
        "Umweltplakette": "4 (Grün)"
    },
    "imageCount": 12,
    "images": ["https://img.kleinanzeigen.de/api/v1/prod-ads/images/…?rule=$_59.AUTO"],
    "postedText": "27.05.2026",
    "postedDate": "2026-05-27T00:00:00.000Z",
    "viewCount": 412,
    "sellerType": "commercial",
    "sellerName": "AutoHaus Müller GmbH",
    "sellerId": "89094776",
    "sellerUrl": "https://www.kleinanzeigen.de/pro/autohaus-mueller",
    "sellerActiveSince": "14.10.2021",
    "sellerActiveAds": 38,
    "sellerBadges": ["satisfaction", "friendly", "reliable"],
    "detailScraped": true,
    "searchQuery": "bmw 3er",
    "scrapedAt": "2026-06-18T12:05:09.447Z"
}
```

Seller-lead record (`type: "sellerLead"`):

```json
{
    "type": "sellerLead",
    "sellerId": "89094776",
    "sellerName": "AutoHaus Müller GmbH",
    "sellerType": "commercial",
    "sellerUrl": "https://www.kleinanzeigen.de/pro/autohaus-mueller",
    "activeSince": "14.10.2021",
    "activeAds": 38,
    "badges": ["satisfaction", "reliable"],
    "location": "13409 Berlin - Reinickendorf",
    "zip": "13409",
    "categories": ["Autos"],
    "minPrice": 4900,
    "maxPrice": 48900,
    "currency": "EUR",
    "website": "https://autohaus-mueller.de",
    "email": "info@autohaus-mueller.de",
    "phone": "030 1234567",
    "sampleListings": [{ "title": "BMW 116i", "price": 8900, "url": "https://www.kleinanzeigen.de/s-anzeige/…" }],
    "leadScore": 84,
    "scrapedAt": "2026-06-18T12:05:35.138Z"
}
```

Every category comes back with its own structured fields preserved in `attributes`, so nothing is ever lost — cars, property, jobs, electronics and the rest all keep their native specs.

### Monitoring mode (only new ads)

Turn on **monitorMode** and the actor remembers which ads (or sellers) it has already emitted in a named key-value store, so each run returns **only what's new**. Combine it with [Apify Schedules](https://docs.apify.com/platform/schedules) to build deal alerts and price-watchers: the schedule triggers the run, monitoring mode dedupes against everything seen before. Use a distinct `monitorKey` per saved search so different watches keep separate memory.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets, and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[apify-client for Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it hourly/daily to monitor new ads in a category, city or for specific keywords; ideal for deal alerts and lead pipelines.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, email sequence) the moment a run finishes.

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/kleinanzeigen-scraper').call({
    searchQueries: ['bmw 3er'],
    category: 'Autos',
    location: 'München',
    offerType: 'commercial',
    includeListingDetails: true,
    includeSellerLeads: true,
    maxItems: 100,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} Kleinanzeigen records`);
```

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new seller leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored search finds new ads.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "find used BMWs under €15,000 in Munich on Kleinanzeigen and list the dealers" and let it run this scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete marketplace, classifieds & lead-gen stack:

- **[Subito.it Scraper](https://apify.com/scrapesage/subito-scraper)** — Italy's #1 classifieds & seller leads.
- **[OLX Brazil Scraper](https://apify.com/scrapesage/olx-brazil-scraper)** — Brazil classifieds: cars, real estate & leads.
- **[Gumtree Scraper](https://apify.com/scrapesage/gumtree-scraper)** — UK classifieds, listings & seller leads.
- **[AutoScout24 Scraper](https://apify.com/scrapesage/autoscout24-scraper)** — Europe's largest car marketplace & dealer leads.
- **[eBay Scraper](https://apify.com/scrapesage/ebay-scraper)** — listings, sold comps & seller data.
- **[Amazon Scraper](https://apify.com/scrapesage/amazon-scraper)** — products, prices, reviews & sellers.
- **[Vinted Scraper](https://apify.com/scrapesage/vinted-scraper)** — secondhand fashion listings & seller leads.

### Tips

- **Go deep with filters**: Kleinanzeigen has tens of thousands of ads per query. To exhaust a niche, split runs by category, city and price band rather than relying on one broad query.
- **Categories & cities the easy way**: browse Kleinanzeigen in your own browser, apply the filters you want, then paste the resulting URL into `startUrls` — the actor honours all of it and paginates for you.
- **Leads**: turn on `includeSellerLeads` (optionally `enrichSellerContacts`) to get one deduplicated record per seller, sorted by lead score; set `offerType: commercial` to focus on dealers.
- **Recurring monitoring**: combine [Schedules](https://docs.apify.com/platform/schedules) with `monitorMode` and a per-search `monitorKey` to capture only newly listed ads.
- **Proxies**: keep the default residential proxy group (Germany) — Kleinanzeigen serves residential IPs reliably; datacenter IPs are blocked.

### FAQ

**How do I scrape a specific city?** Set `location` (e.g. `Berlin`, `München`) and optionally a `radius` in km. Or browse the site to a city and paste the URL into `startUrls`.

**Can I scrape only cars / only real estate?** Yes — set `category` to `Autos`, `Immobilien`, `Jobs`, `Elektronik`, `Handy & Telefon`, etc. (friendly name or raw `c…` code). For a precise sub-category, paste its URL into `startUrls`.

**Do I get the seller's phone number?** Kleinanzeigen hides most phone numbers behind a reveal step, so they aren't always available. Commercial dealers often publish a website, email and phone on their storefront/imprint — turn on `enrichSellerContacts` to best-effort capture them. Every seller always carries name, type, storefront URL, member-since and active-ad count.

**Can I export to Google Sheets, CSV, or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**How do I monitor new ads automatically?** Turn on `monitorMode`, create a [Schedule](https://docs.apify.com/platform/schedules), and optionally add a [webhook](https://docs.apify.com/platform/integrations/webhooks) or [Zapier zap](https://docs.apify.com/platform/integrations/zapier) to push new ads/leads into your CRM as they appear.

**Is scraping Kleinanzeigen legal?** This actor collects publicly available data only. You are responsible for using the data in compliance with applicable laws (GDPR for personal data) and Kleinanzeigen's terms.

**A field is null — why?** Sellers don't always fill in every spec (mileage, condition, exact location). Fields are `null` only when the seller didn't provide them, not because the scraper skipped them — and every raw attribute that *is* present is kept in `attributes`.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords to search on Kleinanzeigen, e.g. <code>iphone 15</code>, <code>bmw 3er</code>, <code>sofa</code>, <code>wohnung</code>. Each query is combined with the category, location and price filters below. Leave empty to browse purely by category, or use Start URLs.

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

Paste any Kleinanzeigen.de URL — a search/category page (<code>https://www.kleinanzeigen.de/s-autos/berlin/c216l3331</code>), an ad page (<code>.../s-anzeige/...</code>) or a seller page (<code>.../s-bestandsliste.html?userId=...</code>). The best way to scrape a specific category or city with the exact filters you set on the site. Used in addition to search queries.

## `listingUrls` (type: `array`):

Direct Kleinanzeigen ad URLs (<code>https://www.kleinanzeigen.de/s-anzeige/...</code>) to scrape full detail for. Each is fetched as a full listing-detail record.

## `sellerUrls` (type: `array`):

Kleinanzeigen seller storefront URLs (<code>.../s-bestandsliste.html?userId=12345</code> or commercial <code>.../pro/\<shop></code>) to scrape that seller's active listings (and, with seller leads on, a lead record).

## `category` (type: `string`):

Limit results to a category. Use a friendly name (<code>Autos</code>, <code>Immobilien</code>, <code>Jobs</code>, <code>Elektronik</code>, <code>Handy & Telefon</code>, <code>Mode & Beauty</code>, <code>Haustiere</code>, <code>Eintrittskarten & Tickets</code>) or a raw Kleinanzeigen code like <code>c216</code>. For sub-categories, use Start URLs.

## `location` (type: `string`):

City or place name to limit results to, e.g. <code>Berlin</code>, <code>München</code>, <code>Hamburg</code>, <code>Köln</code>. Resolved automatically to a Kleinanzeigen location. Leave empty for all of Germany.

## `radius` (type: `integer`):

Search radius in kilometres around the selected city (only applies when a location is set). Common values: 5, 10, 20, 50, 100, 200.

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

Only ads at or above this price, in euros.

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

Only ads at or below this price, in euros.

## `offerType` (type: `string`):

Filter by who is selling. <b>Commercial</b> = professional / business sellers only (dealers, shops — great for lead-gen). <b>Private</b> = individuals only. <b>Any</b> = both.

## `adType` (type: `string`):

<b>Offers</b> = items/properties/jobs offered (the default). <b>Wanted</b> = "Gesuch" ads from buyers looking for something. <b>Any</b> = both.

## `sort` (type: `string`):

How to order results. Newest first is recommended for monitoring.

## `includeListingDetails` (type: `boolean`):

For every listing, open its ad page and add the full description, every structured attribute (car specs / property specs / condition), the complete image gallery, category path, view count and the seller (private vs commercial). Charged as <code>listingDetail</code>. Slower but far richer.

## `includeSellerLeads` (type: `boolean`):

Also output one deduplicated lead record (type = "sellerLead") per unique seller behind the scraped ads — with name, private/commercial type, storefront URL, member-since date, active-ad count, location, reputation badges, price range, sample listings and a 0–100 lead score. Opening ad pages is required, so this implies full listing details.

## `enrichSellerContacts` (type: `boolean`):

For commercial sellers, also open their storefront and best-effort extract a website, email and phone from the dealer's public profile / imprint. Adds extra requests.

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

Maximum number of listings to scrape across all queries. Kleinanzeigen has tens of thousands of ads per query — use category, location and price filters to focus.

## `maxSellerLeads` (type: `integer`):

Maximum number of seller-lead records to emit (when seller leads are on).

## `monitorMode` (type: `boolean`):

Remember ids across runs in a named key-value store and emit ONLY records not seen before (new ads, new sellers). Perfect for deal alerts and price-watching. Works with Apify Schedules.

## `monitorKey` (type: `string`):

Names the memory used by monitoring mode. Use a distinct key per saved search so different watches don't share state.

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

Proxy settings. Residential proxies (Germany) are strongly recommended and used by default — Kleinanzeigen serves residential IPs reliably; datacenter IPs are blocked.

## Actor input object example

```json
{
  "searchQueries": [
    "iphone"
  ],
  "offerType": "any",
  "adType": "any",
  "sort": "newest",
  "includeListingDetails": false,
  "includeSellerLeads": false,
  "enrichSellerContacts": false,
  "maxItems": 80,
  "maxSellerLeads": 200,
  "monitorMode": false,
  "monitorKey": "default",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  }
}
```

# Actor output Schema

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

All scraped classified-ad records and optional seller-lead records as JSON items in the default dataset.

# 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 = {
    "searchQueries": [
        "iphone"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "DE"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/kleinanzeigen-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 = {
    "searchQueries": ["iphone"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "DE",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/kleinanzeigen-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQueries": [
    "iphone"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  }
}' |
apify call scrapesage/kleinanzeigen-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapesage/kleinanzeigen-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/UZ3I3UvwIlSX1Bnyi/builds/4AspukTR9EztFAx7s/openapi.json
