// docs

SHEIN PLP

Busca paginada de produtos da SHEIN Brasil por palavra-chave ou URL, com preços e imagens. Custo: 5 créditos por chamada.

Tempo de resposta: Catálogo brasileiro, em português e BRL. Exemplos de resposta ilustrativos: preços e disponibilidade podem mudar. Cada chamada consulta uma página ou um produto e custa 5 créditos; falhas de upstream seguem a política de estorno da plataforma.

Nota importante: alguns campos podem retornar null em produção, dependendo da página de origem. Consulte o schema e a descrição de cada campo para tratar valores ausentes; os exemplos mostram uma resposta possível.

Quando a entidade consultada não existe na origem, o extract e a tool MCP retornam 200 com data: null e notFound: true. Esse caso é tratado como resposta concluída, não como erro de servidor.

Chamada HTTP

cURL
curl -X POST https://api.geckoapi.com.br/v1/extract \
  -H "Authorization: Bearer SUA_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
  "target": "shein.com",
  "type": "plp",
  "keyword": "vestido longo",
  "page": 1
}'

Chamada MCP

A mesma seam também aparece no MCP hospedado como uma tool dedicada. Os argumentos reaproveitam os campos do extract, mas target e type já ficam fixos pela tool.

Ver guia completo do MCP

Endpoint

POST /v1/mcp

Tool name

shein_com_plp

Auth

Bearer ou X-API-Key

shein_com_plp tools/call
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "shein_com_plp",
    "arguments": {
      "keyword": "vestido longo",
      "page": 1,
      "executionId": "exec_example_123"
    }
  }
}

Possibilidades de input

Campos suportados nesta API do POST /v1/extract, com regras específicas de obrigatoriedade e condicionais.

Campo Tipo Status Regra Default Exemplo
url
URL alvo da extração. Para alguns PLPs pode ser omitida quando a API monta a URL a partir de outros campos.
string (URL) Opcional URL HTTPS de br.shein.com no formato /pdsearch/palavra-chave/. Não aceita URLs de categoria, outras regiões, login ou fragmentos. - https://br.shein.com/pdsearch/vestido/?page=1
keyword
Palavra-chave para buscas PLP. Em Google Search ela representa a query enviada ao Google; em Booking PLP é obrigatória; em outros PLPs pode substituir a URL.
string Condicional Obrigatória sem URL: de 1 a 200 caracteres, sem caracteres de controle. Se enviar URL e keyword, as buscas devem coincidir. - vestido longo
page
Paginacao. Em PLP, inclusive Trivago, e no Reclame AQUI ILP inicia em 1; em review (MercadoLivre, Booking e Hoteis) inicia em 0. O Reclame AQUI ILP aceita ate a pagina 100.
integer Opcional Inteiro de 1 a 100; padrão 1 ou a página da URL. Cada chamada solicita 10 produtos. page explícito prevalece sobre a URL. 1 1

Exemplos de request

Busca por palavra-chave

Consulta uma página do catálogo brasileiro.

Busca por palavra-chave
{
  "target": "shein.com",
  "type": "plp",
  "keyword": "vestido longo",
  "page": 1
}

Segunda página

Cada página é uma nova chamada de 5 créditos.

Segunda página
{
  "target": "shein.com",
  "type": "plp",
  "keyword": "vestido longo",
  "page": 2
}

Busca por URL

page explícito prevalece sobre a página da URL.

Busca por URL
{
  "target": "shein.com",
  "type": "plp",
  "url": "https://br.shein.com/pdsearch/vestido/?page=1"
}

Schema de response (leaf paths)

Mapa de paths de saída com tipo esperado para esta API.

responseSchema
{
  "source": "string",
  "type": "string",
  "url": "string",
  "requestUrl": "string",
  "extractedAt": "string",
  "query": "string",
  "country": "string",
  "currency": "string",
  "totalResults": "number | null",
  "primaryResults": "number",
  "page": "number",
  "resultsPerPage": "number",
  "hasMore": "boolean | null",
  "nextPage": "number | null",
  "nextPageUrl": "string | null",
  "items": "SheinPlpItem[]",
  "items[].position": "number",
  "items[].productId": "string",
  "items[].sku": "string | null",
  "items[].url": "string",
  "items[].name": "string",
  "items[].category": "string | null",
  "items[].mallCode": "string",
  "items[].currency": "string",
  "items[].price": "number | null",
  "items[].regularPrice": "number | null",
  "items[].soldOut": "boolean | null",
  "items[].thumbnail": "string | null",
  "items[].images": "{ url: string }[]"
}

Exemplo de response

