> ## Documentation Index
> Fetch the complete documentation index at: https://docs.querying.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# KI-Suchmaschinen: Antworten, Quellen und Antwortfelder

> Jeder taskType: welches Payload-Feld er liest, was er zurückgibt und welche include-Flags tatsächlich wirken.

`taskType` wählt die Engine. Der Umschlag um das Ergebnis ist für alle gleich; was sich unterscheidet, ist das darin
enthaltene `response`-Objekt.

<Note>
  **Neun Antwortoberflächen sind verfügbar**: `CHATGPT`, `GEMINI`, `PERPLEXITY`, `BING_COPILOT`, `GOOGLE`, `AIMODE`,
  `BING_SEARCH`, `NAVER_AI_BRIEF` und `NAVER_AI_TAB`. `GOOGLE_SERP` liefert Google-Suchergebnisse ohne AI Overview,
  `NAVER_SERP` die Webergebnisse von Naver und `REDDIT` Reddit-Beiträge und -Kommentare.
</Note>

## Welches Payload-Feld eine Engine liest

Die Validierung akzeptiert `prompt` oder `query`, und jede Engine greift auf das jeweils andere zurück, sodass eine mit
dem „falschen“ Schlüssel gesendete Anfrage trotzdem läuft. Die beiden Karten unten zeigen das Feld, das jede Engine
**zuerst** liest: das in der API-Referenz dokumentierte und das, das der Playground im Dashboard für diese Engine sendet.

<CardGroup cols={2}>
  <Card title="Liest prompt" icon="message-square">
    `CHATGPT` `PERPLEXITY` `GEMINI` `BING_COPILOT`

    Greift auf `query` zurück, wenn `prompt` fehlt.
  </Card>

  <Card title="Liest query" icon="search">
    `GOOGLE` `AIMODE` `GOOGLE_SERP` `NAVER_AI_BRIEF` `NAVER_AI_TAB` `NAVER_SERP` `BING_SEARCH` `REDDIT`

    Greift auf `prompt` zurück, wenn `query` fehlt.
  </Card>
</CardGroup>

## Antwortoptionen

Rohantworten sind bei allen Answer-Engines standardmäßig enthalten. Setzen Sie `payload.include.rawResponse` auf
`false`, um sie wegzulassen. Weitere Optionen hängen von der Engine ab:

| Engine | Berücksichtigte Flags | Rohdaten in |
| - | - | - |
| `CHATGPT` | `markdown` `html` `rawResponse` `searchQueries` `ads` `shopping` | `rawResponse` |
| `PERPLEXITY` | `markdown` `rawResponse` `searchQueries` | `rawResponse` |
| `GEMINI` | `markdown` `rawResponse` | `rawResponse` |
| `BING_COPILOT` | `markdown` `rawResponse` | `rawResponse` |
| `BING_SEARCH` | `markdown` `rawResponse` | **`rawContent`** (HTML der Ergebnisseite) |
| `GOOGLE_SERP` | `rawResponse` (standardmäßig aus) | **`rawContent`** (HTML der Ergebnisseite) |
| `GOOGLE` `AIMODE` `NAVER_AI_BRIEF` `NAVER_AI_TAB` | `rawResponse` | **`rawContent`** |
| `NAVER_SERP` `REDDIT` | keine | keine Rohdaten |

<Note>
  `rawResponse` enthält geparste Stream-Ereignisse. Google AI Overviews, AI Mode und Bing Search liefern das
  vollständige gerenderte Seiten-HTML als `rawContent`; Naver liefert den ursprünglichen Ereignis-Stream als
  `rawContent`-String. Diese Felder können groß sein. Setzen Sie `include.rawResponse: false`, wenn Sie nur das
  strukturierte Ergebnis brauchen. `GOOGLE_SERP` ist die Ausnahme: Es liefert das Seiten-HTML nur, wenn Sie
  `include.rawResponse: true` setzen.
</Note>

`markdown` ist nicht bei jeder Engine, die es liefert, ein Flag: Naver sendet `markdown` immer, weil es dort die
eigentliche Form der Antwort ist und keine Kopie von `text`.

