πŸ›’ eBay Kleinanzeigen Scraper avatar

πŸ›’ eBay Kleinanzeigen Scraper

Pricing

from $4.99 / 1,000 results

Go to Apify Store
πŸ›’ eBay Kleinanzeigen Scraper

πŸ›’ eBay Kleinanzeigen Scraper

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

API Empire

API Empire

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Scrape Kleinanzeigen.de (formerly eBay-Kleinanzeigen) at scale β€” full ad details, seller info, prices, images, and commercial shop data. With smart, escalating proxy fallback and per-section output tables so your data lands exactly where you expect it.


✨ Why Choose Us?

Other scrapersπŸ›’ This actor
Only return search-results summariesReturns full ad details (art, brand, color, size, shipping, images, seller, company)
Use a single proxy strategySmart 3-tier proxy ladder: direct β†’ datacenter β†’ residential
Dump everything into one table5 separate output tables: Overview, Pricing, Seller, Company, Media
One-shot onlyMonitoring mode for daily change detection (new / updated / delisted)
Crash β†’ lose everythingLive save β€” every record is persisted as it's scraped
Guess at fields when missingBrand & size inference from title + description when the seller didn't fill them in

πŸš€ Key Features

  • πŸ”— Bulk input β€” pass any number of search URLs or single-ad URLs
  • 🌐 Smart proxy ladder β€” starts direct, escalates to datacenter, then residential (3 retries) on blocks. Once escalated, it sticks.
  • πŸ’Ύ Live persistence β€” every ad is pushed to the dataset as soon as it's enriched
  • πŸ“Š 5 output tables per run β€” Overview / Pricing / Seller / Company / Media
  • πŸ‘€ Monitoring mode β€” diff against the last run and emit only new / updated / delisted ads
  • πŸ›‘οΈ Anti-block resilience β€” fresh sessions per search page, random jitter, Chrome TLS impersonation
  • 🏒 Commercial seller enrichment β€” full impressum (address, phone, email, opening hours) for /pro/ shops
  • πŸ‡©πŸ‡ͺ German-aware β€” handles Grâße / Marke / Farbe, Buyer-Protection fee parsing, soft-block recovery

πŸ“₯ Input

{
"startUrls": [
{ "url": "https://www.kleinanzeigen.de/s-berlin/basecap/k0l3331" }
],
"query": "basecap",
"maxItems": 100,
"concurrency": 10,
"maxRetries": 3,
"requestDelay": 2.0,
"monitoringMode": false,
"monitoringFields": ["price", "title", "address"],
"proxyConfiguration": { "useApifyProxy": false }
}
FieldTypeDescription
startUrlsarrayList of Kleinanzeigen URLs. Each can be a search-results page (/s-…) or a single ad page (/s-anzeige/…). Required.
querystringOptional plain keyword used to build a Germany-wide search URL when startUrls is empty.
maxItemsintegerMaximum number of ads to scrape across all start URLs. Default 100.
concurrencyintegerMax simultaneous HTTP requests. Default 10.
maxRetriesintegerRetries per request before escalating proxy tier. Default 3.
requestDelaynumberPoliteness delay (s) between search-results page fetches. Random jitter is added. Default 2.0.
monitoringModebooleanCompare against the last run's snapshot and emit only new / updated / delisted ads. Default false.
monitoringFieldsarrayWhich fields trigger an 'updated' diff entry. Default ["price", "title", "address"].
proxyConfigurationobjectApify proxy config. Default = no proxy. Falls back to DATACENTER, then RESIDENTIAL on blocks.

πŸ“€ Output

Each record matches the original schema you'd expect from a Kleinanzeigen ad.

{
"url": "https://www.kleinanzeigen.de/s-anzeige/tofu-maus-dad-cap-basecap-…/3413526891-156-3398",
"id": "3413526891",
"title": "Tofu Maus Dad Cap Basecap Organic Anti Eat Meat Club",
"price": "25.00",
"priceCurrency": "EUR",
"art": "MΓΌtzen, Schals & Handschuhe",
"brand": "AntiEatMeatClub",
"color": "Grau",
"size": null,
"shippingPrice": "1.99",
"kauferschutzPrice": "1.63",
"address": "12043 Berlin - NeukΓΆlln",
"date": "20.05.2026",
"viewsCount": 22,
"primaryImageURL": "https://img.kleinanzeigen.de/api/v1/prod-ads/…",
"imageURLs": ["…", "…", "…"],
"categoryURLs": ["…", "…"],
"descriptionText": "Dad Cap mit Tofu Maus Aufschrift in Anthazit von AntiEatMeatClub…",
"sellerName": "Jacob",
"sellerURL": "https://kleinanzeigen.de/s-bestandsliste.html?userId=1890453",
"sellerPhone": null,
"sellerEmailFromDescription": null,
"sellerPhoneFromDescription": null,
"companyInfo": null
}

πŸ“Š Output sections

