MainMarketAPI Reference
Get Access
Overview
  • Introduction
  • Authentication
  • Errors
Stores
  • List stores
  • Get a store
  • Store sentiment
  • Store coupons
  • Store aisles
Chains
  • List chains
  • Get a chain
  • Chain aisles
  • Resolve a list
Products
  • Catalog search
  • Get a product
  • Coupons for product
Prices
  • Search prices
  • Prices by UPC
  • Prices at a store
  • Cheapest nearby
Coupons
  • List coupons
  • Get a coupon
  • Coupon savings
Indices
  • Published indices
Discovery & meta
  • Discovery routes
  • OpenAPI spec
  • Agent skill spec
Overview
  • Introduction
  • Authentication
  • Errors
Stores
  • List stores
  • Get a store
  • Store sentiment
  • Store coupons
  • Store aisles
Chains
  • List chains
  • Get a chain
  • Chain aisles
  • Resolve a list
Products
  • Catalog search
  • Get a product
  • Coupons for product
Prices
  • Search prices
  • Prices by UPC
  • Prices at a store
  • Cheapest nearby
Coupons
  • List coupons
  • Get a coupon
  • Coupon savings
Indices
  • Published indices
Discovery & meta
  • Discovery routes
  • OpenAPI spec
  • Agent skill spec

Store coupons

Active coupons available at one store. Returns chain-wide coupons plus any store-scoped overrides, sorted with store-scoped first then by savings percentage descending.

GET/v1/stores/{store_id}/coupons$0.01

Path parameters

NameTypeDescription
store_idrequireduuidCanonical store id.

Query parameters

NameTypeDescription
valid_ondateISO date YYYY-MM-DD. Filters to coupons whose valid_from ≤ valid_on ≤ valid_to. Defaults to today (UTC).
discount_typestringOne of percent_off, dollar_off, bogo, bundle, loyalty_price, featured.
exclude_featuredbooleandefault: falseWhen true, drops discount_type='featured' rows. Useful when "featured" is editorial-only at a chain.
limitintegerdefault: 501–200.
offsetintegerdefault: 0Cursor offset.
ℹ
Sort order
Store-scoped coupons (where coupons.store_id = store_id) sort first. Within each tier, rows order by savings_pct DESC. Ties break onvalid_to ASC.

Request

Request
curl 'https://api.mainmarket.com/v1/stores/8c1a4d1e-30a7-4d92-9e1c-1cb43c6f2e10/coupons?valid_on=2026-05-03&exclude_featured=true&limit=50'

Response

200 OKjson
{
  "count": 1,
  "results": [
    {
      "id": "0bc5b1d4-9a25-4d70-8a82-2ab3f6f1d901",
      "chain_id": "12d6...",
      "chain_name": "HEB",
      "chain_logo_url": "https://.../heb.png",
      "store_id": "8c1a4d1e-30a7-4d92-9e1c-1cb43c6f2e10",
      "product_id": "9d4e...",
      "product_name": "HEB Whole Milk",
      "product_brand": "HEB",
      "product_image_url": "https://.../milk.jpg",
      "discount_type": "dollar_off",
      "discount_value": 1.00,
      "min_purchase_qty": 1,
      "description": "$1 off any HEB gallon milk",
      "fine_print": "Limit 4 per transaction",
      "coupon_code": null,
      "valid_from": "2026-04-29",
      "valid_to": "2026-05-13",
      "image_url": "https://.../coupon.png",
      "is_digital_only": true,
      "requires_loyalty": true,
      "is_clippable": true,
      "deep_link_url": "heb://coupons/0bc5...",
      "source": "heb",
      "source_url": "https://www.heb.com/coupons/...",
      "size_text": "1 gal",
      "value_text": "$1 off",
      "catalog_price": 4.49,
      "total_savings": 1.00,
      "total_savings_basis": "catalog_price",
      "savings_pct": 22.27,
      "rating": "good",
      "deal_price": 3.49,
      "bogo_get_qty": null,
      "min_purchase_amount": null,
      "role": "buy"
    }
  ]
}

Each row uses the standard CouponRow shape — see List coupons for the full field reference.

Notable behavior

  • Coupons are matched to the store via the chain (store.chain_id = coupon.chain_id), plus any store-scoped overrides.
  • savings_pct requires a catalog_price baseline. Rows without a baseline are still returned but sort to the bottom with savings_pct = null.
  • Loyalty-required coupons (requires_loyalty=true) are returned by default. Filter them out client-side if your user isn't logged in.

Errors

NameTypeDescription
404Not Foundstore_id does not exist.
422Unprocessable Entityvalid_on is not a valid date, or discount_type is unknown.
402Payment RequiredPaid route — no payment proof on the request.