Kleinanzeigen Listings Scraper avatar

Kleinanzeigen Listings Scraper

Pricing

from $2.50 / 1,000 result emitteds

Go to Apify Store
Kleinanzeigen Listings Scraper

Kleinanzeigen Listings Scraper

Scrape eBay Kleinanzeigen (kleinanzeigen.de) listings by keyword — title, price, location, image, and seller type from Germany's #1 classifieds marketplace. No login needed. Export clean, deduped JSON, CSV, or Excel rows for resale research or price tracking.

Pricing

from $2.50 / 1,000 result emitteds

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share


🎯 What this scrapes

eBay Kleinanzeigen is Germany's #1 classifieds marketplace for secondhand and consumer goods — hundreds of thousands of live listings, no public API. This Actor runs a keyword search, walks every result page, and pulls each listing's title, price (EUR or "VB"/negotiable), location with postal code, image, shipping availability, and whether the seller is a private individual or a commercial (PRO) account. Search as many keywords as you like in one run — results are merged and deduped by ad ID across pages and keywords.

🔥 What we handle for you

  • 🛡️ Browser fingerprint rotationcurl-cffi impersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python.
  • 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block.
  • 🔁 Retries with exponential backoff on 408 / 429 / 5xx — up to 5 attempts per page, Retry-After honoured.
  • 🧱 Rate-limit-aware pacing — when the target pushes back, we slow down instead of getting banned.
  • 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
  • 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.

💡 Use cases

  • Resale arbitrage — track underpriced secondhand listings by keyword across Germany.
  • Market research — benchmark asking prices for a product category over time.
  • Lead generation — build a directory of PRO/commercial sellers active on a keyword.
  • Price-drop alerts — diff successive runs to catch reductions on watched searches.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Fill in the input form — most fields have sensible defaults.
  3. Click Start. Output streams into the run's dataset.
  4. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.

📥 Input

FieldTypeRequiredDefaultNotes
keywordsarrayyes['fahrrad', 'laptop']One or more search terms, e.g. ["fahrrad", "laptop"]. The Actor runs one keyword search per entry and…
maxItemsintegerno50Hard cap on dataset rows across all keywords combined.
proxyConfigurationobjectno{'useApifyProxy': True, 'apifyProxyGroups': ['RESIDENTIAL']}Apify Proxy spec. No anti-bot signature has been observed on Kleinanzeigen's search pages, so a datacenter group works…

Example input

{
"keywords": [
"fahrrad"
],
"maxItems": 5,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
]
}
}

📤 Output

Every row is one dataset item.

FieldTypeNotes
ad_idintegerKleinanzeigen ad ID, from the result card's data-adid attribute.
titlestringListing headline.
description_snippet['string', 'null']Short description snippet from the result card or its JSON-LD block.
price_amount['number', 'null']Parsed EUR amount. null when the price is "VB" (negotiable) or blank (give-away) — see price_raw.
price_rawstringRaw price text exactly as shown, e.g. "150 €", "VB", or "" (always populated).
currencystringISO-4217 currency code — always EUR.
location['string', 'null']Full location text next to the pin icon, e.g. "48691 Vreden".
postal_code['string', 'null']5-digit German postal code split from location when cleanly parseable, otherwise null.
image_url['string', 'null']Listing thumbnail/photo URL from the card's JSON-LD block.
urlstringAbsolute URL to the listing detail page.
is_shipping_availablebooleanTrue when the card carries a DHL shipping-available marker.
is_commercial_sellerbooleanTrue when the card carries a PRO/commercial-seller badge or shop link.
scraped_atstringISO-8601 UTC timestamp when this row was recorded.

Example output

{
"ad_id": 2843810004,
"title": "Reparatur von Grafikkarten, Laptops, Konsolen uvm.",
"description_snippet": "Biete Reparatur von Laptops und Grafikkarten an...",
"price_amount": 150.0,
"price_raw": "150 \u20ac",
"currency": "EUR",
"location": "48691 Vreden",
"postal_code": "48691",
"image_url": "https://img.kleinanzeigen.de/api/v1/prod-ads/images/...",
"url": "https://www.kleinanzeigen.de/s-anzeige/reparatur-von-grafikkarten-laptops-konsolen-uvm/2843810004-...",
"is_shipping_available": true,
"is_commercial_seller": false,
"scraped_at": "2026-09-19T12:00:00.000Z"
}

💰 Pricing

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.2One-off warm-up charge per run
result$0.0025Per dataset item

Example: 1 000 results at the rates above ≈ $2.70. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

🚧 Limitations

  • v1 supports keyword search only — the category-browse URL shape is not implemented.
  • No location_filter/radius/postal-code query parameter yet.
  • Only list-card fields are scraped — no item-detail-page enrichment (full description, seller history, phone).
  • HTML-only: Kleinanzeigen publishes no public JSON API.

❓ FAQ

Do I need to log in or provide cookies?

No. Kleinanzeigen's keyword search and listing cards are public — the Actor needs no account, cookies, or login.

What happens if a keyword has no results?

The run finishes successfully with zero rows for that keyword and moves to the next one — an empty search is not an error.

Can I search multiple keywords in one run?

Yes — add as many entries to keywords as you like; results are merged and deduped by ad ID across the whole run.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.