Luxembourg ALVA Latest Food and Feed Alerts
Pricing
from $0.00005 / actor start
Luxembourg ALVA Latest Food and Feed Alerts
Export only the latest Luxembourg ALVA homepage food and animal-feed alerts, with French titles, summary text, publication dates and original category tokens.
Pricing
from $0.00005 / actor start
Rating
0.0
(0)
Developer
Michal Pšenčík
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Security
Limited permissionsShare
Export the alerts the Luxembourg food safety portal currently promotes in the "Alertes alimentaires" section of its homepage, as one dated, hashed JSON bundle: every alert's notice URL, publication date, French title, summary text and the source's own category tokens. Human-food recalls and animal-feed recalls are both kept, side by side.
It suits a Luxembourg food or pet-food retailer or importer that polls the national homepage once a day and adds the promoted alerts to an internal review queue. The bundle is a snapshot of what the ALVA (Administration luxembourgeoise vétérinaire et alimentaire) homepage shows. It is not a list of every Luxembourg recall, not a stock match and not proof that any product is safe.
This Actor is independent of the ALVA and the Luxembourg government.
Input
{ "requestIntervalMs": 1500 }
requestIntervalMs(integer, 1300 to 10000, default 1500): idle time after every response before the next request. A run fetches one fixed homepage, so the interval only matters when a retry or redirect happens.
Empty input uses the default. Unknown fields and non-integers are rejected before any request. There is nothing to filter: every run reads the same page.
Output
Each successful run stores exactly one dataset item: the complete bundle for the alert section. A run that fails before delivery (invalid input, a source error, a layout change) stores nothing. The one exception is delivery_uncertain, described under Coverage and limits.
{"schemaVersion": "1","sourceId": "lu-alva-home-alerts","sourceUrl": "https://securite-alimentaire.public.lu/fr.html","observedAt": "2026-10-24T13:05:03.275Z","coverage": "homepage_alert_section_only","items": [{"noticeUrl": "https://securite-alimentaire.public.lu/fr/actualites/rappels-aliments-pour-animaux/2026/10/rappel-filet-bites-thon-anchois-de-la-marque-moments.html","publishedDate": "2026-10-20","publishedDateRaw": "20.10.2026","title": "Rappel : Filet Bites thon & anchois de la marque MOMENTS","summary": "Présence possible de fragments d'arêtes de poisson","categoryTokens": ["rappels-aliments-pour-animaux"]}],"snapshotHash": "7b6d1cc1094b7df152a857606d7edf48714516b8fe5c8bffabc1d9a7c580f490"}
The example shows one of the three alerts the homepage promoted on 24 October 2026 (a dried-savory food recall, this pet-food recall and a cooked-shrimp food recall).
observedAtis the UTC instant the homepage response completed.itemsholds 1 to 20 alerts, sorted bypublishedDatedescending, thennoticeUrl.noticeUrlis the stable identity of an alert; it points to either a food alert (/fr/actualites/alertes/) or an animal-feed recall (/fr/actualites/rappels-aliments-pour-animaux/).publishedDateis the page'sdatetimevalue (YYYY-MM-DD, no time or timezone) andpublishedDateRawtheDD.MM.YYYYlabel it shows; the run checks they agree. Titles and summaries stay in French with whitespace collapsed. A summary can be an empty string.categoryTokensare the alert's own CSS class labels on the homepage, such asrappels-de-produitsorrappels-aliments-pour-animaux, sorted. They are source labels, not a translated taxonomy, and new labels are passed through.snapshotHashis the SHA-256 of the canonical JSON of the bundle withoutsnapshotHash,observedAtandsourceUrl. Two runs with the same content have the same hash, so you can skip unchanged snapshots on your side. Content returning to an earlier state returns to its earlier hash, so the hash is not an event ID.
A free SUMMARY record in the default key-value store explains every run: status, stop reason, errors, request and byte counts, HTTP statuses, parsed and deduplicated alert counts, stored and charged bundle counts, and what the run did not cover.
Pricing
Pay per event, two built-in events:
| Event | Price | When |
|---|---|---|
| Actor start | $0.00005 | Once per start unit when a run starts |
| Food and feed alert bundle | $0.001 | Once per complete bundle actually stored in the dataset |
A successful default run at 256 MB costs $0.00105 in Actor event fees; 30 daily runs cost $0.0315. Every successful run is billed for its bundle, including runs whose content is unchanged. A run that fails before delivery stores no bundle and is not charged for one; the start fee still applies. A delivery_uncertain run may already have stored, and been charged for, its bundle. If your spending limit cannot cover one bundle, the run does not fetch the source and stops with spending_limit.
Coverage and limits
- Homepage alert section only. The homepage promotes a few recent alerts (three on 24 October 2026) and the ALVA chooses them editorially. An alert leaving the homepage is never a withdrawal, a resolution or the end of a recall. The alert archive, its search, notice pages, PDFs, lot numbers and full article text are never fetched.
- The neighbouring "Actualités" news section uses the same layout and is left out on purpose.
- No severity, status, affected batches or market coverage is inferred from a title or category.
- Stateless: no baseline, no change events, no exactly-once promise. Each run delivers the whole current section; compare hashes or notice URLs yourself.
- One request to one fixed URL per run. At most 5 HTTP requests including retries and redirects, 2 MiB per response, 6 MiB per run and 90 seconds of source work. Timeouts, connection resets and 5xx responses are retried at most twice, after 2 and 4 seconds plus the request interval. Redirects are followed only back to the same homepage URL, at most 3.
- A 403, a 429 or a challenge or block page (also inside a 200 response) stops the run with
source_blockedorsource_throttled. No proxy, browser, cookies or workaround is used. - A page whose layout no longer matches (no single "Alertes alimentaires" section, a missing link, title, summary or date, a date label that disagrees with its
datetime, a link to anywhere other than an alert notice, more than 20 alerts, no alerts, or a page cut off before its end) fails withsource_layout_changedand stores nothing. It never becomes an empty or shortened bundle. - If the push was sent but the dataset cannot confirm the bundle (for example, the readback fails), the run fails with
delivery_uncertaininstead of claiming delivery. The bundle may still have been stored and charged: check the run's dataset before you retry, because a retry stores and charges a new bundle.
Retry a failed run with the same input; there is no partial state to resume.
Source and data
Source: the ALVA's public food safety portal, securite-alimentaire.public.lu. The bundle keeps public factual alert text only and omits contact details. If a source string names a person, you are the controller for how you use it.
For support, open an issue on this Actor's Issues tab with the run ID and the stopReason from SUMMARY.