Boat parts, priced in a catalog you can finally query
Marine equipment is one of the last retail categories where the price list is a PDF, a phone call, or a login. Anyone who buys, sells, or services boats knows the drill: you find the part number you need, then you find out what it costs today by asking.
Yachtshop.eu is one of the better-behaved shops in that world. It runs the Osculati catalog — thousands of marine parts, from anchorage and docking hardware to engine service items — on plain server-rendered pages with structured data baked in. That makes it unusually cooperative: no browser, no API key, no session.
The part code is the join key
The useful thing about an Osculati catalog is not the description, it is the code. 1636003 means the same part in your inventory system, your supplier's spreadsheet, and the shop's page. Everything else is decoration around that identifier.
Each product row carries:
productCode— the Osculati codename,description,brandpriceandcurrency(EUR),conditioncategory— the breadcrumb tailurlandimageUrl
Because the shop publishes JSON-LD on each product page, those values arrive as data rather than as scraped text nodes. The Actor reads the structured block and falls back to the page markup only where the block is thin — which is why it does not need a headless browser.
Three jobs it fits
- Price monitoring. Marine parts move with supplier pricing, and a spreadsheet of "what we pay" goes stale in weeks. Schedule a run per category and diff.
- Assortment mapping. Before you list parts for resale you need the category tree, the codes, and what is actually stocked. A category page walks every product in it.
- Parts database enrichment. If you already hold a parts list by code, this fills in names, descriptions and images without a manual pass.
Two ways to point it
A category URL — https://www.yachtshop.eu/en/categories/1/Anchorage+and+docking — walks the whole category; the site ships its full listing on one page, so there is no pagination to babysit. A product URL — https://www.yachtshop.eu/en/product/1636003/... — pulls that single part.
The language prefix (/en/, /de/, ...) follows your start URL, so you get the catalog in the language your customers read. Prices stay in EUR.
What it will not do
It reads the public catalog. No account prices, no stock counts behind a login, no order history, and no checkout. If a part is not on the public page, it is not in the dataset.
Run it
Run Yachtshop.eu Scraper on Apify.
- Paste category or product URLs.
- Set a maximum product count per URL (default 100).
- Export JSON, CSV or Excel.
Pay-per-event pricing means you pay for products returned, not for runs that found nothing. Schedule a weekly pass and a price change becomes a diff instead of a surprise.
This is the same job we do for retail prices in general and for the same product across markets — marine parts are just a catalogue where nobody bothered to expose the rows.