Sweeps one Kleinanzeigen search each run, computes the query's live median price, and delivers listings priced far below it - median and discount percent attached, optional radius around your city. Scheduled hourly it is a German-market deal alert. No seller data, no auto-buy.
$3.99 / 1,000 · Recently published - building its public record.
Run it on Apify → Free to try - runs bill per result on your own account.
Every field is optional unless marked; sensible defaults do the rest.
| Field | Type | What it does | Default |
|---|---|---|---|
searchQuery |
string | The market slice to hunt deals in, exactly as you would type it on kleinanzeigen.de, e.g. "e-bike cube". Narrower queries give sharper medians. | e-bike |
categoryId |
integer | Optional Kleinanzeigen category id to keep the median clean (e.g. 217 for bikes). | - |
location |
string | Optional German city or region name, resolved via the site's own location search. | - |
radiusKm |
integer | Hunt this many km around the location (up to 200, default 10). Needs a location. | - |
priceMinEur |
integer | Ignore listings below this price - cuts parts-and-accessories noise from the median. | - |
priceMaxEur |
integer | Ignore listings above this price. | - |
discountThresholdPct |
integer | A listing must be at least this far below the query's current median to count as a deal. | 30 |
samplePages |
integer | Pages swept per run (1-10). Page 1 carries the new listings; extra pages steady the median. | 4 |
stateStoreName |
string | Named store remembering which listings were already evaluated, so scheduled runs alert each deal once. Use a different name per watched query. | kleinanzeigen-deal-radar-state |
resetState |
boolean | Forget everything evaluated so far and re-baseline on this run. | False |
maxItems |
integer | Upper bound on deals delivered per run. | 100 |
One JSON object per result, with exactly these fields - no seller identities, no contact data, ever.
| Field | Type | Meaning |
|---|---|---|
listingId |
string | Kleinanzeigen listing ID. |
url |
string | Direct link - deals go fast. |
title |
string | Listing title as posted. |
description |
['string', 'null'] | Snippet of the listing text. |
priceCents |
['integer', 'null'] | Asking price in euro cents. |
priceType |
['string', 'null'] | FIXED, NEGOTIABLE or GIVEAWAY. |
location |
['string', 'null'] | Postcode and locality as displayed. |
postedAt |
['string', 'null'] | Posting time as displayed. |
imageUrl |
['string', 'null'] | Main photo URL. |
adType |
string | offer or wanted; wanted ads never count as deals. |
shippingPossible |
boolean | True when shipping is offered. |
queryMedianCents |
integer | The query's current median asking price the deal was scored against. |
discountPct |
integer | How far below the median this listing is priced, percent. |
Recently published - building its public record. Live record, failures included: status page.
Full documentation, examples and the AI-assistant prompt live on the store page.