Ebay Kleinanzeigen Scraper
Pricing
from $0.59 / 1,000 listings
Ebay Kleinanzeigen Scraper
Scrape classified ads from Kleinanzeigen.de (formerly eBay Kleinanzeigen) by keyword, location, or search URL. Get price, condition, attributes, images, seller, and description. Monitoring mode tracks new, updated, and delisted ads.
Pricing
from $0.59 / 1,000 listings
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Ebay Kleinanzeigen Scraper
Extract classified-ad data from Kleinanzeigen.de (formerly eBay Kleinanzeigen) by search query, location code, or search URL. The Ebay Kleinanzeigen Scraper returns clean, structured data for every ad — price, condition, brand, size, images, seller, description, category, and view count — plus a built-in monitoring mode that tracks new, updated, and delisted ads across scheduled runs.
| Scrape Kleinanzeigen.de by keyword or location, pull 25+ structured fields per ad including price history and seller Impressum, and run it on a schedule to catch new and price-changed listings automatically. |
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
Actor: parsebird/ebay-kleinanzeigen-scraper (Apify). Scrapes classified ads from kleinanzeigen.de (ex eBay Kleinanzeigen).Call with ApifyClient:client.actor("parsebird/ebay-kleinanzeigen-scraper").call(run_input={"query": "Basecap", # free-text search term (optional)"location": "3331", # Kleinanzeigen location code, e.g. 3331 = Berlin (optional)"startUrls": [{"url": "https://www.kleinanzeigen.de/s-berlin/basecap/k0l3331"}], # optional search URLs"maxItems": 20, # max ads to extract (billed rows), default 5"fetchViewsCount": false, # extra request per ad to fill viewsCount"monitoringMode": false, # only return new/updated/delisted ads vs last run"monitoringFields": ["price"], # fields that count as an "update""proxyConfiguration": {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "DE"}})Output (per ad): url, id, title, price, priceCurrency, art, brand, color, condition, size, shippingPrice,kauferschutzPrice, address, date, viewsCount, primaryImageURL, imageURLs[], categoryURLs[], descriptionText,sellerName, sellerURL, sellerPhone, sellerEmailFromDescription, sellerPhoneFromDescription, attributes{},companyInfo{companyName, companyAddress, companyUrl, companyPhone, openingHours, companyEmails[], vatId, taxNumber}.In monitoring mode also: firstSeenAt, lastSeenAt, daysOnMarket, previousPrice, priceChanged, priceHistory[],changedFields[], monitoringStatus.API docs: https://apify.com/parsebird/ebay-kleinanzeigen-scraper/api | Token: https://console.apify.com/account/integrations
What is the Ebay Kleinanzeigen Scraper?
The Ebay Kleinanzeigen Scraper is a data-extraction tool for Kleinanzeigen.de, Germany's largest classifieds marketplace, which was called eBay Kleinanzeigen until 2023. Kleinanzeigen has no public API, so this actor works as a Kleinanzeigen API alternative: give it a search term or a search URL and it returns the full ad detail for every result as JSON, CSV, or Excel.
It is built for three jobs:
- 🔎 Search scraping — turn any keyword or category search into a structured dataset.
- 📍 Local scraping — restrict results to a city or district with a Kleinanzeigen location code.
- 🔔 Monitoring — schedule the actor and receive only the ads that are new, changed, or gone since the previous run, with price history attached.
What can the Ebay Kleinanzeigen Scraper do?
- Scrape ads by search query, location code, or one or more search URLs copied straight from the site.
- Combine a query and start URLs in a single run — the actor scrapes both.
- Extract 25+ fields per ad, including structured attributes (Art, Marke, Farbe, Zustand, Größe) and the full description text.
- Pull seller details — name, profile URL, and phone/email found in the ad text.
- Extract the commercial seller Impressum (company name, address, VAT ID, tax number, email, phone) for business listings.
- Optionally fetch the view count for each ad.
- Monitoring mode: detect new, updated, and delisted ads; track
priceHistory,previousPrice,daysOnMarket, andchangedFields. - Run on a schedule, call it via API, connect it to Make, Zapier, Google Sheets, Slack, or Apify webhooks.
- Export to JSON, CSV, Excel, HTML, or XML.
What data can you extract from Kleinanzeigen.de?
| Field | Description |
|---|---|
url | Canonical ad URL on kleinanzeigen.de |
id | Kleinanzeigen ad ID |
title | Ad title |
price / priceCurrency | Numeric price as a string (e.g. "59.00") and currency (EUR); "0.00" for "Zu verschenken" |
art | Item category attribute (Art) |
brand | Brand attribute (Marke) |
color | Colour attribute (Farbe) |
condition | Condition attribute (Zustand) |
size | Size attribute (Größe) |
shippingPrice | Shipping cost shown on the ad, if any |
kauferschutzPrice | Buyer-protection fee, if shown |
address | Postal code, state, and place |
date | Ad date (DD.MM.YYYY) |
viewsCount | Number of views (only when Fetch view count is enabled) |
primaryImageURL / imageURLs | Main image and full image list |
categoryURLs | Breadcrumb category links |
descriptionText | Full ad description |
sellerName / sellerURL | Seller display name and profile URL |
sellerPhone | Phone from the contact box, if public |
sellerEmailFromDescription / sellerPhoneFromDescription | Contact details parsed from the ad text |
attributes | Raw label→value map of every structured attribute |
companyInfo | Commercial seller Impressum: companyName, companyAddress, companyUrl, companyPhone, openingHours, companyEmails, vatId, taxNumber |
In monitoring mode, each row also carries firstSeenAt, lastSeenAt, daysOnMarket, previousPrice, priceChanged, priceHistory, changedFields, and monitoringStatus (new / updated / delisted).
How to scrape Kleinanzeigen.de
- Open the Ebay Kleinanzeigen Scraper and go to the Input tab.
- Enter a Search query (for example
BasecaporiPhone 15 Pro), or paste one or more Kleinanzeigen search URLs into Start URLs. - (Optional) Add a Location code to limit results to an area. Run a search on kleinanzeigen.de, then copy the number after
lin the URL — e.g..../k0l3331→3331(Berlin). - Set Maximum number of items — this is the number of billed rows.
- (Optional) Enable Fetch view count to populate
viewsCount. - (Optional) Enable Monitoring mode and list Fields to monitor for changes (for example
price,title,descriptionText). - Keep proxy on Residential — Germany (DE) for the best success rate.
- Click Start and download the results as JSON, CSV, or Excel from the Output tab.
Monitoring mode
Enable Monitoring mode for scheduled runs. On the first run the actor stores every ad and returns them all. On later runs it compares the current results with the stored state and returns only:
- New ads — not seen in previous runs (
monitoringStatus: "new"). - Updated ads — an existing ad whose monitored fields changed (
monitoringStatus: "updated"), withchangedFields,previousPrice,priceChanged, and the appendedpriceHistory. - Delisted ads — previously seen ads that are no longer in the search results (
monitoringStatus: "delisted"). Delisted detection only runs when a search reaches its natural last page, so pair monitoring with a high enoughmaxItems.
Leave Fields to monitor for changes empty to only detect new and delisted ads. State is stored per search (query + location + start URLs) in a named key-value store, so multiple monitored searches do not collide.
Example monitoring configuration:
{"startUrls": [{ "url": "https://www.kleinanzeigen.de/s-auto-rad-boot/c210" }],"maxItems": 200,"monitoringMode": true,"monitoringFields": ["price", "title"]}
How much does it cost to scrape Kleinanzeigen.de?
This actor uses pay-per-event pricing. You are charged once per ad saved to the dataset:
| Plan | Price per 1,000 ads |
|---|---|
| Free | $0.89 |
| Bronze | $0.79 |
| Silver | $0.69 |
| Gold | $0.59 |
Scraping 1,000 ads on the Free plan costs about $0.89 plus a small amount of platform compute. In monitoring mode you are only billed for the rows actually returned (new, updated, and delisted ads), which makes daily scheduled runs very cheap. Apify's free monthly usage credits cover thousands of ads per month.
Input
{"query": "Basecap","location": "3331","maxItems": 20,"fetchViewsCount": true,"monitoringMode": false,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "DE"}}
Output example
Download results in JSON, CSV, Excel, HTML, or XML. viewsCount is only populated when Fetch view count is enabled; otherwise it is null.
{"url": "https://www.kleinanzeigen.de/s-anzeige/adidas-basecap-hellblau-one-size-baseballcape-neu/3504516432-156-3358","id": "3504516432","title": "ADIDAS Basecap Hellblau - one Size - Baseballcape - NEU","price": "10.00","priceCurrency": "EUR","art": "Mützen, Schals & Handschuhe","brand": null,"color": "Blau","condition": "Neu","size": null,"shippingPrice": "6.19","kauferschutzPrice": null,"address": "13055 Berlin - Hohenschönhausen","date": "05.09.2026","viewsCount": 6,"primaryImageURL": "https://img.kleinanzeigen.de/api/v1/prod-ads/images/c8/c84d4851-ad8a-40de-8cde-d7cee2396527?rule=$_59.JPG","imageURLs": ["https://img.kleinanzeigen.de/api/v1/prod-ads/images/c8/c84d4851-ad8a-40de-8cde-d7cee2396527?rule=$_59.JPG","https://img.kleinanzeigen.de/api/v1/prod-ads/images/5e/5e0b845f-e988-4221-8a35-dd95ffe31697?rule=$_59.JPG"],"categoryURLs": ["https://www.kleinanzeigen.de/","https://www.kleinanzeigen.de/s-mode-beauty/c153","https://www.kleinanzeigen.de/s-accessoires-schmuck/c156"],"descriptionText": "*Solange die Anzeige online ist, ist das Basecap verfügbar*\nAdidas Basecap\n*Farbe: hellblau\n*Größe: one size\n*Zustand: NEUWERTIG","sellerName": "Nitsrek","sellerURL": "https://www.kleinanzeigen.de/s-bestandsliste.html?userId=12345678","sellerPhone": null,"sellerEmailFromDescription": null,"sellerPhoneFromDescription": null,"attributes": { "Art": "Mützen, Schals & Handschuhe", "Farbe": "Blau", "Zustand": "Neu" },"companyInfo": null}
Commercial seller example (companyInfo populated):
{"id": "3502999934","title": "Continental Reifen NEU · BMW Styling 694 Winterkompletträder 19 Zoll","price": "1800.00","priceCurrency": "EUR","address": "46242 Nordrhein-Westfalen - Bottrop","sellerName": "Felgen Boss","companyInfo": {"companyName": "Felgen Boss","companyAddress": "Bahnhofstraße 43\n46242 Bottrop","companyUrl": null,"companyPhone": "+491632245840","openingHours": null,"companyEmails": ["info@felgen-boss.de"],"vatId": "DE332864326","taxNumber": "319/5008/7174"}}
Use cases
- 📊 Market & price research — track asking prices for a product category across Germany.
- 🛒 Reselling & arbitrage — spot underpriced items the moment they are listed with monitoring mode.
- 🚗 Dealer & inventory monitoring — watch a commercial seller's listings and price changes over time.
- 🏠 Lead generation — collect commercial-seller company data (Impressum) from a category.
- 📈 Trend analysis — build a historical dataset of listing volume, condition mix, and price distribution.
How it works
- The actor resolves your search query to a canonical Kleinanzeigen search URL and applies the location code, or uses your start URLs directly.
- It paginates through the search results (25 ads per page) and collects ad links.
- For each ad it fetches the detail page and extracts the structured fields, images, seller data, and — for commercial sellers — the Impressum.
- If Fetch view count is on, it makes one extra request per ad for
viewsCount. - In monitoring mode it diffs the results against the stored state, updates price history, and emits only new, updated, and delisted ads.
- Results are pushed to the dataset and you are charged one event per saved ad.
Pricing
| Event | Price per event | Price per 1,000 |
|---|---|---|
listing-scraped | $0.00089 | $0.89 (Free tier) |
One event is charged for every ad written to the dataset. Bronze/Silver/Gold plans pay $0.79 / $0.69 / $0.59 per 1,000.
FAQ
Is it legal to scrape Kleinanzeigen.de? Scraping publicly available data is legal in most jurisdictions, and this actor only accesses pages any visitor can open without logging in. You are responsible for how you use the data — in particular, personal data (seller names, contact details) is subject to the GDPR, and you should have a lawful basis before storing or processing it. Review Kleinanzeigen's Terms of Service and Apify's guide to web scraping legality before running large jobs.
Do I need a proxy? Yes. Kleinanzeigen blocks almost all datacenter IPs. Use Apify Residential proxy with country Germany (DE) — this is the default.
Why is viewsCount null?
It is only filled when you enable Fetch view count, which costs one extra request per ad. Without it, viewsCount is always null.
Why are brand, size, or condition sometimes null?
Those fields come from the structured attributes the seller filled in. Many private listings only set a subset, so a missing value means the seller did not provide it — the information may still be in descriptionText.
How does delisted detection work?
The actor can only tell an ad is delisted if the search it belongs to was scraped to its last page. If you cap maxItems below the total number of results, delisted ads are not reported for that run. Kleinanzeigen also does not expose official first-seen dates or full price history, so daysOnMarket and priceHistory are based on this actor's own observations between runs.
Can I schedule recurring runs? Yes. Use Apify's scheduling to run the actor daily, hourly, or at any interval, and combine it with monitoring mode to get only the changes.
Can I call it from my own code? Yes. Use the Apify API or the official Python / JavaScript clients — see the examples below. You can also connect it to Make, Zapier, Google Sheets, Slack, and more through Apify integrations.
Something looks wrong or missing. Open the Issues tab on the actor page with an example input and we will take a look.
API usage examples
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("parsebird/ebay-kleinanzeigen-scraper").call(run_input={"query": "Basecap","location": "3331","maxItems": 20,"proxyConfiguration": {"useApifyProxy": True, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "DE"},})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item["price"], item["url"])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });const run = await client.actor('parsebird/ebay-kleinanzeigen-scraper').call({query: 'Basecap',location: '3331',maxItems: 20,proxyConfiguration: { useApifyProxy: true, apifyProxyGroups: ['RESIDENTIAL'], apifyProxyCountry: 'DE' },});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((it) => console.log(it.title, it.price, it.url));
Related actors
- Vinted Scraper — second-hand fashion listings.
- eBay Sold Listings Scraper — realised sale prices from eBay.
- Milanuncios Scraper — Spain's largest classifieds site.
- Subito.it Scraper — Italy's largest classifieds site.
Legal and compliance
This actor extracts only publicly accessible information from kleinanzeigen.de and does not bypass any login or access control. Data returned may include personal data of private sellers; if you store or process it, you must comply with the GDPR and any other applicable law, and you use this actor at your own responsibility. It is not affiliated with, endorsed by, or connected to Kleinanzeigen GmbH, eBay, or Adevinta.