# Annoncesbateau.com Boat Scraper (`rainminer/annoncesbateau-com-scraper`) Actor

Extract French new and used boat listings from Annoncesbateau.com for brokers and dealers. Get asking price in euros, year, length, location, seller, and photos from a catalog of 24,000 boats. Paste a search or boat URL — no login required. Export JSON, CSV, or Excel and schedule monitoring runs.

- **URL**: https://apify.com/rainminer/annoncesbateau-com-scraper.md
- **Developed by:** [rainminer](https://apify.com/rainminer) (community)
- **Categories:** E-commerce
- **Features:** Limited permissions
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.98 / 1,000 boats

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Annoncesbateau.com Boat Scraper do?

**Annoncesbateau.com Boat Scraper** extracts public **boat listings** from [Annoncesbateau.com](https://www.annoncesbateau.com/), the French marketplace for new and used boats. Paste a search URL such as `https://www.annoncesbateau.com/bateaux/` — about 24,000 boats — or a single listing URL, and download structured inventory with price, specs, location, seller, and photos. No account or login is required.

Brokers and dealers use the export to watch French stock, compare asking prices, and refresh a CRM without copying cards by hand.

### Why scrape Annoncesbateau.com?

- **Broker inventory** — Pull the live French catalog of sailboats and motorboats into one dataset.
- **Dealer pricing** — Compare asking prices, previous prices, and length for the same class of boat.
- **Sailboat sourcing** — Start from the sailboat category and collect year, length, and location.
- **Motorboat sourcing** — Start from the motorboat category for yachts, cruisers, and day boats.
- **New boat arrivals** — Filter the new-boat search and see what shipyards just listed.
- **Used boat market** — Export occasion listings with engine hours, fuel, and hull material.
- **Brand watch** — Monitor Beneteau, Jeanneau, or another make from its brand search page.
- **Regional stock** — Use a location search when you only cover one coast or department.
- **Seller lists** — Keep the public seller name, phone, and website shown on each listing.
- **Photo catalogs** — Save the primary photo and the full gallery URL list for each boat.
- **Price-drop alerts** — Schedule a run and compare `previousPrice` with the current asking price.
- **Apify platform** — Schedule runs, export JSON, CSV, or Excel, call the API, and connect Zapier or Make.

### What data can you extract from Annoncesbateau.com?

| Field | Description |
| --- | --- |
| title | Year, make, and model |
| price | Asking price in euros |
| previousPrice | Earlier asking price in euros, when the listing shows one |
| year | Model year |
| lengthMeters | Nominal or overall length in metres |
| location | City, department code, and country |
| sellerName | Dealer or private seller shown on the listing |
| sellerPhone | Public phone number on the listing |
| imageUrl | Primary photo |
| imageUrls | Full photo gallery |
| url | Public listing URL |
| description | French listing description |

The full dataset row also includes beam, draft, fuel, hull material, engine make and power, engine hours, seating, coordinates, condition, and tax status when the listing publishes them.

### How to scrape Annoncesbateau.com

1. Open **Annoncesbateau.com Boat Scraper** on Apify.
2. Paste one or more **start URLs**. A full-catalog search is `https://www.annoncesbateau.com/bateaux/`. Category examples: [sailboats](https://www.annoncesbateau.com/bateaux/categorie-voiliers/), [motorboats](https://www.annoncesbateau.com/bateaux/categorie-moteur/), [used boats](https://www.annoncesbateau.com/bateaux/etat-occasion/).
3. Set **Maximum boats**. The limit applies per start URL.
4. Leave **Proxy configuration** off unless a run is blocked.
5. Start the run and download the dataset as JSON, CSV, HTML, or Excel.

Pagination is followed automatically until the boat limit or the last results page.

#### Supported start URLs

- Search and category pages under `https://www.annoncesbateau.com/bateaux/`
- A single boat page such as `https://www.annoncesbateau.com/bateau/2021-pardo-yachts-38-10152139/`

### How much does it cost to scrape Annoncesbateau.com?

You pay per boat saved to the dataset. On the free plan that is **$7.99 per 1,000 boats** ($0.00799 per boat). Paid plans cost less, down to **$5.98 per 1,000** on Gold and above. Starting a run costs **$0.00005** per GB of memory. Platform usage is included in the per-boat price, so you do not pay a separate compute bill for a normal run. A short test with the default of 5 boats is a few cents, enough to check the columns before a full catalog export.

Proxy stays off by default so a normal run does not add residential bandwidth.

### Input

**Annoncesbateau.com Boat Scraper** has three inputs. Open the **Input** tab for the form.

- **Start URLs** — search, category, brand, or single boat links on Annoncesbateau.com.
- **Maximum boats** — how many listings to keep per start URL. Default is 5.
- **Proxy configuration** — leave Apify Proxy disabled unless the site blocks the run.

### Output

You can download the dataset extracted by Annoncesbateau.com Boat Scraper in JSON, CSV, HTML, or Excel.

```json
{
  "id": "10152139",
  "url": "https://www.annoncesbateau.com/bateau/2021-pardo-yachts-38-10152139/",
  "title": "2021 Pardo Yachts 38",
  "make": "Pardo Yachts",
  "model": "38",
  "year": 2021,
  "condition": "used",
  "boatType": "power",
  "price": 470000,
  "currency": "EUR",
  "previousPrice": 530000,
  "lengthMeters": 11.9,
  "fuelType": "diesel",
  "location": "Mandelieu-la-Napoule (06) FR",
  "sellerName": "Princess Yachts France (La Napoule)",
  "sellerPhone": "+33 4 93 49 99 66",
  "imageUrl": "https://images.boatsgroup.com/resize/1/26/92/7302692_20200127065546957_1_XLARGE.jpg",
  "searchUrl": "https://www.annoncesbateau.com/bateaux/"
}
```

### Tips

- One start URL with a high **Maximum boats** walks the whole result set for that search.
- Several start URLs each get their own limit, so a sailboat URL and a motorboat URL can run together.
- Schedule a daily run when you want new listings and price changes in the same export shape.
- Boats listed without a public price are saved with `priceHidden: true` and `price: null`.

### Is it legal to scrape Annoncesbateau.com?

This Actor collects only information that is visible on public listing pages without signing in. It does not use a password, a private session, or a paid membership. Listings can still contain personal data, such as a seller phone number that the seller chose to publish. Personal data is protected by the GDPR in the European Union and by other laws elsewhere. Scrape personal data only when you have a legitimate reason, and ask your counsel if you are unsure.

### FAQ

#### Does Annoncesbateau.com Boat Scraper need a login?

No. It reads public search and listing pages. If a boat is not visible without an account, it is not included.

#### Can I scrape sailboats and motorboats separately?

Yes. Use the category URLs on Annoncesbateau.com, or the published example tasks, and set **Maximum boats** for each URL.

#### What if a field is empty?

Some private listings omit engine hours, a phone number, or a price. Those fields are `null` instead of a guessed value.

#### How do I get help?

Open the **Issues** tab on the Actor page. Feedback about a missing field or a broken category URL is welcome.

### Other Actors

Rainminer publishes other public marketplace scrapers on the Apify Store. If you also track cars, classifieds, or marine leads, browse the [rainminer profile](https://apify.com/rainminer) for a matching Actor.

# Actor input Schema

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

Annoncesbateau.com search or boat URLs, for example https://www.annoncesbateau.com/bateaux/ or a single listing such as https://www.annoncesbateau.com/bateau/2021-pardo-yachts-38-10152139/.

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

Maximum number of boat listings to save per start URL.

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

Proxy settings. Leave disabled unless Annoncesbateau.com blocks your connection.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.annoncesbateau.com/bateaux/"
    }
  ],
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "startUrls": [
        {
            "url": "https://www.annoncesbateau.com/bateaux/"
        }
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rainminer/annoncesbateau-com-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 = {
    "startUrls": [{ "url": "https://www.annoncesbateau.com/bateaux/" }],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("rainminer/annoncesbateau-com-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 '{
  "startUrls": [
    {
      "url": "https://www.annoncesbateau.com/bateaux/"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call rainminer/annoncesbateau-com-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rainminer/annoncesbateau-com-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/d8JSge0x9SNAabYD6/builds/Mhgvouy9buqWP1VzG/openapi.json
