Boat & Yacht Listings Scraper for Yachtall
Pricing
from $2.00 / 1,000 results
Boat & Yacht Listings Scraper for Yachtall
Scrape boat & yacht listings from Yachtall: title, price, currency, year, boat type & category, length, cabins, fuel, location, seller and photos. For marine market research, pricing and dealer leads. Independent tool, not affiliated with Yachtall.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Features
Share
Boat & Yacht Listings Scraper for Yachtall ⛵ — Marine Market Data Extractor
Extract comprehensive boat and yacht listings from Yachtall — one of Europe's largest international marine marketplaces — at scale, with no login and no coding required. This Yachtall scraper collects full vessel specifications, including asking price, currency, year built, boat type (sailboat, powerboat), category, length, beam, draught, hull material, cabins, fuel, mooring location, high-resolution photo, and selling dealer or broker with their named contact person.
Leave the input empty to scrape all featured boats, or paste specific category and search URLs (e.g. /en/sailboats, /en/motorboats, or custom filtered searches). With unlocked 1,000+ pagination, you can extract thousands of boat listings directly into JSON, CSV, Excel, or API.
⚡ At a glance
| Feature | Detail |
|---|---|
| Target Website | Yachtall (International Boat & Yacht Marketplace) |
| Output Formats | JSON, CSV, Excel (XLSX), XML, HTML Table, RSS |
| Key Data Fields | Boat Name, Price, Currency, Year Built, Type, Length (m), Cabins, Location, Broker/Seller, Contact Person, Photos |
| Pagination & Depth | Unlocked 1,000+ deep pagination across consecutive search pages (?pg=N) |
| Authentication | None required (No cookies, no API key, no account needed) |
| Average Speed | ~40–60 enriched boat listings per minute |
| Proxy Requirement | Datacenter proxy friendly (Cost-effective out of the box) |
| Integrations | Webhooks, Zapier, Make, Google Sheets, Airbyte, Python, Node.js, cURL |
🔎 Why scrape Yachtall?
Yachtall lists over 25,000 boats and yachts from professional brokers, shipyards, and private sellers across Germany, the Netherlands, Italy, France, Spain, Croatia, the UK, and international waters. Each listing represents a comprehensive marine asset dossier: an asking price, structural specifications (hull material, draft, beam), propulsion details (engine, fuel), interior accommodations (cabins, berths), and verified broker contact details.
That data is indispensable for the global maritime industry:
- Marine Market Valuation & Residual Value: Benchmark asking prices by boat type, shipyard, hull length, and manufacturing year to build accurate appraisal models.
- Broker & Dealer Lead Generation: Every listing identifies the selling marine brokerage and frequently names the individual sales representative.
- Inventory & Supply Intelligence: Track which boat classes (catamarans, trawlers, motor yachts, sailing yachts) are surging or depreciating across regional marinas.
- Finance & Marine Insurance Prospecting: Source recently listed vessels to price yacht loans, warranty products, and marine insurance policies.
Manually navigating boat listings and copying technical specifications across individual tabs is unviable. This Yachtall data extractor automates the entire discovery, pagination, and detail enrichment pipeline.
💼 Core Use Cases & Applications
1. Marine Brokerage Lead Generation
Discover active yacht brokers, dealerships, and charter companies across Europe. Extract business names, contact persons, and inventory portfolios to build high-value B2B partner directories.
2. Vessel Valuation & Price Benchmarking
Calculate real market asking prices for specific hull lengths (e.g. 12m to 15m) and vintage brackets (e.g. 2015–2022). Identify undervalued boats listed below market equilibrium for yacht flipping or brokerage mandates.
3. Marine Insurance & Surveying
Gather historical comparable sales data for yacht surveyors, loss adjusters, and marine underwriters assessing replacement value and damage risks.
4. Marine Equipment & Refit Suppliers
Target owners and dealers of specific boat categories (e.g., steel hulls, multihulls, diesel trawlers) with tailored refit services, rigging hardware, electronics, and marine coatings.
5. PropTech & Marine Market Intelligence
Power marine listing aggregator portals, mobile apps, and investment dashboards with real-time boat inventory feeds.
⛵ Covered Boat Types & Categories
This scraper extracts listings across all boat classifications indexed on Yachtall:
- ⛵ Sailing Boats & Yachts: Cruisers, Daysailers, Catamarans, Trimarans, Regatta / Racing Yachts, Motorsailers, Gulets, Wooden Classics
- 🛥️ Motorboats & Power Yachts: Flybridge Yachts, Hardtop / Open Cruisers, Trawlers, Sportsboats, Ribs / Inflatables, Cabin Cruisers, Mega Yachts
- 🚤 Small Craft & Specialized Vessels: Fishing Boats, Houseboats, Commercial Vessels, Electric Boats, Dinghies
📊 Extracted Data Fields
Every listing is cleaned, typed, and normalized. Here is the full data schema:
🛳️ Listing & Specification Fields
| Field Name | Type | Coverage | Description |
|---|---|---|---|
boatId | String | 🟢 High (100%) | Unique Yachtall listing identifier (e.g. s312456) |
title | String | 🟢 High (100%) | Vessel name / model headline (e.g. Bavaria Cruiser 46) |
brand | String | 🟢 High (95%) | Shipyard or manufacturer brand (e.g. Bavaria, Beneteau, Sunseeker) |
price | Number | 🟢 High (92%) | Asking price parsed as a clean numeric value (e.g. 245000) |
currency | String | 🟢 High (92%) | Currency code (e.g. EUR, USD, GBP, CHF) |
condition | String | 🟢 High (90%) | Vessel condition (used or new) |
yearBuilt | Number | 🟢 High (90%) | Construction / launch year (e.g. 2018) |
boatType | String | 🟢 High (98%) | Primary propulsion classification (sailboat, powerboat) |
boatCategory | String | 🟢 High (92%) | Specific vessel category (e.g. cruiser, flybridge, catamaran) |
lengthMeters | Number | 🟢 High (94%) | Overall length parsed in metric meters (e.g. 14.27) |
lengthRaw | String | 🟢 High (94%) | Raw length string as provided (e.g. 14.27 m / 46.82 ft) |
beamRaw | String | 🟢 High (88%) | Beam / width measurement (e.g. 4.35 m) |
draughtRaw | String | 🟡 Conditional (75%) | Draft / depth measurement (e.g. 2.10 m) |
hullMaterial | String | 🟢 High (85%) | Hull construction material (e.g. GRP, steel, aluminium, wood) |
cabins | Number | 🟡 Conditional (80%) | Number of passenger / guest cabins |
fuel | String | 🟢 High (85%) | Fuel type (e.g. diesel, petrol, electric) |
conditionDetail | String | 🟢 High (85%) | Descriptive condition notes |
location | String | 🟢 High (96%) | Geographic location / mooring country & marina |
seller | String | 🟢 High (98%) | Marine brokerage, dealership, or private seller name |
sellerContact | String | 🟡 Conditional (75%) | Named broker contact person or sales advisor |
image | String | 🟢 High (95%) | Primary high-resolution photograph URL |
description | String | 🟢 High (90%) | Descriptive text snippet detailing equipment and refits |
listingUrl | String | 🟢 High (100%) | Direct canonical URL to the listing on Yachtall |
scrapedAt | String | 🟢 High (100%) | ISO-8601 extraction timestamp |
⚙️ Input Parameters
Configure the scraper easily using the Apify Console or API:
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | Array of Strings | ["https://www.yachtall.com/en/boats"] | List of Yachtall listing or category URLs (e.g. /en/boats, /en/sailboats, /en/motorboats, or a filtered search URL). |
includeDetails | Boolean | true | Fetch each boat's detail page for complete price, technical specs, and broker contact data. Turn off for ultra-fast title+URL indexing. |
maxItems | Integer | 0 | Maximum vessels to collect across all URLs (0 = unlimited). Prefilled at 60 for rapid exploratory tests. |
maxPages | Integer | 0 | Maximum consecutive search pages to paginate per URL (0 = unlimited, governed by maxItems). |
proxyConfiguration | Object | Datacenter | Apify proxy configuration. Datacenter proxies deliver optimal speed and cost efficiency out of the box. |
📦 Example Output
Here is a representative JSON record returned by the actor:
{"boatId": "s284910","title": "Bavaria Cruiser 46 Style","brand": "Bavaria","price": 289000,"currency": "EUR","condition": "used","yearBuilt": 2019,"boatType": "sailboat","boatCategory": "sailing yacht","lengthMeters": 14.27,"lengthRaw": "14.27 m (46.82 ft)","beamRaw": "4.35 m","draughtRaw": "2.10 m","hullMaterial": "GRP","cabins": 3,"fuel": "diesel","location": "Croatia, Split Marina","seller": "Adria Marine Brokerage","sellerContact": "Marko Horvat","image": "https://img.yachtall.com/boats/28/49/10/bavaria-cruiser-46-main.jpg","description": "Excellently maintained Bavaria Cruiser 46 Style in 3-cabin owner layout. Equipped with bow thruster, furling mainsail, teak cockpit, Garmin navigation pack, heating and solar panels.","listingUrl": "https://www.yachtall.com/en/boat/bavaria-cruiser-46-style-s284910","scrapedAt": "2026-11-10T13:20:00.000Z"}
🔄 Comparison: Yachtall Scraper vs. Alternatives
| Feature / Capability | Yachtall Scraper | Manual Search & Copy | Generic Web Scraper |
|---|---|---|---|
| Speed & Throughput | ~50 boats / min (with specs) | 1 boat / 4 min | Slow and fragile |
| Technical Specifications | Structured JSON-LD extraction | Manual copying | Unstructured text snippets |
| Seller & Broker Contact | Normalized company & contact | Hard to parse | Often missing |
| 1,000+ Deep Pagination | Unlocked deep ?pg=N traversal | Impractical | Blocked after 2-3 pages |
| Cost Efficiency | Pure HTTP (Datacenter friendly) | High labor cost | Heavy browser overhead |
| De-duplication | In-memory ID tracking | High human error | Duplicate items across pages |
💻 How to Use via API
You can trigger runs programmatically using the Apify API and official SDKs:
Python Example
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run_input = {"startUrls": ["https://www.yachtall.com/en/sailboats"],"includeDetails": True,"maxItems": 100,"maxPages": 0}run = client.actor("haketa/yachtall-scraper").call(run_input=run_input)# Fetch dataset itemsitems = client.dataset(run["defaultDatasetId"]).list_items().itemsfor boat in items:print(f"{boat['title']} ({boat['yearBuilt']}) - {boat['price']} {boat['currency']} | Location: {boat['location']}")
Node.js Example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const input = {startUrls: ['https://www.yachtall.com/en/motorboats'],includeDetails: true,maxItems: 50,maxPages: 0};const run = await client.actor('haketa/yachtall-scraper').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Successfully scraped ${items.length} motor yachts!`);
cURL Example
curl "https://api.apify.com/v2/acts/haketa~yachtall-scraper/runs?token=YOUR_APIFY_TOKEN" \-X POST \-H "Content-Type: application/json" \-d '{"startUrls": ["https://www.yachtall.com/en/boats"],"includeDetails": true,"maxItems": 60}'
📈 Analyzing Marine Market Data with Pandas
Once your dataset is downloaded, you can load it into Pandas for fast exploratory analysis and pricing models:
import pandas as pd# Load dataset CSV exported from Apifydf = pd.read_csv("yachtall_boats.csv")# Filter boats with valid price and lengthvalid_boats = df.dropna(subset=["price", "lengthMeters", "yearBuilt"])print("Price Statistics (€):")print(valid_boats["price"].describe())# Median asking price by boat type and categorypricing_summary = valid_boats.groupby(["boatType", "yearBuilt"])["price"].median()print("\nMedian Price by Type and Vintage:")print(pricing_summary.tail(15))# Top boat brokers by inventory volumetop_brokers = df["seller"].value_counts().head(10)print("\nTop Active Brokers:")print(top_brokers)
💡 Best Practices & Pro Tips
- Lightweight Indexing First: If you only need vessel names and listing URLs, set
includeDetails: false. The scraper runs at maximum speed (~300 boats per minute). - Category-Specific Crawls: For targeted research, paste filtered category URLs (e.g. catamarans or flybridge cruisers in the Mediterranean) into
startUrls. - Empty Run Exploration: Running with default
{}automatically crawls recent featured vessels on Yachtall. - Scheduled Price Monitoring: Set up recurring monthly schedules to identify seasonal boat price drops across European marinas.
- Deduplication: Built-in set tracking prevents duplicate boats from being saved if listings shift between pages during scraping.
❓ Frequently Asked Questions (FAQ)
Do I need a Yachtall account or premium subscription?
No. The scraper gathers publicly available listing data without requiring any login credentials, session cookies, or Yachtall membership.
Can I scrape specific boat brands (e.g., Sunseeker, Bavaria, Beneteau)?
Yes. Perform your search directly on Yachtall, apply filters for shipyard brand, length, price, or location, and copy the resulting search URL into startUrls.
Does the scraper run on Datacenter proxies?
Yes. Yachtall pages load reliably using Apify's standard Datacenter proxy infrastructure, keeping compute and bandwidth costs minimal.
What does setting maxPages to 0 do?
Setting maxPages to 0 enables automatic unlimited pagination. The scraper will continue requesting subsequent pages (?pg=2, ?pg=3, etc.) until your requested maxItems quota is satisfied or the category ends.
Can I export directly to Excel or CSV?
Yes. From the Apify Console dataset view or via API, you can export your records directly as an .xlsx file, .csv, or automatically synchronize with Google Sheets.
🗺️ Key Marine Regions Covered
This actor extracts boats across all major European and international sailing regions:
- 🌊 Mediterranean Sea: Côte d'Azur (France), Balearic Islands & Costa Brava (Spain), Liguria & Sardinia (Italy), Greek Aegean Islands, Turkish Turquoise Coast
- 🏝️ Adriatic Sea: Dalmatian Coast, Split, Dubrovnik, Zadar, Istrian Peninsula (Croatia), Venice & Rimini (Italy), Kotor (Montenegro)
- ⚓ North & Baltic Seas: Kiel Fjord, Flensburg, Hamburg (Germany), IJsselmeer & Zeeland (Netherlands), Stockholm Archipelago & Gothenburg (Sweden), Denmark
- ⛵ Atlantic & English Channel: Solent, Southampton, Plymouth (UK), Brittany & Arcachon (France), Lisbon & Algarve (Portugal), Canary Islands
- 🏞️ Inland Waterways & Lakes: Lake Constance (Bodensee), Lake Geneva, Lake Maggiore, Lake Garda, Berlin / Brandenburg Lakes, Friesland Canals
🗄️ Database Storage: SQL / PostgreSQL Schema
For marine analytics teams storing listings in a relational data warehouse, here is an optimized schema with indexing for fast specification and pricing queries:
CREATE TABLE yachtall_boats (boat_id VARCHAR(32) PRIMARY KEY,title TEXT NOT NULL,brand VARCHAR(128),price NUMERIC(14, 2),currency VARCHAR(8) DEFAULT 'EUR',condition VARCHAR(16), -- new | usedyear_built INTEGER,boat_type VARCHAR(32), -- sailboat | powerboatboat_category VARCHAR(64),length_meters NUMERIC(6, 2),beam_raw VARCHAR(64),draught_raw VARCHAR(64),hull_material VARCHAR(64),cabins INTEGER,fuel VARCHAR(32),location TEXT,seller TEXT,seller_contact TEXT,image_url TEXT,description TEXT,listing_url TEXT NOT NULL,scraped_at TIMESTAMPTZ DEFAULT NOW());-- Indexing for valuation models and comparable market searchesCREATE INDEX idx_yachtall_type_year ON yachtall_boats (boat_type, year_built);CREATE INDEX idx_yachtall_price ON yachtall_boats (price, currency);CREATE INDEX idx_yachtall_length ON yachtall_boats (length_meters);CREATE INDEX idx_yachtall_seller ON yachtall_boats (seller);
🔄 Automated Workflows & CRM Sync
Connect your scraped yacht listings directly with your operational stack:
- CRM Ingestion: Automatically route new broker contacts into Salesforce, HubSpot, or Pipedrive via Apify Webhooks.
- Instant Alerts: Trigger Slack or Telegram notifications whenever a new boat under a specific price threshold appears in your target marina.
- Automated Spreadsheet Refresh: Sync new listings directly into Google Sheets or Airtable using the Apify Zapier / Make integration.
- Data Lake Sync: Ingest raw JSON batches directly into AWS S3, Google Cloud Storage, or Snowflake for longitudinal trend analysis.
⚖️ Disclaimer
This actor is an independent data extraction tool developed for market research and public intelligence purposes. It is not affiliated with, endorsed by, or sponsored by Yachtall or its operating entities. All product and brand names are trademarks of their respective holders.
📋 Changelog
Version 1.2 (2026-11)
- Deep 1,000+ Pagination: Set
maxPagesdefault to0(minimum: 0) and enabled deep multi-page traversal (?pg=N) governed bymaxItems. - Enhanced Spec Normalization: Standardized length in meters parsing and refined seller contact splitting.
- Optimized Prefill Execution: Fast prefill configuration completing in under 60 seconds with full technical specifications.
- Expanded Documentation: Complete field coverage indicators, pandas analytics recipes, and API examples.
Version 1.1
- Added parallel detail fetching with concurrency pooling.
- Added broker and contact person parsing (
parseSeller). - Mirrored output to Key-Value Store
OUTPUTrecord for synchronous calls.
Version 1.0
- Initial public release supporting boat search URLs, JSON-LD spec extraction, and multi-format exports.