{"name":"Prej API","version":"1.0.0","description":"Danish grocery prices and products, from 21 chains, recomputed nightly.","documentation_url":"https://api.prej.app/docs","openapi_url":"https://api.prej.app/openapi.json","llms_txt_url":"https://api.prej.app/llms.txt","signup_url":"https://prej.dk/api","account_url":"https://prej.dk/konto","terms_url":"https://prej.dk/vilkaar-api","contact_email":"hej@prej.dk","authentication":{"type":"bearer","header":"Authorization","format":"Bearer prej_<key>","signup_url":"https://prej.dk/api","note":"A free key is issued instantly at the signup URL — no email approval."},"conventions":{"prices":"Integers in øre (1/100 DKK). Divide by 100 for kroner.","dates":"ISO 8601 calendar days (YYYY-MM-DD), Europe/Copenhagen.","price_scope":"A price belongs to a chain, not to an individual store.","offer_window":"offer_ends is the last day the offer price applies, inclusive — not the day the price returns to normal. A null offer_starts means the chain does not publish a start date, never that the price is not an offer.","freshness":"Every list response and /v1/stats carry as_of, the date of the data behind it."},"data":{"refreshed":"Nightly, between 03:00 and 04:25 Europe/Copenhagen.","history_since":"April 2026","max_history_days":365,"chains":["365discount","bilka","bilkatogo","brugsen","calle","fakta-de","fleggaard","fotex","kvickly","lidl","meny","minkobmand","motatos","nemlig","netto","poetzsch","rema1000","scandinavian-park","spar","superbrugsen","wolt-market"],"categories":["baby-og-boern","bolig-og-koekken","broed-og-kager","drikkevarer","dyremad","elektronik","fritid-og-sport","frost","frugt-og-groent","have-og-byggemarked","husholdning","kiosk","kolonial","koed-og-fisk","legetoej","mad-fra-hele-verden","mejeri-og-koel","personlig-pleje","slik-og-snacks","toej-og-sko","oevrigt"],"labels":["welfare_1","welfare_2","welfare_3","dyrenes_beskyttelse","keyhole","wholegrain","gluten_free","lactose_free","organic_dk","organic_eu","msc","asc","fairtrade","rainforest_alliance","danish_produced","vegan","vegetarian","sugar_free","no_added_sugar","nordic_swan","asthma_allergy","eu_star","halal","alcohol_free","eu_ecolabel","ggn","decaf","biodynamic","ce_mark","ecocert"]},"rate_limits":{"daily":"Per key, per plan — see `plans[].daily_request_limit`. Resets at 00:00 UTC.","burst":{"limit":120,"window_seconds":60},"headers":["X-RateLimit-Limit-Day","X-RateLimit-Remaining-Day","Retry-After"],"response":"429 with `scope`, `limit`, `remaining`, `reset_at` and `retry_after_seconds`; a `daily` 429 also carries `upgrade_url`."},"plans":[{"id":"free","name":"Gratis","price":"Free","monthly_price_ore":0,"price_is_from":false,"daily_request_limit":25,"history_days":7,"commercial_use":false,"order_url":"https://prej.dk/api"},{"id":"basic","name":"Start","price":"750 DKK/month","monthly_price_ore":75000,"price_is_from":false,"daily_request_limit":2500,"history_days":90,"commercial_use":true,"order_url":"https://prej.dk/konto"},{"id":"pro","name":"Pro","price":"2,500 DKK/month","monthly_price_ore":250000,"price_is_from":false,"daily_request_limit":25000,"history_days":365,"commercial_use":true,"order_url":"https://prej.dk/konto"},{"id":"enterprise","name":"Enterprise","price":"7,500 DKK/month and up","monthly_price_ore":750000,"price_is_from":true,"daily_request_limit":1000000,"history_days":365,"commercial_use":true,"order_url":"mailto:hej@prej.dk"}],"endpoints":[{"method":"GET","path":"/","summary":"API index","auth":false},{"method":"GET","path":"/openapi.json","summary":"OpenAPI 3.1 specification","auth":false},{"method":"GET","path":"/llms.txt","summary":"This API in plain text, for models","auth":false},{"method":"GET","path":"/docs","summary":"Human-readable API reference","auth":false},{"method":"GET","path":"/v1/products","summary":"Search and browse products","auth":true},{"method":"GET","path":"/v1/products/optimize","summary":"Optimize a shopping list across stores","auth":true},{"method":"GET","path":"/v1/products/batch","summary":"Fetch multiple products by ID","auth":true},{"method":"GET","path":"/v1/products/{id}","summary":"Get a single product with prices and related products","auth":true},{"method":"GET","path":"/v1/products/{id}/history","summary":"Price history for a product","auth":true},{"method":"GET","path":"/v1/offers","summary":"Every offer running today","auth":true},{"method":"GET","path":"/v1/flyers","summary":"Tilbudsaviser running now","auth":true},{"method":"GET","path":"/v1/categories","summary":"All product categories","auth":true},{"method":"GET","path":"/v1/labels","summary":"All product labels","auth":true},{"method":"GET","path":"/v1/scan/{gtin}","summary":"Look up a product by GTIN/EAN barcode","auth":true},{"method":"GET","path":"/v1/lookup/{chain}/{item_number}","summary":"Look up a product by a chain's own article number","auth":true},{"method":"GET","path":"/v1/chains","summary":"All grocery chains","auth":true},{"method":"GET","path":"/v1/stats","summary":"Aggregate stats (product count, chain count, drop overview)","auth":true}]}