Every German shop's price for a product, with shipping and its daily price history
billiger.de is one of Germany's big price comparison sites.
6 active endpoints, on 2 and 3 credit tiers.
- POST/billiger/v1/search
- POST/billiger/v1/category
- POST/billiger/v1/product
- POST/billiger/v1/offers
- POST/billiger/v1/offer
- POST/billiger/v1/price_history
What billiger.de endpoints does ReefAPI ship?
6 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
billiger.de API
5 of 6 endpoints, ready to run
Find products, families and single shop offers by keyword
// Press "Try it" and this pane shows exactly what the // live site returned this second — including an empty // result, if that is the truth. No key, no account.
How the billiger.de API works
billiger.de is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 530 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
From a keyword to every shop's price and the price curve
Search billiger.de, pick the products, then read their offer lists and price history.
Rows with product_id, baseproduct_id or offer_id, the lowest price, the number of prices compared and the rating, plus brand, category and shop facets with ids and counts.
Every shop: price, voucher price and code, shipping, total, delivery time, shop rating, marketplace seller.
The daily lowest price and billiger.de's verdict on today's price, with separate lines for the big marketplaces.
EAN, spec sheet, overall grade, user and test-report ratings, popularity rank and test reports.
A dated price feed per product: the lowest price, every competing shop with shipping and total, and how today's price compares with the last months.
curl -X POST https://api.reefapi.com/billiger/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"kaffeevollautomat delonghi"}'{
"ok": true,
"data": { … },
"meta": {
"api": "billiger",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}What a billiger.de field actually contains
Fields that read differently from how they look. Every row was measured against live billiger.de pages on 2026-10-15.
| Field | What it holds |
|---|---|
| row_type | product, baseproduct or offer. A product row has product_id, a product family (several colours or sizes) has baseproduct_id, a single shop item has offer_id; each id goes into the action of the same name (product, offers, offer). 16 of 16 ids measured came back as the same record. |
| price (search row) | The "ab" price billiger.de prints on the card, in euros. It matched the card's own machine-readable cent value on 367 of 367 rows and the product page's lowest price on 8 of 8 products. |
| overall_grade, overall_rating | billiger.de's own Gesamtnote, a German school grade where 1 is best (1.6 = gut), and the same verdict as stars out of 5 (4.35). It weighs user reviews and test reports equally. |
| user_rating, test_report_rating | The user-review average (4.6 from 147 reviews) and the test-report average (4.0 from 3 reports) as separate numbers. The card's rating_count adds both (150). |
| test_reports[].grade_display | The test's own grade as printed: "2,3" is a German school grade, "80%" a percentage. grade_scale says which, so the two are never compared as one number. |
| offers[].price, price_without_voucher | price is what billiger.de prints, which can be a price that needs a voucher; then price_without_voucher and voucher_code are filled (364.71 with PREISOPTIMAL3, 375.99 without). |
| offers[].total_price | Price including the shop's cheapest shipping. Where billiger.de prints the total it is taken as printed; it equalled price plus shipping on 110 of 110 offer rows. |
| more_offers_from_shop | The list shows one row per shop. A shop with several listings for the same product says how many more it has (eBay: 15), which is why offer_count on the product can be larger than the rows. |
| price_history.points[].suspect_low | billiger.de's chart keeps the occasional one-day price far below the rest (26.90 EUR on a 364 EUR coffee machine). Such points are returned as published and flagged; lowest_in_range_excluding_suspect leaves them out. |
Prices are in euros, VAT included, as billiger.de prints them for Germany. The same offer list came back identical from four different network locations (80 of 80 rows).
billiger.de coverage, measured
Every number below was read from live billiger.de pages on 2026-10-15, in two runs of 73 calls each.
Germany, euros. "kopfhörer" matched 61,635 results (6,767 products, 86,889 single offers); the Kaffeevollautomaten category held 798.
"kaffeevollautomat delonghi" 998 results → one brand 352, one shop 115, one category 148, in stock 898, 300 to 500 EUR 51 (48 of 48 rows on the page inside the range).
The card's printed price matched its own cent value on 367 of 367 rows and the product page's lowest price on 8 of 8 products; the cheapest offer equalled that lowest price on 8 of 8; the printed total equalled price plus shipping on 110 of 110 offer rows.
181 daily points for 6m on 8 of 8 products, the last point equal to today's lowest price on 8 of 8; time_range all went back to 13 April 2025 (551 points).
16 of 16 ids from search and category rows (8 products, 3 families, 5 single offers) came back as the same record.
The offer list shows one row per shop (a shop's further listings are counted, not listed); a family's price history is not served (it belongs to one variant); user review texts are not returned.
What people build with billiger.de
The jobs this data is most often used for.
endpoints
credits per call
Track every German shop's price, shipping and delivery time for a product list.
Pull billiger.de's daily price history to see whether today's price is a good one.
Watch marketplace sellers and voucher prices on eBay, Kaufland and Otto against regular shops.
Map a category with prices, ratings, EAN codes and popularity rank.
What billiger.de data costs
The cheapest call here is 2 credits, so $15/mo (Pro) buys 5,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 530 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/billiger/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"kaffeevollautomat delonghi"}'import requests
r = requests.post(
"https://api.reefapi.com/billiger/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "kaffeevollautomat delonghi"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up billiger.de.
Get a free key →Do I need a billiger.de account?▾
No. Everything is read logged out.
How many shops does offers return?▾
20 per request in billiger.de's order, one row per shop; max_offers up to 100 fetches the next pages. A De'Longhi Magnifica Evo had 21 shop rows on 2026-10-15.
Is shipping included?▾
Every offer row carries the shipping cost and the total including shipping. Sort with sort=total_price to rank by what the buyer actually pays.
How far back does price_history go?▾
1m, 3m and 6m come with the product page (181 daily points for 6m); all returned 551 daily points from 13 April 2025, plus separate daily lines for eBay, Kaufland, Otto, Metro and voelkner where billiger.de draws them.
Can I get the price history of a product family?▾
No: billiger.de draws a family's chart for one of its variants, so price_history takes a variant's product_id. product returns every variant's product_id for a family.
Which search filters are there?▾
Brand, category, shop, price range and in-stock, checked against the unfiltered count in the same run: "kaffeevollautomat delonghi" 998 results → one brand 352, one shop 115, one category 148, in stock 898, 300 to 500 EUR 51. The ids come back in the facets of the same response.
Why does my search come back as a category?▾
billiger.de turns some words into a category page or a category filter by itself ("waschmaschine" opens the washing machine category). redirected_to tells you where it went; the rows are what billiger.de shows there.
Are used offers included?▾
offers returns new offers by default; condition=used returns the used and refurbished ones, each marked.
What is the billiger.de API?▾
billiger.de API is a ReefAPI endpoint group for german price comparison: every shop's price with shipping and delivery time, the daily price history, specs, eans and test grades. It returns live JSON through POST requests under /billiger/v1.
Is the billiger.de API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. billiger.de calls use the same shared credit balance as every other ReefAPI engine.
Do I need a billiger.de login or account?▾
No login to billiger.de is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the billiger.de data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the billiger.de API use?▾
billiger.de actions currently cost 2-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call billiger.de from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call billiger actions with the same key, credit pool and JSON envelope used by normal REST requests.
266 E-commerce & Marketplaces APIs on the same key
One key, one credit pool, one response envelope. If you are pulling billiger.de, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 529 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-10-15.