PDP by URL
Basic request with canonical URL of the product page.
{
"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
Extracts complete, structured product data (PDP) from Magalu.
magazineluiza.com.br:pdp · 1 credit per request
Standard credit cost. Your account pricing is shown in the sandbox.
Try this operation in the sandboxsellerMetrics returns followers, sales, reputation and the year the store joined, when published. Followers come from the exact count in the hybrid storefront: sellerMetrics.followers contains value (an integer), text (the number as a string) and relation="exact"; for example, {value: 137, text: "137", relation: "exact"}. The query uses the seller selected in the PDP, including when seller_id is present in the URL. Sales, reputation and membership year reuse product data and a supplementary store request when necessary. Follower enrichment runs alongside the native query with a total deadline of 20 seconds; failures are recorded in sources and do not prevent the product response. memberSince contains only the year, without a day or month. Magalu itself does not trigger a supplementary request and these metrics may be null, as in the illustrative example below. Counts use value, text and relation: exact, greater_than, at_least, approximate or unknown. An explicit zero stays zero; missing information is null.
curl -X POST https://api.geckoapi.com.br/v1/extract \
-H "Authorization: Bearer YOUR_API_KEY" \
-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"
}' Keep your API key on your server. See the quickstart for authentication and response handling.
The hosted MCP tool fixes target and type for this operation. Its remaining arguments use the same input rules as Extract.
POST /v1/mcp · Bearer or X-API-Key authentication
{
"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"
}
}
} Conditional fields depend on the alternatives and constraints in the rule column. Fields marked unsupported are omitted.
| Field | Type | Requirement | Rule | Default | Example |
|---|---|---|---|---|---|
| url URL extraction target. For some PLPs it can be omitted when API assembles URL from other fields. | string (URL) | Required | Required for this operation. | - | https://www.magazineluiza.com.br/apple-iphone-15-128gb-azul-61-48mp-ios-5g/p/238034800/te/ip15/ |
| target Target source for extraction. | enum | Required | Always mandatory in the payload and must match the operation. | - | magazineluiza.com.br |
| type Extraction type: pdp, idp, plp, ilp, quote, review or places. | enum | Required | Always mandatory in the payload and must match the operation. | - | pdp |
Basic request with canonical URL of the product page.
{
"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"
} Leaf paths and expected types. Field names and enum values are part of the API contract.
{
"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"
} Illustrative response. Product names, reviews and other source content retain their original language. Missing and null values do not imply zero stock, free shipping or zero reviews.
{
"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
}
]
}
}
} | Path | Type | Description | Example |
|---|---|---|---|
| data.additionalProperties[].name | string | Field data.additionalProperties[].name returned in the response payload. | Marca |
| data.additionalProperties[].value | string | data.additionalProperties[].value field returned in the response payload. | Apple |
| data.aggregateRating.bestRating | number | data.aggregateRating.bestRating field returned in the response payload. | 5 |
| data.aggregateRating.ratingValue | number | Field data.aggregateRating.ratingValue returned in the response payload. | 4.88 |
| data.aggregateRating.reviewCount | number | data.aggregateRating.reviewCount field returned in the response payload. | 3949 |
| data.availability | string | Field data.availability returned in the response payload. | InStock |
| data.brand.name | string | Field data.brand.name returned in the response payload. | Apple |
| data.breadcrumbs[].name | string | Field data.breadcrumbs[].name returned in the response payload. | iPhone |
| data.breadcrumbs[].url | string | Field data.breadcrumbs[].url returned in the response payload. | https://www.magazineluiza.com.br/iphone/celulares-e-smartphones/s/te/teip/ |
| data.canonicalUrl | string | data.canonicalUrl field returned in the response payload. | https://www.magazineluiza.com.br/apple-iphone-15-128gb-azul-61-48mp-ios-5g/p/238034800/te/ip15/ |
| data.cashPrice | number | Field data.cashPrice returned in the response payload. | 4299 |
| data.color | string | data.color field returned in the response payload. | Azul |
| data.currency | string | Field data.currency returned in the response payload. | BRL |
| data.currencyRaw | string | Field data.currencyRaw returned in the response payload. | R$ |
| data.description | string | Field data.description returned in the response payload. | Descrição principal |
| data.ean | string | Field data.ean returned in the response payload. | 194253952768 |
| data.features[] | string | Field data.features[] returned in the response payload. | Dynamic Island |
| data.images[].url | string | Field data.images[].url returned in the response payload. | https://a-static.mlcdn.com.br/1000x1000/main.jpg |
| data.installmentCount | number | Field data.installmentCount returned in the response payload. | 10 |
| data.installmentPrice | number | Field data.installmentPrice returned in the response payload. | 477.67 |
| data.mainImage.url | string | Field data.mainImage.url returned in the response payload. | https://a-static.mlcdn.com.br/1000x1000/main.jpg |
| data.mpn | string | data.mpn field returned in the response payload. | A3090 |
| data.name | string | Field data.name returned in the response payload. | Apple iPhone 15 128GB Azul 6,1" 48MP iOS 5G |
| data.otherSellers[].price | number | Field data.otherSellers[].price returned in the response payload. | 4899 |
| data.otherSellers[].sellerId | string | Field data.otherSellers[].sellerId returned in the response payload. | outro-seller |
| data.otherSellers[].sellerName | string | Field data.otherSellers[].sellerName returned in the response payload. | Outro Seller |
| data.otherSellers[].sellerUrl | string | data.otherSellers[].sellerUrl field returned in the response payload. | https://www.magazineluiza.com.br/lojista/outro-seller/ |
| data.price | number | data.price field returned in the response payload. | 4776.67 |
| data.regularPrice | number | data.regularPrice field returned in the response payload. | 7299 |
| data.sellerAddress | string | Field data.sellerAddress returned in the response payload. | Rua Voluntarios da Franca, 1465, Centro |
| data.sellerCity | string | data.sellerCity field returned in the response payload. | Franca |
| data.sellerCnpj | string | Field data.sellerCnpj returned in the response payload. | 47960950000121 |
| data.sellerCountry | string | Field data.sellerCountry returned in the response payload. | BR |
| data.sellerId | string | Field data.sellerId returned in the response payload. | magazineluiza |
| data.sellerMetrics | object | Top seller store indicators, separate from product sales and reviews. Fields without information remain 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) | Date/time UTC of observing store metrics. | 2026-10-29T22:00:00.000Z |
| data.sellerMetrics.feedback | { count: number | null, positivePercentage: number | null, periodMonths: number, text: string } | null | Seller ratings for the last 12 months: count, positivePercentage (0 a 100), periodMonths=12 and text. null if the window is not available. | null |
| data.sellerMetrics.followers | { value: number | null, text: string, relation: "exact" | "greater_than" | "at_least" | "approximate" | "unknown" } | null | Exact follower count of the selected seller's store, taken from sellerPage.stats.totalFollowers of the hybrid storefront. Example: {value: 137, text: "137", relation: "exact"}. text contains the number as string, without interface rounding. Reported zero remains zero; absence, failure or own seller Magalu returns null. | null |
| data.sellerMetrics.memberSince | { year: number, text: string, precision: "year" } | null | Year the store entered the marketplace, with original text and precision=year. It does not provide the day/month or legal data for opening the company. | null |
| data.sellerMetrics.products | { value: number | null, text: string, relation: "exact" | "greater_than" | "at_least" | "approximate" | "unknown" } | null | Quantity of products in the store: value, visible text and relationship. null when the source does not inform. | null |
| data.sellerMetrics.rating | { value: number, bestRating: number | null } | null | Store reputation and maximum published scale. It is not the evaluation of the product. | null |
| data.sellerMetrics.sales | { value: number | null, text: string, relation: "exact" | "greater_than" | "at_least" | "approximate" | "unknown" } | null | Store sales, separate from product soldCount. Preserves tracks: +5mil becomes value=5000, relation=greater_than. Does not imply exact total. | null |
| data.sellerMetrics.salesPeriod | string | null | Declared period for store sales; null when not informed. Do not assume lifetime sales or sales from the last 12 months. | null |
| data.sellerMetrics.sellerId | string | null | ID of the primary seller to which these metrics belong. | magazineluiza |
| data.sellerMetrics.sources | Array<{ url: string, status: "success" | "unavailable" | "error", errorCode: string | null }> | Sources consulted: success indicates metrics section found; unavailable indicates response without compatible section; error indicates failure, detailed by errorCode. Empty list indicates no compatible query. A complementary failure does not prevent the product from being returned. | [{"url":"https://magalu-app.luizalabs.com/v3/catalog/item/238034800/helper","status":"unavailable","errorCode":null}] |
| data.sellerMetrics.sources[].errorCode | string | null | Fault code HTTP, timeout or query error; null when there is no error. | null |
| data.sellerMetrics.sources[].status | "success" | "unavailable" | "error" | Store metrics query result: success, unavailable or error. | unavailable |
| data.sellerMetrics.sources[].url | string | URL. | https://magalu-app.luizalabs.com/v3/catalog/item/238034800/helper |
| data.sellerName | string | Field data.sellerName returned in the response payload. | Magalu |
| data.sellerSocialReason | string | Field data.sellerSocialReason returned in the response payload. | Magazine Luiza SA |
| data.sellerState | string | data.sellerState field returned in the response payload. | SP |
| data.sellerUrl | string | data.sellerUrl field returned in the response payload. | https://www.magazineluiza.com.br/lojista/magazineluiza/ |
| data.sellerZipCode | string | Field data.sellerZipCode returned in the response payload. | 14400900 |
| data.sku | string | data.sku field returned in the response payload. | 238034800 |
| data.url | string | Field data.url returned in the response payload. | 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 execution code for tracing and deduplication. | 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 unique to the request at the gateway. | 44444444-1111-4111-8111-444444444444 |
When supported by this operation, an entity not found upstream can return HTTP 200 with data: null and notFound: true. Check the documented response fields before interpreting an empty result. Source-specific behavior and exceptions are described above.
| HTTP status | Error code | Meaning |
|---|---|---|
| 400 | INVALID_PAYLOAD | Invalid JSON or a request that violates the documented validation rules. |
| 401 | UNAUTHORIZED | Missing authorization or an invalid API key or token. |
| 402 | INSUFFICIENT_CREDITS | The account has insufficient credits for this operation. |
| 403 | FORBIDDEN | The account does not have access, or the API is temporarily disabled. |
| 409 | EXECUTION_CONFLICT | The execution identifier conflicts with an incompatible execution state. |
| 429 | RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTS | A rate limit or simultaneous request limit was exceeded. |
| 5xx | UPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_FUNCTION_ERROR | An upstream, worker or gateway failure. Failed requests follow the platform refund policy. |