# Sams Club Product Scraper (Cheap) (`data_api/sams-club-product-scraper-cheap`) Actor

Sam's Club product scraper that pulls prices, ratings, and availability from search results, so you can track products and compare pricing without doing it by hand.

- **URL**: https://apify.com/data\_api/sams-club-product-scraper-cheap.md
- **Developed by:** [Data API](https://apify.com/data_api) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Sam's Club Product Scraper

Pulling product data off Sam's Club by hand is slow, and the pages load their listings through Next.js, so a plain copy-paste rarely gets you the price, rating, or stock you actually need. Hand this scraper a keyword or a category link and it walks the search results page by page, reading each product's name, price, member-facing details, rating, review count, and availability into one tidy dataset. Run a single keyword or a stack of them, then export the lot to JSON, CSV, or Excel.

![Sam's Club Product Scraper](cover.jpg)

### What you get

One clean row per product, with a steady set of columns so results drop straight into a sheet or database. Each row carries:

- **Identity** — `itemName`, `brandName`, `itemId`, `skuCode`, `productUrl`, `imageLink`
- **Pricing** — `currentPrice`, `listPrice`, `unitPrice`, `currencyCode`
- **Ratings and stock** — `starRating`, `reviewsTotal`, `stockStatus`, `outOfStock`
- **Context** — `description`, `sourceQuery`, `collectedAt`

Pagination is followed for you, so a search that spans several pages comes back whole rather than stopping at page one.

### Quick start

1. Click **Try for free** and open the input form.
2. Type one or more keywords into **Keywords to search**, or paste search and category links into **Sam's Club page links** (you can do both at once).
3. Set a **Product cap** to control how many products each keyword or link returns.
4. Press **Start**, then download the results as JSON, CSV, Excel, or XML once the run finishes.

![How it works](how-it-works.jpg)

### Use cases

- **Price tracking** — watch how prices and member pricing move across products or a whole category over time
- **Catalog building** — pull product metadata in bulk to seed an internal feed or database
- **Stock monitoring** — see at a glance what is in stock and what has sold out across a category
- **Assortment research** — find the top-rated items, gauge demand by review count, and spot gaps in a range
- **Competitor pricing** — line up Sam's Club prices against other retailers and see where you stand
- **Market analysis** — gather a wide product sample to study brands, pricing bands, and ratings

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `searchTerms` | array of strings | One of `searchTerms` or `targetUrls` | Keywords to look up; each one runs its own Sam's Club search. |
| `targetUrls` | array of objects | One of `searchTerms` or `targetUrls` | Sam's Club search or category page links to scrape directly. Pair them with keywords or use alone. |
| `resultsLimit` | integer | No | Most products to gather per keyword or link in a run. Default `50`. |
| `timeoutSeconds` | integer | No | Seconds to wait for each page to respond before giving up. Default `45`. |

#### Example input

```json
{
    "searchTerms": ["cold brew coffee", "dish soap", "trash bags"],
    "targetUrls": [
        { "url": "https://www.samsclub.com/search?q=dish+soap" },
        { "url": "https://www.samsclub.com/c/coffee/2080" }
    ],
    "resultsLimit": 50,
    "timeoutSeconds": 45
}
```

### Output

Every product becomes one row, and the field set stays the same from row to row — anything Sam's Club does not expose comes back as `null` so your columns line up.

#### Example output

```json
{
    "productUrl": "https://www.samsclub.com/ip/Cold-Brew-Coffee-Concentrate-32-fl-oz/990412233",
    "itemName": "Member's Mark Cold Brew Coffee Concentrate, 32 fl. oz.",
    "brandName": "Member's Mark",
    "itemId": "990412233",
    "skuCode": "7HQ2KP9XJ4MN",
    "currentPrice": 9.98,
    "listPrice": 12.48,
    "unitPrice": "$0.31/fl oz",
    "currencyCode": "USD",
    "starRating": 4.63,
    "reviewsTotal": 2184,
    "stockStatus": "In stock",
    "outOfStock": false,
    "description": "Smooth, slow-steeped cold brew concentrate. Just add water, milk, or ice. Made from 100% arabica beans with no artificial flavors.",
    "imageLink": "https://i5.samsclubimages.com/asr/4b71d2e8-9c0a-4f12-bf3e-7a1c6e0d9a44.jpeg",
    "sourceQuery": "cold brew coffee",
    "collectedAt": "2026-06-30T10:00:00.000000+00:00"
}
```

#### Output fields

| Field | Type | Description |
|-------|------|-------------|
| `productUrl` | string | Direct link to the product page on Sam's Club |
| `itemName` | string | Full product title as listed |
| `brandName` | string | Maker or label behind the product |
| `itemId` | string | Sam's Club catalog identifier (usItemId) |
| `skuCode` | string | Internal stock-keeping code |
| `currentPrice` | number | Price the product sells for now, in USD |
| `listPrice` | number | Pre-discount price shown when on sale |
| `unitPrice` | string | Cost per unit or weight, such as $0.31/fl oz |
| `currencyCode` | string | Three-letter currency code, always USD |
| `starRating` | number | Mean shopper rating from zero to five |
| `reviewsTotal` | integer | Count of shopper reviews on the product |
| `stockStatus` | string | Availability text, such as In stock or Out of stock |
| `outOfStock` | boolean | `true` when the item cannot be bought right now |
| `description` | string | Feature bullets and summary as plain text |
| `imageLink` | string | Link to the main product photo |
| `sourceQuery` | string | Keyword or link that surfaced the result |
| `collectedAt` | string | ISO 8601 timestamp of when the row was captured |

### Tips for best results

- **Test small first.** Set **Product cap** to 20–50 for a trial run and confirm the columns fit your pipeline before scaling up.
- **Mix keywords and links in one run.** Combine several keywords with category URLs to cover a wide range in a single export.
- **Brand is inferred for produce and generics.** Sam's Club search listings rarely carry a brand field, so `brandName` is read from the title — accurate for packaged goods, looser for unbranded items.
- **Raise `timeoutSeconds` on heavy categories.** Bump it toward 60 if large category pages are slow to respond.
- **Filter after export.** Sort or filter by `stockStatus`, `starRating`, or `currentPrice` in your spreadsheet to narrow down the rows you care about.

### How can I use Sam's Club product data?

**How can I use the Sam's Club Product Scraper to track prices over time?**
Schedule the actor to run on the same keywords or category links each day. Each run returns `currentPrice`, `listPrice`, and `unitPrice` per product, stamped with `collectedAt`, so stacking the exports gives you a price history you can chart or set alerts against.

**How can I pull a Sam's Club category into a spreadsheet?**
Paste a category link such as `https://www.samsclub.com/c/coffee/2080` into **Sam's Club page links** and the scraper pages through the whole category, returning each product as a row. Export to CSV or Excel and you have an instant catalog with names, prices, ratings, and stock.

**How can I compare Sam's Club pricing against other retailers?**
Run the same product keywords here that you scrape elsewhere, then join the results on `itemName` or `brandName`. With `currentPrice` and `unitPrice` side by side, you can see where Sam's Club lands on each item and spot the gaps worth acting on.

**How can I find the best-rated products in a Sam's Club category?**
Scrape the category or a broad keyword, then sort the export by `starRating` and `reviewsTotal`. That surfaces the items shoppers rate highest and back with the most reviews — handy for assortment planning or picking what to feature.

### Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses or private contact information. 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.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### Support

Questions, feature requests, or a field you'd like added? Reach out at <data.apify@proton.me> and we'll get back to you.

# Actor input Schema

## `searchQueries` (type: `array`):

One or more keywords to search on Sam's Club. Each keyword runs a separate search. Example: \["organic milk", "baby wipes", "paper towels"]

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

Direct Sam's Club search or category page URLs to scrape. Use this instead of (or alongside) search keywords. Example: https://www.samsclub.com/c/fresh-produce/1535

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

Maximum number of products to collect per run. Applies across all queries and URLs combined.

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

How long to wait for each page request before giving up.

## Actor input object example

```json
{
  "searchQueries": [
    "organic milk",
    "baby wipes",
    "paper towels"
  ],
  "startUrls": [
    {
      "url": "https://www.samsclub.com/search?q=organic+milk"
    },
    {
      "url": "https://www.samsclub.com/c/fresh-produce/1535"
    }
  ],
  "maxItems": 40,
  "requestTimeoutSecs": 30
}
```

# 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 = {
    "searchQueries": [
        "vegetables"
    ],
    "startUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_api/sams-club-product-scraper-cheap").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 = {
    "searchQueries": ["vegetables"],
    "startUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("data_api/sams-club-product-scraper-cheap").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 '{
  "searchQueries": [
    "vegetables"
  ],
  "startUrls": []
}' |
apify call data_api/sams-club-product-scraper-cheap --silent --output-dataset

```

## MCP server setup

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

```

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/R5N0inZNuv3DsIFXQ/builds/9L20Yyriu78Mp47dk/openapi.json