responseExample
{
  "source": "shein.com",
  "type": "plp",
  "url": "https://br.shein.com/pdsearch/cal%C3%A7a%20jeans/?page=1",
  "requestUrl": "https://br.shein.com/pdsearch/cal%C3%A7a%20jeans/?page=1",
  "extractedAt": "2026-09-18T06:30:00.000Z",
  "query": "calça jeans",
  "country": "BR",
  "currency": "BRL",
  "totalResults": 1,
  "primaryResults": 1,
  "page": 1,
  "resultsPerPage": 10,
  "hasMore": false,
  "nextPage": null,
  "nextPageUrl": null,
  "items": [
    {
      "position": 1,
      "productId": "429081540",
      "sku": "sz260325034356227289416",
      "url": "https://br.shein.com/Product-p-429081540.html?mallCode=2",
      "name": "Calça jeans feminina wide leg",
      "category": "Jeans feminino",
      "mallCode": "2",
      "currency": "BRL",
      "price": 49.99,
      "regularPrice": 274,
      "soldOut": false,
      "thumbnail": null,
      "images": []
    }
  ]
}

Referência completa de campos

Path Tipo Descrição Exemplo
country string BR; somente o catálogo brasileiro é suportado. BR
currency string BRL. BRL
extractedAt string Data e hora da extração em ISO 8601. 2026-09-18T06:30:00.000Z
hasMore boolean | null Calculado pelo total informado e pelo tamanho de página; null se o total não estiver disponível. Uma página vazia retorna false. false
items SheinPlpItem[] Produtos da página solicitada. [{"position":1,"productId":"429081540","sku":"sz260325034356227289416","url":"https://br.shein.com/Product-p-429081540.html?mallCode=2","name":"Calça jeans feminina wide leg","category":"Jeans feminino","mallCode":"2","currency":"BRL","price":49.99,"regularPrice":274,"soldOut":false,"thumbnail":null,"images":[]}]
items[].category string | null Nome da categoria, quando informado. Jeans feminino
items[].currency string Moeda dos valores normalizados: BRL. BRL
items[].images { url: string }[] Imagens do produto, sem URLs duplicadas. []
items[].mallCode string Código de mall usado pela consulta. Preserve esse valor ao consultar um resultado da PLP. 2
items[].name string Título do produto. Calça jeans feminina wide leg
items[].position number Posição calculada pela página e pela ordem dos resultados. 1
items[].price number | null Preço de venda; no PDP, prioriza a resposta de preço atual validada. 49.99
items[].productId string Identificador goods_id do produto. 429081540
items[].regularPrice number | null Preço de referência informado pela SHEIN; não comprova um preço de venda anterior. 274
items[].sku string | null Código de catálogo goods_sn ou skc_name, quando disponível. sz260325034356227289416
items[].soldOut boolean | null Sinal de esgotado fornecido pelo catálogo, ou null quando ausente. false
items[].thumbnail string | null Imagem principal, quando disponível. null
items[].url string URL pública do produto, com mallCode preservado para a consulta PDP. https://br.shein.com/Product-p-429081540.html?mallCode=2
nextPage number | null Próxima página quando o total indica mais resultados, limitada a 100; null nos demais casos. null
nextPageUrl string | null URL pública que pode ser usada em uma nova chamada PLP. null
page number Página consultada, entre 1 e 100. 1
primaryResults number Quantidade de produtos nesta resposta. 1
query string Palavra-chave consultada, conferida com a resposta. calça jeans
requestUrl string Mesmo valor de url. https://br.shein.com/pdsearch/cal%C3%A7a%20jeans/?page=1
resultsPerPage number Tamanho solicitado: 10. A última página pode conter menos produtos. 10
source string Fonte: shein.com. shein.com
totalResults number | null Total numérico informado pela SHEIN; null quando ausente ou não exato. 1
type string Tipo de consulta: plp ou pdp. plp
url string URL pública canônica da consulta. https://br.shein.com/pdsearch/cal%C3%A7a%20jeans/?page=1

Erros comuns

Respostas com notFound: true não entram nesta tabela, porque retornam sucesso HTTP 200.

Status errorCode Quando acontece
400 INVALID_PAYLOAD JSON inválido ou violação das regras de validação do payload.
401 UNAUTHORIZED Header Authorization ausente ou token/chave inválida.
402 INSUFFICIENT_CREDITS Saldo de créditos insuficiente para a API solicitada.
403 FORBIDDEN Usuário sem acesso ou API temporariamente desabilitada.
409 EXECUTION_CONFLICT executionId conflita com uma execução em estado incompatível.
429 RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTS Limite de taxa ou limite de requisições em voo excedido.
5xx UPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_INVOCATION_FAILED / WORKER_FUNCTION_ERROR / WORKER_INVALID_RESPONSE / INTERNAL_ERROR Falha de servidor no worker, provider/proxy ou gateway. Nesses casos os créditos são estornados automaticamente.