# Magazineluiza Product Reviews Scraper (`stealth_mode/magazineluiza-product-reviews-scraper`) Actor

Extract product reviews from MagazineLuiza.com.br, Brazil's leading e-commerce platform. Collect ratings, customer feedback, recommendations, and review metadata for market research, sentiment analysis, and product intelligence.

- **URL**: https://apify.com/stealth\_mode/magazineluiza-product-reviews-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## MagazineLuiza Product Reviews Scraper: Extract Customer Feedback Data

### Understanding MagazineLuiza Reviews and Their Business Value

MagazineLuiza (Magalu) is Brazil's largest retail company and e-commerce platform, serving millions of customers across electronics, appliances, furniture, and consumer goods. Product reviews on Magalu provide authentic customer feedback crucial for understanding product performance, customer satisfaction, and purchase decisions in the Brazilian market.

Review data reveals what customers actually think about products—quality issues, feature satisfaction, delivery experiences, and value perceptions. For brands selling on Magalu, this feedback drives product improvements and reputation management. For market researchers, it provides sentiment trends across product categories. For retailers and competitors, it offers competitive intelligence on product-market fit.

Manually collecting reviews across multiple products and pages is time-intensive. This scraper automates extraction, delivering structured review datasets ready for sentiment analysis, quality monitoring, or competitive benchmarking.

### What This Scraper Extracts

The scraper processes MagazineLuiza product review pages, capturing individual customer reviews with complete metadata.

**Core Fields:**

**Product:** Product information including name, ID, and URL—links reviews to specific items.

**Review ID & Campaign ID:** Unique identifiers for tracking individual reviews and promotional campaigns.

**Description:** Full review text containing customer opinions, experiences, and detailed feedback.

**Recommended:** Boolean indicating if customer recommends the product—key satisfaction metric.

**Status:** Review publication status (approved, pending, rejected).

**Rating:** Numerical score (typically 1-5 stars)—primary satisfaction indicator.

**Title:** Review headline summarizing customer's main point.

**Submission Date:** Timestamp enabling trend analysis and recency filtering.

**User Data:** Reviewer information (may include name, location, verification status).

**Attributes:** Review characteristics (verified purchase, helpful votes).

**Dimension Defs & Dimensions:** Structured rating breakdowns (e.g., quality, value, delivery) providing granular satisfaction metrics.

**Use Cases:**

**E-commerce Brands** monitor customer feedback, identify product issues, and track satisfaction trends. **Market Researchers** analyze sentiment across categories, demographics, and time periods. **Retailers** benchmark competitor products and identify market gaps. **Product Managers** prioritize improvements based on customer pain points.

### Input Configuration

**Example:**

