Kleinanzeigen Scraper API
A Kleinanzeigen scraper API for Germany's largest classifieds site: search a keyword and get one row per ad — title, price as shown with the negotiable VB flag parsed out, location and German ZIP, listing date, description excerpt, thumbnail, the promoted top-ad flag and the ad URL.
$0.001 per delivered ad · $2 free every month · Failed runs never billed
$ curl $QD/kleinanzeigen_search/run \
-H "Authorization: Bearer $QD_API_KEY" \
-d '{"query": "fahrrad", "max_results": 25}'
{ "status": "done", "count": 25,
"results": [
{
"ad_id": "…",
"title": "…",
"url": "…",
"price": "…" } ],
"cost": 0.025 }
# 25 ads × $0.001 · nothing delivered, nothing charged
What a Kleinanzeigen scraper API does
German classifieds price the way people speak, not the way parsers like: an amount, "VB" for Verhandlungsbasis (open to offers), or "Zu verschenken" for free. This collector keeps the raw price text on every ad and adds a parsed price_value — left null for free and non-numeric forms so a giveaway never counts as a €0 sale — plus a boolean negotiable that records the VB flag on its own.
Placement is separated from content. Promoted listings are marked with is_topad instead of being silently mixed into the ranking, and the location is returned both as the on-card string and as a clean German zip, so you can group a search by postcode without re-parsing text.
What one ad looks like
Every delivered ad carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.
| Field | Type | What it holds |
|---|---|---|
rank | integer | 1-based position. |
ad_id | string · nullable | Ad id. |
title | string | Ad title. |
url | string · nullable | Ad URL. |
price | string · nullable | Price as shown ("3.999 €", "VB", "Zu verschenken"). |
price_value | number · nullable | Parsed price (null for free/non-numeric). |
negotiable | boolean | "VB" (negotiable) flag. |
location | string · nullable | ZIP + city as shown. |
zip | string · nullable | German ZIP code. |
date | string · nullable | Listing date as shown. |
description | string · nullable | Description excerpt. |
thumbnail | string · nullable | First photo. |
is_topad | boolean | Promoted top-ad flag. |
Inputs
The whole request. Anything you leave out falls back to the default shown in the catalog.
| Input | Type | Required | What it does |
|---|---|---|---|
query | string | yes | What to search, e.g. "fahrrad". |
max_results | integer | no | How many ads to deliver at most (1–100). You pay only for delivered ads. |
Pricing
Kleinanzeigen Scraper API pricing
$0.001 per delivered ad. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 2,000 ads before you spend anything.
Pay as you go
- $2 free credit / month
- 60 requests / min
- List unit prices
Starter
- $15 free credit / month
- 300 requests / min
- 10% off unit prices
Growth
- $50 free credit / month
- 600 requests / min
- 20% off unit prices
Scale
- $250 free credit / month
- 1,200 requests / min
- 30% off unit prices
Same wallet, same key and same $2 monthly allowance as every other Data API. Prices are launch pricing read live from the billing config — GET /v1/scraper/collectors returns the price your key actually pays.
Integration
One POST, typed rows
Base URL https://api.quanticdata.io/v1, Bearer auth, the same key as every other Data API. Endpoint: POST /v1/.
curl -X POST https://api.quanticdata.io/v1/scraper/collectors/kleinanzeigen_search/run \
-H "Authorization: Bearer $QD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"fahrrad","max_results":25}'
What people build with the Kleinanzeigen scraper API
Three shapes of work this endpoint was designed around.
Used-goods pricing
Track asking prices for a model across Germany, with negotiable ads flagged separately from firm ones.
Regional supply
Group ads by ZIP to see where a category is thick or thin before you buy or list.
Deal discovery
Filter for free "Zu verschenken" items or fresh listings by date within a keyword.
Kleinanzeigen Scraper API versus rolling your own
The differences that actually cost time when you build this in-house.
| DIY scraper | This collector | |
|---|---|---|
| VB / free prices | Parsed as 0 or dropped | Raw text kept, value null, negotiable flagged |
| Top ads | Blended into the results | Marked with is_topad |
| Location | One string to split yourself | City string and German ZIP separated |
Does Kleinanzeigen have a public API?
No open product API — its former eBay-linked interfaces are gone and what remains is aimed at professional sellers. This collector reads the public search results, so a keyword is all it needs.
What does the VB on a price mean?
Verhandlungsbasis — the seller's asking figure is negotiable. The number stays in price and price_value, and negotiable is set true so you can treat those ads differently from fixed-price ones.
Are free items handled?
Yes. "Zu verschenken" ads keep their label in price while price_value stays null, so a giveaway is never mistaken for a zero-euro transaction in your data.
Is there a free Kleinanzeigen scraper API?
Every account gets $2 of credit every month with no card, which is about 2,000 delivered ads on this endpoint at $0.001 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.
How much does one run cost?
Multiply the rows you actually receive by $0.001. A run capped at 100 ads — the maximum for this collector — costs $0.1 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and GET /v1/scraper/collectors returns the price your key actually pays.
Run the Kleinanzeigen scraper API now
$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.