# Sam's Club Mexico Scraper - Product Prices & API (`latinamericadata/sams-club-mexico`) Actor

Extract Sam's Club Mexico products, MXN prices, promotions, brands, ratings and pack descriptions. Monitor grocery, electronics and household prices. Export JSON, CSV or Excel, or automate with the Apify API.

- **URL**: https://apify.com/latinamericadata/sams-club-mexico.md
- **Developed by:** [Latin America Data](https://apify.com/latinamericadata) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 products

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## Sam's Club Mexico Scraper & API

Extract **Sam's Club Mexico products, prices in MXN, promotions, brands and ratings** for retail price monitoring, assortment analysis and competitor research. Search groceries, cleaning products, electronics and household goods, then export JSON, CSV or Excel through Apify.

Independent tool by Latin America Data. Not affiliated with or endorsed by Sam's Club or Walmart. This is an Apify-powered scraper, not an official Sam's Club API.

### Quick start

```json
{"term":"leche","maxItems":3,"maxRuntimeSecs":90}
```

Multiple searches with no product or page cap:

```json
{"searchTerms":["leche","detergente"],"maxRuntimeSecs":600}
```

Leave `maxItems` and `maxPages` blank to follow all pages made available by the source. The default 240-second time budget and your Apify spending limit still apply. Products are delivered progressively and deduplicated across searches. Access recovery and proxy rotation are automatic; no proxy settings or customer credentials are required.

### What can you use the data for?

- Track advertised product prices and promotions over repeated runs.
- Compare branded products and bulk-pack descriptions against other retailers.
- Monitor grocery, household and electronics assortment.
- Build timestamped datasets for purchasing, distribution and retail research.

For Mexican retail teams: extrae precios, ofertas y productos de Sam's Club Mexico para comparar catalogos y monitorear cambios de precio.

### Inputs

| Input | Purpose |
| --- | --- |
| `term` | Product, brand or category keywords. Defaults to `leche`. |
| `searchTerms` | Optional 1-100 searches, replacing `term`. |
| `maxItems` | Optional total maximum of unique products across all searches. |
| `maxPages` | Optional page maximum per search. |
| `startPage` | First source page. Defaults to 1. |
| `maxRuntimeSecs` | Run time budget, default 240, maximum 7200 seconds. |
| `requestTimeoutSecs` | Request timeout, default 30, maximum 90 seconds. |

Search results follow Sam's Club's relevance ordering. Category keywords are searches, not a guarantee of every item in that category. Autocorrected or redirected searches are reported explicitly rather than silently substituted.

### Product data

Each row contains `product_id`, `title`, `brand`, `category`, `price`, `list_price`, `savings`, `currency`, `price_status`, `price_scope`, `available`, `availability`, `availability_scope`, `seller_name`, `promotions`, `fulfillment_options`, `unit_price_text`, `sales_unit`, `rating`, `review_count`, `sponsored`, `image_url` and `source_url`.

Audit fields include `search_term`, `search_url`, `page`, `rank`, `scraped_at`, `source`, `country` and `status`. Optional fields are null when not provided. Product IDs are source identifiers, not assumed EAN barcodes. Pack descriptions remain in the original title; pack quantities and per-unit prices are not guessed.

#### Prices, membership and availability

Prices are the advertised public online listing prices in MXN for the displayed product or pack, **not financing installments**. Promotional labels such as multi-buy offers are preserved without automatically subtracting a discount. A regular price is reported only when supplied by the source.

An explicitly unavailable product can have `price: null` and `price_status: "unavailable"`; a missing price is never fabricated as zero. These genuine catalog products are still delivered and charged. Availability and fulfillment labels describe the public search context, not guaranteed stock or delivery at a particular club or postal code. This version has no club/postal-code selector and does not access personalized member accounts. Final member, location, payment and checkout conditions may differ.

### Pricing

**USD 0.004 per delivered unique product**, plus **Apify platform usage paid by the customer**, including compute, storage, data transfer and automatic proxies when needed. 1,000 products cost USD 4.00 in product fees plus usage.

Duplicates are charged only once per run. Empty searches, blocked responses and diagnostic records have no product fee; platform usage still applies. Set an Apify spending limit to control the run cost.

### Completion and errors

`RUN_SUMMARY` reports completeness, delivered and charged counts, stopping reason, pages and free performance measurements. `DIAGNOSTICS` contains non-chargeable explanations outside the product dataset.

- `success`: valid products were obtained. Check `complete` and `stop_reason` for limits.
- `no_results`: a confirmed empty source search with zero product fees.
- `partial`: earlier products are preserved after a later error or time/spending limit.
- `blocked` or `failed`: no products could be delivered, and the run fails visibly.

The actor reads the structured search data embedded in the public [Sam's Club Mexico website](https://www.sams.com.mx/). It validates the returned search, page number and pagination metadata. Recommendation modules and advertising placeholders are excluded. Repeated non-terminal pages are treated as incomplete, not successful completion. Catalog totals can change during a run.

### API, exports and schedules

Use the Apify API tab to obtain runnable requests for your account, or run the actor from the Console. Download the dataset as JSON, CSV or Excel. Schedule repeated searches to build your own price history; the actor does not supply historical prices from before your runs.

Respect source terms and applicable rules. This tool does not log in, purchase products, collect customer information, or promise uninterrupted access or full coverage of every club.

# Actor input Schema

## `term` (type: `string`):

Product, brand or category keywords.

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

Optional 1-100 searches, replacing Search term. Products are deduplicated across terms.

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

Optional total product limit. Leave blank for all source results within the time and spending budget.

## `maxPages` (type: `integer`):

Optional page limit. Leave blank to follow all available pages.

## `startPage` (type: `integer`):

First source page to collect.

## `maxRuntimeSecs` (type: `integer`):

Safety time budget, independent of the result count.

## `requestTimeoutSecs` (type: `integer`):

Maximum time per source request.

## Actor input object example

```json
{
  "term": "leche",
  "startPage": 1,
  "maxRuntimeSecs": 240,
  "requestTimeoutSecs": 30
}
```

# Actor output Schema

## `products` (type: `string`):

No description

## `summary` (type: `string`):

No description

## `diagnostics` (type: `string`):

No description

# 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("latinamericadata/sams-club-mexico").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("latinamericadata/sams-club-mexico").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 '{}' |
apify call latinamericadata/sams-club-mexico --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,latinamericadata/sams-club-mexico"
        }
    }
}
```

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/8CwMu9YHszjx0uSHH/builds/4fjrumdwoniH7bdfw/openapi.json