```json
{
  "urls": ["https://www.magazineluiza.com.br/review/240066500/notebook-asus-vivobook-go-15-amd-ryzen-5-7520u-8gb-ram-512gb-ssd-156-full-hd-windows-11-e1504fa-nj836w/IN/NASS/?page=2"],
  "ignore_url_failures": true,
  "max_items_per_url": 50
}
````

**Parameters:**

**urls:** Array of product review page URLs from MagazineLuiza. Navigate to a product's review section on Magalu, copy the URL. Include pagination URLs (e.g., `?page=2`) to collect reviews across multiple pages. Can add multiple product URLs to batch process.

**ignore\_url\_failures:** Set `true` to continue scraping remaining URLs if some fail (recommended for batch processing). Set `false` if all URLs must succeed.

**max\_items\_per\_url:** Maximum reviews to extract per URL (default: 20, recommended: 50-100 for comprehensive collection). Magalu typically displays 10-20 reviews per page, so higher values enable multi-page extraction from single URL.

**Finding Review URLs:** Go to any product on magazineluiza.com.br → scroll to reviews section → click to view all reviews → copy URL from browser. For multi-page extraction, manually increment page parameter or set high `max_items_per_url`.

### Output Structure and Field Definitions

**Sample Output:**

```json
{
  "product": {
    "images": [],
    "product_link": "https://mixer-hybrid.magazineluiza.com.br//notebook-asus-vivobook-go-15-amd-ryzen-5-7520u-8gb-ram-512gb-ssd-156-full-hd-windows-11-e1504fa-nj836w/p/240066500/in/nass/",
    "product_name": null,
    "rating_value": "5",
    "sku": "240066500",
    "videos": []
  },
  "review_id": "0dab0bd9-b1f1-430a-a283-b2d24c5d909f",
  "campaign_id": "CRM",
  "description": "Ótima qualidade!!",
  "recommended": null,
  "status": "APPROVED",
  "rating": 5,
  "title": null,
  "submission_date": "2026-05-02T10:23:06.533Z",
  "user_data": {
    "email": null,
    "name": "Manoel",
    "customer_id": null
  },
  "attributes": [
    {
      "label": "color",
      "value": "Mixed Black"
    }
  ],
  "dimension_defs": null,
  "dimensions": [
    {
      "id": "QualidadeGeral",
      "label": "Qualidade Geral",
      "rating": 5
    }
  ]
}
```

**Product:** Product object containing SKU, name, and identifier. **Purpose:** Link reviews to inventory systems, analyze feedback by product line.

**Review ID:** Unique review identifier. **Purpose:** Track individual reviews, avoid duplicates, reference specific feedback.

**Campaign ID:** Marketing campaign association. **Purpose:** Analyze review patterns from promotional periods, incentivized campaigns.

**Description:** Full customer review text. **Purpose:** Sentiment analysis, keyword extraction, identifying specific issues/praise.

**Recommended:** True/false recommendation flag. **Purpose:** Calculate net promoter score (NPS), overall satisfaction rate.

**Status:** Publication status. **Purpose:** Filter only published reviews, track moderation patterns.

**Rating:** Numerical score (1-5). **Purpose:** Calculate average ratings, distribution analysis, satisfaction metrics.

**Title:** Review headline. **Purpose:** Quick sentiment overview, headline analysis, summary displays.

**Submission Date:** Review timestamp. **Purpose:** Trend analysis, identify recent feedback, seasonal patterns.

**User Data:** Reviewer profile. **Purpose:** Demographic analysis (if location available), verified buyer filtering.

**Attributes:** Review metadata (verified purchase, helpful count). **Purpose:** Weight reviews by verification, identify most helpful feedback.

**Dimension Defs & Dimensions:** Multi-dimensional ratings (quality, delivery, value). **Purpose:** Granular satisfaction analysis, identify specific improvement areas.

### Step-by-Step Usage

1. **Identify Target Products:** Browse MagazineLuiza for products you want to analyze. Navigate to review sections.

2. **Collect Review URLs:** Copy URLs from review pages. For products with many reviews, include pagination URLs (`?page=1`, `?page=2`, etc.).

3. **Configure Input:** Add URLs to `urls` array. Set `max_items_per_url` based on review volume (50-100 for comprehensive extraction). Enable `ignore_url_failures` for robustness.

4. **Run Scraper:** Execute via Apify console. Typical run extracting 100 reviews completes in 1-2 minutes.

5. **Export Data:** Download as JSON for analysis tools, CSV for spreadsheets, or Excel for business reporting.

**Handling Pagination:** Either manually add page URLs to `urls` array, or set high `max_items_per_url` to let scraper automatically paginate.

### Strategic Applications

**Product Quality Monitoring:** Track review sentiment over time. Identify emerging quality issues from description keywords and rating drops.

**Competitive Intelligence:** Compare review volumes, ratings, and sentiment between your products and competitors on Magalu.

**Sentiment Analysis:** Use description field for NLP sentiment analysis. Identify common praise themes and complaint patterns.

**Feature Demand Analysis:** Extract feature mentions from reviews. Understand which product attributes customers value most.

**Customer Satisfaction Trends:** Track rating distributions and recommendation rates by time period. Identify seasonal patterns or campaign impacts.

**Dimension-Level Insights:** Analyze granular ratings (quality, value, delivery) to pinpoint specific improvement areas beyond overall scores.

### Best Practices

**Regular Scraping:** Run weekly to track new reviews and sentiment trends. Store historical data for longitudinal analysis.

**Segmentation:** Collect reviews by product category, price range, or brand for targeted analysis.

**Verification Filtering:** Prioritize verified purchase reviews for authentic feedback. Use attributes field to filter.

**Sentiment Enrichment:** Combine review text with sentiment analysis tools or LLMs to classify positive/negative/neutral at scale.

**Translation:** For international analysis, translate Portuguese reviews using translation APIs while preserving original text.

**Quality Checks:** Validate that ratings match descriptions. Flag suspicious patterns (all 5-stars from new accounts).

### Conclusion

The MagazineLuiza Product Reviews Scraper transforms customer feedback into actionable intelligence for Brazil's largest e-commerce platform. Whether monitoring product performance, conducting competitive analysis, or understanding customer sentiment, this tool delivers the structured review data needed for data-driven decisions in the Brazilian market.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the product reviews you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.magazineluiza.com.br/review/240066500/notebook-asus-vivobook-go-15-amd-ryzen-5-7520u-8gb-ram-512gb-ssd-156-full-hd-windows-11-e1504fa-nj836w/IN/NASS/?page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.magazineluiza.com.br/review/240066500/notebook-asus-vivobook-go-15-amd-ryzen-5-7520u-8gb-ram-512gb-ssd-156-full-hd-windows-11-e1504fa-nj836w/IN/NASS/?page=2"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/magazineluiza-product-reviews-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://www.magazineluiza.com.br/review/240066500/notebook-asus-vivobook-go-15-amd-ryzen-5-7520u-8gb-ram-512gb-ssd-156-full-hd-windows-11-e1504fa-nj836w/IN/NASS/?page=2"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/magazineluiza-product-reviews-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.magazineluiza.com.br/review/240066500/notebook-asus-vivobook-go-15-amd-ryzen-5-7520u-8gb-ram-512gb-ssd-156-full-hd-windows-11-e1504fa-nj836w/IN/NASS/?page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/magazineluiza-product-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/magazineluiza-product-reviews-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Magazineluiza Product Reviews Scraper",
        "description": "Extract product reviews from MagazineLuiza.com.br, Brazil's leading e-commerce platform. Collect ratings, customer feedback, recommendations, and review metadata for market research, sentiment analysis, and product intelligence.",
        "version": "0.0",
        "x-build-id": "nzQxHKNyfVSQtfnZ0"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~magazineluiza-product-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-magazineluiza-product-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/stealth_mode~magazineluiza-product-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-magazineluiza-product-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/stealth_mode~magazineluiza-product-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-magazineluiza-product-reviews-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "title": "URLs of the product reviews urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the product reviews you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
