JCPenney
JCPenney Product API
One jcpenney.com product by id or URL, or up to 20 by product_ids in one call: title, brand, description, features, category and breadcrumbs, product and item type, images, average rating, review count, question and answer counts, the price block (regular, sale and clearance ranges, percent off, price type, deal label, the after-coupon price with its coupon code, and when the price window starts and ends), channel, in-store pickup, marketplace flag, and every variant with SKU, UPC, color, size, options, status, max quantity per order and online stock (high, low or out). Prices are product-level ranges: JCPenney does not expose a price per size or color. Costs 1 credit per request.
Authorizations
AuthorizationstringheaderrequiredBearer authentication header of the form Bearer <token>, where <token> is your Scavio API key (e.g. Bearer sk_live_your_key).
Body
application/jsonproduct_idstringA JCPenney product id (ppr / ppm / pp + digits): a search result's id, the last part of a product URL. One of product_id, url or product_ids is required.
Example: ppr5008604049
urlstringA jcpenney.com product URL (/p/<slug>/<id>; its product id is used). Alternative to product_id.
Example: https://www.jcpenney.com/p/st-johns-bay-womens-mid-rise-straight-leg-jean/ppr5008604049
product_idsstring[]Up to 20 product ids in one call, still 1 credit. Unknown ids are listed in not_found. Batch results carry no online stock.
Example: ["ppr5008604049", "ppr5008212471"]
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
p = client.jcpenney.product(product_id="ppr5008604049")["data"]
price = p["price"]
print(p["title"], price["regular_min"], price["current_min"], price["price_type"], price["percent_off"])
if price["coupon"]:
print("with", price["coupon"]["code"], price["coupon"]["price_min"], "until", price["ends_at"])
low = [v for v in p["variants"] if v["online_stock"] != "high"]
print(len(low), "of", p["variant_count"], "variants low or out online")Response