Busca por palavra-chave
Consulta uma página do catálogo brasileiro.
{
"target": "shein.com",
"type": "plp",
"keyword": "vestido longo",
"page": 1
} // docs
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.
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
}'
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.
Endpoint
POST /v1/mcp
Tool name
shein_com_plp
Auth
Bearer ou X-API-Key
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "shein_com_plp",
"arguments": {
"keyword": "vestido longo",
"page": 1,
"executionId": "exec_example_123"
}
}
}
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 |
Consulta uma página do catálogo brasileiro.
{
"target": "shein.com",
"type": "plp",
"keyword": "vestido longo",
"page": 1
} Cada página é uma nova chamada de 5 créditos.
{
"target": "shein.com",
"type": "plp",
"keyword": "vestido longo",
"page": 2
} page explícito prevalece sobre a página da URL.
{
"target": "shein.com",
"type": "plp",
"url": "https://br.shein.com/pdsearch/vestido/?page=1"
} Mapa de paths de saída com tipo esperado para esta API.
{
"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 }[]"
} {
"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": []
}
]
} | 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 |
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. |