LatAm Product Price Intelligence avatar

LatAm Product Price Intelligence

Under maintenance

Pricing

from $50.00 / 1,000 completed price analyses

Go to Apify Store
LatAm Product Price Intelligence

LatAm Product Price Intelligence

Under maintenance

Find, match, analyze, and rank compatible public product offers across six verified Latin American marketplaces.

Pricing

from $50.00 / 1,000 completed price analyses

Rating

0.0

(0)

Developer

Miguel Fuentealba

Miguel Fuentealba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Categories

Share

Unofficial tool. This independent Actor is not affiliated with, sponsored, endorsed, or operated by Mercado Libre. Mercado Libre and related marks belong to their respective owners.

LatAm Product Price Intelligence is an Apify Actor that finds public product offers across six verified Latin American Mercado Libre marketplaces, rejects incompatible listings, calculates robust market-price statistics in the local currency, and ranks the best valid offers.

It is not a generic search-results scraper. The processing pipeline is:

SEARCH → EXTRACT → NORMALIZE → MATCH → FILTER → ANALYZE → RANK

What problem it solves

Marketplace searches commonly mix the requested product with accessories, other models, other storage capacities, and promotional noise. Using every returned price produces misleading market averages and false “deals.” This Actor applies deterministic, explainable product matching before doing any price analysis.

The Actor supports Chile, Argentina, Colombia, Peru, Brazil, and Uruguay. It uses low-cost HTTP first and launches a browser only when the cloud response requires JavaScript rendering. It does not call an LLM or use an external database.

Features

  • Six cloud-verified country marketplaces with local domains, currencies, languages, and condition routes
  • Async HTTP, timeouts, retries with backoff, pagination, and clear 403/429 errors
  • Playwright fallback only when static HTML contains no listing cards
  • Optional Apify Proxy configuration, enabled by default for reliable cloud runs
  • Deterministic normalization for brands, product families, models, variants, capacities, colors, and common model codes
  • Strong rejection of accessories and incompatible model, code, capacity, and variant combinations
  • Explainable match scores and rejection reasons
  • IQR/MAD price-outlier detection and robust price statistics
  • Listing-level currency detection with independent statistics and ranking per currency
  • Dynamic offer ranking based only on available price, match, shipping, and official-store signals
  • Ranked compatible offers in the Apify Dataset and a full summary in the OUTPUT record
  • JSON, CSV, and Excel-compatible Dataset exports
  • Predictable pay-per-event billing: one charge only after a complete analysis

Example input

{
"query": "Samsung Galaxy S25 256GB",
"country": "CL",
"maxOffers": 50,
"condition": "new",
"minMatchScore": 0.8
}

Input fields

FieldTypeDefaultDescription
querystringrequiredSpecific product name; include the model and capacity when relevant.
countrystringCLCL, AR, CO, PE, BR, or UY.
maxOffersinteger50Maximum listings inspected, from 5 to 100.
conditionstringnewnew, used, or all.
minMatchScorenumber0.80Match confidence threshold from 0 to 1.

Output

Each compatible offer is stored as a Dataset item:

{
"id": "MLC2836919992",
"title": "Samsung Galaxy S25 256G Azul Marino",
"price": 599990,
"currency": "CLP",
"url": "https://www.mercadolibre.cl/...",
"condition": "new",
"seller": {
"name": "Samsung",
"reputation": null,
"officialStore": true
},
"shipping": { "free": true },
"attributes": {},
"normalized": {
"brand": "samsung",
"family": "galaxy s",
"model": "s25",
"storageGb": 256,
"color": "blue"
},
"match": {
"matched": true,
"score": 0.96,
"reasons": []
},
"isOutlier": false,
"offerScore": 0.94
}

Fields unavailable on the public search page are null or empty; the Actor never fabricates seller reputation or product attributes.

The run summary is stored in the default key-value store as OUTPUT:

{
"status": "matches_found",
"message": "Found 31 compatible offers among 47 public listings.",
"query": "Samsung Galaxy S25 256GB",
"country": "CL",
"offersFound": 47,
"offersMatched": 31,
"offersRejected": 16,
"rejectionReasons": {
"accessory_detected": 5,
"storage_mismatch": 7,
"variant_mismatch": 4
},
"outliers": 2,
"priceIntelligence": {
"currency": "CLP",
"min": 749990,
"percentile25": 799990,
"median": 829990,
"average": 833450,
"percentile75": 879990,
"max": 919990,
"spreadPercent": 22.67
},
"bestOffer": {
"id": "MLC123456789",
"title": "...",
"price": 749990,
"currency": "CLP",
"seller": null,
"matchScore": 0.98,
"offerScore": 0.94,
"url": "https://..."
},
"durationSeconds": 3.42,
"requests": 2
}

The values above illustrate the schema only; each run uses current public offers. When no listing passes the compatibility filter, status is no_compatible_offers, message explains what happened, and rejectionReasons shows why the public listings were rejected. An empty matched Dataset therefore does not claim that the product is unavailable everywhere.

When compatible listings use more than one currency, the summary also returns priceIntelligenceByCurrency and bestOffersByCurrency. Statistics, outlier detection, and ranking are calculated independently for each currency; the Actor does not invent or silently apply an exchange rate. The legacy priceIntelligence and bestOffer fields remain populated for single-currency results.

