# Falabella Colombia Scraper - Products, Prices & Ratings (`atesen-software/falabella-colombia-scraper`) Actor

Scrape public product search and category pages of falabella.com.co: title, price, rating, review count, seller and product ID. Search by keyword or paste category URLs. $1.50 per 1,000 results.

- **URL**: https://apify.com/atesen-software/falabella-colombia-scraper.md
- **Developed by:** [Atesen Software](https://apify.com/atesen-software) (community)
- **Categories:** E-commerce, Marketing
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.50 / 1,000 product 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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Falabella Colombia Scraper

### What does the Falabella Colombia Scraper do?

**Falabella Colombia Scraper** extracts public product listings from
[falabella.com.co](https://www.falabella.com.co), the largest e-commerce marketplace in Colombia.
Give it a search keyword (for example `celular`) or any public category/search URL, and it walks the
public listing pages and saves structured product data into a dataset — ideal as a
**Falabella price-monitoring, market-research and e-commerce analytics tool**.

- 🧾 **Structured rows** — every product is saved with title, price, currency, URL, image, rating, reviews, seller and product ID.
- 🔗 **Public pages only** — search results and category pages, exactly what an anonymous visitor sees. No logins, no private data.
- 📄 **Built-in pagination** — it keeps requesting the next page of a listing until your `maxItems` limit is reached.
- 💸 **Pay per event** — you are charged only for products actually delivered to you.

### Why use it?

- 💡 **Competitor intelligence**: track prices, sellers and assortment in Colombian retail.
- 📊 **Market monitoring**: export to CSV/JSON and feed BI, repricing or alerting tools.
- ⏱️ **Scheduled runs**: run it hourly/daily and diff the price history over time.
- 🔒 **Ethical scraping**: the Actor runs its own real Chromium browser against public pages, obeys the site's
  `robots.txt` (which welcomes robots and lists public sitemaps), uses low concurrency and delays, backs off
  on HTTP 429/5xx errors, and **never solves CAPTCHAs or bypasses anti-bot systems**.

### What data can the Falabella Colombia Scraper extract?

| Field | Type | Description |
| --- | --- | --- |
| `title` | string | Product title as shown on the public listing page |
| `price` | number | Current selling price (best available price, e.g. the CMR/event price when shown) |
| `currency` | string | Currency of the site (e.g. `COP`) |
| `url` | string | Public product page URL |
| `imageUrl` | string | Public product image URL |
| `rating` | number | Average customer rating shown on the listing (null when not yet rated) |
| `reviewCount` | number | Number of customer reviews shown on the listing |
| `seller` | string | Marketplace seller shown for the listing row |
| `productId` | string | Falabella product identifier |

### How to scrape Falabella Colombia

1. Add the Actor to your Apify account (or run it locally with `apify run`).
2. In the **Input** tab choose either:
   - **Search keyword** — e.g. `celular`, or
   - **Start URLs** — any public falabella.com.co search or category page, e.g.
     `https://www.falabella.com.co/falabella-co/category/cat1660941/Celulares-y-Telefonos`
3. Set **Max items** (the crawl stops politely once it is reached).
4. Run the Actor. Results appear in the dataset, which you can download as JSON, CSV, Excel or HTML.
5. Large runs: the Actor paginates automatically (`?page=2`, `?page=3`, ...), staying polite (default
   2 concurrent pages, a pause after each page, retries with back-off on 429/5xx).

### How much will it cost to scrape Falabella Colombia?

This Actor uses **Apify's pay-per-event model**:

- **`results` event**: you are charged once per product saved to the dataset, so 100 results = 100 charged events.
- Apify also offers a free tier with usage credits — small keywords/categories usually fit in it.
- For larger crawls, the total cost is simply `maxItems × event price` (each event is one result row),
  plus the platform compute-time cost of the run itself. The `results` event price is shown on the Actor page;
  pricing is configured in Apify Console and can be adjusted there.

To limit compute-time cost, keep `maxItems` as small as your use case needs. Every run stops automatically
the moment your limit is reached.

### Input

See the **input tab** for the full list of options:

- `search` (string, default `celular`) — keyword for the public search results page.
- `startUrls` (array) — public category/search URLs; takes priority over `search`.
- `maxItems` (integer, default `100`) — hard stop for the run.
- `maxConcurrency` (default 2), `requestDelaySecs` (default 2) — politeness knobs.
- `headless` (default true), `navigationTimeoutSecs`, `challengeWaitSecs` — browser behaviour (see disclaimer below).
- `maxRetries` (default 4) — retries with increasing back-off for HTTP 429/5xx.
- `proxyConfiguration` — optional Apify Proxy settings (billed separately on the platform).

### Output

Each dataset item is one public product listing:

```json
{
  "title": "MOTO E13 64GB NEGRO",
  "price": 245900,
  "currency": "COP",
  "url": "https://www.falabella.com.co/falabella-co/product/12345678/example-product",
  "imageUrl": "https://media.falabella.com.co/falabellaCO/12345679_01/public",
  "rating": 4.7,
  "reviewCount": 231,
  "seller": "Falabella",
  "productId": "12345678"
}
```

Fields are `null` when the public page does not show them. You can download the dataset
in JSON, CSV, Excel or HTML.

### Important limitations and ethics

- The Actor **only** visits public, non-authenticated pages. It does not log in, does not read
  private/price-zone-specific data, and never harvests personal data of sellers or reviewers.
- falabella.com.co is serviced by a **bot-protection (Cloudflare) browser check**. THIS ACTOR DOES NOT BYPASS
  IT. It launches a real Chromium browser and, when the site shows its check, **waits passively for the check
  to clear the same way a regular visitor's browser would**. It never clicks, crawls around, or solves
  CAPTCHAs, and does not use stealth/fingerprint-spoofing tricks. If the site hard-blocks automated access
  or shows an interactive CAPTCHA, the run **stops WITHOUT fabricating results** and reports it in the logs.
- Because the site's own anti-bot systems decide who gets served, successful scrape availability can vary
  by region/IP, and platform bonuses such as Apify Proxy may improve it (paid feature — your choice).
- Respect `robots.txt` and terms of service; scrape only what you need. Falabella's robots.txt currently
  welcomes robots (`User-agent: * / Disallow:`) and publishes public sitemaps at
  `https://www.falabella.com.co/static/site/sitemaps/...`.

### Legal disclaimer

> Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location.
> They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used
> for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain
> personal data. Personal data is protected by the GDPR in the European Union and by other regulations around
> the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure
> whether your reason is legitimate, consult your lawyers.

### FAQ

**Why do some rows have no `price`/`rating`?** — Not every public listing row shows a price (bundle types,
out-of-stock items) or a star rating. The Actor keeps the field but leaves it `null`.

**Why does the same product list twice?** — Row-level listings repeat across pages as the store re-ranks
its listings. The Actor de-duplicates by product ID within a single run.

**Can I scrape Falabella Chile (`falabella.com`) or Peru (`falabella.com.pe`)?** — Pass their public category or
search URLs in `startUrls`. The `search` keyword input currently starts on the Colombia site.

### Feedback and support

Open an issue in the Issues tab of the Actor page, or contact the publisher. Programmatic access is available
through the [API tab](https://docs.apify.com/api/v2).

# Actor input Schema

## `search` (type: `string`):

Keyword searched on the public Falabella Colombia search results page (e.g. "celular"). Ignored when Start URLs are provided.

## `startUrls` (type: `array`):

Public search or category pages of falabella.com.co to scrape instead of the keyword search, for example https://www.falabella.com.co/falabella-co/category/cat1660941/Celulares-y-Telefonos

## `maxItems` (type: `integer`):

Maximum number of products to scrape in one run. The Actor paginates public listing pages until this limit is reached, then stops politely.

## `maxConcurrency` (type: `integer`):

Maximum number of browser pages opened in parallel. Keep this low (1-3) to stay polite to falabella.com.co.

## `requestDelaySecs` (type: `number`):

Extra pause kept open after each page is processed, to avoid hammering the site.

## `headless` (type: `boolean`):

Run the browser without a visible window (try false locally if the site's browser check will not clear headlessly).

## `navigationTimeoutSecs` (type: `integer`):

Maximum time allowed for a single page to load.

## `challengeWaitSecs` (type: `integer`):

Maximum time to passively wait for the site's own browser check to clear. The Actor never solves or bypasses CAPTCHAs; it only waits.

## `maxRetries` (type: `integer`):

How many times a failed page (HTTP 429/5xx, timeout) is retried with increasing back-off.

## `proxyConfiguration` (type: `object`):

Optional Apify Proxy settings. Leave empty to connect directly. Enabling Apify Proxy costs extra on the platform.

## Actor input object example

```json
{
  "search": "celular",
  "startUrls": [
    {
      "url": "https://www.falabella.com.co/falabella-co/category/cat1660941/Celulares-y-Telefonos"
    }
  ],
  "maxItems": 100,
  "maxConcurrency": 2,
  "requestDelaySecs": 2,
  "headless": true,
  "navigationTimeoutSecs": 90,
  "challengeWaitSecs": 45,
  "maxRetries": 4,
  "proxyConfiguration": {}
}
```

# Actor output Schema

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

Dataset containing all scraped public product listings

# 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 = {
    "startUrls": [
        {
            "url": "https://www.falabella.com.co/falabella-co/category/cat1660941/Celulares-y-Telefonos"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("atesen-software/falabella-colombia-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 = { "startUrls": [{ "url": "https://www.falabella.com.co/falabella-co/category/cat1660941/Celulares-y-Telefonos" }] }

# Run the Actor and wait for it to finish
run = client.actor("atesen-software/falabella-colombia-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.falabella.com.co/falabella-co/category/cat1660941/Celulares-y-Telefonos"
    }
  ]
}' |
apify call atesen-software/falabella-colombia-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,atesen-software/falabella-colombia-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/lyA7WanYV2iWiw50O/builds/Zx8sS7xpSDBgv9xtz/openapi.json
