PDP por URL mobile
Consulta basica para pagina de produto da Temu.
{
"url": "https://m.temu.com/product-g-601099588578152.html",
"target": "temu.com",
"type": "pdp"
} // docs
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.
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"
}'
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
temu_com_pdp
Auth
Bearer ou X-API-Key
{
"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"
}
}
}
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 |
Consulta basica para pagina de produto da Temu.
{
"url": "https://m.temu.com/product-g-601099588578152.html",
"target": "temu.com",
"type": "pdp"
} Tambem aceita URLs desktop da Temu com goods_id.
{
"url": "https://www.temu.com/goods.html?goods_id=601099588578152",
"target": "temu.com",
"type": "pdp"
} Mapa de paths de saída com tipo esperado para esta API.
{
"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"
} {
"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
}
}
} | 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 |
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. |