# Guenstiger

Price-comparison data from **guenstiger.de** — a product with its full list of seller offers.

## Supported countries 

`country` accepts: `de`

Guenstiger is a single-market source (guenstiger.de).

## Keys 

| Key | Values | Description |
|  --- | --- | --- |
| `term` | Free text | Keyword search. |
| `id` | guenstiger.de product ID (numeric) | Direct product lookup. |
| `gtin` | EAN / GTIN-13 | Resolved to the matching product, then fetched. A GTIN may also resolve directly to a set of offers when no distinct product page exists. |


## Topics 

| Topic | Description |
|  --- | --- |
| `search` (default) | Product page, including the lead (cheapest) offer. |
| `search_and_offers` | Also fetches the full per-seller offer list. |


## Response 

Returns the standard normalized `content` object (see [Sources overview](/sources#how-to-read-the-field-tables)):
`name`, `url`, `currency`, `price_min` / `price_avg` / `price_max`, `offers_count`, `offers[]`,
`rating` / `rating_count`.

As a price-comparison source, the **per-seller offer list** is the main payload: with
`search_and_offers`, `offers[]` carries each seller's name, price, currency, and shipping.

## Example request 

cURL
```bash
curl -s https://api.kwery.co/job \
  -H "Authorization: Bearer $KWERY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"source":"guenstiger","country":"de","key":"gtin","topic":"search_and_offers","values":["4006381333962"]}'
```

Node.js
```js
const res = await fetch('https://api.kwery.co/job', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.KWERY_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ source: 'guenstiger', country: 'de', key: 'gtin', topic: 'search_and_offers', values: ['4006381333962'] }),
});
const data = await res.json();
if (data.error) throw new Error(data.message);
console.log('job id:', data.job._id);
```

Python
```python
import os, requests

res = requests.post(
    "https://api.kwery.co/job",
    headers={"Authorization": f"Bearer {os.environ['KWERY_API_KEY']}"},
    json={"source": "guenstiger", "country": "de", "key": "gtin", "topic": "search_and_offers", "values": ["4006381333962"]},
)
data = res.json()
if data.get("error"):
    raise RuntimeError(data["message"])
print("job id:", data["job"]["_id"])
```

JavaScript
```js
const res = await fetch('https://api.kwery.co/job', {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${KWERY_API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ source: 'guenstiger', country: 'de', key: 'gtin', topic: 'search_and_offers', values: ['4006381333962'] }),
});
const data = await res.json();
if (data.error) throw new Error(data.message);
console.log('job id:', data.job._id);
```

PHP
```php
<?php
$ch = curl_init('https://api.kwery.co/job');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_HTTPHEADER => [
    'Authorization: Bearer ' . getenv('KWERY_API_KEY'),
    'Content-Type: application/json',
  ],
  CURLOPT_POSTFIELDS => '{"source":"guenstiger","country":"de","key":"gtin","topic":"search_and_offers","values":["4006381333962"]}',
]);
$data = json_decode(curl_exec($ch), true);
if ($data['error']) { throw new Exception($data['message']); }
echo 'job id: ' . $data['job']['_id'];
```

Go
```go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"net/http"
	"os"
)

func main() {
	body := []byte(`{"source":"guenstiger","country":"de","key":"gtin","topic":"search_and_offers","values":["4006381333962"]}`)
	req, _ := http.NewRequest("POST", "https://api.kwery.co/job", bytes.NewBuffer(body))
	req.Header.Set("Authorization", "Bearer "+os.Getenv("KWERY_API_KEY"))
	req.Header.Set("Content-Type", "application/json")
	resp, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()
	var data map[string]any
	json.NewDecoder(resp.Body).Decode(&data)
	fmt.Println("job:", data["job"])
}
```

Java
```java
var client = java.net.http.HttpClient.newHttpClient();
var request = java.net.http.HttpRequest.newBuilder()
    .uri(java.net.URI.create("https://api.kwery.co/job"))
    .header("Authorization", "Bearer " + System.getenv("KWERY_API_KEY"))
    .header("Content-Type", "application/json")
    .POST(java.net.http.HttpRequest.BodyPublishers.ofString(
        "{\"source\":\"guenstiger\",\"country\":\"de\",\"key\":\"gtin\",\"topic\":\"search_and_offers\",\"values\":[\"4006381333962\"]}"))
    .build();
var response = client.send(request, java.net.http.HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
```

C#
```csharp
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization",
    $"Bearer {Environment.GetEnvironmentVariable("KWERY_API_KEY")}");
var body = new StringContent(
    """{"source":"guenstiger","country":"de","key":"gtin","topic":"search_and_offers","values":["4006381333962"]}""",
    System.Text.Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.kwery.co/job", body);
Console.WriteLine(await response.Content.ReadAsStringAsync());
```

Ruby
```ruby
require 'net/http'
require 'json'

uri = URI('https://api.kwery.co/job')
req = Net::HTTP::Post.new(uri, {
  'Authorization' => "Bearer #{ENV['KWERY_API_KEY']}",
  'Content-Type' => 'application/json',
})
req.body = '{"source":"guenstiger","country":"de","key":"gtin","topic":"search_and_offers","values":["4006381333962"]}'
data = JSON.parse(Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }.body)
raise data['message'] if data['error']
puts "job id: #{data['job']['_id']}"
```

## Example response 

Results are fetched with `GET /job/{id}/download` once the job is `finished`. This is a **real response**, captured live on 2026-09-14 — the exact payload a self-serve account receives for the request above.
To keep this page readable, `offers` shows the first 3 of 200 entries (`offers_count: 200` — the download contains all of them), `price_history` shows the last 6 of 185 daily points, and two long seller descriptions are shortened at `[…]`. Everything else is unedited.

```json
{
  "job_id": "6aa7ab8a3fae15981b95c05e",
  "status": "finished",
  "results": [
    {
      "query": {
        "source": "guenstiger",
        "country": "de",
        "key": "gtin",
        "value": "4006381333962",
        "topic": "search_and_offers",
        "max_pages": 1,
        "max_age": 1200
      },
      "content": {
        "product_id": 10148586498,
        "name": "Stabilo Point 88",
        "description": "Tintenschreiber\r\n Eigenschaften: \r\n- Stiftart: Tintenschreiber\r\n- Strichbreite: 0,4 mm\r\n- Kappe mit Clip: Ja\r\n- Material: Kunststoff, Metall\r\n- Farbe: Blau, Braun, Gelb, Grün, Rot, Schwarz",
        "image_url": "https://bilder.guenstiger.de/prodfoto/stabilopoint88.jpg",
        "image_top": "https://bilder.guenstiger.de/prodfoto/stabilopoint88.jpg",
        "image_mid": "https://bilder.guenstiger.de/prodfoto_mid/stabilopoint88.jpg",
        "image_mini": "https://bilder.guenstiger.de/prodfoto/stabilopoint88.jpg",
        "url": "https://www.guenstiger.de/Produkt/Stabilo/Point_88.html?p=359199",
        "mobile_web_url": null,
        "price_min": 0.64,
        "price_max": 9.64,
        "price_min_text": "0,55 €",
        "price_max_text": "4,37 €",
        "offers_count": 200,
        "sellers_count": 0,
        "rating": 3.88,
        "energy_label": null,
        "node_id": 0,
        "is_new": false,
        "is_adult": false,
        "blurb": null,
        "blurb_type": null,
        "nla_summary": null,
        "specs": [
          {
            "name": "Eigenschaften",
            "specs": [
              {
                "name": "Stiftart",
                "specs": null,
                "value": "Tintenschreiber"
              },
              {
                "name": "Strichbreite",
                "specs": null,
                "value": "0,4 mm"
              },
              {
                "name": "Clip",
                "specs": null,
                "value": "Ja"
              },
              {
                "name": "Material",
                "specs": null,
                "value": "Kunststoff, Metall"
              }
            ],
            "value": null
          }
        ],
        "price_history": [
          {
            "price": 0.55,
            "priceDate": "2026-09-09T02:00:00"
          },
          {
            "price": 0.55,
            "priceDate": "2026-09-10T02:00:00"
          },
          {
            "price": 0.55,
            "priceDate": "2026-09-11T02:00:00"
          },
          {
            "price": 0.55,
            "priceDate": "2026-09-12T02:00:00"
          },
          {
            "price": 0.55,
            "priceDate": "2026-09-13T02:00:00"
          },
          {
            "price": 0.55,
            "priceDate": "2026-09-14T02:00:00"
          }
        ],
        "rating_count": null,
        "currency": "EUR",
        "zero_vat": false,
        "offers": [
          {
            "offer_id": 22619957499,
            "seller_id": 5346218,
            "seller_name": "bueroshop24.de",
            "shop_username": "bueroshop24.de",
            "shop_logo_url": "/imagefiles/merchantLogos/5346218.png",
            "shop_company": null,
            "seller_rating": 4.9,
            "seller_rating_count": 1603,
            "shop_total_ratings": 0,
            "shop_is_trusted": false,
            "shop_is_good": false,
            "sub_seller_name": null,
            "condition": null,
            "is_new": false,
            "is_available": true,
            "is_best_value": false,
            "is_free_shipping": false,
            "is_free_tax": true,
            "stock_status_id": 1,
            "availability": "Sofort lieferbar",
            "price": 0.55,
            "price_text": "0,55 €",
            "shipping": 4.99,
            "shipping_text": "4,99 €",
            "total": 5.54,
            "total_price_text": "5,54 €",
            "base_price": null,
            "energy_label": null,
            "energy_class": null,
            "name": "STABILO point 88 Fineliner grün 0,4 mm, 1 St. 88/36",
            "description": "Zeichnen, malen, skizzieren und schreiben: alles mit dem STABILO Fineliner point 88 Sowohl in der Schule als auch im Beruf oder Alltag ist der STABILO Fineliner point 88 der perfekte Begleiter, wenn es darum geht, übersichtlich und strukturiert zu arbeiten. Die feine Spitze erzeugt ein sauberes Schriftbild und ist darüber hinaus auch hervorragend zum Skizzieren geeignet. […]",
            "image_url": "https://imgcdn.guenstiger.de/prx/M24122/efc08899d51523a257e535ecfd88eee3/eyJ1cmwiOiJodHRwczovL2Fzc2V0cy5idWVyb3Nob3AyNC5kZS91Z3NzaG9wcGljdHVyZXMvaW1nLzE1LzIyL1pvb21fbTEyODE0MDIuanBnL2wvIiwiZGF0ZSI6IjIwMjYwOTE0Iiwic2l6ZSI6Ijc1eDc1In0/obj.png",
            "clickout_link": "https://www.guenstiger.de/norob/ClickTracker.jsp?chnl=guenstiger&p=359199&tag=22619957499",
            "zero_vat": false
          },
          {
            "offer_id": 22619957515,
            "seller_id": 5346218,
            "seller_name": "bueroshop24.de",
            "shop_username": "bueroshop24.de",
            "shop_logo_url": "/imagefiles/merchantLogos/5346218.png",
            "shop_company": null,
            "seller_rating": 4.9,
            "seller_rating_count": 1603,
            "shop_total_ratings": 0,
            "shop_is_trusted": false,
            "shop_is_good": false,
            "sub_seller_name": null,
            "condition": null,
            "is_new": false,
            "is_available": true,
            "is_best_value": false,
            "is_free_shipping": false,
            "is_free_tax": true,
            "stock_status_id": 1,
            "availability": "Sofort lieferbar",
            "price": 0.55,
            "price_text": "0,55 €",
            "shipping": 4.99,
            "shipping_text": "4,99 €",
            "total": 5.54,
            "total_price_text": "5,54 €",
            "base_price": null,
            "energy_label": null,
            "energy_class": null,
            "name": "STABILO point 88 Fineliner rot 0,4 mm, 1 St. 88/40",
            "description": "Nicht fürs Grobe, sondern fürs Feine: der STABILO Fineliner point 88 Der STABILO Fineliner point 88 lässt sich für alles begeistern – zeichnen, schreiben oder malen. Und auch im Teamwork mit Lineal oder Schablone zeigt er, was in ihm steckt. Spitzenstärke: 0,4 mm Dank der metallgefassten Spitze ist Ihnen ein stabiles und langes Schreibvergnügen garantiert. […]",
            "image_url": "https://imgcdn.guenstiger.de/prx/M24122/24500683f6d37d1d35459d5e8f62087e/eyJ1cmwiOiJodHRwczovL2Fzc2V0cy5idWVyb3Nob3AyNC5kZS91Z3NzaG9wcGljdHVyZXMvaW1nLzE1LzE4L1pvb21fbTEyODE0MDcuanBnL2wvIiwiZGF0ZSI6IjIwMjYwOTE0Iiwic2l6ZSI6Ijc1eDc1In0/obj.png",
            "clickout_link": "https://www.guenstiger.de/norob/ClickTracker.jsp?chnl=guenstiger&p=359199&tag=22619957515",
            "zero_vat": false
          },
          {
            "offer_id": 23336152127,
            "seller_id": 5189707,
            "seller_name": "bueromarkt-ag.de",
            "shop_username": "bueromarkt-ag.de",
            "shop_logo_url": "/imagefiles/merchantLogos/5189707.png",
            "shop_company": null,
            "seller_rating": 4.4,
            "seller_rating_count": 193,
            "shop_total_ratings": 0,
            "shop_is_trusted": false,
            "shop_is_good": false,
            "sub_seller_name": null,
            "condition": null,
            "is_new": false,
            "is_available": true,
            "is_best_value": false,
            "is_free_shipping": false,
            "is_free_tax": true,
            "stock_status_id": 1,
            "availability": "sofort lieferbar",
            "price": 0.55,
            "price_text": "0,55 €",
            "shipping": 3.56,
            "shipping_text": "3,56 €",
            "total": 4.11,
            "total_price_text": "4,11 €",
            "base_price": null,
            "energy_label": null,
            "energy_class": null,
            "name": "Stabilo Point 88 rot Fineliner 0,4mm 88/40",
            "description": "• Fineliner mit stabiler, feiner, metallgefasster Kunststoffspitze • Lineal- & schablonengeeignet • Kappe in Schreibfarbe • Auch ohne Kappe hoher Schutz vor dem Austrocknen • Made in Germany […]",
            "image_url": "https://imgcdn.guenstiger.de/prx/M11972/08bde0e8500bd818269926bb90f76754/eyJ1cmwiOiJodHRwczovL2Nkbi5idWVyb21hcmt0LWFnLmRlL3Byb2R1Y3QvYzMzMjAyZjQ0MmMzNWI1YWYzNWNlMDRiMmU2YmY0ZGZjYjQ4YzkzNS9maW5lbGluZXJfc3RhYmlsb19wb2ludF84ODQwLmpwZz8xNzg5MzM2ODAwIiwiZGF0ZSI6IjIwMjYwOTE0Iiwic2l6ZSI6Ijc1eDc1In0/obj.jpg",
            "clickout_link": "https://www.guenstiger.de/norob/ClickTracker.jsp?chnl=guenstiger&p=359199&tag=23336152127",
            "zero_vat": false
          }
        ],
        "price_avg": 6.42
      },
      "success": true,
      "updated_at": "2026-09-14T08:08:58.596Z",
      "trust": {
        "score": 0.8,
        "components": {
          "identity": 0.7,
          "completeness": 0.5,
          "price_integrity": 0.94,
          "offer_contamination": 0.94,
          "freshness": 1
        },
        "flagged_offers": [
          42,
          43,
          44,
          45,
          46,
          47,
          48,
          49,
          50,
          51,
          52,
          53
        ]
      },
      "served_from": "live",
      "observed_at": "2026-09-14T08:08:58.588Z"
    }
  ]
}
```

The `trust` block is explained in [Confidence score](/guides/trust); `served_from` and `observed_at` in [Audit & provenance](/guides/audit-and-provenance).