Falabella Scraper - Products, Prices, Sellers & Reviews avatar

Falabella Scraper - Products, Prices, Sellers & Reviews

Pricing

from $1.20 / 1,000 product results

Go to Apify Store
Falabella Scraper - Products, Prices, Sellers & Reviews

Falabella Scraper - Products, Prices, Sellers & Reviews

Scrape Falabella, Latin America's leading retail marketplace: products with local prices, discounts, ratings and seller info across the Chile, Colombia and Peru storefronts. Search keywords or paste links, and monitor price changes with recurring updates.

Pricing

from $1.20 / 1,000 product results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Categories

Share

Falabella Marketplace Scraper: Products, Prices & Sellers

Falabella Marketplace Scraper turns Falabella (falabella.com) into a clean product data feed. One actor covers three country storefronts: Chile, Colombia and Peru, each its own catalogue with its own currency. Run keyword searches or paste your own product and listing links, get price, discount, rating and seller data on every row, add full product detail reads on demand, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.

Why This Scraper?

  • Three storefronts in one actor. Chile, Colombia and Peru, each with its own catalogue, currency and connection.
  • Two ways in. Run keyword searches on one storefront, or paste your own links: product pages, category pages, keyword collections, brand pages or search result pages.
  • Full listing data on every row. Price, was-price, discount, rating, review count, seller and the card's own badges (official seller, sponsored, best seller, installments, shipping flags).
  • Optional detail reads. Switch on the description, full specification table, category path, stock state, loyalty points, warranty code and the seller's registered business details, only when you need them.
  • Built for monitoring. Recurring updates label every record NEW, UPDATED, REAPPEARED or EXPIRED, so a scheduled run returns only what changed.
  • Resume support. Continue an interrupted run from its run id without paying for the same rows twice.
  • A refused run fails loudly. A run that is refused everywhere stops with a clear message; a genuinely empty search still succeeds, with zero rows and a visible note.

Use Cases

  • Price monitoring teams: track price and discount changes on a set of products or categories over time, with recurring updates flagging exactly what moved.
  • Marketplace analysts: compare the same categories and keywords across the Chilean, Colombian and Peruvian storefronts.
  • Brand and seller managers: watch a competitor's catalogue, ratings and seller badges across all three markets.
  • Deal and content sites: surface discounted, sponsored and best-seller items by category or keyword for a feed or newsletter.
  • Data teams: assemble structured product catalogues (price, brand, ratings, specifications) for pricing or demand models.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
recordType"product"
id"300000001"
skuId"300000002"
name"Mochila de muestra"
brand"MARCA MUESTRA"
urlLink to the product page
imageUrlMain product image
currency"CLP" (also "COP", "PEN" by market)
price / priceDisplay22990.0 / "$ 22.990"
oldPrice / discountPercent27990.0 / 18
ratingAverage / ratingCount4.6 / 128
sellerId / sellerName"S00042" / "Tienda de muestra"
officialSeller / sponsored / bestSellertrue / false / true (card badges)
installmentsInterest-free installment offers shown on the card (null when none)
shippingOptionsShipping flags the card shows, for example home delivery
market / marketHost"CL" / "www.falabella.com"
description / longDescriptionShort and extended product text (detail reads)
specificationsNamed attribute list, for example color and material (detail reads)
categoriesCategory path from the breadcrumb (detail reads)
outOfStock / stockUnitsStock state and per-variant counts (detail reads)
sellerDetails / sellerVerifiedSeller's registered business name, id and verification flag (detail reads)
cmrPoints / warrantyIdLoyalty points and warranty code (detail reads)
changeType / changedFields"NEW" / list of field names that moved (recurring updates)
firstSeenAt / lastSeenAtFirst and most recent sighting (recurring updates)

Every row also carries the search or link it came from and its position in that walk (sourceType, sourceId, sourceUrl, position), when it was read (scrapedAt), and, on detail reads, the full list of extra product images (images).

How to Use

  1. Pick a mode: keyword search on one storefront, or your own product and listing links.
  2. Choose the market for a search, or paste links. For links, also set Market to the storefront the links come from: listing links are labelled with the selected Market's country and currency, and every request connects through that country. Use one run per storefront.
  3. Turn on detail reads if you need the description, specifications, stock and seller details; leave it off for a cheaper run. Pasted product links are always read from their own product page, so they always carry the detail surcharge.
  4. Set Max records to control run size and cost, then click Start.

Minimal keyword search:

{
"mode": "search",
"market": "cl",
"queries": ["mochila"],
"maxItems": 20
}

Ordered search with detail reads:

{
"mode": "search",
"market": "co",
"queries": ["zapatillas"],
"sort": "price-asc",
"fetchDetails": true,
"maxItems": 50
}

Your own links, Market set to their storefront:

{
"mode": "urls",
"market": "cl",
"urls": ["https://www.falabella.com/falabella-cl/product/300000001/producto-de-muestra"],
"maxItems": 10
}

