RetailMeNot API: Get coupons for a store
Finds a store on RetailMeNot by name or website and returns its current coupon codes (revealed as after Show Code), sales and cash back offers, with details, exclusions and expiration dates when stated.
Unofficial. Not affiliated with or endorsed by RetailMeNot.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Store, required
store Store name or website, for example Nike or nike.com.
Nike
- Codes Only optional
codes_only Return only code offers, for example true.
false (default)
True or false.
- Max Results optional
max_results Maximum offers to return, for example 20.
20 (default)
Whole number from 1 to 50.
Input as JSON
{ "store": "Nike"}Output
{ "offers": [ { "title": "Instant Savings! Extra 20% Off Select Styles", "details": "Discount Automatically Applied in Cart.", "discount": "20% Off", "offer_id": "V7Y57OXASZF7HHT4RU7CKDEGZI", "verified": true, "page_link": "https://www.retailmenot.com/view/nike.com?u=V7Y57OXASZF7HHT4RU7CKDEGZI" , "exclusions": "", "offer_type": "code", "uses_today": null, "coupon_code": null, "expiry_date": null }, { "title": "15% Off Nike App Purchase", "details": "Get 15% off your purchase in the Nike App. Code required.", "discount": "15% Off", "offer_id": "3VR6VITNKBEHRKZXGDAVOWOHKA", "verified": true, "page_link": "https://www.retailmenot.com/view/nike.com?u=3VR6VITNKBEHRKZXGDAVOWOHKA" , "exclusions": "", "offer_type": "code", "uses_today": null, "coupon_code": null, "expiry_date": null }, { "title": "4% Cash Back For Purchases Sitewide", "details": "Combine with other offers for an even better deal! Cash back is earned on the qualifying purchase total after any discounts and before any fees, taxes, or shipping and handling are applied. Purchases of gift cards are excluded. Rewards earnings not to exceed $50.00.", "discount": "4% Back", "offer_id": "WK7SN5MYENDEDAKI4MW2TJZ3XM", "verified": true, "page_link": "https://www.retailmenot.com/view/nike.com?u=WK7SN5MYENDEDAKI4MW2TJZ3XM" , "exclusions": "", "offer_type": "cash back", "uses_today": null, "coupon_code": null, "expiry_date": null } ], "store_name": "Nike", "store_page_link": "https://www.retailmenot.com/view/nike.com" }Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"retailmenot.com/get_coupons","input":{"store":"Nike"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "retailmenot.com/get_coupons" , "input": { "store": "Nike" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "retailmenot.com/get_coupons" , "input": { "store": "Nike" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run retailmenot.com/get_coupons# with {"store":"Nike"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "store" ], "properties": { "store": { "type": "string", "description": "Store name or website, for example Nike or nike.com." }, "codes_only": { "type": "boolean", "default": false, "description": "Return only code offers, for example true." }, "max_results": { "type": "integer", "default": 20, "maximum": 50, "minimum": 1, "description": "Maximum offers to return, for example 20." } }}Output schema
{ "type": "object", "required": [ "store_name", "store_page_link", "offers" ], "properties": { "offers": { "type": "array", "items": { "type": "object", "required": [ "title", "discount", "offer_type", "coupon_code", "expiry_date", "verified", "uses_today", "details", "exclusions", "offer_id", "page_link" ], "properties": { "title": { "type": "string" }, "details": { "type": "string" }, "discount": { "type": [ "string", "null" ] }, "offer_id": { "type": [ "string", "null" ] }, "verified": { "type": "boolean" }, "page_link": { "type": "string" }, "exclusions": { "type": "string" }, "offer_type": { "type": "string" }, "uses_today": { "type": [ "integer", "null" ] }, "coupon_code": { "type": [ "string", "null" ] }, "expiry_date": { "type": [ "string", "null" ] } }, "additionalProperties": false } }, "store_name": { "type": "string", "description": "Store name." }, "store_page_link": { "type": "string", "description": "RetailMeNot store page." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
retailmenot.com/get_coupons- Returns
- store name, store page; offers with title, discount, type, code, expiry, verified flag, details, exclusions, link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method retailmenot.com/get_coupons with the inputs above.
Ask your agent
- Find current promo codes for Ulta Beauty on RetailMeNot, codes only please
- What coupon codes and sales does RetailMeNot have right now for wayfair.com? Show me up to 10 with expiration dates.
- Any working discount codes for Sephora? I just want actual codes, not sales or cash back offers.
- Pull the latest deals for Old Navy, including exclusions and when each one expires, max 30 offers
- I'm about to check out at chewy.com — are there any verified coupons or cash back offers I can use?
See more
Search Nordstrom products by words, price, sale status and sort order. Prices are the lowest listed price. Available sizes may be empty when a product page is unavailable.
nordstrom.com/search_productsSearches Kohl's products in site order and returns prices, offers, ratings and links for each result.
kohls.com/search_productsSearches community-posted Slickdeals deals by product or keyword, optionally limited to a store and hiding expired deals, ordered by relevance, newest or most popular.
slickdeals.net/search_dealsSearches Macy's products in the site's order with optional USD price bounds, sale-only results and sorting. Prices for products with a range use the lowest shown price.
macys.com/search_productsLists current public Today's Deals in page order for an Amazon store country, optionally for one deal category and a minimum discount, with deal and original prices, discount, deal type, time left, share claimed, rating and links.
amazon.com/list_dealsSearches Target products and returns prices, ratings, photos and product links. Prices can vary by store, so you can give a ZIP code for local pricing.
target.com/search_productsLists current Slickdeals Frontpage deals in site order, followed by popular deals when needed, with each deal's category, or browses one category's current deals. Expired deals are left out.
slickdeals.net/list_popular_dealsSearches clothes and shoes in one Zalando country shop, with optional gender, brand, deal and sort filters. Prices and discounts are those shown on the product cards; size-dependent prices may be starting prices.
zalando.com/search_products