---
title: "Consultar os números de visitantes de um site"
description: "Visualizações de páginas do site publicado por pessoas, com páginas, origens, países e dispositivos, ao longo de um período."
canonical: "https://atelier201.com/docs/pt/api/analytics/get"
updated: "2026-11-06"
---

# Consultar os números de visitantes de um site

Requer `sites:read`. Os dados de visitantes são null quando o proprietário desativa a contagem de visitantes. Só o proprietário pode alterar essa configuração no painel.

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

## Authorizations

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

## Path parameters

- `site_id` (`string`, required): O id do site ou seu slug (o endereço antes de .atelier201.page).

## Query parameters

- `period` (`enum<string>`, one of: `today, 7d, 30d, 90d, 12m`): today, 7d, 30d, 90d ou 12m. Padrão: 30d.

## Response

**200**: Consulte os números de visitantes de um site

- `data` (`object`, required)
- `data.period` (`enum<string>`, required, one of: `today, 7d, 30d, 90d, 12m`)
- `data.from` (`string`, required): Primeiro dia UTC incluído.
- `data.to` (`string`, required): Último dia UTC incluído: ontem quando os dados de hoje não estavam disponíveis.
- `data.visitor_counting` (`boolean`, required): False quando o proprietário desativa a contagem de visitantes. Nesse caso, os dados de visitantes são 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): Proporção de visitas com uma única visualização de página, de 0 a 1.
- `data.totals.visit_seconds` (`number,null`, required)
- `data.totals.views_per_visit` (`number,null`, required)
- `data.previous` (`object | null`, required): O mesmo número de dias imediatamente anterior. Null quando não há dados para esse período e para hoje.
- `data.previous.views` (`number`, required)
- `data.previous.visitors` (`number,null`, required)
- `data.previous.visits` (`number,null`, required)
- `data.previous.bounce_rate` (`number,null`, required): Proporção de visitas com uma única visualização de página, de 0 a 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): Origens das visualizações. Cliques dentro do site não são considerados acessos, então o total é menor que o total de visualizações.
- `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): Visualizações de bots, mantidas separadas de todos os números acima.
- `data.updated_at` (`string,null`, required): Quando os dados do último dia completo foram consolidados. Null antes da primeira consolidação noturna.
- `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**: Códigos possíveis: 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**: Códigos possíveis: 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**: Códigos possíveis: 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**: Códigos possíveis: 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**: Códigos possíveis: 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**: Códigos possíveis: 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**: Códigos possíveis: 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**: Códigos possíveis: 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**: Códigos possíveis: 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**: Códigos possíveis: 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**: Códigos possíveis: 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**: Códigos possíveis: 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>'
```
