Sam's Club
Sam's Club price, regular price, stock, rating, brand and seller by item id, about 25,000 products per credit. Search too. Calls can answer a retryable failure.
Sam's Club price, regular price, stock, rating, brand and seller by item id, about 25,000 products per credit. Search too. Calls can answer a retryable failure.
At a glance
Property | Value |
|---|---|
|
|
Item id | The number a product link ends in ( |
Marketplaces | Live: |
Tier |
|
Ids per call | 25 (kept low on purpose) |
Typical call | 20–60 s for 25 products |
Search |
|
Example
- cURL
- Python
- Node.js
curl -X POST "https://api.scrapelyserp.com/v1/products" \
-H "Authorization: Bearer $SCRAPELY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"platform":"samsclub","ids":["19191871927","18076107029"]}'import os
import requests
HEADERS = {"Authorization": f"Bearer {os.environ['SCRAPELY_API_KEY']}"}
r = requests.post(
"https://api.scrapelyserp.com/v1/products",
headers=HEADERS,
json={"platform": "samsclub", "ids": ["19191871927", "18076107029"]},
timeout=120,
)
r.raise_for_status()
data = r.json()
for p in data["results"]:
print(p["id"], p["status"], (p.get("price") or {}).get("amount"))const res = await fetch('https://api.scrapelyserp.com/v1/products', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SCRAPELY_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ platform: 'samsclub', ids: ['19191871927', '18076107029'] }),
signal: AbortSignal.timeout(120_000),
});
if (!res.ok) throw new Error((await res.json()).error.code);
const data = await res.json();
for (const p of data.results) console.log(p.id, p.status, p.price?.amount);Full reference → POST /v1/products
When Sam's Club says no
Sam's Club refuses a large share of requests, so on this retailer some ids or searches will not come back on the first call. We try each one several times before giving up. What you see after that is never an empty answer made to look like a result:
Product data: the id is
unavailable. It is not charged. Ask for it again, a little later.Search: the call fails with
502 TARGET_FAILED. It is not charged. Retry it.
Because of this, keep calls small (at most 25 ids) and build in a retry for unavailable ids and for 502.
Sam's Club fields
Besides the common fields, each result carries a samsclub object. seller.name is "Sam's Club" unless a marketplace seller lists the item. Prices are the logged-out web prices, and Sam's Club prices can depend on the club, which Scrapely does not set.
Field | Description |
|---|---|
| The brand; |
| The regular price, when it is above the current price; |
| Average review rating (0 to 5) and the number of reviews; |
A product with no readable price comes back without price (and as partial), never with a price of 0.
Statuses on Sam's Club
partial: the product came back without a title or without a price. Ask again later.unavailable: Sam's Club gave no usable answer for the id after several tries. Not charged.not_found: Sam's Club said the page does not exist.
Watchlists
A watchlist with "platform": "samsclub" reads each id once per run and reports changes to price, inStock, listPrice.