<Warning>
  Ein nicht berücksichtigtes Flag wird stillschweigend ignoriert: kein Fehler, kein Feld. Insbesondere erzeugt nur
  `CHATGPT` tatsächlich `html`, obwohl mehrere Engines das Flag akzeptieren.
</Warning>

## Antwortformen

<AccordionGroup>
  <Accordion title="PERPLEXITY">
    Liest `prompt`. Liefert immer `text` und `sources[]`.

    ```json theme={null}
    {
      "text": "...",
      "sources": [{ "position": 1, "url": "https://...", "label": "...", "description": "..." }],
      "markdown": "...",
      "rawResponse": ["..."],
      "related_queries": ["..."],
      "search_model_queries": ["..."]
    }
    ```

    Optionale Extras, wenn Perplexity sie anzeigt: `videos`, `images`, `hotels`, `places`, `shopping_cards`.
  </Accordion>

  <Accordion title="GEMINI">
    Liest `prompt`. Liefert immer `text` und `sources[]`.

    ```json theme={null}
    {
      "text": "...",
      "sources": [{ "position": 1, "url": "https://...", "label": "...", "confidence_level": "..." }],
      "markdown": "...",
      "rawResponse": ["..."],
      "model": "...",
      "shoppingCards": [{ "title": "...", "position": 1, "price": { "value": 249.99, "currency": "$", "raw": "$249.99" }, "store": "...",
                         "rating": 4.7, "reviews": "14292", "thumbnail": "https://...", "productLink": "https://google.com/search?...&ibp=oshop..." }],
      "inlineProducts": [{ "title": "...", "position": 1, "productLink": "https://google.com/search?...&ibp=oshop..." }]
    }
    ```

    Zeigt die Antwort Produkte, enthalten `shoppingCards` (die Produktkarten, die Gemini in der Antwort zeichnet) und `inlineProducts` (verlinkte Produktnamen in ihren Sätzen) sie mit denselben Feldern wie die GOOGLE-Übersicht. Kartennamen bleiben in `text`, Produktlinks im Text zeigen auf Googles Produktseite.
  </Accordion>

  <Accordion title="GOOGLE: AI Overview in einem SERP-Umschlag">
    Liest `query`. Das ist **kein** einzelnes AI-Overview-Objekt, sondern ein Suchergebnis-Umschlag, der die AI Overview
    als ein nullbares Element enthält.

    ```json theme={null}
    {
      "aioverview": {
        "text": "...",
        "sources": [{ "position": 1, "url": "https://..." }],
        "shoppingCards": [{ "title": "...", "position": 1, "price": { "value": 299.99, "currency": "$", "raw": "$299.99" },
                            "oldPrice": { "value": 399.99, "currency": "$", "raw": "$399.99" }, "store": "...",
                            "rating": 4.5, "reviews": "2.3K", "thumbnail": "https://...", "productLink": "https://www.google.com/search?ibp=oshop..." }],
        "inlineProducts": [{ "title": "...", "position": 1, "productLink": "https://www.google.com/search?ibp=oshop..." }]
      },
      "organicResults": [{ "...": "..." }],
      "peopleAlsoAsk": [{ "...": "..." }],
      "relatedSearches": [{ "...": "..." }],
      "knowledgeGraph": { "...": "..." },
      "ads": [{ "...": "..." }],
      "serp": { "topStories": [], "videoResults": [], "localResults": [] }
    }
    ```

    <Warning>
      `aioverview: null` ist das dokumentierte Signal, dass **Google für diese Anfrage keine AI Overview angezeigt hat**.
      Das ist kein Fehler, und die SERP-Felder darum herum sind weiterhin befüllt.
    </Warning>

    `text` und `sources` auf oberster Ebene sind **veraltete Aliase**, die `aioverview.text` und `aioverview.sources`
    duplizieren. Sie existieren, damit Nutzer der älteren reinen AIO-Form weiter funktionieren. Lesen Sie in neuem Code `aioverview.*`.

    SERP-Panels werden **weggelassen**, wenn sie fehlen, statt als `null` oder `[]` ausgegeben zu werden. Behandeln Sie jedes als optional.

    `aioverview.shoppingCards` und `aioverview.inlineProducts` erscheinen nur, wenn die Übersicht Produkte zeigt. Karten sind die Produktkacheln, die Google neben der Antwort zeichnet; Inline-Produkte sind die verlinkten Produktnamen in ihren Sätzen. Kartentitel bleiben auch in `aioverview.text` erhalten. `price.currency` ist das angezeigte Symbol (`$`, `₩`, `円`), `reviews` behält Googles Abkürzung (`2.3K`) und `productLink` ist Googles Produktseite.
  </Accordion>

  <Accordion title="AIMODE: Google AI Mode">
    Liest `query`. Feste Form, ohne markdown.

    ```json theme={null}
    {
      "text": "...",
      "sources": [{ "position": 1, "url": "https://...", "label": "..." }],
      "shoppingCards": [{ "...": "..." }],
      "inlineProducts": [{ "...": "..." }]
    }
    ```

    `shoppingCards` und `inlineProducts` erscheinen nur, wenn die Antwort Produkte zeigt, mit denselben Feldern wie die GOOGLE-Übersicht.
  </Accordion>

  <Accordion title="GOOGLE_SERP: Google-Suchergebnisse ohne AI Overview">
    Liest `query`. Liefert eine google.com-Ergebnisseite im selben Umschlag wie `GOOGLE`, aber ohne AI Overview: Es gibt
    kein `aioverview`, `text` oder `sources`. Es wartet nicht auf eine Overview, antwortet daher schneller als `GOOGLE` und
    kostet 1 Credit. Setzen Sie `payload.page` (1-10) für tiefere Seiten.

    ```json theme={null}
    {
      "organicResults": [
        { "position": 11, "title": "...", "link": "https://...", "displayedLink": "...", "snippet": "...", "page": 2 }
      ],
      "peopleAlsoAsk": [{ "...": "..." }],
      "relatedSearches": [{ "...": "..." }],
      "ads": [{ "...": "..." }],
      "page": 2
    }
    ```

    `organicResults` ist immer vorhanden. `position` zählt über Seiten hinweg, das erste Ergebnis auf Seite 2 ist also 11,
    und jede Zeile trägt die `page`, von der sie stammt. Ein leeres `organicResults` bedeutet, dass Google selbst keine
    Ergebnisse für die Anfrage geliefert hat. Die anderen Panels fehlen, wenn die Seite keine hat. Setzen Sie
    `include.rawResponse: true`, um zusätzlich das Seiten-HTML als `rawContent` zu erhalten.
  </Accordion>

  <Accordion title="NAVER_SERP: Naver-Suchergebnisse">
    Liest `query`. Liefert eine Seite der Naver-Webdokument-Ergebnisse (der Tab 웹문서), 15 Dokumente pro Seite, für
    1 Credit. Setzen Sie `payload.page` (1-10) für tiefere Seiten. `country` ist standardmäßig `KR`.

    ```json theme={null}
    {
      "organicResults": [
        { "position": 16, "title": "...", "link": "https://...", "displayedLink": "example.com›path",
          "snippet": "...", "page": 2 }
      ]
    }
    ```

    `position` zählt über Seiten hinweg, das erste Dokument auf Seite 2 ist also 16. Ein leeres `organicResults` in einem
    abgeschlossenen Task bedeutet, dass Naver selbst keine Dokumente geliefert hat. Verbirgt Naver die Ergebnisse hinter
    seiner Altersprüfung, enthält die Antwort zusätzlich ein `notice` mit dem `type` `age_verification_required`.

    Um statt einer Suche eine einzelne Naver-Seite zu lesen, senden Sie `"action": "page"` mit einer naver.com-`url`
    (Blog, Cafe, Nachrichten, Terms, Kin oder jede andere naver.com-Seite). Die Antwort ist
    `{ type, url, title, text, images, truncated }`, dazu `author`, `publishedAt` oder `cafeName`, wenn die Seite sie hat.
    `text` wird bei `maxChars` gekürzt (1.000-50.000, Standard 20.000). Nur https-URLs von naver.com werden akzeptiert
    (sonst 422), und eine Weiterleitung, die naver.com verlässt, lässt den Task scheitern. Dasselbe gilt für einen
    Cafe-Beitrag, den nur Mitglieder lesen können.

    Diese Engine liefert keine Rohdaten, daher haben `include`-Flags keine Wirkung.
  </Accordion>

  <Accordion title="REDDIT: Reddit-Beiträge, Kommentare und Feeds">
    Liest `query` und durchsucht Reddit-Beiträge für 1 Credit. Fügen Sie `subreddit` (den Namen ohne `r/`) hinzu, um nur ein Subreddit zu durchsuchen.

    ```json theme={null}
    {
      "results": [
        { "postId": "1uzk9m4", "title": "...", "url": "https://www.reddit.com/r/.../comments/1uzk9m4/...",
          "subreddit": "AskRunningShoeGeeks", "preview": "..." }
      ]
    }
    ```

    Senden Sie statt `query` die `url` eines Beitrags (`https://www.reddit.com/r/{subreddit}/comments/{postId}/...`), um
    ihn mit seiner ersten Kommentarseite zu lesen, etwa 20-25 Kommentare. `commentSort` (standardmäßig `top`, sonst
    `new`, `controversial`, `old`, `qa`) sortiert diese Seite, und `commentMaxDepth` entfernt tiefere Antworten (`0`
    behält nur Kommentare der obersten Ebene).

    ```json theme={null}
    {
      "post": { "postId": "1uer62n", "title": "...", "body": "...", "author": "...", "subreddit": "...",
                "score": 12, "upvoteRatio": 0.9, "commentCount": 48, "createdAt": "2026-06-24T21:51:21.586000+0000",
                "archived": false, "url": "https://www.reddit.com/r/..." },
      "comments": {
        "availableCount": 24, "returnedCount": 24,
        "items": [{ "commentId": "otlz8m5", "author": "...", "body": "...", "score": 5, "depth": 0,
                    "isSubmitter": false, "createdAt": "...", "url": "https://www.reddit.com/r/..." }]
      }
    }
    ```

    `post.commentCount` ist die gesamte Kommentarzahl des Beitrags; `comments` enthält die gelesene Seite. `archived` wird
    aus dem Alter des Beitrags geschätzt (Reddit sperrt Kommentare nach etwa 180 Tagen). `"action": "feed"` listet die
    neuesten Beiträge von `subreddit` (ohne Angabe r/popular), und `"action": "user_posts"` mit `username` listet, was
    dieser Nutzer eingereicht hat. Beide liefern `results` wie eine Suche, bis zu `limit` (Standard 25).

    Ein leeres `results` in einem abgeschlossenen Task bedeutet, dass Reddit nichts gefunden hat. Diese Engine liefert
    keine Rohdaten, daher haben `include`-Flags keine Wirkung.
  </Accordion>

  <Accordion title="CHATGPT">
    Liest `prompt`. Die reichhaltigste Antwort der API und die einzige, bei der jedes `include`-Flag wirkt. Alle Flags
    sind standardmäßig aktiviert.

    ```json theme={null}
    {
      "text": "...",
      "model": "...",
      "sources": [{ "position": 1, "url": "https://...", "label": "...", "footnote": "...", "datePublished": "..." }],
      "markdown": "...",
      "html": "...",
      "rawResponse": ["..."],
      "searchQueries": ["..."],
      "shoppingCards": [{ "...": "..." }],
      "inlineProducts": [{ "...": "..." }],
      "ads": [{ "...": "..." }],
      "entities": { "...": "..." },
      "citationPills": [{ "...": "..." }]
    }
    ```

    ChatGPT unterstützt auch Unterhaltungen über mehrere Runden; siehe den Abschnitt Mehrere Runden weiter unten.
  </Accordion>

  <Accordion title="BING_COPILOT: Bing Copilot">
    Liest `prompt`. Liefert die Antwort aus dem Copilot-Chat auf copilot.com, mit stets aktivierter Websuche. Es ist kein
    Konto und keine Anmeldung beteiligt. `COPILOT` wird weiterhin akzeptiert und als `BING_COPILOT` ausgeführt.

    ```json theme={null}
    {
      "text": "Solar panels cut electricity bills ...",
      "sources": [{ "position": 1, "url": "https://...", "label": "..." }],
      "shoppingCards": [{ "type": "shoppingProducts", "layout": "inline", "products": [{ "position": 1, "name": "...", "url": "https://...", "price": { "amount": 69, "currencySymbol": "$" } }] }],
      "map": [{ "position": 1, "name": "...", "placeId": "...", "location": { "address": "...", "latitude": 40.75, "longitude": -73.98 }, "layerLabel": "..." }],
      "searchQueries": ["..."],
      "markdown": "...",
      "rawResponse": [{ "event": "appendText", "text": "..." }]
    }
    ```

    `sources` sind die Seiten, die Copilot zitiert hat. Shopping-Fragen zitieren oft keine und liefern stattdessen
    Produktkarten, daher ist `sources: []` eine normale Antwort. `shoppingCards`, `map` und `searchQueries` sind immer
    vorhanden und leer, wenn Copilot sie nicht erzeugt hat. Produktpositionen laufen über alle Karten hinweg.
    `markdown` wird geliefert, wenn `include.markdown` `true` ist.
  </Accordion>

  <Accordion title="BING_SEARCH: Bing-Suchergebnisse mit KI-Zusammenfassung">
    Liest `query`. Liefert die bing.com-Ergebnisseite im selben Umschlag wie `GOOGLE`: organische Ergebnisse, Anzeigen
    und verwandte Suchen, dazu die KI-Zusammenfassung, die Bing darüber anzeigt, als `aioverview`. Es ist kein Konto und
    keine Anmeldung beteiligt. `BING` und `BING_COPILOT_SEARCH` werden weiterhin akzeptiert und als `BING_SEARCH` ausgeführt.

    ```json theme={null}
    {
      "surface": "bing_search",
      "organicResults": [
        { "position": 1, "title": "...", "link": "https://...", "displayedLink": "...", "snippet": "...", "date": "Aug 3, 2026", "page": 1 }
      ],
      "ads": [{ "position": 1, "title": "...", "link": "https://...", "displayedLink": "...", "description": "...", "blockPosition": "top" }],
      "relatedSearches": [{ "query": "...", "link": "https://www.bing.com/search?q=..." }],
      "aioverview": {
        "text": "Heat pumps move heat instead of generating it [1]. ...",
        "sources": [{ "position": 1, "url": "https://...", "label": "..." }],
        "citationPills": [
          { "citationPillId": 1, "position": 1, "url": "https://...", "label": "...", "domain": "example.com" }
        ],
        "markdown": "..."
      },
      "rawContent": "<!DOCTYPE html>..."
    }
    ```

    <Warning>
      `aioverview: null` bedeutet, dass **Bing für diese Anfrage keine KI-Zusammenfassung angezeigt hat**. Das ist kein
      Fehler, und die Ergebnisfelder darum herum sind weiterhin befüllt.
    </Warning>

    In `aioverview.text` verweist `[n]` auf `sources[n-1]`. Jeder Eintrag in `citationPills[]` ist eine Quelle hinter einem
    Inline-Zitat; gemeinsam zitierte Quellen teilen sich eine `citationPillId`. Das Feld fehlt, wenn die Zusammenfassung
    keine Inline-Zitate hat. `markdown` behält Überschriften, Listen und Tabellen und wird geliefert, wenn
    `include.markdown` `true` ist.

    Zeigt Bing eine Zusammenfassung, verschiebt es die meisten organischen Ergebnisse auf die nächste Seite. Rechnen Sie
    mit zwei oder drei `organicResults` mit Zusammenfassung und etwa neun ohne. `ads` und `relatedSearches` fehlen, wenn
    die Seite keine hat. `rawContent` ist die vollständige Ergebnisseite; setzen Sie `include.rawResponse: false`, um sie
    wegzulassen. `text` und `sources` auf oberster Ebene sind veraltete Kopien von `aioverview.text` und
    `aioverview.sources` (leer ohne Zusammenfassung).

    Bing schreibt nicht für jede Anfrage eine Zusammenfassung. Suchartige Fragen („wie funktioniert eine Wärmepumpe bei
    Kälte“) erhalten viel häufiger eine als Anweisungen („Erkläre zwei Vorteile…“), und die Abdeckung außerhalb des
    Englischen ist begrenzt.
  </Accordion>

  <Accordion title="NAVER_AI_BRIEF und NAVER_AI_TAB">
    Beide lesen `query` und teilen eine Antwortform.

    ```json theme={null}
    {
      "text": "...",
      "sources": [{ "position": 1, "url": "https://...", "label": "...", "description": "..." }]
    }
    ```

    `NAVER_AI_BRIEF` ist die bedingte KI-Zusammenfassungsbox in der Naver-SERP; sie erscheint nicht bei jeder Anfrage.
    `NAVER_AI_TAB` ist der immer verfügbare dialogorientierte KI-Tab und die wichtigste Naver-Oberfläche; sein `text` ist
    als Markdown formatiert.

    `NAVER_AI_BRIEF` liefert außerdem die organischen Webdokumente unter der Zusammenfassungsbox in `organicResults`,
    demselben Feld, das `GOOGLE` neben seiner AI Overview liefert:

    ```json theme={null}
    {
      "organicResults": [
        { "position": 1, "title": "...", "link": "https://...", "displayedLink": "example.com",
          "snippet": "...", "date": "2026.7.30.", "page": 1 }
      ]
    }
    ```

    Zusammenfassung und Dokumente stammen von zwei verschiedenen Naver-Endpunkten, daher kostet `NAVER_AI_BRIEF` wie
    `NAVER_AI_TAB` 2 Credits. Schlägt der Abruf der Dokumente fehl, fehlt das Feld statt leer zu sein.

    <Note>
      `NAVER` ist ein veralteter Alias für `NAVER_AI_BRIEF`. Verwenden Sie den expliziten Namen.
    </Note>
  </Accordion>
