# Sodimac & Easy Chile Price Tracker (`sheshinmcfly/sodimac-easy-price-scraper`) Actor

Monitor and extract product prices from Sodimac Chile and Easy Chile � two of the largest home improvement retailers in the country. Track sale prices, internet discounts, and product details. Export to CSV or JSON for price comparison and market analysis.

- **URL**: https://apify.com/sheshinmcfly/sodimac-easy-price-scraper.md
- **Developed by:** [Sheshinmcfly](https://apify.com/sheshinmcfly) (community)
- **Categories:** E-commerce, Business, Automation
- **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.

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

## Sodimac & Easy Chile Price Tracker — Construction & Home Products

Extract and monitor product prices from **Sodimac Chile** (sodimac.cl) and **Easy Chile** (easy.cl) — the two largest home improvement and construction retail chains in Chile, together covering thousands of SKUs across tools, materials, paint, appliances, and more.

Search by keywords, compare prices between stores, and detect discounts automatically — no login required.

---

### What data does it extract?

| Field | Description | Example |
|---|---|---|
| `name` | Product name | "Cemento Melón Corriente 25 kg" |
| `store` | Store name | `Sodimac` / `Easy` |
| `sku` | Product SKU/code | `338845X` |
| `price` | Current price in CLP | `4990` |
| `priceFormatted` | Formatted price | `"$4.990"` |
| `previousPrice` | Original price before discount | `6990` |
| `discountPercent` | Discount percentage | `28` |
| `brand` | Brand name | `"Melón"` |
| `category` | Product category | `"Construcción"` |
| `imageUrl` | Product image URL | `"https://..."` |
| `url` | Direct product URL | `"https://..."` |
| `searchTerm` | Search term used | `"cemento"` |
| `extractedAt` | Extraction timestamp | `"2026-04-22T12:00:00Z"` |

---

### Use cases

- **Construction company procurement** — Track real-time prices for cement, steel rebar, paint, and fixtures. Export to spreadsheets for cost estimation.
- **Price comparison** — Search the same product across Sodimac and Easy simultaneously to always buy at the best price.
- **Discount hunting** — Filter results to show only products on sale and monitor weekly promotions.
- **Market research** — Analyze pricing trends for home improvement products across regions of Chile.
- **E-commerce intelligence** — Benchmark your own product prices against the largest Chilean retailers.
- **Real estate & construction projects** — Quickly estimate material budgets for renovation or construction projects.

---

### Input parameters

```json
{
  "mode": "search",
  "searchTerms": ["cemento", "pintura látex", "porcelanato"],
  "stores": "both",
  "maxResultsPerTerm": 50,
  "onlyDiscounts": false
}
````

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `mode` | string | `"search"` | `"search"` to search by keyword, `"url"` to scrape specific product URLs |
| `searchTerms` | array | `["cemento"]` | Keywords to search (e.g. `"pintura"`, `"baldosa"`, `"fierro corrugado"`) |
| `productUrls` | array | `[]` | Direct product URLs (used when `mode` is `"url"`) |
| `stores` | string | `"both"` | Which stores to scrape: `"sodimac"`, `"easy"`, or `"both"` |
| `maxResultsPerTerm` | integer | `50` | Max products to extract per search term |
| `onlyDiscounts` | boolean | `false` | If `true`, only return products currently on sale |

***

### Example output (JSON)

```json
{
  "name": "Cemento Polpaico 25 kilos",
  "store": "Sodimac",
  "sku": "338845X",
  "price": 4790,
  "priceFormatted": "$4.790",
  "previousPrice": 5990,
  "discountPercent": 20,
  "brand": "Polpaico",
  "category": "Construcción",
  "imageUrl": "https://sodimac.cl/img/product.jpg",
  "url": "https://www.sodimac.cl/sodimac-cl/product/338845X/cemento-polpaico-25-kilos/338845X/",
  "searchTerm": "cemento",
  "extractedAt": "2026-04-22T03:00:00.000Z"
}
```

***

### Popular search terms

Try these search terms to get started:

**Construction materials:** `cemento`, `fierro corrugado`, `ladrillos`, `porcelanato`, `baldosas`, `yeso`, `hormigón`

**Tools:** `taladro`, `sierra circular`, `amoladora`, `destornillador`, `martillo`, `compresor`

**Paint:** `pintura látex`, `pintura esmalte`, `barniz`, `impermeabilizante`, `sellador`

**Plumbing & electrical:** `cañería pvc`, `cable eléctrico`, `interruptor`, `grifo`, `lavamanos`

**Appliances & fixtures:** `ventilador`, `calefactor`, `ducha`, `grifería`, `lavadora`

***

### Performance

- Extracts ~25–50 products per search term in under 15 seconds
- Runs both Sodimac and Easy searches in parallel
- No proxy required for most searches

***

### Keywords

Sodimac scraper, Easy Chile scraper, precios construcción Chile, monitor precios ferretería, construction materials Chile prices, Sodimac data extraction, Easy.cl price tracker, home improvement prices Chile, Sodimac API, Easy Chile API, Chilean retail scraper, precio cemento Chile, ferretería online Chile

***

### Legal disclaimer

This actor extracts **publicly available commercial data only** from Sodimac Chile (sodimac.cl) and Easy Chile (easy.cl), in compliance with Chilean Law 19.628 on the Protection of Private Life (*Ley 19.628 sobre Protección de la Vida Privada*).

**What this actor collects:**

- Product names, prices, SKUs, and discounts (public commercial data)
- Brand names, categories, and product image URLs

**What this actor does NOT collect:**

- Personal data of any kind (names, RUT, emails, phone numbers)
- Any data requiring a login or authentication

The data extracted is identical to what any visitor can view freely by browsing these websites. Users are solely responsible for ensuring their use complies with applicable laws in their jurisdiction.

# Actor input Schema

## `mode` (type: `string`):

search: buscar por términos. urls: extraer desde URLs específicas.

## `searchTerms` (type: `array`):

Lista de productos a buscar (modo search). Ej: cemento, pintura latex, puertas

## `productUrls` (type: `array`):

URLs directas de productos Sodimac o Easy (modo urls)

## `stores` (type: `string`):

Selecciona una o ambas tiendas

## `maxResultsPerTerm` (type: `integer`):

Cuántos productos extraer por cada término de búsqueda

## `onlyDiscounts` (type: `boolean`):

Filtrar solo productos que tengan descuento activo

## Actor input object example

```json
{
  "mode": "search",
  "searchTerms": [
    "cemento",
    "pintura"
  ],
  "stores": "both",
  "maxResultsPerTerm": 50,
  "onlyDiscounts": false
}
```

# Actor output Schema

## `dataset` (type: `string`):

All scraped products stored in the default dataset.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("sheshinmcfly/sodimac-easy-price-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("sheshinmcfly/sodimac-easy-price-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 '{}' |
apify call sheshinmcfly/sodimac-easy-price-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=sheshinmcfly/sodimac-easy-price-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Sodimac & Easy Chile Price Tracker",
        "description": "Monitor and extract product prices from Sodimac Chile and Easy Chile � two of the largest home improvement retailers in the country. Track sale prices, internet discounts, and product details. Export to CSV or JSON for price comparison and market analysis.",
        "version": "0.1",
        "x-build-id": "7g4SK3OWIRmNroG5g"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sheshinmcfly~sodimac-easy-price-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sheshinmcfly-sodimac-easy-price-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/sheshinmcfly~sodimac-easy-price-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sheshinmcfly-sodimac-easy-price-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/sheshinmcfly~sodimac-easy-price-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sheshinmcfly-sodimac-easy-price-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",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Modo",
                        "enum": [
                            "search",
                            "urls"
                        ],
                        "type": "string",
                        "description": "search: buscar por términos. urls: extraer desde URLs específicas.",
                        "default": "search"
                    },
                    "searchTerms": {
                        "title": "Términos de búsqueda",
                        "type": "array",
                        "description": "Lista de productos a buscar (modo search). Ej: cemento, pintura latex, puertas",
                        "default": [
                            "cemento",
                            "pintura"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "productUrls": {
                        "title": "URLs de productos",
                        "type": "array",
                        "description": "URLs directas de productos Sodimac o Easy (modo urls)",
                        "items": {
                            "type": "string"
                        }
                    },
                    "stores": {
                        "title": "Tiendas a monitorear",
                        "enum": [
                            "sodimac",
                            "easy",
                            "both"
                        ],
                        "type": "string",
                        "description": "Selecciona una o ambas tiendas",
                        "default": "both"
                    },
                    "maxResultsPerTerm": {
                        "title": "Máximo resultados por término",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Cuántos productos extraer por cada término de búsqueda",
                        "default": 50
                    },
                    "onlyDiscounts": {
                        "title": "Solo productos en oferta",
                        "type": "boolean",
                        "description": "Filtrar solo productos que tengan descuento activo",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
