# Kleinanzeigen Scraper (`scraptivo/kleinanzeigen-scraper`) Actor

Scrape listings from kleinanzeigen.de — search results and detail pages for any category (electronics, vehicles, real estate, jobs, and more).

- **URL**: https://apify.com/scraptivo/kleinanzeigen-scraper.md
- **Developed by:** [Scraptivo](https://apify.com/scraptivo) (community)
- **Categories:** E-commerce, MCP servers, Real estate
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.30 / 1,000 results

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/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** collects listings from kleinanzeigen.de (formerly eBay Kleinanzeigen) and turns them into structured data for market research, deal monitoring, and lead generation. Provide a search URL or keywords, run the Actor, and export titles, prices, locations, categories, images, and seller details to JSON, CSV, Excel, or your preferred integration. Use it to track prices, find deals, and monitor new listings in any category. Each listing result costs $0.002.

### What can you automate with Kleinanzeigen Scraper?

- **Monitor listings in any category** — electronics, vehicles, real estate, jobs, and more.
- **Track prices and deals** — collect price and location to spot bargains.
- **Enrich listings with full details** — enable detail pages for descriptions, images, attributes, and seller info.
- **Schedule recurring searches** — watch for new listings by keyword or category.
- **Feed a spreadsheet or CRM** — export JSON, CSV, or Excel for analysis.

### Who is this scraper for?

| Team | Workflow |
|---|---|
| Deal hunters and resellers | Watch categories for underpriced items and new listings. |
| Market researchers | Track supply, demand, and pricing for used goods. |
| Lead-generation teams | Collect seller details from classifieds. |
| Automotive and real estate analysts | Monitor vehicle and property listings. |

### What data can you collect from Kleinanzeigen?

| Data group | Example fields | How it helps |
|---|---|---|
| Listing identity | id, listingId, title, url, category | Identify and link the listing. |
| Price | price, priceValue, currency | Assess value and spot deals. |
| Location and shipping | location, shipping | Target and reach sellers. |
| Seller | sellerType, isProfessional, seller | Qualify the seller. |
| Detail content | description, images, attributes, features | Understand the listing fully. |

Detail fields (description, images, attributes) require **Fetch Detail Pages** enabled.

### How to use Kleinanzeigen Scraper

1. Open the Actor in the Scraptivo account.
2. Paste a Kleinanzeigen search or category URL, or enter search keywords.
3. Choose whether to fetch full detail pages and set a limit.
4. Run the Actor.
5. Export the dataset to JSON, CSV, Excel, or your integration.

```json
{ "searchQueries": ["laptop"], "fetchDetails": true, "maxItems": 50 }
```

### Example workflow

#### Find underpriced laptops in Berlin every day

1. Run a "laptop" search every morning.
2. Keep listings with a price value below your threshold and shipping available.
3. Send new records to Google Sheets or a database.
4. Deduplicate using the stable listing `id`.

### Automate and integrate your results

- **Schedule** hourly or daily runs per keyword using Apify's Scheduler or the API.
- **Webhooks** after a successful run to trigger your downstream pipeline.
- **Export** to Google Sheets, Make, Zapier, Slack, or a database.
- **Deduplicate** using the stable `id` field.

```shell
curl "https://api.apify.com/v2/acts/scraptivo~kleinanzeigen-scraper/run-sync" -H "Content-Type: application/json" -d '{"searchQueries":["laptop"],"maxItems":50}'
```

### Input reference

| Field | Type | Required | Default | What it controls |
|---|---|---|---:|---|
| startUrls | array | no | — | Kleinanzeigen search/category URLs or listing URLs. |
| searchQueries | array | no | \["laptop"] | Keyword searches converted to search URLs. |
| maxItems | integer | no | 0 | Maximum listings to scrape (0 = unlimited). |
| maxPages | integer | no | 0 | Max search pages per URL (0 = up to site limit of 10 pages / ~250 listings). |
| fetchDetails | boolean | no | true | Visit listing pages for description, images, attributes, and seller info. |
| proxyConfiguration | object | no | RESIDENTIAL (DE) | Apify residential proxy in Germany recommended. |

### Output example

```json
{
  "id": "2759695654",
  "url": "https://www.kleinanzeigen.de/s-anzeige/laptop-handy-watch-reparatur-guenstig/2759695654-226-3398",
  "title": "Laptop Handy watch Reparatur günstig",
  "description": "Handy Technik – Erkstr.7, 12043 Berlin, Tel: 030 33029960 …",
  "price": "VB",
  "priceValue": null,
  "currency": "",
  "location": "12043 Neukölln",
  "images": ["https://img.kleinanzeigen.de/api/v1/prod-ads/images/2e/2e5eb57e-74a5-4bd3-89f6-b9aff27ded99?rule=$_35.AUTO"],
  "sellerType": "Gewerblich",
  "isProfessional": true,
  "detailFetched": false
}
```

### How much does it cost to scrape Kleinanzeigen?

Kleinanzeigen Scraper uses pay-per-event billing on Apify:

- **$0.002 per listing result** (the headline result event).
- **$0.00005 per run** for the actor-start event.

Examples: 100 listings cost about $0.20; 1,000 listings cost about $2.00 plus the start fee. Residential proxy traffic is billed separately by Apify according to your plan.

### Reliability and responsible use

- A German residential proxy is recommended and enabled by default.
- Kleinanzeigen caps unfiltered searches at about 250 results (10 pages).
- Descriptions, images, and attributes are only present when `fetchDetails` is enabled.
- Some fields (price, category, postedDate) can be empty when a listing does not publish them.
- Scrape only public listing data and follow Kleinanzeigen's terms of service.

### Frequently asked questions

#### Can I scrape any category from Kleinanzeigen?

Yes. Paste a category URL (e.g. `https://www.kleinanzeigen.de/s-laptop/k0`) into `startUrls`, or use keywords via `searchQueries`.

#### Can I schedule Kleinanzeigen Scraper to run automatically?

Yes. Use Apify's Scheduler or the API to run a search on an hourly or daily cadence.

#### What counts as one result?

One listing in the dataset.

#### Why do some fields look empty?

Detail fields (description, images, attributes) require `fetchDetails` enabled, and listings may not publish every field.

#### How do I avoid duplicate records?

Deduplicate on the stable `id` field before writing to your database or spreadsheet.

#### Do I need a proxy?

Yes. A German residential proxy is recommended and enabled by default for Kleinanzeigen.

### Related Scraptivo automations

- [Immowelt Property Scraper](https://apify.com/scraptivo/immowelt-property-scraper) — German property listings.
- [Immobiliare Scraper](https://apify.com/scraptivo/immobiliare-scraper) — property listings from Immobiliare.it.
- [Apartments Scraper](https://apify.com/scraptivo/apartments-scraper) — apartment listings from Apartments.com.

### Support and custom workflows

Need a different field, source, or delivery workflow? Contact Scraptivo at scraptivo@gmail.com. Include the Actor name, a sample URL, the required fields, and expected volume so we can assess the request.

# Actor input Schema

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

Kleinanzeigen search/category URLs or individual listing URLs (/s-anzeige/). Paste any search results page from kleinanzeigen.de.

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

Optional keyword searches converted to Kleinanzeigen search URLs (e.g. "iphone", "fahrrad berlin"). Used when you don't have a direct URL.

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

Maximum number of listings to scrape (0 = unlimited)

## `maxPages` (type: `integer`):

Maximum search result pages to scrape per start URL (0 = up to site limit of 10 pages / ~250 listings). Kleinanzeigen caps unfiltered searches at 250 results.

## `fetchDetails` (type: `boolean`):

When enabled, visits each listing page for full description, images, attributes, and seller info. Disable for faster overview-only scraping.

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

Apify residential proxy in Germany (DE) recommended for Kleinanzeigen.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.kleinanzeigen.de/s-laptop/k0"
    }
  ],
  "searchQueries": [
    "laptop"
  ],
  "maxItems": 25,
  "maxPages": 0,
  "fetchDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `runStats` (type: `string`):

No description

## `input` (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://www.kleinanzeigen.de/s-laptop/k0"
        }
    ],
    "searchQueries": [
        "laptop"
    ],
    "maxItems": 25,
    "fetchDetails": false,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "DE"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraptivo/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 = {
    "startUrls": [{ "url": "https://www.kleinanzeigen.de/s-laptop/k0" }],
    "searchQueries": ["laptop"],
    "maxItems": 25,
    "fetchDetails": False,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "DE",
    },
}

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

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.kleinanzeigen.de/s-laptop/k0"
    }
  ],
  "searchQueries": [
    "laptop"
  ],
  "maxItems": 25,
  "fetchDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  }
}' |
apify call scraptivo/kleinanzeigen-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scraptivo/kleinanzeigen-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/dcqScEYECULnbEH3I/builds/fjQZdRvUCZraZhoYw/openapi.json