Use cases

  • Market-price research before purchasing or selling a product
  • E-commerce competitive-price checks
  • Sourcing and procurement shortlists
  • Structured product-offer feeds for spreadsheets and BI tools
  • Deal discovery with low-price outliers explicitly flagged

Run locally

Requirements: Python 3.11+ and the Apify CLI.

python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements-dev.txt
apify run

The repository includes the example development input at storage/key_value_stores/default/INPUT.json, so the command works immediately. Edit that file to test another product, or use apify run --input-file path/to/input.json. Local Dataset and OUTPUT data are written under storage/ by the Apify SDK.

The normal local path uses HTTP and does not need a local browser. If a local response also requires the browser fallback, install Chromium once with playwright install chromium inside the virtual environment.

Quality checks:

ruff format .
ruff check .
pytest

To simulate pay-per-event billing locally without a real charge:

$env:ACTOR_TEST_PAY_PER_EVENT = "true"
apify run --purge
Remove-Item Env:ACTOR_TEST_PAY_PER_EVENT

The SDK writes the simulated event to the local charging-log Dataset. Its local test price can differ from the Store price. It also logs synthetic Dataset-item events in test mode; those default events must be removed in Console. Verify that price-analysis itself appears exactly once.

API usage

After deployment, start the Actor through the Apify API using your Actor ID and API token:

curl -X POST \
"https://api.apify.com/v2/acts/YOUR_USERNAME~latam-product-price-intelligence/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"query":"Samsung Galaxy S25 256GB","country":"CL","maxOffers":50,"condition":"new"}'

The run response links to its default Dataset and key-value store. Apify also provides synchronous endpoints and generated clients; choose the execution mode appropriate for your workflow.

Deploy

Authenticate the Apify CLI, then run:

apify login
apify push

No deployment or credential operation is performed automatically by this repository.

Limitations

  • Supported marketplaces are Chile, Argentina, Colombia, Peru, Brazil, and Uruguay. Mexico is temporarily unavailable because repeated private cloud tests were blocked by the public marketplace with HTTP 403. Other countries are rejected explicitly rather than routed to the wrong domain.
  • Matching is deterministic and optimized for common technology naming. Unusual categories or incomplete titles can require a lower threshold or future category-specific rules.
  • Portuguese accessory, color, condition, and shipping terms are supported for Brazil; broader category-specific Portuguese vocabulary can still require additional rules.
  • The Actor reads public search-result HTML. Mercado Libre can change its markup or restrict automated requests; in that case the Actor fails clearly instead of emitting fabricated data.
  • Seller reputation and detailed attributes are returned as null/empty when search results do not expose them reliably.
  • all condition searches can contain items whose condition is not displayed in the result card; those items use null for condition.
  • No historical prices, alerts, CAPTCHA handling, login scraping, or other retailers are included. The browser fallback renders public pages only and does not solve challenges or bypass authentication.

Privacy

The Actor processes the submitted product query and public marketplace results. It does not request login credentials, access private listings, create user accounts, or send data to an external database. Apify stores run inputs and outputs according to the retention and privacy settings of your Apify account.

Troubleshooting

HTTP 403 — Mercado Libre denied the public request. Keep an available Apify Proxy option enabled and retry with a new run.

HTTP 407 — The selected proxy option is not available on the current Apify plan. Use Datacenter with the Anywhere location, choose an available custom proxy, or select No proxy for a direct attempt. Saved Datacenter inputs with a legacy country value are normalized to Anywhere automatically.

Cloud run returns no parseable listings — Keep Apify Proxy enabled in the input's Connection section. The Actor automatically retries once with its browser fallback. If both paths return no cards, the selected proxy is restricted and the run fails instead of fabricating results.

HTTP 429 — The marketplace rate-limited the run. The Actor retries with backoff and then fails clearly if the limit persists.

No parseable listings — Confirm the same query returns public results in a browser. Mercado Libre may have changed its page structure; update the offline parser fixture and selectors together.

Too few matches — Make the query precise and include model/capacity. For genuinely ambiguous titles, lower minMatchScore cautiously.

Pricing

This Actor is prepared for pay-per-event pricing at a launch price of USD 0.05 per completed price analysis. A run emits exactly one price-analysis event after scraping, compatibility filtering, price analysis, and ranking complete, and before paid results are delivered.

When monetization is configured in Apify Console, keep the recommended synthetic apify-actor-start event at its default price and remove apify-default-dataset-item. The start event covers the first five seconds of compute; removing the Dataset-item event prevents an extra fee for every matched offer. The publication checklist in STORE_PUBLICATION.md records this as a required go-live check.

Invalid input, scraping failures, and runs whose maximum charge limit cannot cover the event do not deliver paid output. The Apify Store run screen shows the active price and lets users set a maximum charge limit before execution; the price configured in the Store Console is the authoritative price.

Responsible use

Use this Actor only for lawful access to public data and follow Mercado Libre's terms and applicable regulations. It does not bypass authentication, solve CAPTCHAs, or implement aggressive anti-bot evasion. This is an independent, unofficial tool and is not endorsed by Mercado Libre.