PDP por URL
Requisicao basica com URL canonica da pagina de produto.
{
"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"
} // docs
Extrai dados completos de produto (PDP) da Magalu via endpoint mobile GraphQL nao renderizado.
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://www.magazineluiza.com.br/apple-iphone-15-128gb-azul-61-48mp-ios-5g/p/238034800/te/ip15/",
"target": "magazineluiza.com.br",
"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
magazineluiza_com_br_pdp
Auth
Bearer ou X-API-Key
{
"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"
}
}
}
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.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 |
Requisicao basica com URL canonica da pagina de produto.
{
"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"
} Mapa de paths de saída com tipo esperado para esta API.
{
"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"
} {
"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
}
} | 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.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 |
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. |