Staples
Staples price, regular price and savings, price per unit, rating and review count, with delivery stock for a ZIP code, by item id, about 2 million products per credit. Search too.
Staples price, regular price and savings, price per unit, rating and review count, with delivery stock for a ZIP code, by item id, about 2 million products per credit. Search too.
At a glance
Property | Value |
|---|---|
|
|
Item id | The text after |
Marketplaces | Live: |
Tier |
|
Ids per call | 500 |
Typical call | 3–10 s for 500 ids |
Search |
|
Stock is delivery stock for one ZIP code
availability.inStock says whether Staples can deliver the item to a ZIP code. It reads 10451 (New York, NY) unless you send zip (a 5-digit US ZIP code), and the same item can be out of stock in another ZIP (we saw items in stock for 10451 and out of stock for 99501). staples.deliveryZip says which ZIP an answer is for. It is not in-store stock: Staples says "30-min pickup" on items that are not in a store, and we give no in-store stock at all.
Price is for one unit
price is Staples' price for one unit as listed. It does not change with the quantity you ask for, quantity discounts are not offered, and Staples limits how many units get the promotional price on some items, a limit that is not shown here. The price is the same in every ZIP code we checked.
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": "staples",
"ids": ["122374", "https://www.staples.com/product_SRJ49416BLK"],
"zip": "10001"
}'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": "staples",
"ids": ["122374", "https://www.staples.com/product_SRJ49416BLK"],
"zip": "10001",
},
timeout=30,
)
r.raise_for_status()
data = r.json()
for p in data["results"]:
print(p["id"], p["status"], (p.get("price") or {}).get("amount"), p["staples"]["rating"])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: 'staples',
ids: ['122374', 'https://www.staples.com/product_SRJ49416BLK'],
zip: '10001',
}),
signal: AbortSignal.timeout(30_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, p.staples?.rating);Full reference → POST /v1/products
Staples fields
Besides the common fields, each result carries a staples object.
Field | Description |
|---|---|
| Staples' price for one unit. |
| Staples' regular price when the item is on sale, the difference to |
| The price per unit Staples shows ( |
| Staples' own review average (0 to 5) and the number of reviews. Both are |
| Delivery stock for |
| The brand ( |
| The product page, which opens on Staples, and its picture. |
| A set of options (ids starting |
Statuses on Staples
partial: Staples answered without a title. Ask again later.not_found: Staples has no such item id.unavailable: no usable answer after retries. Not charged; ask again.