Kleinanzeigen Resell Price Checker
Pricing
Pay per event
Kleinanzeigen Resell Price Checker
Price check for used items on Kleinanzeigen.de, built for AI agents and automations: sell price estimate, deal check, market statistics and alerts for new listings. Prices come from the ads currently listed for the same item, with accessories, bundles and defects filtered out.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Bel
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Find out what a used item is worth on Kleinanzeigen.de. Ask for a sell price, check whether a price or an ad is a good deal or look up market prices. The answer is based on what the same item is listed for on Kleinanzeigen right now, not on guesses.
Accessories, complete PCs, bundles, broken units, swap ads and other models are filtered out before any price is calculated, so the number you get is the price of the item you asked about.
It is built for AI agents and automations: one call in, one clear result out. You can also run it by hand with the form.
Copy-paste prompt for your agent
Add this to your agent's instructions (Claude project instructions, a system prompt, or the start of a chat). It tells the agent when and how to use this Actor.
You can price used items on Kleinanzeigen.de with the Apify Actor"beltech/kleinanzeigen-resell-price-checker". Call it with the Apify MCP tool call-actor(actor name without a tool suffix), then read the result with get-dataset-items using the returneddatasetId. The run's statusMessage already contains a one-line answer.WHEN TO USE IT- The user wants to SELL a used item or asks what it is worth: action "estimate_sale_price".- The user asks whether a price or an ad is a good deal: action "check_deal"(with "query" + "priceEur", or with "listingUrl").- The user wants to see what is on offer: "search_listings". A market overview: "market_stats".- Only for used consumer goods in Germany (electronics, furniture, bikes, tools, toys, clothing).Real estate, vehicles, jobs, pets and services are not priced. Say so instead of guessing.HOW TO BUILD THE INPUT- If the user shares a photo, read the exact product from it: brand, model, generation, storage size,edition. Check labels, the box and invoices in the photo. If you cannot tell the exact model, askthe user before calling the Actor, because the model decides the price.- "query" is only the product name, for example "PlayStation 5 Disc Edition", "iPhone 13 128GB","RX 7800 XT". Do not put accessories, "OVP", "mit Controller" or full sentences into it.- Put the condition into "condition": new (sealed, unopened), like_new (as new, with box),good (light wear), used (clear signs of use), worn (heavy wear). With "listingUrl" use "auto".- Optional: "shippingOnly": true for buying across Germany, "priceMax" / "priceMin" in EUR.- Set callOptions.maxTotalChargeUsd to 0.5 to cap the cost. One call per item is enough.HOW TO READ THE RESULT- Use only numbers from the result. Never invent prices.- Check "confidence". If it is "low", or there is no recommendation but a "hint", tell the user why(the hint says what to refine, for example adding brand and model), refine the query once, and retry.- If the result has "sealed_new_median", mention it as the price level of sealed brand-new ads.The recommended used price is already kept below it.- These are ASKING prices of comparable ads, not final sale prices. Real sales are usually 5 to 10 %lower. Tell the user the asking price, the quick-sale price and the expected range.- Mention what the photo cannot show and what moves the price by 10 to 20 %: original box, invoice orwarranty, accessories, battery or health status, storage size.- For deals: report the verdict (suspiciously_cheap, good_deal, fair_price, overpriced) and thesuggested offer. For "suspiciously_cheap" warn about scams and defects, and advise paying onlywith buyer protection.- Answer in the user's language. Prices are in EUR.
Short version for a chat message:
Use the Apify Actor beltech/kleinanzeigen-resell-price-checker (call-actor, then get-dataset-items)to price my used item on Kleinanzeigen. Input: {"action": "estimate_sale_price", "query": "<exactmodel>", "condition": "<like_new|good|used|worn>"}. Read the exact model from my photo first and askme if unsure. Only use numbers from the result, mention the confidence, and remind me that these areasking prices, not final sale prices.
What you can do
Action (action) | What you get |
|---|---|
estimate_sale_price | recommended asking price, quick-sale price and expected sale range for a used item |
check_deal | verdict for a price or an ad URL (suspiciously cheap, good deal, fair, overpriced) and a suggested offer |
search_listings | matching listings with deal labels and a market summary |
market_stats | median, quartiles, sample size and confidence for a product |
get_listing | one ad in detail: description, condition, seller type, category |
When an agent should call it
| The user says | Input |
|---|---|
| "What should I ask for my graphics card?" / "How much is my iPhone 13 worth?" | {"action": "estimate_sale_price", "query": "iPhone 13 128GB", "condition": "good"} |
| "Is 400 € a good price for an RTX 3080?" | {"action": "check_deal", "query": "RTX 3080", "priceEur": 400} |
| "Is this listing a good deal?" (with a link) | {"action": "check_deal", "listingUrl": "https://www.kleinanzeigen.de/s-anzeige/..."} |
| "Find me a used RX 7800 XT under 500 €." | {"action": "search_listings", "query": "RX 7800 XT", "priceMax": 500} |
| "What does a used Steam Deck cost right now?" | {"action": "market_stats", "query": "Steam Deck OLED"} |
If the user shares a photo, the agent reads the exact model from the photo, label, box or invoice and
passes it as text in query. Images are not processed by the Actor itself.
Call it
From an AI agent (Apify MCP server). The agent finds the Actor with search-actors, calls it with
call-actor using one of the inputs above, and reads the result with get-dataset-items using the
returned dataset ID.
From code or automations (one request, result in the response):
curl -X POST "https://api.apify.com/v2/acts/beltech~kleinanzeigen-resell-price-checker/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"action": "estimate_sale_price", "query": "PlayStation 5 Disc Edition", "condition": "like_new"}'
By hand. Open the Actor, pick an action in the form and click Start.
Every run writes its result to the dataset (export as JSON, CSV or Excel) and the full answer to the
key-value store record RESULT. The summary field holds one readable sentence.
Example: estimate_sale_price
{"action": "estimate_sale_price","product": "PlayStation 5 Disc Edition","searched_as": "PS5","condition": "like_new","median": 450,"p25": 437.5,"p75": 542.5,"n": 12,"confidence": "medium","asking_price_eur": 540,"quick_sale_eur": 440,"expected_sale_range_eur": [485, 540],"basis": "12 comparable listings; condition \"like_new\" priced at the matching point of the 438-542 EUR market range.","summary": "Ask 540 EUR, quick sale 440 EUR (12 matching ads)"}
The full RESULT record also contains the 5 closest matching ads as evidence. If the product name is
too generic or too few matching ads exist, there is no recommendation and hint says what to refine.
"Sofa" is too generic, "IKEA Kallax 2x4" works.
Example: check_deal
{"action": "check_deal","verdict": "fair_price","price_eur": 520,"fair_price_eur": 520,"difference_vs_fair_pct": 0.4,"cheaper_than_share_of_ads_pct": 52,"suggested_offer_eur": 490,"summary": "fair_price: In line with the market price. A small discount is usually possible."}
With a listingUrl the condition ("Zustand") is read from the ad. Ads marked as defective get no
verdict because they cannot be compared with working items.
Input fields
| Field | Used by | Meaning |
|---|---|---|
action | all | one of the actions above (default search_listings) |
query | all except get_listing | product, ideally brand and model |
condition | estimate_sale_price, check_deal | auto, new (sealed), like_new, good, used, worn |
priceEur | check_deal | the price to judge |
listingUrl | check_deal, get_listing | link to a kleinanzeigen.de ad |
priceMin, priceMax, shippingOnly, maxResults, includeVariants | search_listings | filters and size |
location, radiusKm | search | local pickup |
How the price is calculated
- Fetch up to 100 current listings for the search, newest first.
- Classify each listing as the exact product, a variant (for example Super, Ti, Pro Max), accessory, bundle (complete PC, laptop, several units), defect, or off topic (swap, wanted, rental).
- Calculate median and quartiles from the exact-product listings only, with outliers removed.
Ads offering sealed brand-new goods ("NEU & OVP", "ungeöffnet") are kept apart, because their prices
follow the retail price. A used item is priced from used ads only and never above the sealed-new
ads; their median is reported as
sealed_new_median. Use conditionnewto price a sealed item. - Rate confidence:
highfrom 12 listings,mediumfrom 6, otherwiselow. A very wide price range or a broad category such as "sofa" also giveslow, with a note on how to refine the search. - Price bands: quick sale is the lower quartile, market is the median, ambitious is the upper
quartile.
estimate_sale_pricepicks the point that matches the condition. - Deal labels (
below_market,fair,above_market,suspiciously_cheap) appear only when there are at least 6 comparable listings.
These are asking prices of similar listings. Final sale prices are usually somewhat lower.
Pricing
Pay per event, no subscription, no extra platform usage charge. You pay only for results that match your search.
| Event | Price (USD) | Charged for |
|---|---|---|
search_start | 0.006 | each search |
listing_result | 0.0025 | each returned listing |
listing_detail | 0.008 | get_listing |
market_stats | 0.010 | market_stats |
sale_estimate | 0.050 | estimate_sale_price |
deal_check | 0.030 | check_deal |
Good to know
- Kleinanzeigen.de only. Real estate, vehicles, jobs, pets, services and giveaways are not priced; such requests return a short explanation and cost nothing.
- Works best with a specific model ("RX 7800 XT", "iPhone 13 128GB"). Broad terms get a low-confidence result.
- A run takes about 5 to 15 seconds.
shipping_onlyis applied by this Actor because Kleinanzeigen has no shipping filter in its search.- Searches with
locationandradiusKmcan include a few nationwide results when there are only few local ads. - No sold-price data. Prices are what sellers ask.
- If Kleinanzeigen is unreachable or changes its page layout, the run fails with a clear message and you are not charged.
Data and privacy
The Actor reads publicly visible listing data and does not store personal data. To classify listings, listing titles and prices (no personal data) are sent to a third-party language model API. This Actor is not affiliated with or endorsed by Kleinanzeigen. Make sure your use complies with the terms of the websites you access and with applicable law.
FAQ
Do I need a Kleinanzeigen account or API key? No. You only need an Apify account.
Why is the confidence low? The search is too broad, so prices differ too much to give one meaningful number. Add brand and model.
Are these the prices items actually sold for? No. They are asking prices of comparable listings. Expect final prices to be a bit lower.
Does it work for Austria or Switzerland? Not at the moment.