// docs

Temu PDP

Extrai dados completos de produto (PDP) da Temu via fluxo app off-phone. Custo: 5 creditos por request.

Nota importante: alguns campos podem retornar null em produção, dependendo da página de origem. Nesta documentação, os exemplos de output são preenchidos intencionalmente com valores não nulos para facilitar integração.

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 '{
  "url": "https://m.temu.com/product-g-601099588578152.html",
  "target": "temu.com",
  "type": "pdp"
}'

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

temu_com_pdp

Auth

Bearer ou X-API-Key

temu_com_pdp tools/call
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "temu_com_pdp",
    "arguments": {
      "url": "https://m.temu.com/product-g-601099588578152.html",
      "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) Obrigatório Obrigatorio para este seam. Aceita URLs temu.com com product-g-<id> ou goods_id. - https://www.mercadolivre.com.br/p/MLB123456
target
Fonte alvo da extração.
enum Obrigatório Sempre obrigatorio no payload e deve combinar com o seam. - mercadolivre.com.br
type
Tipo da extração: pdp, idp, plp, quote, review ou places.
enum Obrigatório Sempre obrigatorio no payload e deve combinar com o seam. - pdp

Exemplos de request

PDP por URL mobile

Consulta basica para pagina de produto da Temu.

PDP por URL mobile
{
  "url": "https://m.temu.com/product-g-601099588578152.html",
  "target": "temu.com",
  "type": "pdp"
}

PDP por goods.html

Tambem aceita URLs desktop da Temu com goods_id.

PDP por goods.html
{
  "url": "https://www.temu.com/goods.html?goods_id=601099588578152",
  "target": "temu.com",
  "type": "pdp"
}

Schema de response (leaf paths)

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

responseSchema
{
  "requestId": "string (uuid)",
  "executionId": "string (uuid)",
  "data.productId": "string",
  "data.itemId": "string",
  "data.region": "string",
  "data.canonicalUrl": "string",
  "data.url": "string",
  "data.name": "string",
  "data.description": "string",
  "data.currency": "string",
  "data.currencyRaw": "string",
  "data.price": "number",
  "data.priceDisplay": "string",
  "data.priceFormat.currency_code": "string",
  "data.priceFormat.symbol": "string",
  "data.priceFormat.decimal_separator": "string",
  "data.priceFormat.grouping_separator": "string",
  "data.priceFormat.decimals": "number",
  "data.prices.min.amountMinor": "number",
  "data.prices.min.amount": "number",
  "data.prices.min.display": "string",
  "data.prices.max.amountMinor": "number",
  "data.prices.max.amount": "number",
  "data.prices.max.display": "string",
  "data.prices.rangeDisplay": "string",
  "data.soldQuantity": "number",
  "data.soldQuantityText": "string",
  "data.availability": "string",
  "data.stock": "number",
  "data.status.text": "string",
  "data.status.isOnSale": "boolean",
  "data.categoryIds[]": "number",
  "data.mainImage.url": "string",
  "data.images[].url": "string",
  "data.detailImages[]": "string",
  "data.additionalProperties[].name": "string",
  "data.additionalProperties[].value": "string",
  "data.additionalProperties[].values[]": "string",
  "data.shipping.text": "string",
  "data.shipping.promiseText": "string",
  "data.shipping.companies[].name": "string",
  "data.shipping.companies[].trackingText": "string",
  "data.shipping.timeDistribution.days": "number",
  "data.shipping.timeDistribution.minDays": "number",
  "data.shipping.timeDistribution.maxDays": "number",
  "data.variants[].skuId": "number",
  "data.variants[].goodsId": "number",
  "data.variants[].specs": "object",
  "data.variants[].imageUrl": "string",
  "data.variants[].stockQuantity": "number",
  "data.variants[].soldQuantity": "number",
  "data.variants[].isOnSale": "boolean",
  "data.variants[].price.amount": "number",
  "data.variants[].price.display": "string",
  "data.variants[].normalPrice.amount": "number",
  "data.variants[].normalPrice.display": "string",
  "data.variants[].linePrice.amount": "number",
  "data.variants[].linePrice.display": "string",
  "data.variants[].discountBps": "number",
  "data.variants[].measurements[]": "string",
  "data.seller.mallId": "number",
  "data.seller.name": "string",
  "data.seller.salesTip": "string",
  "data.review.rating": "number",
  "data.review.reviewCount": "number"
}

Exemplo de response

responseExample
{
  "requestId": "77777777-7777-4777-8777-777777777777",
  "executionId": "88888888-8888-4888-8888-888888888888",
  "data": {
    "productId": "601099588578152",
    "itemId": "RF152745",
    "region": "br",
    "canonicalUrl": "https://www.temu.com/goods.html?goods_id=601099588578152",
    "url": "https://m.temu.com/product-g-601099588578152.html",
    "name": "French Mary Jane Shoes for Girls",
    "description": "French Mary Jane shoes with flexible sole and breathable upper.",
    "currency": "BRL",
    "currencyRaw": "R$",
    "price": 98.04,
    "priceDisplay": "R$98,04",
    "priceFormat": {
      "currency_code": "BRL",
      "symbol": "R$",
      "decimal_separator": ",",
      "grouping_separator": ".",
      "decimals": 2
    },
    "prices": {
      "min": {
        "amountMinor": 9804,
        "amount": 98.04,
        "display": "R$98,04",
        "currency": "BRL",
        "symbol": "R$"
      },
      "max": {
        "amountMinor": 13355,
        "amount": 133.55,
        "display": "R$133,55",
        "currency": "BRL",
        "symbol": "R$"
      },
      "rangeDisplay": "R$98,04-R$133,55"
    },
    "soldQuantity": 3700,
    "soldQuantityText": "3,7K+ sold",
    "availability": "InStock",
    "stock": 10,
    "status": {
      "code": 1,
      "text": "NORMAL",
      "isOnSale": true
    },
    "categoryIds": [
      27011,
      29550,
      29717
    ],
    "mainImage": {
      "url": "https://img.kwcdn.com/product/fancy/f2c1c4e3.jpg",
      "width": 800,
      "height": 800
    },
    "images": [
      {
        "url": "https://img.kwcdn.com/product/fancy/f2c1c4e3.jpg",
        "width": 800,
        "height": 800
      },
      {
        "url": "https://img.kwcdn.com/product/fancy/f7c90940.jpg",
        "width": 800,
        "height": 800
      }
    ],
    "detailImages": [
      "https://img.kwcdn.com/product/open/1d01a96a.jpg",
      "https://img.kwcdn.com/product/open/638f6c92.jpg"
    ],
    "additionalProperties": [
      {
        "name": "Origin",
        "value": "Zhejiang,China",
        "values": [
          "Zhejiang,China"
        ]
      },
      {
        "name": "Closure",
        "value": "Hook and loop",
        "values": [
          "Hook and loop"
        ]
      }
    ],
    "shipping": {
      "text": "Free shipping",
      "promiseText": "Delivery in 7-13 days",
      "companies": [
        {
          "name": "Temu Logistics",
          "trackingText": "Tracked shipping"
        }
      ],
      "timeDistribution": {
        "days": 10,
        "minDays": 7,
        "maxDays": 13
      }
    },
    "variants": [
      {
        "skuId": 17592492785911,
        "goodsId": 601099588578152,
        "specs": {
          "Color": "Beige",
          "Size": "24.5"
        },
        "imageUrl": "https://img.kwcdn.com/product/fancy/f2c1c4e3.jpg",
        "urlId": "17592492785911",
        "stockQuantity": 10,
        "soldQuantity": 125,
        "isOnSale": true,
        "limitQuantity": 10,
        "price": {
          "amountMinor": 9804,
          "amount": 98.04,
          "display": "R$98,04",
          "currency": "BRL",
          "symbol": "R$"
        },
        "normalPrice": {
          "amountMinor": 10542,
          "amount": 105.42,
          "display": "R$105,42",
          "currency": "BRL",
          "symbol": "R$"
        },
        "linePrice": {
          "amountMinor": 13355,
          "amount": 133.55,
          "display": "R$133,55",
          "currency": "BRL",
          "symbol": "R$"
        },
        "discountBps": 70,
        "measurements": [
          "Foot length: 16 cm"
        ]
      }
    ],
    "seller": {
      "mallId": 4785488442765,
      "name": "Yuanqing children shoes",
      "salesTip": "(37K+ sold)"
    },
    "review": {
      "rating": 4.8,
      "reviewCount": 389
    }
  }
}

Referência completa de campos

Path Tipo Descrição Exemplo
data.additionalProperties[].name string Nome de uma especificacao do produto. Origin
data.additionalProperties[].value string Valor principal da especificacao. Zhejiang,China
data.additionalProperties[].values[] string Valores da especificacao quando a Temu retorna lista. Zhejiang,China
data.availability string Disponibilidade normalizada, por exemplo InStock. InStock
data.canonicalUrl string URL canonica em goods.html montada com goods_id. https://www.temu.com/goods.html?goods_id=601099588578152
data.categoryIds[] number IDs de categorias retornados pela Temu. 27011
data.currency string Moeda normalizada em ISO 4217 quando disponivel. BRL
data.currencyRaw string Simbolo ou valor bruto de moeda retornado pela Temu. R$
data.description string Descricao curta ou titulo descritivo do produto. French Mary Jane shoes with flexible sole and breathable upper.
data.detailImages[] string URLs das imagens de detalhe/descritivas. https://img.kwcdn.com/product/open/1d01a96a.jpg
data.images[].url string URLs das imagens de galeria. https://img.kwcdn.com/product/fancy/f2c1c4e3.jpg
data.itemId string Identificador secundario do item quando retornado pela Temu. RF152745
data.mainImage.url string URL da imagem principal. https://img.kwcdn.com/product/fancy/f2c1c4e3.jpg
data.name string Nome do produto. French Mary Jane Shoes for Girls
data.price number Preco principal normalizado como numero decimal. 98.04
data.priceDisplay string Preco principal formatado para exibicao. R$98,04
data.priceFormat.currency_code string Codigo de moeda informado no bloco de formatacao. BRL
data.priceFormat.decimal_separator string Separador decimal usado pela Temu. ,
data.priceFormat.decimals number Quantidade de casas decimais usada no preco. 2
data.priceFormat.grouping_separator string Separador de milhar usado pela Temu. .
data.priceFormat.symbol string Simbolo usado na exibicao de preco. R$
data.prices.max.amount number Maior preco como decimal. 133.55
data.prices.max.amountMinor number Maior preco em unidades menores da moeda. 13355
data.prices.max.display string Maior preco formatado. R$133,55
data.prices.min.amount number Menor preco como decimal. 98.04
data.prices.min.amountMinor number Menor preco em unidades menores da moeda. 9804
data.prices.min.display string Menor preco formatado. R$98,04
data.prices.rangeDisplay string Faixa de preco formatada quando ha variacao. R$98,04-R$133,55
data.productId string Identificador goods_id da Temu extraido da URL e confirmado no payload. 601099588578152
data.region string Regiao Temu inferida pelo host da URL. br
data.review.rating number Nota media do produto. 4.8
data.review.reviewCount number Quantidade de avaliacoes. 389
data.seller.mallId number Identificador da loja na Temu. 4785488442765
data.seller.name string Nome da loja/seller. Yuanqing children shoes
data.seller.salesTip string Texto de vendas ou reputacao do seller. (37K+ sold)
data.shipping.companies[].name string Nome da transportadora ou canal logistico. Temu Logistics
data.shipping.companies[].trackingText string Texto de rastreamento do canal logistico. Tracked shipping
data.shipping.promiseText string Texto de prazo/promessa de entrega. Delivery in 7-13 days
data.shipping.text string Texto resumido de frete. Free shipping
data.shipping.timeDistribution.days number Prazo estimado central em dias. 10
data.shipping.timeDistribution.maxDays number Maior prazo estimado em dias. 13
data.shipping.timeDistribution.minDays number Menor prazo estimado em dias. 7
data.soldQuantity number Quantidade vendida normalizada quando a Temu fornece o sinal. 3700
data.soldQuantityText string Texto de vendas como aparece na experiencia Temu. 3,7K+ sold
data.status.isOnSale boolean Indica se o item esta em venda ativa. true
data.status.text string Status textual do produto. NORMAL
data.stock number Estoque agregado ou estoque da melhor variacao disponivel. 10
data.url string URL original solicitada. https://m.temu.com/product-g-601099588578152.html
data.variants[].discountBps number Desconto em basis points quando retornado pela Temu. 70
data.variants[].goodsId number goods_id associado a variacao. 601099588578152
data.variants[].imageUrl string Imagem especifica da variacao. https://img.kwcdn.com/product/fancy/f2c1c4e3.jpg
data.variants[].isOnSale boolean Indica se a variacao esta ativa para venda. true
data.variants[].linePrice.amount number Preco de linha/de referencia da variacao como decimal. 133.55
data.variants[].linePrice.display string Preco de linha/de referencia da variacao formatado. R$133,55
data.variants[].measurements[] string Medidas ou detalhes especificos da variacao. Foot length: 16 cm
data.variants[].normalPrice.amount number Preco normal da variacao como decimal. 105.42
data.variants[].normalPrice.display string Preco normal da variacao formatado. R$105,42
data.variants[].price.amount number Preco atual da variacao como decimal. 98.04
data.variants[].price.display string Preco atual da variacao formatado. R$98,04
data.variants[].skuId number Identificador da variacao/SKU. 17592492785911
data.variants[].soldQuantity number Quantidade vendida da variacao quando disponivel. 125
data.variants[].specs object Mapa de atributos selecionaveis da variacao, como cor e tamanho. {"Color":"Beige","Size":"24.5"}
data.variants[].stockQuantity number Estoque da variacao. 10
executionId string (uuid) Identificador unico da execucao do worker. 88888888-8888-4888-8888-888888888888
requestId string (uuid) Identificador unico da requisicao na GeckoAPI. 77777777-7777-4777-8777-777777777777

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.