YachtWorld Scraper
Pricing
from $3.00 / 1,000 results
YachtWorld Scraper
Scrape YachtWorld - the world's largest yacht & boat marketplace. Search boats for sale with make, model, length, price and year filters, browse by make, fetch full listing details with specifications, engines, broker info and images.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Scrape YachtWorld — the world's largest marketplace for yachts and boats. Search hundreds of thousands of listings with make, model, length, price and year filters, browse every listing from a manufacturer, or fetch complete detail pages with specifications, engines, broker information and photo galleries.
What this actor does
- Three modes:
search(keyword + full filter set),browseByMake(every listing from one manufacturer),byUrl(full detail from a listing or broker URL) - Search filters: make, model, keyword, boat type, new/used condition, fuel type, hull material, hull shape, length range (ft), price range (USD), year range, country, seller type, sort order
- Full listing detail: title, price (USD + currency), year, make/model, length, beam, draft, weight, fuel type, hull material/shape, engines (make, model, hours, hp), fuel/water capacities, description, location, broker name/phone, image and video URLs
- Cross-platform IDs: IMT, Boat Trader and BCNA listing IDs are captured when YachtWorld exposes them
- Empty fields are omitted
Data source
YachtWorld (yachtworld.com) is owned by Boats Group. The actor reads YachtWorld's public search pages and listing pages.
Cloudflare caveat: YachtWorld is protected by Cloudflare. Plain HTTP clients receive 403 Forbidden (verified), while a full headless browser loads the site normally. This actor therefore runs a real browser (Playwright) for every request. If the datacenter IP is challenged, the optional Apify proxy is engaged automatically and retried with rotating sessions — no user action needed. Image URLs point at the images.boatsgroup.com CDN.
Facet routing: most search filters are applied through YachtWorld's REST search API. The fuel type / hull material / hull shape facets are not accepted by that API (it rejects them with 400), so the actor automatically switches to the SSR search pages (/boats-for-sale/fuel-diesel/, /hull-steel/, /hull-type-modified-vee/, …) whenever any of those three filters is set — verified live that these path segments filter correctly and can be combined (type-sail/condition-used/). In the SSR path a free-text keyword that matches a manufacturer (e.g. bayliner) is automatically turned into a make-… path segment (/boats-for-sale/fuel-diesel/make-bayliner/ — verified live), falling back to the plain listing when the hinted page has no boats. If the REST path is interrupted mid-way (0 records, or a throttle mid-pagination) while data exists, the actor recovers through the SSR pages — deduplicating against everything already emitted — before giving up.
Output per boat
listingId— YachtWorld listing IDtitle,make,model,yearpriceUsd,priceCurrency,priceHidden,previousPriceUsd,availabilitylengthFt,lengthM,beamFt,draftFt,weightLb/weightKg,dryWeightLb,displacementLbfuelType,hullMaterial,hullShapefuelCapacityGal,waterCapacityGal,holdingCapacityGalengines[]— per engine:make,model,type,hours,hp; plustotalPowerHp,totalEngineHourscity,subdivision,country,postalCode,locationbrokerName,brokerPhone,brokerAddress,brokerCity,brokerCountry,brokerStreet,brokerPostalCode,brokerLatitude,brokerLongitude,brokerSpotlight,brokerLogoUrl,brokerActiveListings,brokerSoldListingsclass(e.g.power-pilot,sail-racercruiser),boatType(power/sail/unpowered)condition(new/used),sellerType(dealer/owner)sponsored,featured,enhanced— listing promotion flagsattributes— listing attribute codes (NEW_ARRIVAL,LOCAL_DELIVERY, …) or label/value pairs when YachtWorld returns themisCurrentModel,isOemModel— model lifecycle flagsimageUrls[],videoUrls[],mediaCount,imageCount,videoCountdescription,otherDetails,specsimtId,boatTraderId,bcnaId,yachtworldIdsourceUrl,recordType: "boat",scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | search / browseByMake / byUrl |
q | string | bayliner | Free-text keyword: make, model or type (mode=search) |
make | string | – | Constrain to a manufacturer (mode=search) |
model | string | – | Constrain to a model name (mode=search) |
browseByMake | string | bayliner | Manufacturer to browse (mode=browseByMake) |
urls | array | – | Listing/broker URLs to fetch (mode=byUrl, duplicates deduped) |
boatType | string | – | power / sail / unpowered |
condition | string | – | new / used |
fuelType | string | – | diesel / electric / petrol / other |
hullMaterial | string | – | aluminum / composite / ferrocement / fiberglass / hypalon / other / pvc / steel / wood |
hullShape | string | – | catamaran / deep-vee / modified-vee / monohull |
minLength / maxLength | int | – | Length range in feet |
minPrice / maxPrice | int | – | Price range in USD |
minYear / maxYear | int | – | Model-year range |
country | string | – | ISO 3166-1 alpha-2 country of the listing |
sellerType | string | – | dealer / owner |
sortBy | string | recommended | recommended, created-desc, price-asc, year-desc, … |
maxItems | int | 20 | Hard cap (1–200) |
proxyConfiguration | object | Apify proxy | Optional; auto-engaged on Cloudflare challenge |
Note: when
fuelType/hullMaterial/hullShapeare used the search runs through the SSR facet pages.sortByandmodelare not part of the facet path — length/price/year/keyword are still enforced locally on every record. When only REST-compatible filters are used,sortByandmodelapply as normal.
Example: search with filters
{"mode": "search","q": "trawler","boatType": "power","condition": "used","fuelType": "diesel","hullMaterial": "steel","minLength": 40,"maxLength": 70,"minPrice": 100000,"maxPrice": 800000,"minYear": 2005,"country": "US","sortBy": "price-desc","maxItems": 10}
Example: browse all boats from one manufacturer
{"mode": "browseByMake","browseByMake": "beneteau","maxItems": 50}
Example: fetch full listing details by URL
{"mode": "byUrl","urls": ["https://www.yachtworld.com/yacht/2000-bayliner-5788-pilot-house-motoryacht-10075370/","https://www.yachtworld.com/yacht/2015-beneteau-first-35-2-carbon-edition-10278657/"]}
Use cases
- Yacht dealerships — monitor competitor inventory, pricing and brokerage positioning
- Market research — build price-per-foot benchmarks by make, type, year and region
- Boat valuation — track sold-listing history and current asking prices for a model
- Lead generation — identify brokers and owners with active inventory in a region
- Fleet managers — keep a structured registry of vessels on the market worldwide
Limitations
- Cloudflare blocks plain HTTP clients — YachtWorld returns
403 Forbiddento plain HTTP clients (verified). The actor runs a real browser (Playwright) for every request and auto-engages the optional Apify proxy on a challenge. - Search records are compact cards — detailed specifications, engines, descriptions and other details are only exposed on the listing detail page (
mode=byUrl);specs,engines,descriptionandotherDetailsappear on detail records. - Prices can be hidden — sellers can list without a public price ("Request price"); those records omit the price fields.
- Facet routing caveat — when
fuelType/hullMaterial/hullShapeare used, the search runs through the SSR facet pages wheresortByandmodeldon't apply (length/price/year/keyword are still enforced locally). maxItemsis capped at 200 — hard cap is 1–200 per run.- Image CDN requires a browser-like client —
images.boatsgroup.comURLs return403to plaincurl/urllib; fetch them with a real browser or the Apify proxy.
FAQ
What is the data source? YachtWorld.com, the world's largest online marketplace for boats and yachts, operated by Boats Group.
How fresh is the data? Every run reads YachtWorld live — records reflect the listing state at scrape time, and scrapedAt records exactly when.
Why does the actor need a browser? YachtWorld sits behind Cloudflare and returns 403 to plain HTTP clients (verified). A full browser is required; the actor automatically engages the optional Apify proxy if a datacenter IP is challenged.
Why are some prices missing? Sellers can list without a public price ("Request price"). Those records simply omit the price fields.
Why are some fields missing on search records? Search results are the marketplace's compact card payload — detailed specifications, engine details and descriptions are only exposed on the listing detail page (mode=byUrl). The specs, engines, description and otherDetails fields appear on detail records.
What is boatType? YachtWorld groups boats into power (motor boats), sail (sailboats) and unpowered (small boats such as kayaks and tenders).
Does the data include boat images? Yes — imageUrls lists all gallery image URLs from the boatsgroup.com CDN. The CDN serves the images to real browsers from any network (verified: 200 image/jpeg via headless Chrome from a clean context on this machine, same IP that gets 403 from plain HTTP clients). Plain curl/urllib requests get 403 text/html regardless of User-Agent or Referer — the block is on the client's TLS/fingerprint, not the IP. If your client sees 403s, fetch through a real browser or the Apify proxy.
Is this affiliated with YachtWorld? No. This is an independent third-party actor using YachtWorld's public website.