---
title: "Besucherzahlen einer Website abrufen"
description: "Seitenaufrufe der Live-Website durch Besucher über einen Zeitraum, aufgeschlüsselt nach Seiten, Quellen, Ländern und Geräten."
canonical: "https://atelier201.com/docs/de/api/analytics/get"
updated: "2026-11-06"
---

# Besucherzahlen einer Website abrufen

Erfordert `sites:read`. Besucherzahlen sind null, wenn der Eigentümer die Besucherzählung deaktiviert hat. Nur der Eigentümer kann sie im Dashboard ändern.

```http
GET https://api.atelier201.com/v1/sites/{site_id}/analytics
```

## Authorizations

- `Authorization` (bearer, in header, required)

## Path parameters

- `site_id` (`string`, required): ID der Website oder ihr Slug (die Adresse vor .atelier201.page).

## Query parameters

- `period` (`enum<string>`, one of: `today, 7d, 30d, 90d, 12m`): today, 7d, 30d, 90d oder 12m. Standard: 30d.

## Response

**200**: Besucherzahlen einer Website abrufen

- `data` (`object`, required)
- `data.period` (`enum<string>`, required, one of: `today, 7d, 30d, 90d, 12m`)
- `data.from` (`string`, required): Erster erfasster UTC-Tag.
- `data.to` (`string`, required): Letzter erfasster UTC-Tag: gestern, wenn die Live-Abfrage für heute nicht verfügbar war.
- `data.visitor_counting` (`boolean`, required): False, wenn der Inhaber die Besucherzählung deaktiviert hat. In diesem Fall sind die Besucherzahlen null.
- `data.totals` (`object`, required)
- `data.totals.views` (`number`, required)
- `data.totals.visitors` (`number,null`, required)
- `data.totals.visits` (`number,null`, required)
- `data.totals.bounce_rate` (`number,null`, required): Anteil der Besuche mit nur einem Seitenaufruf, 0 bis 1.
- `data.totals.visit_seconds` (`number,null`, required)
- `data.totals.views_per_visit` (`number,null`, required)
- `data.previous` (`object | null`, required): Dieselbe Anzahl von Tagen unmittelbar davor. Null, wenn für diesen Zeitraum keine Daten vorliegen oder für heute.
- `data.previous.views` (`number`, required)
- `data.previous.visitors` (`number,null`, required)
- `data.previous.visits` (`number,null`, required)
- `data.previous.bounce_rate` (`number,null`, required): Anteil der Besuche mit nur einem Seitenaufruf, 0 bis 1.
- `data.previous.visit_seconds` (`number,null`, required)
- `data.previous.views_per_visit` (`number,null`, required)
- `data.series` (`object[]`, required)
- `data.series.at` (`string`, required)
- `data.series.views` (`number`, required)
- `data.series.visitors` (`number,null`, required)
- `data.pages` (`object[]`, required)
- `data.pages.key` (`string`, required)
- `data.pages.views` (`number`, required)
- `data.pages.visitors` (`number,null`, required)
- `data.sources` (`object[]`, required): Herkunft der Seitenaufrufe. Klicks innerhalb der Website zählen nicht als Zugriffe, daher ergeben sie zusammen weniger als die Gesamtzahl.
- `data.sources.key` (`string`, required)
- `data.sources.views` (`number`, required)
- `data.sources.visitors` (`number,null`, required)
- `data.countries` (`object[]`, required)
- `data.countries.key` (`string`, required)
- `data.countries.views` (`number`, required)
- `data.countries.visitors` (`number,null`, required)
- `data.devices` (`object[]`, required)
- `data.devices.key` (`string`, required)
- `data.devices.views` (`number`, required)
- `data.devices.visitors` (`number,null`, required)
- `data.browsers` (`object[]`, required)
- `data.browsers.key` (`string`, required)
- `data.browsers.views` (`number`, required)
- `data.browsers.visitors` (`number,null`, required)
- `data.os` (`object[]`, required)
- `data.os.key` (`string`, required)
- `data.os.views` (`number`, required)
- `data.os.visitors` (`number,null`, required)
- `data.bot_views` (`number`, required): Aufrufe durch Bots, getrennt von allen oben genannten Zahlen.
- `data.updated_at` (`string,null`, required): Zeitpunkt der Zusammenfassung des letzten vollständigen Tages. Vor der ersten Nacht null.
- `request_id` (`string`, required)

```json
{
  "data": {
    "period": "today",
    "from": "<string>",
    "to": "<string>",
    "visitor_counting": true,
    "totals": {
      "views": 123.45,
      "visitors": null,
      "visits": null,
      "bounce_rate": null,
      "visit_seconds": null,
      "views_per_visit": null
    },
    "previous": {
      "views": 123.45,
      "visitors": null,
      "visits": null,
      "bounce_rate": null,
      "visit_seconds": null,
      "views_per_visit": null
    },
    "series": [
      {
        "at": "<string>",
        "views": 123.45,
        "visitors": null
      }
    ],
    "pages": [
      {
        "key": "<string>",
        "views": 123.45,
        "visitors": null
      }
    ],
    "sources": [
      {
        "key": "<string>",
        "views": 123.45,
        "visitors": null
      }
    ],
    "countries": [
      {
        "key": "<string>",
        "views": 123.45,
        "visitors": null
      }
    ],
    "devices": [
      {
        "key": "<string>",
        "views": 123.45,
        "visitors": null
      }
    ],
    "browsers": [
      {
        "key": "<string>",
        "views": 123.45,
        "visitors": null
      }
    ],
    "os": [
      {
        "key": "<string>",
        "views": 123.45,
        "visitors": null
      }
    ],
    "bot_views": 123.45,
    "updated_at": null
  },
  "request_id": "<string>"
}
```

**400**: Mögliche Codes: invalid_request, unknown_field, invalid_parameter, invalid_cursor

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**401**: Mögliche Codes: authentication_required, invalid_api_key, api_key_expired, api_key_revoked

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**402**: Mögliche Codes: insufficient_credits

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**403**: Mögliche Codes: insufficient_scope, feature_not_available, admin_required

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**404**: Mögliche Codes: resource_not_found

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**409**: Mögliche Codes: conflict, result_not_ready, idempotency_key_reused

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**410**: Mögliche Codes: result_expired

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**413**: Mögliche Codes: request_too_large

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**422**: Mögliche Codes: request_too_large_for_plan

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**429**: Mögliche Codes: rate_limited

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**500**: Mögliche Codes: internal_error

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**503**: Mögliche Codes: service_unavailable

- `error` (`object`, required)
- `error.type` (`string`, required)
- `error.code` (`string`, required)
- `error.message` (`string`, required)
- `error.param` (`string`)
- `error.docs_url` (`string`, required)
- `error.action_url` (`string<uri>`)
- `error.details` (`Record<string, object>`)
- `request_id` (`string`, required)

```json
{
  "error": {
    "type": "<string>",
    "code": "<string>",
    "message": "<string>",
    "param": "<string>",
    "docs_url": "<string>",
    "action_url": "<string>",
    "details": {}
  },
  "request_id": "<string>"
}
```

**Example request**

```bash
curl --request GET \
  --url 'https://api.atelier201.com/v1/sites/<site_id>/analytics' \
  --header 'Authorization: <api-key>'
```
