# YachtWorld Scraper: Boats, Prices & Broker Contacts (`getascraper/yachtworld-scraper`) Actor

Extract real YachtWorld boat listings: price, price drops, location, seller, and optional full specs (engine, power, length, year) and broker contact info. Structured filters for boat type, condition, and manufacturer. Optional monitor mode alerts on price or sale-pending changes.

- **URL**: https://apify.com/getascraper/yachtworld-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.98 / 1,000 listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## YachtWorld Scraper: Boats, Prices & Broker Contacts

<table width="100%"><tr><td style="padding:20px 24px;background:#EAF4FB;border:1px solid #BFDCF2;border-radius:10px;vertical-align:top"><span style="font-size:20px;font-weight:800;color:#0B4C7A">Every boat, every price drop, before anyone else sees it.</span><br><span style="font-size:14px;color:#57534E">Search YachtWorld's full marketplace with real filters, then get alerted the moment a boat you're tracking drops in price or goes under offer.</span></td></tr></table>

**YachtWorld is the world's largest boat and yacht marketplace.** This Actor turns any search into structured listings: price, location, seller, and optional full specs and broker contact info. No login, and pricing that does not tax small or scheduled runs.

<table width="100%"><tr><td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BFDCF2;border-radius:10px 0 0 10px;vertical-align:top"><span style="font-size:15px;font-weight:800;color:#0B4C7A">🎯 Real filters</span><br><span style="font-size:12px;color:#57534E">Boat type, condition, and manufacturer as dropdowns, not raw params.</span></td><td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BFDCF2;border-left:none;vertical-align:top"><span style="font-size:15px;font-weight:800;color:#0B4C7A">⚙️ Full specs on demand</span><br><span style="font-size:12px;color:#57534E">Engine, power, hours, length, year, and broker contact, one toggle away.</span></td><td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BFDCF2;border-left:none;vertical-align:top"><span style="font-size:15px;font-weight:800;color:#0B4C7A">🔖 Sale-pending signal</span><br><span style="font-size:12px;color:#57534E">Know when a boat is about to close, not just when it's listed.</span></td><td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BFDCF2;border-left:none;border-radius:0 10px 10px 0;vertical-align:top"><span style="font-size:15px;font-weight:800;color:#0B4C7A">🔔 Price-drop alerts</span><br><span style="font-size:12px;color:#57534E">Monitor mode flags exactly what changed since your last run.</span></td></tr></table>

### 🔍 What does YachtWorld Scraper do?

It extracts real YachtWorld boat listings: title, price, price-drop amount, location, seller or dealer name, and status badges (Featured, Video, New Arrival, In-Stock, Sale Pending). Turn on full-details mode and it also visits each listing's own page for engine, total power, engine hours, boat class, length, year, model, description, and broker contact.

**Coverage is honest, not inflated.** Not every listing shows a seller name or broker contact publicly. This Actor returns exactly what the page shows and never fabricates a missing field.

### 💡 Why use YachtWorld Scraper?

**"I'm a broker pricing boats against the market."** You need real comps across a make and model, not a spreadsheet built by hand from browser tabs. Filter by manufacturer and pull every matching listing's price in one run.

**"I'm tracking a specific boat for a client."** You need to know the second it drops in price or goes under offer, not find out it's gone next week. Turn on monitor mode and get only what changed.

**"I do market research for the marine industry."** You need clean listing and seller data you can actually analyze, not a raw filter param list to reverse-engineer. Every field is structured and ready to use.

### 🛠️ How to use YachtWorld Scraper

<table width="100%"><tr><td style="padding:16px 14px;width:33%;background:#EAF4FB;border:1px solid #BFDCF2;border-radius:10px 0 0 10px;vertical-align:top"><span style="font-size:12px;font-weight:800;color:#0B4C7A;letter-spacing:1px">STEP 1</span><br><span style="font-size:14px;font-weight:700;color:#1C1917">Pick your filters</span><br><span style="font-size:12px;color:#57534E">Or paste a search link if you already know the one you want.</span></td><td style="padding:16px 14px;width:33%;background:#EAF4FB;border:1px solid #BFDCF2;border-left:none;vertical-align:top"><span style="font-size:12px;font-weight:800;color:#0B4C7A;letter-spacing:1px">STEP 2</span><br><span style="font-size:14px;font-weight:700;color:#1C1917">Run it once, or schedule it</span><br><span style="font-size:12px;color:#57534E">Turn on monitor mode to track a search over time.</span></td><td style="padding:16px 14px;width:33%;background:#EAF4FB;border:1px solid #BFDCF2;border-left:none;border-radius:0 10px 10px 0;vertical-align:top"><span style="font-size:12px;font-weight:800;color:#0B4C7A;letter-spacing:1px">STEP 3</span><br><span style="font-size:14px;font-weight:700;color:#1C1917">Get every listing, fully priced</span><br><span style="font-size:12px;color:#57534E">Price, location, seller, and optional full specs on each row.</span></td></tr></table>

