Para usar a API de Afiliados Shopee, você precisa solicitar suas credenciais (App ID e Secret). Siga o passo a passo:
Você precisa estar cadastrado e ativo no Programa de Afiliados Shopee.
Navegue até: affiliate.shopee.com.br/open_api
No canto superior direito da página, localize e clique no botão "Central de Ajuda".
Role a página até o final e clique em "E-mail (Fale conosco por e-mail)".
Complete os campos conforme a tabela abaixo:
| Campo | Valor a Preencher |
|---|---|
| Você já é Afiliado da Shopee? | Sim |
| Problemas com login ou não lembra a conta? | Não, estou com outras dificuldades/dúvidas |
| ID de Afiliado | Seu ID numérico (encontrado no painel de afiliado) |
| Número de telefone | Número cadastrado no Programa de Afiliados |
| Tema relacionado à dificuldade | Tenho dúvidas/dificuldades com meu cadastro/conta |
| Cenário em relação ao cadastro/conta | Quero ativar a API |
📌 Importante: Após enviar, você verá a mensagem "Seu caso será enviado para análise. Em breve retornamos!". A equipe Shopee irá analisar e enviar suas credenciais por e-mail. O tempo de resposta pode variar em até 2 semanas.
Todas as requisições à API Shopee requerem autenticação via header Authorization com assinatura SHA256. Esse método garante que apenas você (com seu App ID e Secret) pode fazer requisições em nome da sua conta de afiliado.
🔒 Por que usar SHA256? A assinatura SHA256 é um hash criptográfico que valida sua identidade sem expor seu Secret. Mesmo que alguém intercepte a requisição, não conseguirá replicá-la sem conhecer seu Secret.
O header deve seguir exatamente este formato, com os 3 componentes separados por vírgula:
Authorization: SHA256 Credential={AppId}, Timestamp={Timestamp}, Signature={Signature}
A assinatura é um hash SHA256 da concatenação (sem espaços ou separadores) de 4 valores nesta ordem exata:
Signature = SHA256(AppId + Timestamp + Payload + Secret)
| Componente | Descrição | Exemplo |
|---|---|---|
AppId |
Seu ID de aplicação (fornecido pela Shopee após aprovação) | 123456 |
Timestamp |
Unix timestamp atual em segundos (não milissegundos!) | 1704067200 |
Payload |
O body completo da requisição como string JSON | {"query":"..."} |
Secret |
Sua chave secreta (nunca compartilhe!) | abc123xyz... |
⚠️ Atenção: O timestamp deve estar próximo do horário atual do servidor. Diferenças maiores que alguns minutos podem causar erro de autenticação.
A API Shopee utiliza GraphQL, uma linguagem de consulta que permite solicitar exatamente os dados que você precisa. Diferente de REST, você especifica quais campos quer receber, otimizando a resposta.
https://open-api.affiliate.shopee.com.br/graphqlPOST (sempre POST, mesmo para consultas)application/jsonO corpo da requisição é um JSON com a query GraphQL. Você pode incluir variáveis para parametrizar suas consultas:
{
"query": "{ ... }",
"operationName": "NomeOperacao", // opcional - útil quando há múltiplas operações
"variables": { ... } // opcional - valores dinâmicos para a query
}
A resposta sempre retorna um objeto JSON. Em caso de sucesso, os dados vêm no campo data. Em caso de erro, os detalhes vêm no campo errors:
// ✅ Sucesso - dados retornados normalmente
{
"data": {
"nomeDoEndpoint": { ... }
}
}
// ❌ Erro - detalhes do problema
{
"errors": [
{
"message": "Descrição do erro",
"path": ["nomeDoEndpoint"],
"extensions": {
"code": 10020,
"message": "Detalhes específicos do erro"
}
}
]
}
💡 Dica: Você pode receberdataeerrorssimultaneamente se parte da query funcionou e parte falhou. Sempre verifique ambos os campos.
Este endpoint retorna campanhas e ofertas especiais da Shopee disponíveis para divulgação. São promoções criadas pela própria Shopee, como campanhas sazonais (Black Friday, Natal, etc.), coleções temáticas e ofertas flash.
📌 Quando usar: Ideal para divulgar promoções gerais da Shopee. Os links já vêm com seu tracking de afiliado embutido no campo offerLink.
{
shopeeOfferV2(
keyword: "promocao",
sortType: 1,
page: 1,
limit: 10
) {
nodes {
commissionRate
imageUrl
offerLink
originalLink
offerName
offerType
categoryId
collectionId
periodStartTime
periodEndTime
}
pageInfo {
page
limit
hasNextPage
}
}
}
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
keyword | String | Não | Busca por nome da oferta |
sortType | Int | Não | 1 = Mais recentes, 2 = Maior comissão |
page | Int | Não | Número da página (padrão: 1) |
limit | Int | Não | Itens por página (1-500, padrão: 10) |
| Campo | Tipo | Descrição |
|---|---|---|
commissionRate | String | Taxa de comissão. Ex: "0.0850" = 8.5% |
imageUrl | String | URL da imagem da campanha |
offerLink | String | Link com tracking do afiliado |
originalLink | String | Link original sem tracking |
offerName | String | Nome da oferta/campanha |
offerType | Int | 1 = Collection, 2 = Categoria |
periodStartTime | Int | Início da campanha (Unix timestamp) |
periodEndTime | Int | Fim da campanha (Unix timestamp) |
Este endpoint retorna lojas que oferecem comissão diferenciada para afiliados. São vendedores que optaram por pagar uma comissão extra além da comissão padrão da Shopee, tornando mais atrativo divulgar seus produtos.
📌 Quando usar: Ideal para encontrar lojas parceiras com boas comissões. Você pode filtrar por tipo de loja (Mall, Star, Star+) e ordenar por taxa de comissão para encontrar as melhores oportunidades.
Key Sellers são vendedores estratégicos selecionados pela Shopee. Geralmente são lojas com alto volume de vendas, boa reputação e que participam ativamente do programa de afiliados com comissões atrativas.
{
shopOfferV2(
keyword: "loja",
shopType: [1, 4],
isKeySeller: true,
sortType: 2,
page: 1,
limit: 10
) {
nodes {
shopId
shopName
commissionRate
ratingStar
shopType
imageUrl
offerLink
remainingBudget
sellerCommCoveRatio
periodStartTime
periodEndTime
}
pageInfo { page limit hasNextPage }
}
}
| Parâmetro | Tipo | Descrição |
|---|---|---|
shopId | Int | Filtrar por ID específico da loja |
keyword | String | Buscar por nome da loja |
shopType | [Int] | Array: 1=Mall, 2=Star, 4=Star+ |
isKeySeller | Boolean | Filtrar apenas Key Sellers |
sortType | Int | 1=Recentes, 2=Comissão, 3=Populares |
sellerCommCoveRatio | String | Taxa mínima. Ex: "0.10" = 10% |
| Valor | Tipo | Descrição |
|---|---|---|
| 1 | Shopee Mall | Lojas oficiais de grandes marcas |
| 2 | Star Shop | Lojas com selo Star |
| 4 | Star+ Shop | Lojas premium com selo Star+ |
Este endpoint é o mais utilizado pelos afiliados. Retorna produtos específicos com suas comissões detalhadas, permitindo buscar itens por palavra-chave, categoria, loja ou diversos outros filtros.
📌 Quando usar: Perfeito para criar listas de produtos, comparadores de preços, bots de ofertas ou qualquer aplicação que precise buscar produtos específicos. É o endpoint mais flexível e completo.
A comissão total de um produto pode vir de duas fontes:
A soma das duas resulta na commissionRate total que você receberá.
{
productOfferV2(
keyword: "celular",
listType: 1,
sortType: 5,
page: 1,
limit: 20
) {
nodes {
itemId
productName
productLink
offerLink
imageUrl
priceMin
priceMax
priceDiscountRate
sales
ratingStar
commissionRate
sellerCommissionRate
shopeeCommissionRate
commission
shopId
shopName
shopType
periodStartTime
periodEndTime
}
pageInfo { page limit hasNextPage }
}
}
| Parâmetro | Tipo | Descrição |
|---|---|---|
keyword | String | Buscar por nome do produto |
shopId | Int | Filtrar por loja específica |
itemId | Int | Filtrar por produto específico |
listType | Int | 0=Recomendados, 1=Maior comissão, 2=Top performance |
sortType | Int | 1=Relevância, 2=Vendidos, 3=Maior preço, 4=Menor preço, 5=Comissão |
isAMSOffer | Boolean | Filtrar ofertas com comissão do seller |
isKeySeller | Boolean | Filtrar apenas Key Sellers |
| Campo | Descrição |
|---|---|
commissionRate | Taxa total de comissão |
sellerCommissionRate | Comissão paga pelo vendedor |
shopeeCommissionRate | Comissão paga pela Shopee |
commission | Valor estimado da comissão em R$ |
Este endpoint permite transformar qualquer URL da Shopee em um link curto com seu tracking de afiliado embutido. Útil quando você tem uma URL de produto ou loja e quer gerar um link rastreável.
📌 Quando usar: Quando você já tem o link de um produto/loja e precisa adicionar seu tracking. Por exemplo, se um usuário compartilhou um link de produto e você quer convertê-lo em link de afiliado.
Os subIds são identificadores personalizados que você define para rastrear a origem das suas conversões. Eles aparecem no campo utmContent do relatório de conversões, permitindo saber exatamente qual campanha, canal ou post gerou cada venda.
Exemplos de uso:
["instagram", "stories", "promo_maio"] - Venda veio do Instagram Stories["telegram", "grupo_ofertas", "flash"] - Venda veio do grupo Telegram["site", "banner_home", "v2"] - Venda veio do banner do sitemutation {
generateShortLink(
input: {
originUrl: "https://shopee.com.br/produto-exemplo-i.123.456"
subIds: ["campanha1", "banner_home", "instagram"]
}
) {
shortLink
}
}
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
originUrl | String | Sim | URL original da Shopee |
subIds | [String] | Não | Até 5 identificadores para tracking (utm_content) |
{
"data": {
"generateShortLink": {
"shortLink": "https://shope.ee/abc123xyz"
}
}
}
💡 Dica: Use os subIds para rastrear de onde vieram suas conversões.
Exemplo: ["facebook", "stories", "promo_verao"] aparecerá no relatório de conversão.
Este endpoint retorna o relatório de conversões com todos os pedidos gerados através dos seus links de afiliado. Você pode ver cliques, pedidos, status de cada compra e comissões estimadas.
📌 Quando usar: Para acompanhar suas vendas em tempo real, analisar performance de campanhas (via utmContent) e prever sua comissão do período. As comissões aqui são estimadas - o valor final só é confirmado após validação.
Quando alguém clica no seu link e compra, a conversão passa por estes estágios:
{
conversionReport(
purchaseTimeStart: 1704067200,
purchaseTimeEnd: 1704153600,
orderStatus: "COMPLETED",
limit: 50
) {
nodes {
purchaseTime
clickTime
conversionId
totalCommission
sellerCommission
shopeeCommissionCapped
buyerType
device
utmContent
orders {
orderId
orderStatus
items {
itemId
itemName
shopName
itemPrice
qty
itemTotalCommission
attributionType
}
}
}
pageInfo {
limit
hasNextPage
scrollId
}
}
}
| Parâmetro | Tipo | Descrição |
|---|---|---|
purchaseTimeStart | Int | Início do período (Unix timestamp) |
purchaseTimeEnd | Int | Fim do período (Unix timestamp) |
orderStatus | String | UNPAID, PENDING, COMPLETED, CANCELLED |
buyerType | String | NEW (novo) ou EXISTING (recorrente) |
device | String | APP ou WEB |
scrollId | String | Para paginação (válido por 30s) |
| Status | Descrição |
|---|---|
UNPAID | Pedido criado mas não pago |
PENDING | Pago, aguardando entrega/confirmação |
COMPLETED | Entregue e confirmado |
CANCELLED | Cancelado ou reembolsado |
Este endpoint retorna as conversões já validadas pela Shopee, com os valores finais de comissão que serão efetivamente pagos. Diferente do Conversion Report, aqui os valores são definitivos.
📌 Quando usar: Para conferir os valores finais de comissão antes do pagamento. Use o validationId (período de validação) para consultar conversões específicas.
| Aspecto | Conversion Report | Validated Report |
|---|---|---|
| Valores | Estimados | Finais/Confirmados |
| Timing | Tempo real | Após período de validação |
| Uso | Acompanhamento diário | Conferência de pagamento |
| Inclui reembolsos | Não | Sim (refundAmount) |
{
validatedReport(
validationId: 12345,
limit: 100
) {
nodes {
conversionId
netCommission
totalCommission
orders {
orderId
items {
itemName
itemTotalCommission
refundAmount
}
}
}
pageInfo {
hasNextPage
scrollId
}
}
}
⚠️ Paginação: O scrollId é válido por apenas 30 segundos.
Use-o imediatamente na próxima requisição para continuar a paginação.
Quando algo dá errado, a API retorna um código de erro no campo extensions.code da resposta. Abaixo estão os erros mais comuns e como resolvê-los:
| Código | Erro | Solução |
|---|---|---|
| 10000 | System Error | Erro interno. Tente novamente em alguns segundos. |
| 10010 | Parse Error | Verifique a sintaxe da query GraphQL. |
| 10020 | Invalid Signature | Verifique App ID, Secret, Timestamp e cálculo do SHA256. |
| 10030 | Rate Limit | Muitas requisições. Aguarde e reduza a frequência. |
| 10035 | No API Access | Solicite acesso à API conforme instruções acima. |
| 11001 | Params Error | Parâmetros inválidos. Verifique tipos e valores. |
Código Python completo e funcional com os endpoints 1.2, 1.3 (shopOfferV2) e 2. Pronto para executar!