Kleinanzeigen Scraper — Listings, Prices & Seller Data
Pricing
from $1.49 / 1,000 listings
Kleinanzeigen Scraper — Listings, Prices & Seller Data
Scrape Kleinanzeigen listings by keyword, location or URL. Export prices, sellers and optional details to JSON/CSV with result limits and run diagnostics.
Pricing
from $1.49 / 1,000 listings
Rating
0.0
(0)
Developer
ninhothedev
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
22 days ago
Last modified
Categories
Features
Share
What does Kleinanzeigen Scraper do?
Extract Kleinanzeigen listings, prices and public seller information from Kleinanzeigen.de, formerly eBay Kleinanzeigen. Search by keyword, category, German city or postal code, or supply search and individual listing URLs. Use the Apify API to export JSON or run it from the Console without writing code.
Start with a small result limit. Basic mode reads search pages; optional detail requests add descriptions, attributes and photos where the listing provides them. Pricing is $1.49 per 1,000 delivered listings, plus a start fee and separate Apify platform usage. Details and proxy requests increase usage costs. A listing can still be delivered when some detail fields are unavailable; check detailsFetched and the run summary.
How to scrape Kleinanzeigen
- Enter a keyword, such as
iphone 13, or paste a Kleinanzeigen search URL. Clear the example keyword when you want URLs only. - Add location, category, price or sorting filters for keyword searches. Pasted search URLs retain their own filters;
privateOnlyalso applies to pasted URLs. - Set Max listings in total to control output across searches. Enable Fetch full listing details only when you need richer fields.
- Start the Actor, inspect the dataset and Run summary and coverage output, then export JSON, CSV or Excel.
A small detail example:
{"searchQueries": ["iphone 13"],"maxItemsPerSearch": 50,"maxItems": 3,"fetchDetails": true}
See the input tab for the full configuration. Omitted API input uses an iPhone example; explicitly empty source fields are rejected. An unknown location fails instead of silently returning nationwide results. Invalid URLs, reversed price ranges and unsupported options also fail visibly.
What data can you extract?
| Field | Type | Meaning |
|---|---|---|
id, url, title | string | Listing identity, source link and title |
price, currency, priceTypeLabel | number/null, string | Price and labels such as VB, fixed price or free |
location, zipCode, city | string | Location shown by the source |
postedAt, scrapedAt | string | Parsed posting date where available, and collection time |
sellerType, sellerName | string | Public seller classification and available name |
imageUrl, allImages | string, array | Available image URLs; detail mode may add more |
description, attributes | string, object | Listing text and structured attributes in detail mode |
shippingAvailable, shippingCost | boolean, string | Shipping information where exposed |
detailsFetched | boolean | Whether a listing detail page was successfully parsed |
views | number/null | Optional view count, when accessible |
_searchIndex | integer | Zero-based originating search, used for restart deduplication |
Missing fields may be empty or null. detailsFetched=true means a detail page was parsed, not that every field exists. Dates and coordinates depend on what Kleinanzeigen exposes; they are not independently verified. Text descriptions may contain information supplied by the advertiser.
Output and coverage
You can download the dataset in various formats such as JSON, HTML, CSV or Excel. This shortened example is illustrative, not a current offer:
[{"id": "example-listing-1","title": "Example used phone","price": 200,"currency": "EUR","priceTypeLabel": "VB","sellerType": "private","detailsFetched": true,"attributes": {"Zustand": "Gut"},"_searchIndex": 0}]
RUN_SUMMARY in the default key-value store records delivered rows, new versus resumed rows, detail successes/failures, per-search status, stop reason and HTTP diagnostics. partial means a budget/global limit or source/detail problem constrained the output. limit_reached for a search means its configured result limit was reached. Neither status proves that the whole marketplace was collected. An empty search can legitimately succeed with zero listings; a failed source with no usable listings fails the run.
Listing IDs are deduplicated across searches within a run. A compatible resurrected run reads its existing dataset, counts previously delivered rows against the limits and skips completed searches. Changing content-related input on restart requires a fresh run. Previously delivered basic rows with missing details are not upgraded on restart. New scheduled runs use new datasets and may include the same listings again.
How much does Kleinanzeigen scraping cost?
The current base fees are $0.00149 per delivered listing, plus $0.00005 per start per GB of allocated memory, with a minimum of one start event. At the default 512 MB:
- 3 listings: $0.00452 in event fees, plus platform usage.
- 50 listings: $0.07455 in event fees, plus platform usage.
- 1,000 listings: $1.49005 in event fees, plus platform usage.
Platform usage is charged separately under this Actor's pay per event + usage setting. It can include compute, data transfer, storage operations and proxy usage. These examples are not all-inclusive prices. See the current pricing and run usage in Apify Console.
Detail mode does not add a separate listing event, but it performs more requests and can increase platform usage. A useful basic listing with failed enrichment is still a delivered, billable listing. Requests that produce no listings can still incur platform usage and the start fee.
The Actor checks the SDK's remaining event allowance before search/detail work and counts only accepted dataset rows. Use maxItems, maxItemsPerSearch, the run spending limit and a suitable timeout together; a result limit does not set a fixed platform-usage price.
Filters, proxies and larger searches
maxItemsPerSearchdefaults to 200 when omitted through the API; the Console example is 50.maxItems=0means no additional global cap.- Location and category filters apply to generated keyword searches. Copy a filtered search URL when you need the website's exact search configuration.
privateOnlyremoves non-private sellers;skipTopAdsskips recognized paid TOP placements in search results.- The crawler visits at most 50 pages per search. Filtering, duplicate IDs, unavailable ads, source limits and blocks can reduce output. Split broad searches by location, category or price; full market coverage is not guaranteed.
- Apify Proxy is enabled by default. The client may retry directly after proxy blocks. Set
proxyConfigurationto{"useApifyProxy": false}for direct-only requests. A requested proxy that cannot be configured stops the run. Residential proxies can add substantial usage cost. includeViewsadds an extra lookup when fetching details or an individual listing URL. Counts may be unavailable and the lookup can affect the website's view counter.
API access and recurring monitoring
Use the API tab for request examples with your token kept in your application's secret configuration. The input JSON above works for API calls and Console runs. Export results into your pricing analysis, inventory research or public marketplace monitoring workflow. Apify also supports schedules, webhooks and integrations with tools such as Make, n8n and Google Sheets.
For periodic monitoring, keep a small limit and newest-first sorting, then compare listing IDs and prices in your own storage. This Actor exports snapshots; it does not send alerts or maintain a cross-run price history automatically.
Troubleshooting and support
Fewer results than expected? Check RUN_SUMMARY, your filters, result limits and spending allowance. Source counts may include ads excluded by your filters or repeated placements.
Missing descriptions or attributes? Enable detail mode and inspect detailsFetched. A removed or blocked detail page can leave a valid basic row. Individual fields are optional even after a successful detail request.
Location not found? Try a five-digit German postal code or paste a filtered search URL. The Actor stops rather than silently changing your intended geography.
Source layout or access changed? Open an issue in the Actor's Issues tab with the run URL and a non-sensitive input example. Website changes can cause failures; uninterrupted availability is not guaranteed.
The Actor accesses publicly visible pages without an account login. Public listings can contain personal data, including names, location and advertiser-written text. Use and retain such data only for a legitimate purpose consistent with applicable rules and the source website's terms.