Pular para o conteúdo

// docs

Magalu PDP

Extrai dados completos e estruturados de produto (PDP) da Magalu.

Quando usar este endpoint

sellerMetrics retorna vendas, reputação e ano de entrada da loja quando publicados. Reutiliza os dados do produto e faz uma consulta complementar à loja quando necessário; falhas ficam em sources. Seguidores permanecem null: a contagem não está disponível nas respostas nativas validadas. memberSince informa somente o ano, sem dia/mês. Os indicadores podem estar ausentes para a própria Magalu. Contagens usam value, text e relation: exact, greater_than, at_least, approximate ou unknown. Zero explícito permanece zero; ausência é null. O exemplo de resposta é ilustrativo.

Testar este endpoint no sandbox

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 '{
  "url": "https://www.magazineluiza.com.br/apple-iphone-15-128gb-azul-61-48mp-ios-5g/p/238034800/te/ip15/",
  "target": "magazineluiza.com.br",
  "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

magazineluiza_com_br_pdp

Auth

Bearer ou X-API-Key

magazineluiza_com_br_pdp tools/call
{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "magazineluiza_com_br_pdp",
    "arguments": {
      "url": "https://www.magazineluiza.com.br/apple-iphone-15-128gb-azul-61-48mp-ios-5g/p/238034800/te/ip15/",
      "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. - https://www.magazineluiza.com.br/apple-iphone-15-128gb-azul-61-48mp-ios-5g/p/238034800/te/ip15/
target
Fonte alvo da extração.
enum Obrigatório Sempre obrigatorio no payload e deve combinar com o seam. - magazineluiza.com.br
type
Tipo da extração: pdp, idp, plp, ilp, quote, review ou places.
enum Obrigatório Sempre obrigatorio no payload e deve combinar com o seam. - pdp

Exemplos de request

PDP por URL

Requisicao basica com URL canonica da pagina de produto.

PDP por URL
{
  "url": "https://www.magazineluiza.com.br/apple-iphone-15-128gb-azul-61-48mp-ios-5g/p/238034800/te/ip15/",
  "target": "magazineluiza.com.br",
  "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)",
  "notFound": "boolean (optional; true when the upstream entity was not found and data is null)",
  "data.canonicalUrl": "string",
  "data.cashPrice": "number",
  "data.price": "number",
  "data.regularPrice": "number",
  "data.sellerName": "string",
  "data.sellerId": "string",
  "data.sellerUrl": "string",
  "data.sellerCnpj": "string",
  "data.sellerSocialReason": "string",
  "data.sellerAddress": "string",
  "data.sellerCity": "string",
  "data.sellerState": "string",
  "data.sellerZipCode": "string",
  "data.sellerCountry": "string",
  "data.description": "string",
  "data.images[].url": "string",
  "data.mainImage.url": "string",
  "data.brand.name": "string",
  "data.aggregateRating.ratingValue": "number",
  "data.aggregateRating.reviewCount": "number",
  "data.aggregateRating.bestRating": "number",
  "data.currency": "string",
  "data.currencyRaw": "string",
  "data.breadcrumbs[].name": "string",
  "data.breadcrumbs[].url": "string",
  "data.sku": "string",
  "data.availability": "string",
  "data.name": "string",
  "data.url": "string",
  "data.additionalProperties[].name": "string",
  "data.additionalProperties[].value": "string",
  "data.color": "string",
  "data.otherSellers[].sellerName": "string",
  "data.otherSellers[].price": "number",
  "data.otherSellers[].sellerUrl": "string",
  "data.otherSellers[].sellerId": "string",
  "data.mpn": "string",
  "data.features[]": "string",
  "data.ean": "string",
  "data.installmentPrice": "number",
  "data.installmentCount": "number",
  "data.sellerMetrics": "object",
  "data.sellerMetrics.sellerId": "string | null",
  "data.sellerMetrics.collectedAt": "string (ISO 8601 UTC)",
  "data.sellerMetrics.followers": "{ value: number | null, text: string, relation: \"exact\" | \"greater_than\" | \"at_least\" | \"approximate\" | \"unknown\" } | null",
  "data.sellerMetrics.products": "{ value: number | null, text: string, relation: \"exact\" | \"greater_than\" | \"at_least\" | \"approximate\" | \"unknown\" } | null",
  "data.sellerMetrics.sales": "{ value: number | null, text: string, relation: \"exact\" | \"greater_than\" | \"at_least\" | \"approximate\" | \"unknown\" } | null",
  "data.sellerMetrics.salesPeriod": "string | null",
  "data.sellerMetrics.rating": "{ value: number, bestRating: number | null } | null",
  "data.sellerMetrics.memberSince": "{ year: number, text: string, precision: \"year\" } | null",
  "data.sellerMetrics.feedback": "{ count: number | null, positivePercentage: number | null, periodMonths: number, text: string } | null",
  "data.sellerMetrics.sources": "Array<{ url: string, status: \"success\" | \"unavailable\" | \"error\", errorCode: string | null }>",
  "data.sellerMetrics.sources[].url": "string",
  "data.sellerMetrics.sources[].status": "\"success\" | \"unavailable\" | \"error\"",
  "data.sellerMetrics.sources[].errorCode": "string | null"
}

Exemplo de response

responseExample
{
  "requestId": "44444444-1111-4111-8111-444444444444",
  "executionId": "44444444-2222-4222-8222-444444444444",
  "data": {
    "canonicalUrl": "https://www.magazineluiza.com.br/apple-iphone-15-128gb-azul-61-48mp-ios-5g/p/238034800/te/ip15/",
    "cashPrice": 4299,
    "price": 4776.67,
    "regularPrice": 7299,
    "sellerName": "Magalu",
    "sellerId": "magazineluiza",
    "sellerUrl": "https://www.magazineluiza.com.br/lojista/magazineluiza/",
    "sellerCnpj": "47960950000121",
    "sellerSocialReason": "Magazine Luiza SA",
    "sellerAddress": "Rua Voluntarios da Franca, 1465, Centro",
    "sellerCity": "Franca",
    "sellerState": "SP",
    "sellerZipCode": "14400900",
    "sellerCountry": "BR",
    "description": "Descrição principal",
    "images": [
      {
        "url": "https://a-static.mlcdn.com.br/1000x1000/main.jpg"
      }
    ],
    "mainImage": {
      "url": "https://a-static.mlcdn.com.br/1000x1000/main.jpg"
    },
    "brand": {
      "name": "Apple"
    },
    "aggregateRating": {
      "ratingValue": 4.88,
      "reviewCount": 3949,
      "bestRating": 5
    },
    "currency": "BRL",
    "currencyRaw": "R$",
    "breadcrumbs": [
      {
        "name": "iPhone",
        "url": "https://www.magazineluiza.com.br/iphone/celulares-e-smartphones/s/te/teip/"
      }
    ],
    "sku": "238034800",
    "availability": "InStock",
    "name": "Apple iPhone 15 128GB Azul 6,1\" 48MP iOS 5G",
    "url": "https://www.magazineluiza.com.br/apple-iphone-15-128gb-azul-61-48mp-ios-5g/p/238034800/te/ip15/?seller_id=magazineluiza",
    "additionalProperties": [
      {
        "name": "Marca",
        "value": "Apple"
      }
    ],
    "color": "Azul",
    "otherSellers": [
      {
        "sellerName": "Outro Seller",
        "price": 4899,
        "sellerUrl": "https://www.magazineluiza.com.br/lojista/outro-seller/",
        "sellerId": "outro-seller"
      }
    ],
    "mpn": "A3090",
    "features": [
      "Dynamic Island",
      "USB-C"
    ],
    "ean": "194253952768",
    "installmentPrice": 477.67,
    "installmentCount": 10,
    "sellerMetrics": {
      "sellerId": "magazineluiza",
      "collectedAt": "2026-10-29T22:00:00.000Z",
      "followers": null,
      "products": null,
      "sales": null,
      "salesPeriod": null,
      "rating": null,
      "memberSince": null,
      "feedback": null,
      "sources": [
        {
          "url": "https://magalu-app.luizalabs.com/v3/catalog/item/238034800/helper",
          "status": "unavailable",
          "errorCode": null
        }
      ]
    }
  }
}

Referência completa de campos

Path Tipo Descrição Exemplo
data.additionalProperties[].name string Campo data.additionalProperties[].name retornado no payload de resposta. Marca
data.additionalProperties[].value string Campo data.additionalProperties[].value retornado no payload de resposta. Apple
data.aggregateRating.bestRating number Campo data.aggregateRating.bestRating retornado no payload de resposta. 5
data.aggregateRating.ratingValue number Campo data.aggregateRating.ratingValue retornado no payload de resposta. 4.88
data.aggregateRating.reviewCount number Campo data.aggregateRating.reviewCount retornado no payload de resposta. 3949
data.availability string Campo data.availability retornado no payload de resposta. InStock
data.brand.name string Campo data.brand.name retornado no payload de resposta. Apple
data.breadcrumbs[].name string Campo data.breadcrumbs[].name retornado no payload de resposta. iPhone
data.breadcrumbs[].url string Campo data.breadcrumbs[].url retornado no payload de resposta. https://www.magazineluiza.com.br/iphone/celulares-e-smartphones/s/te/teip/
data.canonicalUrl string Campo data.canonicalUrl retornado no payload de resposta. https://www.magazineluiza.com.br/apple-iphone-15-128gb-azul-61-48mp-ios-5g/p/238034800/te/ip15/
data.cashPrice number Campo data.cashPrice retornado no payload de resposta. 4299
data.color string Campo data.color retornado no payload de resposta. Azul
data.currency string Campo data.currency retornado no payload de resposta. BRL
data.currencyRaw string Campo data.currencyRaw retornado no payload de resposta. R$
data.description string Campo data.description retornado no payload de resposta. Descrição principal
data.ean string Campo data.ean retornado no payload de resposta. 194253952768
data.features[] string Campo data.features[] retornado no payload de resposta. Dynamic Island
data.images[].url string Campo data.images[].url retornado no payload de resposta. https://a-static.mlcdn.com.br/1000x1000/main.jpg
data.installmentCount number Campo data.installmentCount retornado no payload de resposta. 10
data.installmentPrice number Campo data.installmentPrice retornado no payload de resposta. 477.67
data.mainImage.url string Campo data.mainImage.url retornado no payload de resposta. https://a-static.mlcdn.com.br/1000x1000/main.jpg
data.mpn string Campo data.mpn retornado no payload de resposta. A3090
data.name string Campo data.name retornado no payload de resposta. Apple iPhone 15 128GB Azul 6,1" 48MP iOS 5G
data.otherSellers[].price number Campo data.otherSellers[].price retornado no payload de resposta. 4899
data.otherSellers[].sellerId string Campo data.otherSellers[].sellerId retornado no payload de resposta. outro-seller
data.otherSellers[].sellerName string Campo data.otherSellers[].sellerName retornado no payload de resposta. Outro Seller
data.otherSellers[].sellerUrl string Campo data.otherSellers[].sellerUrl retornado no payload de resposta. https://www.magazineluiza.com.br/lojista/outro-seller/
data.price number Campo data.price retornado no payload de resposta. 4776.67
data.regularPrice number Campo data.regularPrice retornado no payload de resposta. 7299
data.sellerAddress string Campo data.sellerAddress retornado no payload de resposta. Rua Voluntarios da Franca, 1465, Centro
data.sellerCity string Campo data.sellerCity retornado no payload de resposta. Franca
data.sellerCnpj string Campo data.sellerCnpj retornado no payload de resposta. 47960950000121
data.sellerCountry string Campo data.sellerCountry retornado no payload de resposta. BR
data.sellerId string Campo data.sellerId retornado no payload de resposta. magazineluiza
data.sellerMetrics object Indicadores da loja do vendedor principal, separados das vendas e avaliações do produto. Campos sem informação permanecem null. {"sellerId":"magazineluiza","collectedAt":"2026-10-29T22:00:00.000Z","followers":null,"products":null,"sales":null,"salesPeriod":null,"rating":null,"memberSince":null,"feedback":null,"sources":[{"url":"https://magalu-app.luizalabs.com/v3/catalog/item/238034800/helper","status":"unavailable","errorCode":null}]}
data.sellerMetrics.collectedAt string (ISO 8601 UTC) Data/hora UTC da observação das métricas da loja. 2026-10-29T22:00:00.000Z
data.sellerMetrics.feedback { count: number | null, positivePercentage: number | null, periodMonths: number, text: string } | null Avaliações do vendedor nos últimos 12 meses: count, positivePercentage (0 a 100), periodMonths=12 e text. null se a janela não estiver disponível. null
data.sellerMetrics.followers { value: number | null, text: string, relation: "exact" | "greater_than" | "at_least" | "approximate" | "unknown" } | null Seguidores da loja: valor, texto visível e relação. null quando a fonte não informa. null
data.sellerMetrics.memberSince { year: number, text: string, precision: "year" } | null Ano de entrada da loja no marketplace, com texto original e precision=year. Não fornece dia/mês nem data legal de abertura da empresa. null
data.sellerMetrics.products { value: number | null, text: string, relation: "exact" | "greater_than" | "at_least" | "approximate" | "unknown" } | null Quantidade de produtos da loja: valor, texto visível e relação. null quando a fonte não informa. null
data.sellerMetrics.rating { value: number, bestRating: number | null } | null Reputação da loja e escala máxima publicada. Não é a avaliação do produto. null
data.sellerMetrics.sales { value: number | null, text: string, relation: "exact" | "greater_than" | "at_least" | "approximate" | "unknown" } | null Vendas da loja, separadas de soldCount do produto. Preserva faixas: +5mil vira value=5000, relation=greater_than. Não implica total exato. null
data.sellerMetrics.salesPeriod string | null Período declarado para vendas da loja; null quando não informado. Não assumir vendas vitalícias ou dos últimos 12 meses. null
data.sellerMetrics.sellerId string | null ID do vendedor principal ao qual estas métricas pertencem. magazineluiza
data.sellerMetrics.sources Array<{ url: string, status: "success" | "unavailable" | "error", errorCode: string | null }> Fontes consultadas: success indica seção de métricas encontrada; unavailable indica resposta sem seção compatível; error indica falha, detalhada por errorCode. Lista vazia indica ausência de consulta compatível. Uma falha complementar não impede retorno do produto. [{"url":"https://magalu-app.luizalabs.com/v3/catalog/item/238034800/helper","status":"unavailable","errorCode":null}]
data.sellerMetrics.sources[].errorCode string | null Código de falha HTTP, timeout ou erro de consulta; null quando não há erro. null
data.sellerMetrics.sources[].status "success" | "unavailable" | "error" Resultado da consulta de métricas da loja: success, unavailable ou error. unavailable
data.sellerMetrics.sources[].url string URL da fonte dos indicadores da loja. https://magalu-app.luizalabs.com/v3/catalog/item/238034800/helper
data.sellerName string Campo data.sellerName retornado no payload de resposta. Magalu
data.sellerSocialReason string Campo data.sellerSocialReason retornado no payload de resposta. Magazine Luiza SA
data.sellerState string Campo data.sellerState retornado no payload de resposta. SP
data.sellerUrl string Campo data.sellerUrl retornado no payload de resposta. https://www.magazineluiza.com.br/lojista/magazineluiza/
data.sellerZipCode string Campo data.sellerZipCode retornado no payload de resposta. 14400900
data.sku string Campo data.sku retornado no payload de resposta. 238034800
data.url string Campo data.url retornado no payload de resposta. https://www.magazineluiza.com.br/apple-iphone-15-128gb-azul-61-48mp-ios-5g/p/238034800/te/ip15/?seller_id=magazineluiza
executionId string (uuid) ID de execucao para rastreio e deduplicacao. 44444444-2222-4222-8222-444444444444
notFound boolean (optional; true when the upstream entity was not found and data is null) Present and true when the upstream entity was not found. In this case data is null and the request still completes successfully. N/A
requestId string (uuid) ID unico da requisicao no gateway. 44444444-1111-4111-8111-444444444444

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.