Vecchio Mulino Beach APIvecchiomulinobeach.com ↗
Access Vecchio Mulino Beach's current food menu, allergen codes, PDF menu links, and reservation time slots via 3 structured JSON endpoints.
What is the Vecchio Mulino Beach API?
The Vecchio Mulino Beach API exposes 3 endpoints covering the restaurant's current dinner menu, navigation links to its Food + Drinks pages and PDF documents, and service-hour data from its reservation page. The get_dinner_menu endpoint returns every priced dish grouped by menu section with EUR prices, per-dish EU allergen codes (1–14), frozen-product markers, and the menu's publication month. Data covers all three menu pages of this Peschiera del Garda beach restaurant.
curl -X GET 'https://api.parse.bot/scraper/a690a9e4-9162-48d6-8766-bf294eddd9f4/get_dinner_menu?exclude_allergen_codes=2%2C14' \ -H 'X-API-Key: $PARSE_API_KEY'
Returns the restaurant's current food menu as published on its site: every priced dish grouped by menu section (e.g. antipasti sub-courses, primi, secondi di carne, secondi di pesce, contorni, salads, kids dishes), in menu order across the three menu pages. Each dish carries its full printed text (Italian), its EUR price, whether the price is per portion or per hectogram (per_hg, used for the Fiorentina steak), the numeric allergen codes printed beside it, their names under the standard EU 14-allergen numbering (the menu prints only the numbers), a contains_crustaceans_or_molluscs flag (codes 2 or 14), and whether the dish carries the menu's frozen-product asterisk. Section notes hold un-priced text such as the children's promotion terms and frying-oil disclaimer. Menu date is reported as the publication month of the menu document plus the document's last-modified date; the menu itself does not print a date. The optional section filter keeps only sections whose title contains the given text (case-insensitive substring, e.g. 'carne' or 'pesce'); exclude_allergen_codes removes dishes carrying any of the listed codes (dishes without printed codes are kept). total_items_on_menu always counts the full menu; returned_items counts dishes after filtering. One call fetches the whole menu; there is no pagination. The only failure for caller input is a malformed exclude_allergen_codes value (422).
| Param | Type | Description |
|---|---|---|
| section | string | Case-insensitive substring matched against section titles; only matching sections are returned. Omitted = all sections. Section titles observed on the current menu include 'Antipasti', 'dall'orto', 'carne', 'pesce', 'fritture', 'Primi', 'Insalatone', 'Secondi di Carne', 'Secondi di Pesce', 'Contorni'. A value matching no section yields an empty sections list. |
| exclude_allergen_codes | string | Comma-separated EU allergen code numbers (1-14), e.g. 2,14 to drop every dish marked with crustaceans or molluscs. The scraper splits on commas - do NOT pass an array. Non-numeric values are rejected with a 422. |
{
"type": "object",
"fields": {
"currency": "ISO currency code for all prices (EUR)",
"sections": "array of menu sections in menu order, each {title, page (1-based menu page), items, notes}",
"menu_title": "label of the menu document as linked from the site's food page",
"returned_items": "integer count of dishes in the returned sections after filtering",
"sections[].items": "array of dishes: {name (full printed Italian text), price_eur (number), price_unit ('per_portion' or 'per_hg'), frozen_product_marker (boolean, menu asterisk), allergen_codes (array of integers as printed), allergens (array of names), contains_crustaceans_or_molluscs (boolean)}",
"sections[].notes": "array of un-priced text lines printed in the section (promotion terms, disclaimers); may be empty",
"total_items_on_menu": "integer count of priced dishes on the full menu, before any filtering",
"allergen_code_legend": "object mapping allergen code (string '1'..'14') to allergen name under the standard EU 14-allergen numbering",
"allergen_legend_note": "provenance note: codes are printed on the menu, names are the EU standard, not printed by the menu",
"menu_published_month": "YYYY-MM month in which the menu document was published on the site",
"menu_file_last_modified": "ISO date the menu document was last modified on the site, or null if the site does not report it",
"shellfish_allergen_codes": "array of the codes treated as shellfish: 2 (crustaceans) and 14 (molluscs)"
},
"sample": {
"data": {
"currency": "EUR",
"sections": [
{
"page": 1,
"items": [
{
"name": "Alici cantabriche Gold Codesa, olive affumicate, pomodorini semi secchi, burrata, pan brioche tostato",
"allergens": [
"cereals containing gluten",
"fish",
"milk"
],
"price_eur": 15,
"price_unit": "per_portion",
"allergen_codes": [
1,
4,
7
],
"frozen_product_marker": false,
"contains_crustaceans_or_molluscs": false
},
{
"name": "sautee di cozze al pomodoro con crostone di pane fatto in casa",
"allergens": [
"cereals containing gluten",
"molluscs (e.g. mussels, squid, octopus)"
],
"price_eur": 15,
"price_unit": "per_portion",
"allergen_codes": [
1,
14
],
"frozen_product_marker": false,
"contains_crustaceans_or_molluscs": true
}
],
"notes": [
"Alici cantabriche pescate nelle notti di primavera, la",
"qualità che ha reso la Cantabria famosa in tutto il mondo"
],
"title": "pesce"
},
{
"page": 3,
"items": [
{
"name": "Fritto di mare: calamari, gamberi, triglia*, verdure pastellate, cetrioli sottaceto fritti e alghe pastellate",
"allergens": [
"cereals containing gluten",
"crustaceans (e.g. shrimp, prawns)",
"fish",
"peanuts"
],
"price_eur": 22,
"price_unit": "per_portion",
"allergen_codes": [
1,
2,
4,
5
],
"frozen_product_marker": true,
"contains_crustaceans_or_molluscs": true
}
],
"notes": [],
"title": "Secondi di Pesce"
}
],
"menu_title": "menu con le tue ricette favorite",
"returned_items": 16,
"total_items_on_menu": 49,
"allergen_code_legend": {
"1": "cereals containing gluten",
"2": "crustaceans (e.g. shrimp, prawns)",
"3": "eggs",
"4": "fish",
"5": "peanuts",
"6": "soybeans",
"7": "milk",
"8": "tree nuts",
"9": "celery",
"10": "mustard",
"11": "sesame",
"12": "sulphites",
"13": "lupin",
"14": "molluscs (e.g. mussels, squid, octopus)"
},
"allergen_legend_note": "Numeric codes are printed on the menu next to each dish; names follow the standard EU 14-allergen numbering, which the menu does not print itself. Shellfish are codes 2 (crustaceans) and 14 (molluscs).",
"menu_published_month": "2026-02",
"menu_file_last_modified": "2026-02-26",
"shellfish_allergen_codes": [
2,
14
]
},
"status": "success"
}
}About the Vecchio Mulino Beach API
Dinner Menu Data
The get_dinner_menu endpoint returns the full food menu in menu order across three pages: antipasti, primi, secondi di carne, secondi di pesce, contorni, salads, and kids dishes. Each dish object includes name (full printed Italian text), price_eur, price_unit (per_portion or per_hg), a frozen_product_marker flag, and an allergen_codes array of EU standard numbers. The response also carries total_items_on_menu, menu_published_month (YYYY-MM), and an allergen_code_legend mapping codes '1' through '14' to their standard EU names.
Two optional parameters let you narrow results: section accepts a case-insensitive substring matched against section titles, and exclude_allergen_codes accepts a comma-separated list of EU allergen numbers (e.g. 2,14 to drop dishes marked with crustaceans or molluscs). The returned_items field in the response reflects the dish count after filtering, while total_items_on_menu always shows the unfiltered total.
Menu Links and Documents
list_menu_links reads the site's Food + Drinks navigation dropdown — which has no page of its own, so nav_href is null — and returns each sub-page with its label, href, and http_status. For each sub-page, pages[].menu_documents lists every linked PDF with its label, href, document_type, and file_size where available. total_documents gives the count of PDF links across all pages.
Service Hours and Reservations
get_service_hours returns what the restaurant's own site prints on its reservation page. weekly_opening_hours is always null because the site publishes no weekly table. What it does publish is a reservation_time_slots array of bookable HH:MM strings, reservation_notices containing verbatim Italian and English sentences that mention a clock time, and a season_opening_notice with any seasonal graphic text. The source_page field gives the exact URL the data was read from.
The Vecchio Mulino Beach API is a managed, monitored endpoint for vecchiomulinobeach.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when vecchiomulinobeach.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 vecchiomulinobeach.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 an allergen-aware menu display that filters out dishes by EU allergen code using the
exclude_allergen_codesparameter. - Flag frozen products on a menu UI using the
frozen_product_markerfield returned per dish byget_dinner_menu. - Show up-to-date EUR pricing for each dish grouped by course section for a table-booking companion app.
- Retrieve direct PDF menu download links for each Food + Drinks sub-page via
list_menu_links. - Surface the restaurant's bookable reservation time slots and seasonal opening notice in a trip-planning tool using
get_service_hours. - Track menu changes over time by storing
menu_published_monthalongside dish and price records from repeated calls.
| 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 Vecchio Mulino Beach have an official developer API?+
What allergen information does `get_dinner_menu` return, and how are the codes defined?+
get_dinner_menu returns an allergen_codes array on each dish containing the EU allergen numbers printed on the menu (1–14). The response includes an allergen_code_legend object mapping each code to its EU standard name (e.g. crustaceans, molluscs, gluten). The legend note clarifies that the names come from EU regulation, not from the menu itself, which only prints the numbers.Does the API return weekly opening hours like Monday–Sunday schedules?+
get_service_hours endpoint's weekly_opening_hours field is always null because the site does not publish a weekly opening-hours table. The endpoint does return reservation_time_slots, reservation_notices, and any season_opening_notice the site displays. You can fork this API on Parse and revise it to add an endpoint that monitors a different page or source for structured opening-hour data if the site adds it.Does the API cover drinks, cocktails, or wine menus?+
get_dinner_menu endpoint covers the food menu only. list_menu_links does return sub-page links including the cocktails and wines page along with any PDF documents linked there, but structured per-drink data with prices and details is not currently returned. You can fork this API on Parse and revise it to add a dedicated drinks-menu endpoint using the document links exposed by list_menu_links.How current is the menu data, and how do I know when it was last updated?+
get_dinner_menu response includes a menu_published_month field (YYYY-MM format) reflecting the month the menu document was published on the site. The API reads the menu as currently published; it does not cache a historical version. Dish counts, prices, and allergen codes reflect whatever the site's active document contains at the time of the call.