Kleinanzeigen Scraper (ads, prices, sellers)
Pricing
from $2.00 / 1,000 ad with details
Kleinanzeigen Scraper (ads, prices, sellers)
Scrape kleinanzeigen.de (eBay Kleinanzeigen) by keyword, category, location and price: title, price and price type, place, posting time, description, attributes, images, shipping, seller type and category. No proxy, no login.
Pricing
from $2.00 / 1,000 ad with details
Rating
0.0
(0)
Developer
SteadyRows
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 days ago
Last modified
Categories
Security
Limited permissionsShare
Kleinanzeigen Scraper: ads, prices and sellers
Get structured data from Kleinanzeigen (formerly eBay Kleinanzeigen), Germany's largest classifieds site: search by keyword, category, city and radius, price range and seller type, or paste a results page copied from the site, and get one clean row per ad.
Built for price research, market monitoring and sourcing: what a used item sells for in a region, how many ads a category gets per day, which commercial sellers are active in a niche, which ads offer shipping.
What you get
One row per ad (every row has the same keys, null when the site has no value):
| Field | Example |
|---|---|
id, url, title | 3529394058, https://www.kleinanzeigen.de/s-anzeige/yamaha-ebike-motor-neu/3529394058-217-8428, YAMAHA EBIKE MOTOR NEU |
price, priceType, priceText | 450, negotiable (VB) / fixed / free (Zu verschenken), "450 € VB" |
isWanted | true for "Gesuch" (wanted) ads; they are skipped by default |
zip, city, region, locality | 75417, Mühlacker, Baden-Württemberg, "75417 Baden-Württemberg - Mühlacker" (region is the state for towns and the district for big cities, as the site shows it) |
postedAt, postedDate | 2026-10-03T05:12:00.000Z (Berlin time converted to UTC), 2026-10-03 |
snippet, description | the first lines shown on the results page; the full ad text |
attributes | { "Art": "Herren", "Typ": "Elektrofahrräder", "Zustand": "Neu" } – whatever the category asks sellers to fill in |
imageUrl, imageUrls[], imageCount | full-size image links; ads posted without a photo have null, [] and 0 |
shippingPossible, pickupOnly, buyNow, tags[] | "Versand möglich", "Nur Abholung", "Direkt kaufen" badges |
sellerType, sellerSince, sellerBadges[] | private / commercial, 2024-10-20, ["TOP Zufriedenheit", "Sehr freundlich", "Besonders zuverlässig"] |
isPro, sellerName, shopUrl, hasPhone | commercial sellers only: shop name and shop page; whether the ad shows a phone number |
isTopAd | paid placement at the top of the results page |
categoryId, categoryName, parentCategoryId, parentCategoryName | 217, Fahrräder & Zubehör, 210, Auto, Rad & Boot |
query, searchUrl, position | where the ad was found and its rank there |
detailsFetched | whether the ad page was opened for this row |
Privacy: private sellers stay anonymous. The actor never outputs private sellers' names, user IDs or phone numbers, only what a visitor sees on the results page plus the ad's own text and attributes. For sellers who registered as a business ("Gewerblicher Nutzer") the displayed business name and, for PRO shops, the shop page are included.
Input
{"searchQueries": ["fahrrad", "e-bike"],"category": "https://www.kleinanzeigen.de/s-fahrraeder/c217","location": "Berlin","radiusKm": 20,"minPrice": 100,"maxPrice": 500,"sellerType": "private","shippingOnly": false,"sort": "newest","excludeWanted": true,"postedSince": "7 days","searchUrls": ["https://www.kleinanzeigen.de/s-muenchen/preis::300/sofa/k0l6411r50"],"adUrls": ["https://www.kleinanzeigen.de/s-anzeige/yamaha-ebike-motor-neu/3529394058-217-8428"],"maxAds": 100,"includeDetails": true}
- searchQueries are searched one by one; category, location, radiusKm, minPrice, maxPrice, sellerType and shippingOnly apply to all of them. A category without queries lists the whole category.
- location is any city, district or postcode the site knows ("Berlin", "Hamburg-Nord", "80331"); the actor resolves it the same way the site's search box does and tells you in the log which place it picked.
- sort
newest(default),price-asc,price-desc. - postedSince accepts a date (
2026-10-01) or1 day,2 weeks,1 month. With the default newest-first order the search stops as soon as it reaches older ads, so a daily run withpostedSince: "1 day"costs only what is new. - searchUrls take any results page from the site, filters included; all its pages are read.
- adUrls take ad page URLs or bare ad IDs and are always delivered with details.
- maxAds applies per query, category or URL. The site shows at most 50 pages of 25 ads (1,250) per search; narrow by location, category or price to get past that.
- includeDetails off: only the results-page fields (title, price, place, time, snippet, first image, shipping badge), about 3× faster and cheaper.
Pricing
Pay per result, no subscription:
| Event | Price |
|---|---|
| Ad with details (ad page opened) | $2.00 per 1,000 |
Ad, search row only (includeDetails: false) | $1.00 per 1,000 |
| Run start | $0.002 |
1,000 ads with details take about 6 minutes; search rows alone about 1 minute per 1,000.
Reliability
- Public pages only, no login, no proxy. Requests are spaced out and a bot wall (403 or captcha page) is retried with backoff instead of being reported as data.
- An ad deleted between the results page and the ad page is delivered as a search row with a warning; an unknown ad URL is skipped with a warning.
- If ad pages stop answering, the run falls back to search rows (charged at the lower price) instead of failing.
- Promoted ads repeat on every page and ads show up under several queries; each ad is delivered once per run.
- Rows are pushed as they are collected, so a run stopped early still delivers what it has.
Limits
- What a logged-out visitor in Germany sees: no seller phone numbers, no view counts, no "Direkt kaufen" checkout details.
- Posting time is shown by the site only for the current and previous day; older ads carry the date (midnight Berlin time in
postedAt). attributeskeys are the site's German labels and differ by category.- The site's own ad-type path filter (
anzeige:angebote|gesuche) is excluded by robots.txt, so wanted ads are filtered after fetching; useexcludeWanted(default on) or a pastedanzeige:gesucheURL for wanted ads only.
Related
- Shopify App Store Scraper: apps, pricing plans and reviews.
- Eventbrite Scraper: events, tickets and organizers.