Inside Apify Console, the Output tab presents 5 pre-configured tables:

SectionWhat it shows
πŸ“‹ OverviewThe headline β€” title, price, brand, location, views, primary image
πŸ’° Pricing & ShippingPrice, currency, shipping cost, buyer-protection fee
πŸ‘€ Seller InfoSeller name + profile URL + extracted phone / email
🏒 Commercial SellersFull companyInfo for /pro/ shops only (address, hours, email, phone)
πŸ–ΌοΈ Media & ImagesPrimary image + the full image gallery as an array

The default dataset contains every field; the alias datasets (overview / pricing / seller / company / media) carry slimmed projections, ideal for analytics or CSV export.


πŸš€ How to Use (Apify Console)

  1. Log in at console.apify.com β†’ Actors
  2. Find this actor (πŸ›’ eBay Kleinanzeigen Scraper) and open it
  3. Paste one or more Kleinanzeigen URLs into πŸ”— Kleinanzeigen URLs
  4. Tweak πŸ“¦ Maximum items to control how much to scrape
  5. (Optional) Keep 🌐 Proxy at default (no proxy) β€” the actor will escalate automatically if blocked
  6. Click Start
  7. Watch the live log: πŸš€ / πŸ“ƒ / βœ… / πŸͺœ emojis tell you exactly what is happening
  8. Open Output when the run completes β€” pick a section view from the dropdown
  9. Export to JSON / CSV / XLSX from the same tab

πŸ€– Use via API / MCP

Sync (waits for completion, returns dataset items):

curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"startUrls": [
{ "url": "https://www.kleinanzeigen.de/s-berlin/basecap/k0l3331" }
],
"maxItems": 50
}'

Async (fire-and-forget):

curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "query": "basecap", "maxItems": 100 }'

MCP clients (Claude, Cursor) can call this actor via the Apify MCP server at mcp.apify.com.


🌐 Proxy Strategy

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” block β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” block β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
Request ───► β”‚ DIRECT β”‚ ─────────► β”‚ DATACENTER β”‚ ─────────► β”‚ RESIDENTIAL β”‚ ─► 3 retries
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
  • Default = direct. No proxy is used until the platform actually blocks us.
  • On block (HTTP 403 / 429 / 5xx, captcha page, or network error), the actor escalates one tier and sticks there for the rest of the run.
  • On RESIDENTIAL the actor retries each request up to 3 times before giving up.
  • Every escalation is logged with πŸͺœ so you can audit it in the run log.

🎯 Best Use Cases

  • πŸ›οΈ Price monitoring for resellers
  • πŸ“ˆ Market research on private/used-goods categories
  • πŸš— Vehicle / electronics arbitrage
  • 🏘️ Real estate / rental listing tracking
  • πŸ” Daily change detection (new / updated / delisted ads β€” use monitoringMode)

πŸ’Έ Pricing

This actor runs on pay-per-event pricing.

EventWhat it bills for
apify-actor-startRun startup (covered by Apify for the first 5s of compute)
apify-default-dataset-itemOne charge per ad pushed to the dataset

Stop the run anytime to cap your spend β€” partial results are already in the dataset thanks to live persistence.


❓ Frequently Asked Questions

Q: Will I get blocked? Probably not on small runs β€” the actor starts direct, jitters its delays, uses a fresh session per search-results page, and impersonates Chrome's TLS fingerprint. If Kleinanzeigen does push back, the proxy ladder kicks in automatically.

Q: Why are some fields null? Many Kleinanzeigen ads are posted by private sellers who skip the Marke / Grâße / Farbe form fields. This actor falls back to inferring brand and size from the title and description, but if the cues aren't there, the field stays null rather than guessing wrong.

Q: How fast is it? ~25 ads per search page in roughly one round-trip-bound batch at concurrency=10. A 100-ad run typically completes in 1–3 minutes from direct (longer on residential).

Q: How do I scrape only new ads each day? Turn on πŸ‘€ Monitoring mode. The actor stores a snapshot in the run's key-value store and emits a changes alias dataset with _change: new | updated | delisted tags on subsequent runs.

Q: Can I scrape commercial shops in full? Yes β€” when an ad belongs to a /pro/<slug> shop the actor automatically fetches the shop's impressum page and fills companyInfo.companyAddress, companyPhone, companyEmails, openingHours, and companyUrl.


πŸ›Ÿ Support and Feedback

  • πŸ› Issues: open an issue in the actor's Apify Console Issues tab
  • πŸ“§ Contact: scrapier.io@gmail.com
  • ⭐ If this actor helped you, leave a review β€” it helps other scrapers find it!

  • Only public ad data is collected (no private accounts, no logins).
  • You are responsible for compliance with GDPR, CCPA, anti-spam laws, and Kleinanzeigen's ToS when using the scraped data.
  • Honor robots.txt and reasonable rate limits β€” the actor's default concurrency=10 and requestDelay=2.0 are tuned to be a good citizen.