Check the coupon list and the item, not an old thread. Scavio's JCPenney API returns today's public JCPenney coupons from POST /api/v1/jcpenney/coupons, each with its code, channel, start and end time and full disclaimer, and every listing item and product carries coupon_code with the price after that coupon. Each check is 1 credit. On November 10, 2026, there were two public codes: 2HONOR, valid through November 11, and ADDCOLOR, valid through November 30.
The question comes from r/GetADiscount, where the moderators opened a single JCPenney thread on October 11, 2026 because the subreddit kept getting new posts asking variations of "Any jcpenney coupon right now?". The thread asks people to share working codes and to "Confirm whether a specific promo is still active or has ended"; it has 21 upvotes and 11 comments. The shoppers in it describe timing trips around the big promotion weekends and asking at customer service for leftover fliers. Both answers change every week, which is why the thread keeps filling up. Here is how to read both from the source instead.
JCPenney's calendar makes this a busy month: its holiday release lists the Biggest Sale of the Season November 5-11, Holiday Daily Deals November 16-19, Black Friday Deals November 20-29 (Black Friday is November 27) and Price Lock December 1-25.
Which codes are live today
curl -s https://api.scavio.dev/api/v1/jcpenney/coupons \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'7 offers in 1.2 seconds, 2 of them with a code. The first, as captured (the disclaimer cut short; the response carries it in full):
{
"code": "2HONOR",
"channel": "online",
"headline": "BIGGEST SALE OF THE SEASON! - EXTRA 20% OFF ANY OTHER WAY YOU PAY",
"details": "select apparel, shoes, accessories",
"offers": [
{ "headline": "BIGGEST SALE OF THE SEASON! - EXTRA 20% OFF ANY OTHER WAY YOU PAY", "details": "select apparel, shoes, accessories" },
{ "headline": "EXTRA 30% OFF WITH YOUR JCPENNEY CREDIT CARD OR JCPENNEY MASTERCARD", "details": "select apparel, shoes, accessories" },
{ "headline": "EXTRA 30% OFF ANY WAY YOU PAY", "details": "select bedding, bath, curtains" }
],
"starts_at": "2026-11-05T00:00:00-06:00",
"ends_at": "2026-11-11T23:59:59-06:00",
"disclaimer": "*Extra 30% off select original, regular and sale-priced bedding, bath and curtain purchase any way you pay. Extra 30% off select original, regular and sale-priced apparel, shoes and accessories purchase with your JCPenney Credit...",
"url": "https://www.jcpenney.com/g/shops/shop-all-products?s1_deals_and_promotions=SALE&id=cat1007450013"
}"Is it still active?" is ends_at: 2HONOR stops at 11:59 pm Central on November 11. The second code, ADDCOLOR, takes an extra 10% off select JCPenney Beauty and salon products from November 1 to 30. The other five offers had code: null: the in-store versions of the same two offers (channel both) and three in-store salon and portrait offers. channel tells online codes from in-store ones.
What the code takes off one item
The disclaimer answers what a shopper actually wants to know, how much comes off and on what: extra 20% off select apparel, shoes and accessories, 30% with a JCPenney card, 30% off bedding, bath and curtains, and "Extra 10% off select home, salon products, JCPenney Beauty, Clearance, Deal Edit, Limited-Time Deals** and Specials". You do not have to do that math. Every item in a listing already carries the price after the code:
| Item on Nov 10, 2026 | Price | With 2HONOR | Off |
|---|---|---|---|
| St. John's Bay Womens Mid Rise Straight Leg Jean (sale) | $19.99 | $15.99 | 20% |
| Home Expressions Velvet Plush Blanket (sale) | $19.99 | $13.99 | 30% |
| Liz Claiborne Womens Crew Neck Short Sleeve Blouse (clearance) | $13.19 | $11.87 | 10% |
| Cooks Stainless Steel 13-pc. Cookware Set (sale) | $69.99 | $62.99 | 10% |
| Nike Womens Crew Neck Short Sleeve Active T-Shirt (clearance) | $12.79 | none |
On the first 48 items of the Sale list, 45 carried a 2HONOR price: 30 at 20% off, 12 at 30% and 3 at 10%. On the first 96 items of the Clearance list, 51 did, each exactly 10% under the clearance price, and the 45 that did not were almost all brands the terms exclude:
The exclusion list in the disclaimer starts "Does not apply to Best Value, Aéropostale, ArtCarved Personalized Jewelry, Athletic Shoes" and includes Carter's, Clarks, Fine Jewelry, Furniture, Levi's, Lee, Mattresses, Nike and Watches. That is why a code "doesn't work" on a Nike hoodie: it was never meant to.
For one item, the product endpoint gives the same answer with the price window:
curl -s https://api.scavio.dev/api/v1/jcpenney/product \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"product_id": "ppr5008604049"}'The St. John's Bay jean, in 10.3 seconds (everything but the price block trimmed):
{
"current_min": 19.99,
"current_max": 19.99,
"regular_min": 48,
"regular_max": 48,
"sale_min": 19.99,
"sale_max": 19.99,
"clearance_min": null,
"clearance_max": null,
"percent_off": 58,
"percent_off_min": 58,
"price_type": "sale",
"deal_label": "GOTTA HAVE IT PRICE!",
"coupon": { "code": "2HONOR", "price_min": 15.99, "price_max": 15.99 },
"starts_at": "2026-11-10T06:00:00.000Z",
"ends_at": "2026-11-11T05:59:59.000Z",
"currency": "USD"
}starts_at and ends_at here are the sale price's own window, one day, so check again tomorrow. Up to 20 products go in one call as product_ids, still 1 credit. If you want to pick the item up the same day, /store-availability with a SKU from variants[] and your ZIP counts the units at the 5 nearest stores: size 6 of this jean had 2 units each at 3 of the 5 stores near Plano, Texas.
Get told when a code appears or a price drops
import json, os, requests
KEY = os.environ["SCAVIO_API_KEY"]
H = {"Authorization": f"Bearer {KEY}"}
API = "https://api.scavio.dev/api/v1/jcpenney"
WATCH = {"ppr5008604049": 15.00, "ppr5008660235": 11.00} # product id -> alert below this price
seen = set(json.load(open("codes.json"))) if os.path.exists("codes.json") else set()
coupons = requests.post(f"{API}/coupons", headers=H, json={}, timeout=120).json()["data"]["coupons"]
for c in coupons:
if c["code"] and c["code"] not in seen:
print(f"new code {c['code']}: {c['headline']} until {c['ends_at']}")
json.dump(sorted({c["code"] for c in coupons if c["code"]} | seen), open("codes.json", "w"))
products = requests.post(f"{API}/product", headers=H, json={"product_ids": list(WATCH)}, timeout=120).json()["data"]["products"]
for p in products:
best = (p["price"]["coupon"] or {}).get("price_min") or p["price"]["current_min"]
if best is not None and best < WATCH[p["id"]]:
print(f"{p['title']}: ${best} today")Run it once a day and it costs 2 credits a day, 60 a month, $0.06 at the Growth rate of $1 per 1,000 credits. Hourly during Black Friday week is 48 credits a day.
What this does not tell you
- Codes that are not public. The list is what jcpenney.com's coupon page shows an anonymous visitor. Emailed and mailer codes, offers inside a JCPenney account, card-only pricing beyond the public text and Rewards balances are not in it, and neither is a paper code slipped into a store ad.
- The cart. The after-coupon price is what the site shows for that code at that moment. JCPenney's terms say "items in your shopping cart may have a different price from the price displayed on the product page when it was first placed in your cart" and "Prices may vary in Alaska and Puerto Rico."
- Marketplace items. The terms say JCPenney's coupon codes "will not be applicable to Marketplace Products, unless expressly stated".
- Pink-tag prices. In-store pink-tag clearance markdowns are not something the API returns.
- Checkout. It reads prices and codes; it does not apply them, reserve stock or buy anything.
For every JCPenney endpoint with captured responses, see how to get JCPenney clearance and coupon prices; for the other JCPenney data options, see the best JCPenney clearance tracker APIs. The coupons docs and the JCPenney API overview list every field. Try the JCPenney API free, 50 credits, no card.
Frequently asked questions
Is there a JCPenney coupon right now?
On November 10, 2026, jcpenney.com listed two public codes: 2HONOR, valid November 5 to 11, 2026 until 11:59 pm Central, and ADDCOLOR, valid November 1 to 30, 2026. Scavio's /api/v1/jcpenney/coupons returns the current list with each code's channel, start and end time and full disclaimer, so you can check it on any day instead of trusting an old post.
How much does a JCPenney coupon take off?
It depends on the item, and the code's own terms say how. 2HONOR took an extra 20% off select apparel, shoes and accessories, 30% with a JCPenney card, 30% off bedding, bath and curtains, and 10% off clearance and some home items. A St. John's Bay jean on sale at $19.99 showed $15.99 with it; a Liz Claiborne blouse on clearance at $13.19 showed $11.87.
Why doesn't my JCPenney coupon work on Nike or Levi's?
The code excludes them. The 2HONOR disclaimer lists exclusions including Athletic Shoes, Carter's, Clarks, Fine Jewelry, Furniture, Levi's, Lee, Mattresses, Nike and Watches, and says some third-party seller items may be excluded too. On November 10, 2026, none of the 30 Nike items in the first 96 Clearance items had a coupon price.
Can I use this to apply codes or check out automatically?
No. The API reads what jcpenney.com shows an anonymous shopper: public codes, prices and stock. It does not log in, apply codes to a cart or check out, and we do not support checkout bots. Use it to know which code is live and what an item costs with it, then buy it yourself.