Daily price monitoring:

{
"mode": "search",
"market": "pe",
"queries": ["camiseta"],
"incrementalMode": true,
"stateKey": "camiseta-daily",
"maxItems": 200
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/falabella-marketplace-scraper").call(
run_input={"mode": "search", "market": "cl", "queries": ["mochila"], "maxItems": 20}
)
for product in client.dataset(run["defaultDatasetId"]).iterate_items():
print(product["name"], product["price"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/falabella-marketplace-scraper').call({
mode: 'search', market: 'cl', queries: ['mochila'], maxItems: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Max records and max pages

Max records is the single cap that stops the whole run (0 means no limit; the walk then runs to the catalogue's natural end). Max pages per source is a runaway guard, not a target: leave it 0 to read as deep as the source serves. Either way a single search or listing walk stops after at most 500 pages, and a walk stopped by that guard counts as incomplete. Multiple search terms and pasted links share the record cap, split proportionally across the remaining sources as the run progresses.

Resume and recurring updates

  • Resume (resumeFromRunId) continues ONE interrupted run: paste its run id (or dataset id) and every record it already collected is skipped, so you don't pay twice.
  • Recurring updates (incrementalMode) is for scheduled runs over the same setup. Each record is classified NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), REAPPEARED, or EXPIRED (only after a run that scanned its whole configured scope end to end, and only with emitExpired). stateKey names or shares the stored baseline. With recurring updates off, output is exactly as before.
  • Without a stateKey, the baseline follows the mode, market, search terms or links, sort and the detail-reads switch: changing any of them starts a fresh baseline, while Max records and Max pages do not. Giving two different setups the same stateKey makes them share one baseline, so each can mark the other's products EXPIRED.
  • EXPIRED only fires after a scan the actor considers complete: a resumed run, a run stopped by Max records or the page guard, or a run where a source failed never produces it.
  • Known gap: if the storefront answers "page not found" for page 2 or later of a search or listing, the actor treats that as the end of the results, even when page 1 said many more products exist. The run still succeeds without a warning and returns only the pages it read. With emitExpired on, every stored product that lived on the unread pages is then marked EXPIRED. (A "page not found" on page 1 is reported as a failed source instead, and blocks EXPIRED.) Before acting on an unexpectedly large EXPIRED batch, check the run log: the last "Page N" line shows how deep each walk got. A product wrongly marked gone comes back as REAPPEARED on the next complete run.

Send results into your apps (MCP connectors)

Optionally pipe results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

  1. Authorize a connector once under Apify, Settings, API & Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the mcpConnectors input field. Notion gets a rich page-per-item export; other connectors get a best-effort write or a digest.
  3. For Notion, also set notionParentPageUrl to the page under which item pages should be created.

maxNotifyListings caps how many items are written to each connector per run; it does not affect the dataset. Leave mcpConnectors empty to skip this step entirely.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchKeyword search on one storefront, or your own product and listing links.
marketstringclCountry storefront: Chile, Colombia or Peru. Searches run on it; in links mode it sets the connection country and the labels on listing-link rows, so match it to your links.
queriesarray(none)Search terms for search mode, one entry per search; all searches share the record cap.
sortstringrelevanceOrdering per search: most relevant, lowest price or highest price.
urlsarray(none)Product or listing links for links mode. Each link is fetched from its own storefront; keep one storefront per run.
fetchDetailsbooleanfalseRead each product's own page for description, specifications, stock and seller details (a per-product surcharge applies; pasted product links always carry it).
maxItemsinteger0Stop after this many records across the whole run (0 = no limit).
maxPagesinteger0Runaway guard: upper bound on pages read for any single search or listing walk (0 = as deep as the source serves, up to 500 pages).
resumeFromRunIdstring(none)Run id or dataset id of an earlier run to continue; already-collected records are skipped.
incrementalModebooleanfalseTurn on for recurring monitoring: later runs return only new, updated and reappeared records.
stateKeystring(none)Optional name for a monitoring campaign, to keep its memory stable or to share it across setups.
emitUnchangedbooleanfalseAlso return (and bill) records that did not change, labelled UNCHANGED.
emitExpiredbooleanfalseAlso return (and bill) records that are gone, labelled EXPIRED. Only produced after a complete scan.
mcpConnectorsarray(none)Optional: send results into apps you authorized under Integrations. Never changes the dataset.
notionParentPageUrlstring(none)Notion connector only: page under which item pages are created.
maxNotifyListingsinteger50Cap on items written to each connector per run.
proxyConfigurationobjectApify ProxyConnection used for every request; defaults to a residential-grade tier pinned to the selected market's country.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"recordType": "product",
"id": "300000001",
"skuId": "300000002",
"name": "Mochila de muestra",
"brand": "MARCA MUESTRA",
"url": "https://www.falabella.com/falabella-cl/product/300000001/producto-de-muestra",
"imageUrl": "https://media.falabella.com/falabellaCL/300000002_01/public",
"currency": "CLP",
"price": 22990.0,
"priceDisplay": "$ 22.990",
"oldPrice": 27990.0,
"discountPercent": 18,
"ratingAverage": 4.6,
"ratingCount": 128,
"sellerId": "S00042",
"sellerName": "Tienda de muestra",
"officialSeller": true,
"sponsored": false,
"bestSeller": true,
"market": "CL",
"marketHost": "www.falabella.com",
"description": "Descripcion del producto de muestra.",
"specifications": [{ "name": "Color", "value": "Azul" }],
"changeType": "NEW"
}

Plan Requirement

The storefronts refuse ordinary datacenter connections, so the default connection requests a residential-grade proxy pinned automatically to the market's country. Running the actor needs a plan that includes that connection tier, or your own proxy links pasted into the Connection section. If the default lane is refused mid-run, the actor automatically falls back to an alternate connection tier so the run can still finish.

Notes and limits

  • Product ids and category ids are per country: a Chilean product id does not exist on the Peruvian storefront.
  • Max records is the only cap that stops a run; max pages is a runaway guard.
  • Resume and recurring updates are mutually exclusive on the same setup: use one or the other.
  • Keyword searches can be answered by a keyword collection or a category page; the actor follows the storefront's own redirect and walks that route.

FAQ

How much does it cost?

You pay per product record returned, plus a per-product detail surcharge on every returned product when detail reads are switched on, and on every pasted product link (a product link is always read from its full product page). Records suppressed as unchanged by recurring updates are never charged. The Pricing tab on this actor's page shows the current rates for your plan. Use Max records to cap the cost of any run.

This actor collects only publicly available marketplace data: product listings, prices and seller information as shown on the storefront pages. You are responsible for how you use it: follow Falabella's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Prices and product facts are generally not protected, but product photos, descriptions and brand names may be subject to third-party rights.

Can I get only new or changed products on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Recurring updates. Each run then returns only new, updated and reappeared records; unchanged ones are not returned or billed unless you turn that on too.

Why did a run fail instead of returning an empty dataset?

If every page is refused, the run stops with a clear message so "no results for this search" is never confused with "nothing could be read". Run it again in a few minutes. A genuinely empty search still succeeds, with zero rows and a visible note on the run.

Why does a resumed or capped run never report EXPIRED products?

Recurring updates only marks a product gone after a run that scanned its whole configured scope end to end. A resumed run, a run stopped by Max records, or a run where a source failed never qualifies, because none of them actually confirmed the product is gone; the stored baseline for that product is left untouched until a later, complete run says otherwise.

Can a product be marked EXPIRED by mistake?

Yes, in one known case. If the storefront answers "page not found" for page 2 or later of a search or listing, the actor takes that as the end of the results, even when page 1 said there were many more pages. For example: page 1 of a search reports 100 products, page 2 comes back "not found", and the run ends successfully after page 1 with no warning. With emitExpired on, every stored product from pages 2 onward is then returned as EXPIRED, although nothing confirmed it is gone. If EXPIRED drives decisions in your workflow, check the run log before acting on a large batch (the last "Page N" line shows how far each walk got), or re-check a few flagged products by pasting their links into a My own links run. A product wrongly marked gone is labelled REAPPEARED on the next complete run.

Each market is its own catalogue: product and category ids are not portable across storefronts. A product id from the Chilean site will not resolve on the Colombian or Peruvian one. Links are always fetched from the storefront in the link, but the Market setting still decides the connection country and, for listing links, the market, marketHost and currency written on each row. So set Market to the storefront your links come from, run each storefront separately, and pick the matching market when you search by keyword.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the mcpConnectors field to push results into Notion, Linear or Airtable.

๐Ÿ”— More scrapers you might like

Pair this actor with these related scrapers from the same team:

๐Ÿงฉ Jumia Marketplace Scraper
Scrape Jumia, Africa's largest marketplace: products with local prices, discounts...
๐Ÿงฉ Digitec Galaxus Scraper
Scrape Digitec Galaxus, Switzerland's largest online retailer: products with local...
๐Ÿงฉ Mercado Livre Brazil
Scrape Mercado Livre Brazil by keyword or URL. Filter by category, brand, price...
๐Ÿ›’ SHEIN Scraper
Scrape SHEIN product listings by keyword or from any category, sale or search link...
๐Ÿงฉ Walmart Scraper
Scrape Walmart.com by keyword, URL, or item ID. Extract prices, was-prices, sellers...
๐Ÿท๏ธ Wildberries Scraper
Scrape Wildberries marketplace: product search with prices (wallet vs retail), discounts...

๐Ÿ‘‰ Browse all abotapi scrapers

๐Ÿ’ฌ Support & custom scrapers

  • ๐Ÿž Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • ๐Ÿ› ๏ธ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
  • โญ Enjoying it? A quick review on the actor page helps other users find it.