Exito Colombia Grocery Price & Stock Scraper avatar

Exito Colombia Grocery Price & Stock Scraper

Pricing

from $6.15 / 1,000 results

Go to Apify Store
Exito Colombia Grocery Price & Stock Scraper

Exito Colombia Grocery Price & Stock Scraper

Scrape Exito Colombia grocery and retail products by keyword or category. Extract price, list price, stock, installments, EAN, brand and seller in Colombian pesos. Export to JSON, CSV or Excel.

Pricing

from $6.15 / 1,000 results

Rating

5.0

(1)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

9 days ago

Last modified

Share

Exito Colombia Grocery Price & Stock Scraper

Exito Colombia Grocery Price & Stock Scraper

Here is one real result, with every field the actor returns (detail fetch and both AI add-ons enabled):

{
"name": "Arroz blanco Premium ARROZ SONORA PREMIUM Arroz Blanco (4000 gr)",
"brand": "ARROZ SONORA PREMIUM",
"category": "Mercado > Despensa > Granos y arroz",
"productId": "3250861",
"sku": "3841129",
"ean": "7700798000017",
"productReference": "3250861",
"price": 22300,
"listPrice": 22750,
"sellingPrice": 22300,
"pricePerUnit": 22300,
"discountPercentage": 2,
"currency": "COP",
"installments": 48,
"installmentsTable": [
{ "number": 1, "value": 22300, "interestRate": 0, "total": 22300, "paymentName": "American Express à vista" },
{ "number": 12, "value": 1859, "interestRate": 0, "total": 22300, "paymentName": "American Express 12 vezes sem juros" }
],
"priceValidUntil": "2027-08-13T00:00:00Z",
"promoTeasers": null,
"measurementUnit": "un",
"unitMultiplier": 1,
"available": true,
"stock": 99999,
"seller": "exito",
"isMarketplace": false,
"categories": ["Mercado > Despensa > Granos y arroz", "Mercado > Despensa", "Mercado"],
"releaseDate": "2026-06-22T00:00:00Z",
"imageUrl": "https://exitocol.vteximg.com.br/arquivos/ids/33797019/Arroz-blanco-ARROZ-SONORA-PREMIUM-Arroz-4-gr-3841129_a.jpg?v=639176968367100000",
"images": ["https://exitocol.vteximg.com.br/arquivos/ids/33797019/Arroz-blanco-ARROZ-SONORA-PREMIUM-Arroz-4-gr-3841129_a.jpg?v=639176968367100000"],
"url": "https://tienda.exito.com/arroz-blanco-arroz-sonora-premium-arroz-4-gr-3250861/p",
"description": null,
"specifications": { "Tipo de Producto": "Arroz", "Tipo de Arroz": "Premium", "IVA": "0", "Vendido por": "Éxito", "Ingredientes": "Arroz Blanco", "Conservacion": "Conservar en lugar seco y fresco", "Factor Neto PUM": "4000" },
"aiDescription": "Descubre el Arroz Blanco Premium ARROZ SONORA PREMIUM, un producto de alta calidad que garantiza un sabor y textura excepcionales ... (full text, trimmed here)",
"aiAttributes": { "tipo": "Arroz", "tipo_de_arroz": "Premium", "peso": "4000 gr", "ingredientes": "Arroz Blanco", "conservacion": "Conservar en lugar seco y fresco" },
"aiTags": ["arroz", "granos", "premium", "blanco", "despensa", "Éxito"],
"observedAt": "2026-08-14T07:50:40.221Z",
"error": null
}

The most complete Exito Colombia scraper available. It returns every field an Exito (VTEX) product listing exposes, including the full price and installment breakdown, EAN and SKU, live stock, seller and specifications, plus optional AI marketing descriptions and structured attributes, and gives you search, category and sort filters to target exactly the products you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor searches the Exito Colombia catalog (VTEX) for the terms and categories you pass, paginates through the matching products, and writes one normalized record per product to the run's dataset. Each record carries the name, brand, category path, EAN, SKU, list and selling price, discount, installment breakdown, live stock, seller and images. With detail fetch on (the default) the product description and technical specifications are added too. Missing source values are returned as null and never invented.

Exito is geo-restricted to Colombia, so a Colombian residential proxy is enabled by default and required for stable access. Optional paid AI add-ons write a Spanish marketing description and extract structured attributes and search tags.

Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 10 rice products from the Exito catalog with full detail.

{
"searchTerms": ["arroz"],
"withDetails": true,
"maxProducts": 10
}

Provide searchTerms, categories, or both. Free plans return up to 10 products per run.

Input reference

