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

# Analytics

> Scan-Statistiken für einen QR-Code oder Ihren gesamten Workspace.

> [!NOTE]
>
> Die GetQR API befindet sich in der Beta-Phase und steht ausgewählten Workspaces zur Verfügung. Details können sich bis zur allgemeinen Veröffentlichung noch ändern.

Rufen Sie Scan-Summen und Aufschlüsselungen nach Land, Gerät, Browser und mehr ab, für einen einzelnen QR-Code oder über Ihren gesamten Workspace.

| Methode | Pfad | Beschreibung |
| - | - | - |
| `GET` | `/api/v1/qrs/{qrId}/analytics` | [Analytics für einen QR-Code abrufen](#analytics-für-einen-qr-code-abrufen) |
| `GET` | `/api/v1/analytics` | [Analytics für den Workspace abrufen](#analytics-für-den-workspace-abrufen) |

Eine fertige Zusammenfassung pro QR-Code finden Sie unter [Berichte](https://docs.getqr.com/de/api/endpoints/reports.md).

## Was die Zahlen bedeuten

* **Scans.** Jede Zählung steht im Feld `clicks`. Ein Scan wird jedes Mal gezählt, wenn jemand den Kurzlink des QR-Codes öffnet.
* **Eindeutige Scans.** Mit `unique=true` wird jeder Besucher im Zeitraum nur einmal gezählt.
* **Umfang.** Die Zahlen stammen vom Kurzlink des QR-Codes. Ein QR-Code ohne Kurzlink hat keine Scans, die gezählt werden könnten.
* **Verlauf.** Analytics lassen sich über die API nicht zurücksetzen. Das Löschen eines QR-Codes entfernt seine bisherigen Scandaten nicht.

## Header

**Authorization** `string` *required*

`Bearer` gefolgt von Ihrem API-Schlüssel. Siehe [Authentifizierung](https://docs.getqr.com/de/api/authentication.md).

## Query-Parameter

Beide Endpunkte akzeptieren diese Parameter. Alle sind optional.

**groupBy** `string` (default: count)

Dimension der Aufschlüsselung. `count` liefert die Gesamtzahl. Alle Werte und ihre Antwortstruktur finden Sie unter [Aufschlüsselungen](#aufschlüsselungen).

**interval** `string` (default: 30d)

Vordefinierter Zeitraum: `24h`, `7d`, `30d`, `90d`, `1y`, `mtd`, `qtd`, `ytd` oder `all`. Siehe [Zeiträume](#zeiträume). Wird ignoriert, wenn Sie `start` senden.

**start** `string`

Beginn eines eigenen Zeitraums, ISO 8601, zum Beispiel `2026-08-01` oder `2026-08-01T00:00:00Z`. Hat Vorrang vor `interval`. Muss vor `end` liegen.

**end** `string`

Ende eines eigenen Zeitraums, ISO 8601. Standard ist das Ende des heutigen Tages. Wird zusammen mit `start` oder `interval=all` verwendet und bei den anderen Intervallen ignoriert.

**timezone** `string` (default: UTC)

IANA-Zeitzone, an der die `timeseries`-Intervalle ausgerichtet werden, zum Beispiel `America/New_York`. Eine unbekannte Zeitzone liefert `422`.

**unique** `boolean` (default: false)

`true` zählt eindeutige Scans statt aller Scans.

Sie können außerdem [Dimensionsfilter](#dimensionsfilter) senden.

## Zeiträume

| `interval` | Umfasst | `timeseries`-Intervalle |
| - | - | - |
| `24h` | Die letzten 24 Stunden | Stunden |
| `7d` | Die letzten 7 Tage, einschließlich heute | Tage |
| `30d` | Die letzten 30 Tage, einschließlich heute | Tage |
| `90d` | Die letzten 90 Tage, einschließlich heute | Tage |
| `1y` | Die letzten 365 Tage, einschließlich heute | Monate |
| `mtd` | Seit Monatsbeginn | Tage |
| `qtd` | Seit Quartalsbeginn | Tage |
| `ytd` | Seit Jahresbeginn | Tage, nach 180 Tagen Monate |
| `all` | Seit Erstellung Ihres Workspace | Tage, nach 180 Tagen Monate |

Für einen eigenen Zeitraum senden Sie `start` und optional `end`. Zeiträume bis 2 Tage verwenden stündliche Intervalle, Zeiträume über 180 Tage monatliche und alles dazwischen tägliche.

## Dimensionsfilter

Beschränken Sie die Ergebnisse auf Scans, die einem Filter entsprechen. Verschiedene Filter werden mit UND verknüpft. Nimmt ein Filter mehrere Werte an, trennen Sie diese durch Kommas: Die Werte werden mit ODER verknüpft.

| Filter | Wert | Mehrere Werte |
| - | - | - |
| `country` | Ländercode nach ISO 3166-1 alpha-2, zum Beispiel `US` | Ja |
| `region` | Regionscode nach ISO 3166-2, zum Beispiel `US-CA` | Ja |
| `city` | Name der Stadt, zum Beispiel `New York` | Ja |
| `continent` | `AF`, `AN`, `AS`, `EU`, `NA`, `OC` oder `SA` | Ja |
| `device` | Gerätetyp, zum Beispiel `Mobile` oder `Desktop` | Ja |
| `browser` | Name des Browsers, zum Beispiel `Chrome` | Ja |
| `os` | Betriebssystem, zum Beispiel `iOS` oder `Windows` | Ja |
| `url` | Ziel-URL | Ja |
| `referer` | Referrer, zum Beispiel `google.com` | Nein |
| `utm_source`, `utm_medium`, `utm_campaign`, `utm_term`, `utm_content` | UTM-Wert, bis zu 190 Zeichen | Nein |

Ein unbekannter Länder- oder Kontinentcode liefert `422`. Namen von Geräten, Browsern und Betriebssystemen werden mit großem Anfangsbuchstaben abgeglichen, daher funktioniert `mobile` wie `Mobile`.

Zum Beispiel Scans aus den USA oder Kanada auf Mobilgeräten: `?country=US,CA&device=Mobile`.

## Aufschlüsselungen

`count` liefert ein Objekt. Alle anderen Werte liefern ein Array, absteigend nach `clicks` sortiert (`timeseries` ist nach Zeit sortiert).

| `groupBy` | Jedes Element enthält |
| - | - |
| `count` | `clicks` (ein Objekt, kein Array) |
| `timeseries` | `start` (Beginn des Intervalls), `clicks` |
| `continents` | `continent`, `clicks` |
| `regions` | `region`, `country`, `clicks` |
| `countries` | `country`, `city` (immer `*`), `clicks` |
| `cities` | `city`, `country`, `clicks` |
| `devices` | `device`, `clicks` |
| `browsers` | `browser`, `clicks` |
| `os` | `os`, `clicks` |
| `triggers` | `trigger` (`qr` oder `link`), `clicks` |
| `referers` | `referer` (`(direct)`, wenn unbekannt), `clicks` |
| `referer_urls` | `refererUrl` (`(direct)`, wenn unbekannt), `clicks` |
| `top_links` | `id`, `domain`, `key`, `shortLink`, `url`, `createdAt`, `qr` (`id`, `qrType`, `title`), `clicks` |
| `top_urls` | `url`, `clicks` |
| `top_types` | `qr_type`, `clicks` |
| `utm_sources`, `utm_mediums`, `utm_campaigns`, `utm_terms`, `utm_contents` | Der UTM-Wert (`utm_source`, `utm_medium`, `utm_campaign`, `utm_term` oder `utm_content`), `clicks` |

Ein unbekannter Wert für `groupBy` liefert `422` mit der Liste der gültigen Werte.

Antwort bei `groupBy=count`:

```json theme={null}
{ "clicks": 142 }
```

Antwort bei `groupBy=countries`:

```json theme={null}
[
  { "country": "US", "city": "*", "clicks": 87 },
  { "country": "DE", "city": "*", "clicks": 31 },
  { "country": "GB", "city": "*", "clicks": 24 }
]
```

## Analytics für einen QR-Code abrufen

`GET /api/v1/qrs/{qrId}/analytics`

Liefert Scan-Statistiken für einen QR-Code, beschränkt auf seinen Kurzlink. Akzeptiert die oben beschriebenen [Query-Parameter](#query-parameter) und [Dimensionsfilter](#dimensionsfilter).

**qrId** `string` *required*

ID des QR-Codes. Nehmen Sie sie aus der Antwort der Liste oder der Erstellung unter [QR-Codes](https://docs.getqr.com/de/api/endpoints/qr-codes.md).

```bash Total scans, last 30 days theme={null}
curl "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf/analytics?groupBy=count&interval=30d" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```bash Unique scans theme={null}
curl "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf/analytics?groupBy=count&interval=30d&unique=true" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```bash By country, last 7 days theme={null}
curl "https://getqr.com/api/v1/qrs/qr_1EPcVfeHZAY2iNoVLsgW2Aqf/analytics?groupBy=countries&interval=7d" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
{
  "clicks": 142
}
```

## Analytics für den Workspace abrufen

`GET /api/v1/analytics`

Liefert Scan-Statistiken über alle QR-Codes Ihres Workspace. Akzeptiert die oben beschriebenen [Query-Parameter](#query-parameter) und [Dimensionsfilter](#dimensionsfilter) sowie diese Parameter zur Eingrenzung.

**domain** `string`

Beschränkt die Ergebnisse zusammen mit `key` auf den Kurzlink mit dieser Domain, zum Beispiel `getqr.sh`. Die Domain muss zu Ihrem Workspace gehören.

**key** `string`

Slug des Kurzlinks, zum Beispiel `x7Kd2p1`. Verwenden Sie ihn zusammen mit `domain`. Beide stehen im [QR-Code-Objekt](https://docs.getqr.com/de/api/endpoints/qr-codes.md).

**qrType** `string`

Kommagetrennte QR-Code-Typen, die einbezogen werden: `website`, `pdf`, `image`, `video`, `whatsapp`, `social`, `wifi`, `app`, `feedback`, `vcard`, `sms`, `payment`, `location`, `multilink`, `email` oder `event`. Siehe [QR-Typen](https://docs.getqr.com/de/api/guides/qr-types.md).

```bash Devices, last 7 days theme={null}
curl "https://getqr.com/api/v1/analytics?groupBy=devices&interval=7d" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```bash Devices, website QR codes only theme={null}
curl "https://getqr.com/api/v1/analytics?groupBy=devices&interval=30d&qrType=website" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```bash One short link theme={null}
curl "https://getqr.com/api/v1/analytics?groupBy=count&domain=getqr.sh&key=x7Kd2p1" \
  -H "Authorization: Bearer $GETQR_API_KEY"
```

```json 200 theme={null}
[
  { "device": "Mobile", "clicks": 980 },
  { "device": "Desktop", "clicks": 240 }
]
```

## Häufige Probleme

> [accordion] 400 "QR has no associated link."
>
> Der QR-Code hat keinen Kurzlink, daher gibt es keine Scans zu zählen.

> [accordion] 404 beim Filtern nach domain und key
>
> In Ihrem Workspace gibt es keinen Kurzlink mit dieser Domain und diesem Slug. Kopieren Sie `domain` und `key` aus dem QR-Code-Objekt.

> [accordion] 422 bei groupBy, interval oder einem Filter
>
> Der Wert wird nicht unterstützt. Die Fehlermeldung nennt den Parameter und listet die gültigen Werte auf.

> [accordion] Die Zahlen stimmen nicht mit dem Dashboard überein
>
> Prüfen Sie, ob Sie denselben Zeitraum und dieselbe Zeitzone verwenden und ob Sie eindeutige Scans (`unique=true`) oder alle Scans zählen.

## Wie geht es weiter?

> [card] [Berichte](https://docs.getqr.com/de/api/endpoints/reports.md)

> [card] [QR-Codes](https://docs.getqr.com/de/api/endpoints/qr-codes.md)

> [card] [Analytics in der App](https://docs.getqr.com/de/analytics/overview.md)

> [card] [Ratenbegrenzungen](https://docs.getqr.com/de/api/rate-limits.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.