1. Open the Actor and pick a boat type, condition, or manufacturer, or paste a search link directly.
2. Set how many listings you want back, and turn on full-details mode if you need specs and broker contact.
3. Click Start. Results land in the dataset, ready to view, filter, or export.
4. Optionally turn on monitor mode and add a schedule to get only what's new or changed next time.

### 📥 Input

| Field | Type | Required | Description |
|---|---|---|---|
| Boat type | enum | No | Only return power or sail boats. |
| Condition | enum | No | Only return new or used boats. |
| Manufacturer | enum | No | Only return boats from this manufacturer. |
| Fetch full details | boolean | No | Visit each listing's own page for engine, specs, description, and broker contact. |
| Start URLs | array of URLs | No | Extra search or listing pages to scrape directly. |
| Proxy configuration | object | No | Not needed for this Actor; available if a run starts failing to load pages. |
| Max items | integer | No | Maximum number of listings to return in this run. |
| Incremental monitor mode | boolean | No | Only return listings that are new or changed since your last run. |
| Monitor state name | string | No | Name for this run's incremental state, used only when monitor mode is on. |

### 📤 Output

```json
{
  "listingId": "10260699",
  "title": "2019 Key West 239 DFS",
  "listingUrl": "https://www.yachtworld.com/yacht/2019-key-west-239-dfs-10260699/",
  "imageUrl": "https://images.boatsgroup.com/resize/1/6/99/2019-key-west-239-dfs-power-10260699-...jpg",
  "price": 54995,
  "priceCurrency": "USD",
  "priceDropAmount": "$3K",
  "location": "Pompano Beach, Florida",
  "sellerName": "Carefree Marine Group",
  "featured": true,
  "hasVideo": false,
  "newArrival": false,
  "inStock": false,
  "salePending": false,
  "engine": "Yamaha",
  "totalPower": "250hp",
  "engineHours": "250",
  "boatClass": "Dual Console",
  "lengthFt": "23.8 ft",
  "year": "2019",
  "model": "239 DFS",
  "scrapedAt": "2026-09-06T12:14:09.802Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

#### Data table

| Field | Type | Description |
|---|---|---|
| `listingId` / `listingUrl` | string / string | YachtWorld's own listing identifier and direct link. |
| `title` / `location` | string / string | Listing title and seller's location. |
| `price` / `priceCurrency` / `priceDropAmount` | number / string / string | Current price, currency, and any recent price drop shown on the listing. |
| `sellerName` | string | The dealer or broker name shown on the listing card. |
| `featured` / `hasVideo` / `newArrival` / `inStock` / `salePending` | boolean each | Status badges shown on the listing. |
| `engine` / `totalPower` / `engineHours` | string / string / string | Engine details, only present with full-details mode on. |
| `boatClass` / `lengthFt` / `year` / `model` | string each | Boat specifications, only present with full-details mode on. |
| `description` | string | Full listing description, only present with full-details mode on. |
| `brokerName` / `brokerPhone` / `brokerLocation` | string each | Broker contact info, when the listing shows one, only present with full-details mode on. |
| `changeType` | string | `NEW` or `UPDATED`, only present when monitor mode is on. |

### 💰 Pricing

This Actor uses Apify's pay-per-result pricing. You only pay for listings actually returned, and an empty run costs nothing. There is no subscription.

### ⭐ Enjoying YachtWorld Scraper?

<table width="100%" style="display:table;width:100%"><tr><td style="padding:20px 24px 14px;background:#EAF4FB;border:1px solid #BFDCF2;border-left:5px solid #0B4C7A;border-radius:10px 10px 0 0"><span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br><span style="font-size:17px;font-weight:800;color:#1C1917">Found a deal before it closed? That's worth a rating.</span><br><span style="font-size:14px;color:#57534E">Your feedback tells us which filters and alerts to add next.</span></td></tr><tr><td style="padding:0;background:#0B4C7A;border:1px solid #BFDCF2;border-top:none;border-radius:0 0 10px 10px;text-align:center"><a href="https://apify.com/getascraper/yachtworld-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a></td></tr></table>

### 🧠 Tips

Use monitor mode with a manufacturer or boat-type filter and an Apify schedule to catch price drops and sale-pending listings without checking YachtWorld by hand. Leave full-details mode off for a fast, cheap first pass, then re-run with it on for just the listings you're actually interested in.

### ❓ FAQ

#### Do I need a login or a proxy?

No. YachtWorld's listing data is public, and this Actor is built to load it reliably without a login or a proxy, which keeps your runs fast and cheap.

#### Why do some listings have no broker contact or seller name?

Because the listing itself doesn't show one publicly. This Actor returns exactly what's on the page and never invents a name or contact detail.

#### Can I track a specific search for price drops?

Yes. Turn on incremental monitor mode and run this Actor on a schedule. It only returns listings that are new or whose price or sale-pending status changed since your last run with the same monitor state name.

#### Can I search for a specific make, type, or condition?

Yes. Set Boat type, Condition, and Manufacturer, and the Actor builds the matching YachtWorld search for you. You can also paste a search link directly into Start URLs if you already have one.

# Actor input Schema

## `boatType` (type: `string`):

Only return power or sail boats. The named competitor Actor makes you know its raw param name for this; here it's a plain dropdown.

## `condition` (type: `string`):

Only return new or used boats.

## `make` (type: `string`):

Only return boats from this manufacturer. Pick a common one below, or type any manufacturer slug from a YachtWorld URL you've visited, since this list is a helpful starting point, not the full catalog.

## `fetchDetails` (type: `boolean`):

Visit each listing's own page for engine, power, hours, class, length, year, model, description, and broker contact info. Off by default since it costs one extra page load per listing; the search-result card already has title, price, location, and seller name.

## `startUrls` (type: `array`):

Optional extra search or listing pages to scrape, on top of any filters set above. Paste any YachtWorld search-result or boat-detail URL if you already know the exact page you want.

## `proxyConfiguration` (type: `object`):

This Actor clears YachtWorld's bot protection without a proxy, so the default is off, which is the cheapest and fastest option. Turn on a proxy only if a run starts failing to load pages.

## `maxItems` (type: `integer`):

Maximum number of listings to return in this run. Each page needs a real browser to clear the site's bot check, so keep this modest for a quick, low-cost run.

## `onlyNewOrChanged` (type: `boolean`):

Only return listings that are new or whose price or sale-pending status changed since your last run with the same monitor state name. Pair with an Apify schedule to watch a search for price drops or listings going under offer.

## `stateName` (type: `string`):

Name for this run's incremental state, used only when incremental monitor mode is on. Use different names to track separate searches independently.

## Actor input object example

```json
{
  "boatType": "",
  "condition": "",
  "make": "",
  "fetchDetails": false,
  "startUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "maxItems": 20,
  "onlyNewOrChanged": false,
  "stateName": "default"
}
```

# Actor output Schema

## `listings` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "boatType": "",
    "condition": "",
    "make": "",
    "fetchDetails": false,
    "startUrls": [],
    "proxyConfiguration": {
        "useApifyProxy": false
    },
    "maxItems": 20,
    "onlyNewOrChanged": false,
    "stateName": "default"
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/yachtworld-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "boatType": "",
    "condition": "",
    "make": "",
    "fetchDetails": False,
    "startUrls": [],
    "proxyConfiguration": { "useApifyProxy": False },
    "maxItems": 20,
    "onlyNewOrChanged": False,
    "stateName": "default",
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/yachtworld-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "boatType": "",
  "condition": "",
  "make": "",
  "fetchDetails": false,
  "startUrls": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "maxItems": 20,
  "onlyNewOrChanged": false,
  "stateName": "default"
}' |
apify call getascraper/yachtworld-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/yachtworld-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/v5OsIArBb8RoeYA43/builds/1orvYwPo9aY6wPmU5/openapi.json