FieldTypeRequiredDefaultDescription
searchTermsstring[]yes*["arroz"]Full-text catalog queries, for example arroz, televisor lg, pañales. Each term is searched separately. *Provide searchTerms, categories, or both.
categoriesstring[]no[]Restrict to Exito departments by code, for example 34185082 (Mercado/Groceries), 34185084 (Tecnologia). Each is scraped separately.
sortOrderenumno(relevance)Catalog order, for example OrderByPriceASC, OrderByTopSaleDESC, OrderByBestDiscountDESC. Empty keeps relevance order.
withDetailsbooleannotrueAdd the product description and technical specifications. Turn off for a faster, lighter run.
maxProductsintegerno10Maximum products to collect. Free Apify plans are capped at 10 per run.
withAiDescriptionbooleannofalsePaid AI add-on. Adds aiDescription, a Spanish marketing description. Billed per product. Requires a paid Apify plan.
withAiAttributesbooleannofalsePaid AI add-on. Adds aiAttributes and aiTags. Billed per product. Requires a paid Apify plan.

Output reference

One dataset item per product. Types: string, number, integer, boolean, string[], object, object[], or null when the source value is absent.

FieldTypeDescription
namestringProduct name.
brandstringBrand name.
categorystringPrimary category path.
productIdstringExito product id.
skustringSKU identifier.
eanstringEAN barcode.
productReferencestringInternal product reference.
pricenumberCurrent price (COP).
listPricenumberList (pre-discount) price.
sellingPricenumberSelling price.
pricePerUnitnumberPrice per unit of measure.
discountPercentagenumberDiscount percentage vs list price.
currencystringAlways COP.
installmentsintegerMaximum number of installments offered.
installmentsTableobject[]Full installment plans per payment method (number, value, interestRate, total, paymentName).
priceValidUntilstringDate the price is valid until.
promoTeasersarrayPromotion teasers when present, else null.
measurementUnitstringUnit of measure, for example un.
unitMultipliernumberUnit multiplier.
availablebooleantrue if in stock.
stockintegerAvailable stock quantity.
sellerstringSeller name, for example exito.
isMarketplacebooleantrue if sold by a marketplace seller.
categoriesstring[]Full category path hierarchy.
releaseDatestringProduct release date.
imageUrlstringPrimary image URL.
imagesstring[]All image URLs.
urlstringProduct page URL.
descriptionstringProduct description. Present with withDetails, else null.
specificationsobjectTechnical specifications as key/value pairs. Present with withDetails.
aiDescriptionstringSpanish marketing description. Present only with withAiDescription.
aiAttributesobjectStructured product attributes. Present only with withAiAttributes.
aiTagsstring[]Search tags. Present only with withAiAttributes.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed run, a single item with a populated error field is written instead.

Example output record

Real record from a live run (input {"searchTerms":["arroz"],"withDetails":true,"withAiDescription":true,"withAiAttributes":true}). The full record is shown at the top of this page; the large installmentsTable (one entry per payment method and term) is trimmed there to two entries and the aiDescription text is trimmed, with all shown values unmodified.

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~exito-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchTerms":["televisor lg"],"sortOrder":"OrderByPriceASC","maxProducts":25}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~exito-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"categories":["34185082"],"sortOrder":"OrderByBestDiscountDESC","maxProducts":100}'

Apify CLI:

apify call scrapers_lat/exito-scraper \
--input '{"searchTerms":["pañales"],"withDetails":true}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per product returned (result event). With withDetails on, a details event is also charged per product enriched. See the pricing tab for current prices.
  • AI add-ons billed separately. withAiDescription and withAiAttributes each charge their own event and only when the AI output is produced. They require a paid Apify plan and are disabled for free users.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 products per run. Upgrade for higher maxProducts.

FAQ and troubleshooting

A run returned 0 records or timed out. Why? Exito is geo-restricted to Colombia. A Colombian residential proxy is enabled by default; keep it on. If a search matched nothing, broaden searchTerms or remove a category. Zero-result runs are not charged.

Why is description null even with detail fetch on? Some products do not publish a long description on Exito. The specifications are still returned. Missing source values are returned as null, never invented.

How do I scrape a whole department? Put the department code in categories, for example 34185082 for Mercado (Groceries). Combine with sortOrder to page best sellers or biggest discounts first.

What currency are prices in? Colombian pesos (COP). The installmentsTable breaks down each payment method's plan.

How do I get the best-priced or most-discounted items first? Set sortOrder to OrderByPriceASC or OrderByBestDiscountDESC.

Is this an official Exito tool? No. This actor is independent and has no affiliation with Grupo Exito. It reads only data that is publicly available on the Exito storefront. Use it in accordance with the Exito terms of service.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US, European and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with Grupo Exito. Accesses only publicly available storefront data. Use in accordance with the Exito terms of service.