RetailMeNot APIretailmenot.com ↗
Access RetailMeNot coupons, promo codes, and cash back offers across 6000+ stores via 3 endpoints. Search by keyword or fetch deals by store slug.
What is the RetailMeNot API?
The RetailMeNot API gives access to coupon codes, sales, and cash back offers across more than 6,000 merchants through 3 endpoints. Use search_coupons to query by keyword — 'grocery', 'electronics', 'pizza' — and get back a ranked list of current offers with discount amounts, offer types, and promo codes. Use get_store_coupons to pull all active deals for a specific store by slug, and get_stores to enumerate the full merchant catalog.
curl -X GET 'https://api.parse.bot/scraper/0b19f338-de62-4d4e-8737-da11b18b9053/search_coupons?query=grocery' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for coupons and promo codes by keyword. Resolves the query to the best matching category or store page on RetailMeNot, then returns all available coupons from that page. Results include coupon codes, sales, and cash back offers with discount amounts and store attribution. For coupon-type offers, the actual promo code string is included when available.
| Param | Type | Description |
|---|---|---|
| query | string | Search term for finding coupons (e.g. 'grocery', 'pizza', 'electronics'). Matched against RetailMeNot categories and store names. |
{
"type": "object",
"fields": {
"query": "The search term used",
"total": "Number of coupons returned",
"coupons": "Array of coupon objects with store, title, offer_type, type_label, discount, store_slug, offer_id, and code (the actual promo code string or null for non-code offers)",
"source_url": "The RetailMeNot page URL the coupons were scraped from"
},
"sample": {
"data": {
"query": "grocery",
"total": 24,
"coupons": [
{
"store": "Instacart",
"title": "$25 Off Sitewide",
"discount": "$25 Off",
"offer_id": "RBC3B5GMYNHZDE7O6WPPOX57SY",
"offer_type": "COUPON",
"store_slug": "instacart.com",
"type_label": "Coupon code"
},
{
"store": "Instacart",
"title": "$10 Off $35 Eligible Items With FSA Or HSA Payment",
"discount": "$10 Off",
"offer_id": "4V3RY3W7D5HNVO7U5QY6YPIJ2M",
"offer_type": "COUPON",
"store_slug": "instacart.com",
"type_label": "Coupon code"
},
{
"store": "Instacart",
"title": "1% Cash Back For Purchases Sitewide",
"discount": "+1% Back",
"offer_id": "QSIMAN6TPRCO7E5UVZ5AZQC2DU",
"offer_type": "REWARD",
"store_slug": "instacart.com",
"type_label": "Cash Back"
}
],
"source_url": "https://www.retailmenot.com/coupons/grocery"
},
"status": "success"
}
}About the RetailMeNot API
Endpoints and What They Return
The API has three endpoints. get_stores reads RetailMeNot's merchant catalog and returns an array of store objects — each with store_name, store_slug (e.g. target.com), and a full url — covering 6,000+ stores. This is useful for discovery and for building a local index of valid slugs to pass to other endpoints.
get_store_coupons accepts a store_slug parameter and returns every current coupon for that merchant. Each coupon object includes title, offer_type, type_label, discount, code (the literal promo code where one exists), offer_id, and store_slug. The response also includes a scraped_at ISO 8601 timestamp and the source_url for the RetailMeNot page that was read.
Keyword Search
search_coupons accepts a free-text query string and resolves it to the best-matching category or store page on RetailMeNot. It returns the same coupon object shape as get_store_coupons — with store, title, offer_type, type_label, discount, code, and store_slug — plus a total count and source_url. This is the right endpoint when you don't already know a store slug and want to surface relevant deals by topic.
Coverage and Freshness
The get_stores endpoint pulls from RetailMeNot's sitemap in a single request without traversing sub-sitemaps; the returned store list reflects what is indexed there at call time. get_store_coupons makes up to two requests per call to assemble the full coupon set for a store. The scraped_at field tells you exactly when the response data was generated, so you can track freshness in your own pipeline.
The RetailMeNot API is a managed, monitored endpoint for retailmenot.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when retailmenot.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official retailmenot.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a browser extension that surfaces promo codes by matching the current domain against
store_slugvalues fromget_stores - Aggregate cash back offers across grocery chains by querying
search_couponswith food-related keywords - Monitor deal availability for a specific retailer over time using
get_store_couponsand comparingscraped_attimestamps - Populate a deal-comparison site by iterating over the store catalog from
get_storesand fetching coupons per slug - Alert users when a
discountvalue exceeds a threshold for their saved stores usingget_store_coupons - Categorize offer types by grouping coupon objects on
offer_typeandtype_labelfields across multiple store responses
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does RetailMeNot have an official developer API?+
What does the `code` field in a coupon object contain?+
code field contains the literal promo code string when one is associated with an offer (e.g. 'SAVE20'). For sale or cash back offer types that do not require a code, the field may be empty or absent. The offer_type and type_label fields distinguish between promo codes, sales, and cash back deals.Does the API return historical or expired coupons?+
get_store_coupons and search_coupons return only the offers currently listed on RetailMeNot's store or category pages at query time. Historical deal data and expired offers are not exposed. The scraped_at timestamp tells you how recent the live response is.Can I filter coupons by offer type or minimum discount within the API?+
offer_type, type_label, or discount client-side after receiving the response. You can also fork this API on Parse and revise it to add server-side filtering parameters.Does the API cover affiliate link details or click-through tracking URLs for each coupon?+
offer_id, code, discount, and store_slug, but no affiliate or click-tracking URLs are returned. You can fork this API on Parse and revise it to add that endpoint if the source page exposes those links.