How OnlyHulls works
Transparency over marketing. Here's exactly where boat data comes from, how the buyer-facing signals are computed, and what we promise — and don't promise — about the catalogue.
What OnlyHulls is
An aggregator — we crawl 11public boat-listing sources and republish their listings in one searchable, comparable surface with original-source attribution. We don't own the inventory; sellers and brokers on the source sites do.
Right now: 19,045 active listings on OnlyHulls, plus 1,098 recently off-market boats in the recently-sold archive.
Where the data comes from
Each listing carries a source attributionpill — the original site the data was pulled from — and a click-through to the seller's original page. We don't hide where listings came from. Below: every active source and how many live listings it currently contributes.
| Source | Active listings | Updated last 7 days |
|---|---|---|
| Sailboat Listings | 10,066 | 114 |
| The Yacht Market | 4,251 | 248 |
| Boats.com | 4,233 | 3,396 |
| Dream Yacht Sales | 121 | 106 |
| Catamaran Site | 108 | 55 |
| Apollo Duck | 88 | 0 |
| Catamarans.com | 88 | 0 |
| The Moorings | 33 | 27 |
| Boote & Yachten | 23 | 0 |
| Denison Yachting | 19 | 0 |
| Multihull World | 14 | 0 |
"Updated last 7 days" counts listings the scraper has re-seen recently — a coarse freshness signal. A source with 0 fresh listings doesn't mean the data is stale; it usually means the scraper's cadence for that source is wider than weekly. Source health is monitored by an hourly data-health evaluator.
Photos
96.5% of active listings show at least one photo on OnlyHulls. 11,441 images are re-hosted on our own CDN at media.onlyhulls.com(Cloudflare R2) — the rest serve from their source CDN with proper attribution.
When a listing genuinely has no photos at source, we show an honest "No photos available yet" state instead of an empty gallery, with a clear path to similar boats or the original listing.
Price-per-foot benchmark
On every listing where we have both a price and a length, we computeasking_price_usd / loa_ftand compare it to the median across all comparable active boats — same vessel type (monohull / catamaran / trimaran / powerboat) in the same 10-ft length band (e.g. 40-49 ft).
We only show the benchmark when the segment has at least 8 comparable boats. Median, not mean, because boat prices have long tails (one Hinckley per segment would otherwise distort the "typical" signal). The comparison count is shown next to the median so you can sanity-check the sample size yourself.
Days-on-market
Counted from first_listed_at— the day a listing first appeared on OnlyHulls. For listings that pre-date our tracking, we fall back to the row's creation date. The badge tone (fresh / normal / long-on-market) is purely informational; it doesn't affect search ranking.
Price history
We snapshot the asking price each time a scraper re-sees a listing. If the price differs from the previous observation, a new row is recorded. The trend block ("Originally $X → now $Y") only renders when at least two distinct prices have been observed — a single seed row by itself doesn't claim a price change.
20,154 boats currently have at least one observation in the history table.
What we don't do
- We don't take commissionsfrom sales. We're an aggregator; the seller's relationship is with the original source site.
- We don't hide sold listings. Therecently-sold archiveshows last-known asking prices on every off-market boat. Boats.com removes sold listings from its public surface; we keep them.
- We don't verify condition. Photos, descriptions, specs are what the source had. Always survey a boat in person and verify documentation before committing.
- We don't auto-translate listings between currencies at sale time. The USD figures we show are converted from the source currency at recent rates for comparison purposes, but the seller transacts in the listed currency.
Found data that looks wrong?
Aggregator data drifts. If a listing on OnlyHulls is stale, misattributed, or shouldn't be listed at all, click through to the source — if the source still has it active, the OnlyHulls copy will refresh on our next scrape (typically within 24 hours). If the source has removed the listing, our expire-stale job will mark it expired within 60 days at the latest.
For seller takedown requests on specific listings, contact OnlyHulls directly — we honor takedowns within 24h and the listing is removed from our index plus our R2 image cache.