Merran documentation API & integrations
What's on sale
const url = 'http://localhost:3000/api/stores/deals';const options = { method: 'GET', headers: {cookie: 'merran.session_token=<merran.session_token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url http://localhost:3000/api/stores/deals \ --cookie merran.session_token=<merran.session_token>What’s on sale at the household’s store, by food, each sale judged against what the product usually costs (the lowest in a while first), and the recipes they’re in. From the prices the household has seen this past week: nothing without a Kroger store. With an API key, it needs the list: read permission.
Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”Its deals.
object
The household’s store’s banner, or null without one.
object
The food: chicken thigh.
object
In the currency’s smallest unit: cents.
The sale’s last day.
How good a sale is, against what the product usually costs: the lowest in a while, a normal sale, or barely off (under a tenth).
How much is off: 0.25.
By recipe id, what each recipe uses that’s on sale, named as the recipe has it.
object
object
How good a sale is, against what the product usually costs: the lowest in a while, a normal sale, or barely off (under a tenth).
Example
{ "store": "Fry's", "checkedAt": "2026-10-01T17:30:00.000Z", "leanOnSales": "some", "deals": [ { "food": "milk", "product": { "id": "0001111041700", "upc": "0001111041700", "name": "Kroger 2% Reduced Fat Milk", "brand": "Kroger", "size": "1 gal", "image": "https://www.kroger.com/product/images/medium/front/0001111041700", "price": 349, "salePrice": 299, "saleEnds": "2026-10-21", "currency": "USD", "aisle": "Dairy", "inStock": true, "url": "https://www.frysfood.com/p/milk/0001111041700" }, "verdict": "sale", "usual": 349, "off": 0.14 } ], "recipes": { "0199e8b0-5a10-7a01-8b00-000000000006": [ { "name": "milk", "verdict": "sale" } ] }}Not signed in.
object
object
object
Example
{ "error": { "code": "not_found", "message": "There's nothing here.", "fields": { "name": "Give it a name." } }}Not allowed.
object
object
object
Example
{ "error": { "code": "not_found", "message": "There's nothing here.", "fields": { "name": "Give it a name." } }}© 2026 Kyle Johnson. Documentation: CC BY 4.0. Merran: AGPL-3.0-or-later.