Dados & API

Estrutura dos dados extraídos e formato dos arquivos JSON gerados pelo scraper.

Estrutura de Arquivos

output/br4.bet.br/
├── data/
│   ├── user-profile.json    # Dados do perfil do usuário
│   ├── missions.json        # Lista completa de missões
│   ├── shop.json            # Itens disponíveis na loja
│   └── levels.json          # Sistema de níveis e tiers
├── images/
│   └── ui/
│       ├── vip-main.png     # Tela principal VIP
│       ├── missions.png     # Tela de missões
│       └── shop.png         # Tela da loja
└── docs/
    ├── gamification.md      # Documentação principal
    └── security-report.md   # Relatório de segurança

user-profile.json

Dados do perfil do usuário logado.

{
  "site": "br4.bet.br",
  "scrapedAt": "2026-08-15T13:18:00.000Z",
  "user": {
    "name": "PEDRO PAULO COELHO VALADAO",
    "level": 8,
    "tier": "Bronze",
    "coins": 1000,
    "points": 1000,
    "pointsToNextLevel": 80,
    "nextLevel": 9,
    "nextTier": "Bronze",
    "progress": 93
  }
}

levels.json

Estrutura completa do sistema de níveis e tiers.

{
  "site": "br4.bet.br",
  "scrapedAt": "2026-08-15T13:18:00.000Z",
  "tiers": [
    {
      "name": "Aprendiz",
      "levels": [0],
      "color": "#808080",
      "benefits": ["Acesso básico ao sistema"]
    },
    {
      "name": "Bronze",
      "levels": [1, 2, 3, 4, 5, 6, 7, 8, 9],
      "color": "#CD7F32",
      "benefits": ["Cashback básico", "Acesso a missões", "Compras na loja"]
    },
    // ... mais tiers
  ],
  "currentUser": {
    "level": 8,
    "tier": "Bronze",
    "points": 1000,
    "pointsToNextLevel": 80,
    "progress": 93
  }
}

missions.json

Lista completa de missões disponíveis.

{
  "site": "br4.bet.br",
  "scrapedAt": "2026-08-15T13:18:00.000Z",
  "summary": {
    "total": 49,
    "available": 48,
    "blocked": 0,
    "completed": 1,
    "expired": 0
  },
  "missions": [
    {
      "id": "compre-25-itens",
      "name": "Compre 25 itens",
      "description": "Compre 25 itens! Sua tarefa: Adquira 25 itens na loja.",
      "reward": "3000 moedas",
      "status": "available",
      "progress": 0,
      "category": "loja"
    },
    {
      "id": "pg-pragmatic-diario-1",
      "name": "PG E PRAGMATIC DIÁRIO - Nível 1",
      "description": "Aposte R$250,00 em jogos Pragmatic Play ou PG Soft",
      "reward": "5 Giros Grátis no Fortune Tiger",
      "status": "available",
      "progress": 0,
      "category": "aposta-diaria",
      "requirements": {
        "minVolume": 250,
        "balanceType": "Saldo Real",
        "providers": ["Pragmatic Play", "PG Soft"]
      }
    }
    // ... mais missões
  ]
}

shop.json

Itens disponíveis na loja para troca por pontos.

{
  "site": "br4.bet.br",
  "scrapedAt": "2026-08-15T13:18:00.000Z",
  "currency": "pts (pontos/moedas)",
  "items": [
    {
      "id": "tigre-sortudo-5giros",
      "name": "5 giros no Tigre Sortudo",
      "game": "Tigre Sortudo",
      "provider": "Pragmatic Play",
      "spins": 5,
      "price": 1900,
      "status": "available"
    },
    {
      "id": "ratinho-sortudo-5giros",
      "name": "5 giros no Ratinho Sortudo",
      "game": "Ratinho Sortudo",
      "provider": "Pragmatic Play",
      "spins": 5,
      "price": 1900,
      "status": "available"
    },
    {
      "id": "gates-olympus-5giros",
      "name": "5 giros no Gates of Olympus 1000",
      "game": "Gates of Olympus 1000",
      "provider": "Pragmatic Play",
      "spins": 5,
      "price": 4000,
      "status": "available"
    }
  ]
}

WebSocket Events

Eventos capturados via WebSocket para atualizações em tempo real.

Canal Privado

private-encrypted-{userId}

Eventos

EventoDescrição
UserUpdateEventMudanças de perfil/saldo
UserTransactionEventDepósitos/saques
UserRolloverUpdateEventProgresso wagering
notificationCreatedEventNotificações

Smartico CIDs

CIDComando
502CLIENT_TRACK_ACTIVITY_REQUEST
509/510Store items
526MISSION_OPTIN_RESPONSE
527/528Balance query/response
540ACHIEVEMENT_CLAIM_PRIZE_RESPONSE
706SAW_SPINS_COUNT_PUSH
808JP_WIN_PUSH

Scraper

O scraper usa Playwright para extrair os dados da plataforma.

Executar

npm run scrape

Dependências