Boat24 APIboat24.com ↗
Access 35,000+ boat listings from Boat24 via API. Search by category, location, or query. Retrieve full specs, price, images, and seller details.
What is the Boat24 API?
The Boat24 API provides 2 endpoints to search and retrieve boat listings from Europe's largest boat marketplace, covering over 35,000 listings. The search_listings endpoint accepts filters for category, location, and free-text query, returning paginated summaries with price, dimensions, engine power, year, and location. The get_listing endpoint delivers complete specs, equipment lists, images, and seller info for any individual listing.
curl -X GET 'https://api.parse.bot/scraper/b1a21538-12c6-4d42-a1c9-1a884a4f684a/search_listings?page=0&sort=rand&query=bayliner&category=1&location=2' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace boat24-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Boat24 SDK — bounded, re-runnable; every call capped."""
from parse_apis.boat24_com_api import Boat24, Category, Sort, ListingNotFound
client = Boat24()
# Search for sailboats sorted by newest year built
for boat in client.listing_summaries.search(category=Category.SAILBOAT, sort=Sort.NEWEST_BUILT, limit=3):
print(boat.title, boat.price, boat.year_built)
# Drill-down: take one result and get full details
summary = client.listing_summaries.search(query="bayliner", sort=Sort.NEWEST_POSTED, limit=1).first()
if summary:
full = summary.details()
print(full.title, full.price, full.manufacturer, full.model)
print(full.location, full.year_built)
# Typed error: wrap a fallible lookup
try:
detail = summary.details() if summary else None
if detail:
refreshed = detail.refresh()
print(refreshed.title, refreshed.engine_power)
except ListingNotFound as e:
print(f"listing gone: {e.listing_id}")
print("exercised: listing_summaries.search / ListingSummary.details / Listing.refresh")
Search boat listings with optional filters for category, location, and free-text query. Returns paginated results (24 per page, zero-based) with summary info including title, price, dimensions, engine power, year, and location. Results are auto-iterated; the SDK walks pages automatically.
| Param | Type | Description |
|---|---|---|
| page | integer | Zero-based page number. |
| sort | string | Sort order for results. |
| query | string | Free-text search query matching boat model, manufacturer, or listing ID. |
| category | string | Category filter by numeric ID. Omitting returns all categories. |
| location | string | Region/location ID to filter by (e.g. '2' for Germany, '24' for United Kingdom). |
{
"type": "object",
"fields": {
"page": "current page number (zero-based)",
"total": "total number of matching listings",
"listings": "array of boat listing summaries"
},
"sample": {
"data": {
"page": 0,
"total": 487,
"listings": [
{
"id": "726647",
"url": "https://www.boat24.com/en/powerboats/bayliner/bayliner-742-cuddy/detail/726647/",
"price": "EUR 53,300",
"title": "Bayliner 742 Cuddy",
"location": "Poland » Orzesze",
"subtitle": "A boat complete with a self-propelled trailer.",
"boat_type": "Cabin cruiser, Motor yacht, Sport boat",
"thumbnail": "https://static.b24.co/thumbs/xxlarge/726647-1783414516.jpg",
"dimensions": "7.48 x 2.55 m",
"year_built": "2018",
"engine_power": "1 x 250 hp / 184 kW"
}
]
},
"status": "success"
}
}About the Boat24 API
Search Listings
The search_listings endpoint returns 24 results per page using zero-based pagination via the page parameter. You can narrow results with category (a numeric ID), location (e.g. '2' for Germany, '24' for United Kingdom), and a free-text query matching boat model, manufacturer, or listing ID. Each summary in the listings array includes title, price, dimensions, engine power, year, and location. The total field tells you how many listings match your filters across all pages.
Listing Details
The get_listing endpoint accepts a numeric listing_id — available directly from search_listings results — and returns the full record for that boat. The response includes specs (a key-value object of all technical specifications), fuel type and tank capacity, images (an array of image URLs), seller name, category (e.g. Powerboats, Sailboats), price with currency, and a canonical url. This is where you get the depth that listing summaries omit: equipment lists, full description text, and complete dimensional data.
Coverage and Filtering
Boat24 covers listings primarily from European sellers, and the location parameter lets you scope searches to specific regions by numeric ID. Category filtering uses a numeric ID passed to the category parameter; omitting it returns results across all boat types. Sorting behavior is controllable via the sort parameter. Listing IDs returned by search_listings map directly to get_listing inputs, so building a pipeline from search to detail is straightforward.
The Boat24 API is a managed, monitored endpoint for boat24.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when boat24.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official boat24.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate European boat listings by region using the
locationfilter and surface price trends from thepricefield - Build a boat comparison tool that pulls full
specsandfueldata for multiple listings viaget_listing - Monitor new listings for a specific manufacturer by running
search_listingswith a model name as thequeryparameter - Populate a sailboat inventory feed filtered by
categoryID and enriched withimagesandsellerdetails - Track asking prices across powerboat listings in specific countries using
locationandcategorytogether - Create a lead generation tool for marine brokers by extracting
sellername and canonicalurlfrom detailed listings
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Boat24 offer an official developer API?+
What does `search_listings` return versus `get_listing`?+
search_listings returns summary-level data per boat: title, price, dimensions, engine power, year, and location — enough to browse and filter. get_listing returns the full record for a single boat: complete specs as key-value pairs, fuel type and tank capacity, images array, seller name, category, and the canonical url. Use search results to collect listing IDs, then call get_listing for the fields you need.How does pagination work in `search_listings`?+
page parameter is zero-based, so the first page is page=0. The total field in the response tells you the total number of matching listings, which you can use to calculate how many pages exist for a given query.Does the API include contact details like phone numbers or email addresses for sellers?+
seller name field from listing detail records but does not include phone numbers, email addresses, or other direct contact information. You can fork this API on Parse and revise it to add a contact-detail endpoint if that data is accessible on the listing page.Are listings outside Europe covered?+
location parameter uses region IDs tied to European countries (e.g. Germany, United Kingdom). Non-European listings may appear via open search, but the location filter IDs are European-focused. You can fork the API on Parse and revise it to map additional region IDs if broader geographic filtering is needed.