</AccordionGroup>

## Mehrere Runden (ChatGPT)

ChatGPT kann eine Unterhaltung führen. Lassen Sie beide Felder weg, um das Standardverhalten mit einer Runde zu erhalten.

<Steps>
  <Step title="Unterhaltung starten">
    Senden Sie `newConversation: true`. Die Antwort enthält eine `conversationId`.

    ```json theme={null}
    { "taskType": "CHATGPT", "payload": { "prompt": "...", "newConversation": true } }
    ```
  </Step>

  <Step title="Fortsetzen">
    Senden Sie diese `conversationId` in der nächsten Runde zurück.

    ```json theme={null}
    { "taskType": "CHATGPT", "payload": { "prompt": "...", "conversationId": "..." } }
    ```
  </Step>
</Steps>

<Warning>
  Unterhaltungen sind an das Gerät gebunden, das sie erstellt hat, und laufen nach etwa zwei Stunden ab. Eine
  abgelaufene `conversationId` kann nicht fortgesetzt werden.
</Warning>

## Engine-Leitfäden

* [ChatGPT](https://querying.ai/de/engines/chatgpt)
* [Gemini](https://querying.ai/de/engines/gemini)
* [Perplexity](https://querying.ai/de/engines/perplexity)
* [Bing Copilot](https://querying.ai/de/engines/bing-copilot)
* [Google AI Overviews](https://querying.ai/de/engines/google-ai-overviews)
* [Google AI Mode](https://querying.ai/de/engines/google-ai-mode)
* [Naver AI Brief](https://querying.ai/de/engines/naver-ai-brief)
* [Naver AI Tab](https://querying.ai/de/engines/naver-ai-tab)
