# Marinas.com Scraper — Contacts, Fuel, Amenities & Reviews (`zapticx/marinas-com-scraper`) Actor

Scrape Marinas.com marinas: phone, website, address, GPS, slips, depths, fuel prices, amenities, ratings, reviews and website emails.

- **URL**: https://apify.com/zapticx/marinas-com-scraper.md
- **Developed by:** [Zapticx](https://apify.com/zapticx) (community)
- **Categories:** Lead generation, Travel
- **Stats:** 1 total users, 1 monthly users, 97.2% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$6.00 / 1,000 marina results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

### Marinas.com Scraper — Contacts, Fuel, Amenities & Reviews

Extract marina data from **[Marinas.com](https://marinas.com/)** in a few clicks: phone numbers, websites, addresses and GPS coordinates, slips and moorings, approach and dock depths, vessel size limits, **fuel prices**, services and amenities, ratings and **reviews**. Pick a country, a US state or a city, search by marina name, or paste Marinas.com URLs, and download clean, structured marina data as **CSV, Excel or JSON**, or use it through the Apify API and integrations.

Marinas.com rarely shows email addresses, so the Actor can also visit each marina's **own official website** and return publicly displayed business emails, with the page each email was found on. Every record is de-duplicated and normalized: feet for depths and lengths, real numbers for slips and fuel prices, and true/false for docks and fuel availability.

💰 **Simple pricing: $6.00 per 1,000 marinas.** Website email lookup and reviews are included. You pay only for marinas delivered to your dataset.

Data source: [Marinas.com](https://marinas.com/), the public marina directory. Emails come from each marina's official website when you turn that option on.

### What can you do with this Actor?

- 📇 **Build marina lead lists** with phone numbers, websites, VHF channels and business emails
- ⛽ **Track marina fuel prices**: diesel and gasoline prices with the date Marinas.com last updated them
- 🛥️ **Check what a marina can take**: maximum vessel length, slip length and width, approach, channel and dock depths, bridge clearance
- 🏗️ **Research marina capacity**: slips, moorings, dry storage and linear dockage
- 🧰 **Compare services and amenities**: fuel dock, pump-out, Wi-Fi, showers, laundry, repairs, ship store, transient slips and more
- ⭐ **Analyze reputation**: ratings, review counts, and (optionally) every review with the marina's responses
- 🗺️ **Map marinas** by state, country or city with latitude and longitude
- 🔁 **Automate marina research** with scheduled runs, webhooks and integrations

**Who uses it:** marine-industry suppliers and service companies, boat and yacht brokers, cruising and charter businesses, marine insurers and lenders, marina operators benchmarking competitors, and analysts building marine datasets.

### How to use this Actor

- 👉 **Register for a free Apify account**: no credit card required.
- 🎉 Just click [**Sign up free on Apify →**](https://console.apify.com/sign-up?fpr=1h3gvi) and complete a quick signup.
- 💰 Apify's free plan includes $5 of usage every month, enough to try this Actor.
- ⚓ Open the Actor and choose **which marinas**: Marinas.com URLs, countries, US states, US cities or marina names. Nothing is pre-selected: choose the places you want. A run with no location returns a free sample of 3 marinas and charges nothing.
- ⚙️ Set **Maximum marinas**: the **total** for the whole run across all selected places, not per state. For a 5-state batch use a high number such as 5000; the form's starting value of 20 is meant for a quick test.
- ✉️ Choose whether to find emails on official websites and include reviews.
- ▶️ Click **Start**. Small runs finish in about a minute.
- 📥 **Export** the results to CSV, Excel or JSON, or use them through the API and integrations.

### Features

| Feature | Details |
|---|---|
| 🔗 Marinas.com URLs | Marina profiles, state/country directory pages and marina search pages |
| 🌍 Countries | Every Marinas.com marina in a country; the United States is walked state by state |
| 🗺️ US states | The complete Marinas.com directory for each state |
| 🏙️ US cities | Marinas.com's city search (up to about 50 marinas per city) |
| 🔎 Marina names | Find marinas whose name contains your words, e.g. "Safe Harbor" or "yacht club" |
| 📞 Contacts | Phone (plus E.164 for North American numbers), website, VHF channel |
| ✉️ Website emails | Optional: public business emails from the marina's official website, with type and source page |
| 📍 Location | Street address, city, state, postal code, country, latitude and longitude |
| 🏗️ Capacity | Slips, moorings, dry storage, linear dockage |
| 🛥️ Vessel & docks | Max vessel LOA, max slip length and width, fixed, floating and covered docks |
| 🧭 Approach | Approach, channel and dock (MLW) depths, MHW clearance, approach notes |
| ⛽ Fuel | Every fuel grade shown with price, currency, unit and last-updated date |
| 🧰 Amenities | All services & amenities as listed (Yes / Nearby / Within 5 Miles) |
| ⭐ Reviews | Rating and review count; optionally every review with the marina's response (no reviewer names) |
| 🧹 Clean data | De-duplicated by Marinas.com marina ID; closed marinas skipped unless you ask for them |

### Data fields

| Field | Type | Description |
|---|---|---|
| `marinaId`, `name`, `url` | string | Marinas.com ID, marina name and profile URL |
| `claimed`, `featuredPartner`, `closed`, `bookingAvailable` | boolean | Listing status on Marinas.com |
| `reservationUrl` | string | External reservation link, when shown |
| `phone`, `phoneE164` | string | Phone as shown, and in E.164 format for North American numbers |
| `website`, `vhfChannel` | string | Official website and VHF channel |
| `email` | string | Best public business email |
| `emailType` | string | `business_domain`, `parent_operator`, `government`, `free_mail`, `questionable` |
| `emailSource`, `emailPageUrl` | string | `marinas_com` or `official_website`, and the page it was found on |
| `websiteEmails` | array | All business emails found on the official website |
| `websiteType`, `websiteStatus` | string | Website classification and health (`active`, `dead_domain`, `parked`, `blocked`…) |
| `address`, `fullAddress`, `city`, `state`, `stateName`, `postalCode`, `country`, `countryCode` | string | Location |
| `latitude`, `longitude` | number | GPS coordinates |
| `nearestHarbor` | string | Harbor Marinas.com associates with the marina |
| `rating`, `reviewCount` | number | Average rating and number of reviews |
| `description`, `awards` | string, array | Marina description and Marinas.com awards |
| `slips`, `moorings`, `dryStorage` | integer | Capacity counts |
| `linearDocksFt` | number | Linear dockage (feet) |
| `maxVesselLoaFt`, `maxSlipLengthFt`, `maxSlipWidthFt` | number | Vessel and slip limits (feet) |
| `fixedDocks`, `floatingDocks`, `coveredSlips` | boolean | `true` = at the marina, `false` = nearby only |
| `minimumApproachDepthFt`, `minimumChannelDepthFt`, `mlwDockDepthFt`, `mhwClearanceFt` | number | Depths and clearance (feet) |
| `approachNotes` | string | Navigation notes |
| `hasFuelDock`, `gasAvailable`, `dieselAvailable`, `propaneAvailable` | boolean | Fuel availability |
| `fuel` | array | Fuel grades: `type`, `price`, `currency`, `unit`, `priceText`, `note` |
| `fuelLastUpdated`, `amenitiesLastUpdated` | string | When Marinas.com last updated fuel prices / amenities |
| `amenities` | object | All listed services & amenities with their values |
| `specifications` | object | Capacity, depth and size values with their original units |
| `imageUrl` | string | Main marina photo |
| `reviews` | array | With **Include reviews**: `reviewId`, `rating`, `date`, `verifiedStay`, `text`, `marinaResponse`, `profileUrl` |
| `dataSource`, `scrapedAt` | string | Always `Marinas.com`, and extraction time (UTC) |

Depths and lengths are converted to **feet**; Marinas.com's empty `0.0` placeholders become `null`. The original values with units are kept in `specifications`.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `startUrls` | array | — | Marinas.com marina profiles, directory pages (`/browse/marina/US/FL`) or marina search URLs |
| `countries` | array | — | Country names or codes, e.g. `["Croatia"]` |
| `states` | array | — | US states, e.g. `["FL", "MD"]` |
| `cities` | array | — | US cities with state, e.g. `["Annapolis, MD"]` |
| `searchTerms` | array | — | Marina name contains, e.g. `["yacht club"]` |
| `extractAllMarinas` | boolean | false | Every marina on Marinas.com (about 20,000, worldwide) |
| `maxResults` | integer | 100 | Total marinas to return (and pay for) across all selected places, not per state |
| `enrichEmailsFromWebsite` | boolean | true | Find public business emails on official marina websites |
| `fastContactMode` | boolean | true | Email lookup reads the homepage, then at most one Contact page; turn off for the thorough 3-page lookup |
| `includeReviews` | boolean | false | Add every review shown on the profile |
| `includeClosed` | boolean | false | Also return marinas Marinas.com reports as closed |
| `proxyConfiguration` | object | Apify Proxy | Datacenter proxy is the default |

**How inputs combine:** Marinas.com URLs, when given, are used on their own. Otherwise **Extract all Marinas.com marinas**, when on, takes every marina. Otherwise a marina-name search is narrowed by any states, cities or countries you add. Otherwise cities, states and countries are combined. With no location at all, the run returns a **free sample of 3 marinas** (from the Florida directory) so you can see the output, and nothing is charged. Each marina is returned (and charged) only once per run, even when it appears in more than one selected state.

#### Large US extractions: about 5 states at a time

For big lists, the recommended workflow is **batches of about 5 states**: select the states, run, download the dataset, then run the next batch until you have covered every state you need. You can choose more or fewer states per run; five is a comfortable size, not a rule.

Why batches work better than one huge run:

- **Shorter runs.** Even a batch of large states (Florida, California, Texas, Maryland and Washington: about 3,300 open marinas) takes roughly an hour, instead of one run of 5–6 hours for the whole directory.
- **Fewer usage-limit surprises.** Each batch costs a predictable amount, so it is less likely to hit your Apify account's monthly usage limit or your maximum cost per run.
- **Easier retries.** If something goes wrong, you rerun or resurrect one batch, not the whole country.
- **Completed batches stay safe.** Each batch has its own dataset, so finished states are already downloaded even if a later batch has an issue.

Each selected state's complete Marinas.com directory is walked page by page (the city search's ~50-marina limit does not apply) and cross-checked against Marinas.com's marina sitemap, so marinas that the directory pages skip are still included, the states are worked through together, and `maxResults` is a total for the whole batch. Featured ads for marinas in other states are skipped, so they arrive with their own state's batch.

**Combining batches: de-duplicate on `marinaId`.** Within one run every marina is returned and charged only once. Across separate batch runs, a small number of marinas can appear in more than one export, because Marinas.com itself lists some marinas near state lines in a neighbouring state's directory as well (for example, a Virginia marina in the Maryland directory). The Actor keeps these records as Marinas.com lists them and does not drop a real marina just because its address names another state. In our tests this affected about 1 in 250 records. When you merge your batch exports, remove duplicates using `marinaId`, the unique Marinas.com ID in every record.

```json
{
  "states": ["FL", "CA", "TX", "MD", "WA"],
  "maxResults": 5000,
  "enrichEmailsFromWebsite": true
}
```

**Stopped runs continue where they left off.** Progress is saved continuously. If a run is aborted, times out, or stops because your usage limit was reached, open it and click **Resurrect**: it continues with the remaining marinas in the same dataset, and marinas already delivered are never returned or charged twice.

#### Example 1: Every marina in Florida with fuel and amenities

```json
{
  "states": ["FL"],
  "maxResults": 2000
}
```

#### Example 2: Marina contact list with emails for two cities

```json
{
  "cities": ["Annapolis, MD", "Newport, RI"],
  "enrichEmailsFromWebsite": true,
  "maxResults": 100
}
```

#### Example 3: Specific marinas with all their reviews

```json
{
  "startUrls": [
    { "url": "https://marinas.com/view/marina/2gcl53_Bahia_Mar_Yachting_Center_Fort_Lauderdale_FL_United_States" }
  ],
  "includeReviews": true
}
```

#### Example 4: Yacht clubs in New England

```json
{
  "searchTerms": ["yacht club"],
  "states": ["MA", "RI", "CT", "ME"],
  "maxResults": 300
}
```

#### Example 5: Marinas in Croatia, fast export without email lookup

```json
{
  "countries": ["Croatia"],
  "enrichEmailsFromWebsite": false,
  "maxResults": 500
}
```

### Output

One dataset row per unique marina. A real example (description and amenities shortened):

```json
{
  "marinaId": "n8c3r",
  "name": "Long Beach Marina",
  "url": "https://marinas.com/view/marina/n8c3r_Long_Beach_Marina_Bowlers_Quarters__MD_United_States",
  "claimed": false,
  "featuredPartner": false,
  "closed": false,
  "bookingAvailable": false,
  "reservationUrl": null,
  "phone": "+14103357547",
  "phoneE164": "+14103357547",
  "website": "http://www.longbeachmarina.net/",
  "vhfChannel": "69",
  "email": "info@longbeachmarina.net",
  "emailType": "business_domain",
  "emailSource": "official_website",
  "emailPageUrl": "https://www.longbeachmarina.net/",
  "websiteEmails": [
    { "email": "info@longbeachmarina.net", "type": "business_domain", "pageUrl": "https://www.longbeachmarina.net/" }
  ],
  "websiteType": "official",
  "websiteStatus": "active",
  "address": "800 Chester road",
  "fullAddress": "800 Chester road, Bowlers Quarters, MD 21220",
  "city": "Bowlers Quarters",
  "state": "MD",
  "stateName": "Maryland",
  "postalCode": "21220",
  "country": "United States",
  "countryCode": "US",
  "latitude": 39.3159485,
  "longitude": -76.3993607,
  "nearestHarbor": "Galloway Creek",
  "rating": 3.5,
  "reviewCount": 2,
  "description": "Long Beach Marina has become the most modern and accommodating full service Marina on the Chesapeake Bay…",
  "awards": [],
  "slips": 300,
  "moorings": null,
  "dryStorage": null,
  "linearDocksFt": null,
  "maxVesselLoaFt": 80.0,
  "maxSlipLengthFt": 80.0,
  "maxSlipWidthFt": 14.5,
  "fixedDocks": true,
  "floatingDocks": true,
  "coveredSlips": null,
  "minimumApproachDepthFt": 6.0,
  "minimumChannelDepthFt": 11.0,
  "mlwDockDepthFt": 8.0,
  "mhwClearanceFt": 11.0,
  "approachNotes": null,
  "hasFuelDock": true,
  "gasAvailable": true,
  "dieselAvailable": true,
  "propaneAvailable": null,
  "fuel": [
    { "type": "Diesel", "price": 3.25, "currency": "USD", "unit": "gallon", "priceText": "$3.25/gal", "note": "Brand: Carroll Fuel" },
    { "type": "Gas Regular", "price": 3.89, "currency": "USD", "unit": "gallon", "priceText": "$3.89/gal", "note": "Brand: Carroll Fuel" }
  ],
  "fuelLastUpdated": "2025-05-15T15:10:00",
  "amenities": {
    "fuelDock": "Yes",
    "dockage": "Yes",
    "transientStorage": "Yes",
    "longTermStorage": "Yes",
    "serviceMaintenance": "Yes",
    "winterStorage": "150"
  },
  "amenitiesLastUpdated": "2025-10-24",
  "specifications": {
    "Slips": "300",
    "Minimum Approach Depth": "6.0 Feet",
    "Mean Low Water Dock Depth": "8.0 Feet",
    "Max. Vessel LOA": "80.0 Feet"
  },
  "imageUrl": "https://img.marinas.com/v2/749d1bb24a1cc8d01d65b14c67e7d801d8e809bc9c9307ba314e04dc2e1f981e.jpg",
  "reviews": null,
  "dataSource": "Marinas.com",
  "scrapedAt": "2026-10-05T18:22:54Z"
}
```

With **Include reviews**, `reviews` holds every review shown on the profile:

```json
[
  { "reviewId": "86501", "rating": 5, "date": "2026-05-06", "verifiedStay": true,
    "text": "Amazing place to stay.", "marinaResponse": null,
    "profileUrl": "https://marinas.com/view/marina/2gcl53_Bahia_Mar_Yachting_Center_Fort_Lauderdale_FL_United_States" }
]
```

Each run also saves a **RUN_SUMMARY** record (marinas delivered, coverage, skipped closed marinas, retries) in the run's key-value store.

### Pricing

**$6.00 per 1,000 marinas** ($0.006 per marina), all inclusive.

| Marinas | Price |
|---:|---:|
| 100 | $0.60 |
| 500 | $3.00 |
| 1,000 | $6.00 |
| 5,000 | $30.00 |

- **One delivered marina = one result.** You pay only for unique marinas saved to your dataset.
- **Included at no extra cost:** official-website email lookup, reviews, fuel, amenities and all other fields.
- **Never charged:** directory and search pages, retries, failed or missing profiles, duplicates and skipped closed marinas.
- No subscription for this Actor, and Apify platform usage is included in the price. Set a **maximum cost per run** in Apify and the run stops cleanly when it is reached.

### Use cases

#### Marine-industry lead generation

Export every marina in your territory with phone, website, VHF channel and business email, then load it into your CRM.

#### Fuel price monitoring

Schedule a weekly run for your cruising area and track diesel and gasoline prices with Marinas.com's last-updated dates.

#### Trip and transient planning

Filter marinas by maximum vessel length, slip size and dock depth before choosing where to stop.

#### Competitive benchmarking

Compare slips, amenities, ratings and reviews of the marinas around yours, including how they respond to reviews.

#### Marine datasets and maps

Build maps and dashboards of marinas by state or country with GPS coordinates and capacity.

### API & integrations

Run the Actor and fetch results with the [Apify API](https://docs.apify.com/api/v2), or connect it to your tools with [webhooks](https://docs.apify.com/platform/integrations/webhooks), [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [n8n](https://apify.com/integrations/n8n) and [Google Sheets](https://apify.com/integrations/google-sheets). Use [Schedules](https://docs.apify.com/platform/schedules) to refresh fuel prices or lead lists automatically.

**Python**

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("zapticx/marinas-com-scraper").call(run_input={
    "states": ["FL"],
    "maxResults": 500,
})
for marina in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(marina["name"], marina["phone"], marina["email"], marina["fuel"])
```

**JavaScript**

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

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('zapticx/marinas-com-scraper').call({
    cities: ['Annapolis, MD'],
    includeReviews: true,
    maxResults: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### Limitations

- The Actor extracts what Marinas.com publicly shows. Fields such as fuel prices, depths, vessel limits and amenities are only available when the marina's listing includes them, and they may be out of date: check `fuelLastUpdated` and `amenitiesLastUpdated`.
- Marinas.com rarely displays email addresses. Emails come from the marina's official website when **Find emails on official websites** is on; not every marina publishes one. The Actor never guesses or generates addresses.
- Website lookups read the homepage and at most one Contact page (fast contact mode, the default) or up to 3 pages with fast contact mode off; they respect robots.txt, and skip sites that block automated visitors (`websiteStatus: blocked`).
- Marinas.com's city search shows up to about 50 marinas; choose a state for complete coverage.
- Directory pages list featured marinas first, so small runs tend to start with the most detailed listings.
- Popular marinas can have hundreds of reviews, which makes records large when **Include reviews** is on.

### About Zapticx

Built and maintained by [Zapticx](https://www.zapticx.com/). Need another field or a custom marina dataset? Open an issue on the Actor's Issues tab.

**Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Marinas.com or its operator, The Wanderlust Group, Inc. (Dockwa).

# Actor input Schema

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

Marina profile URLs (<code>marinas.com/view/marina/…</code>), state or country directory pages (<code>marinas.com/browse/marina/US/FL</code>) or Marinas.com marina search URLs. When you add URLs here, the location fields below are ignored.

## `countries` (type: `array`):

Extract the Marinas.com marinas of whole countries, e.g. <code>Croatia</code> or <code>HR</code>. For the United States every state is walked in turn.

## `states` (type: `array`):

Extract every marina Marinas.com lists in these US states (each state's complete directory, all pages). <b>Large extractions:</b> we recommend about 5 states per run, then download the results and run the next batch; see the README.

## `cities` (type: `array`):

Marinas in and around a US city, e.g. <code>Annapolis, MD</code>. Marinas.com's city search shows up to about 50 marinas; choose a state for complete coverage.

## `extractAllMarinas` (type: `boolean`):

Extract every marina listed on Marinas.com (worldwide, about 20,000) from Marinas.com's marina sitemap. Set <b>Maximum marinas</b> to 25000 to get them all. Uses fast contact mode. Large runs take several hours; progress is saved continuously, so a stopped run can be resurrected and continues where it left off without charging any marina twice.

## `searchTerms` (type: `array`):

Find marinas by name, e.g. <code>Safe Harbor</code> or <code>yacht club</code>. Add states, cities or countries to narrow the search.

## `maxResults` (type: `integer`):

The TOTAL number of marinas for the whole run, across all selected states, cities and countries (not per state). At 20, a five-state run returns at most 20 marinas in total. For a normal 5-state batch, raise it high enough to cover every marina in those states, e.g. <b>5000</b>. You pay only for marinas delivered to your dataset.

## `enrichEmailsFromWebsite` (type: `boolean`):

Marinas.com rarely shows email addresses. When on, the Actor visits each marina's own official website, respects robots.txt and returns publicly displayed business emails with their source page; it never guesses addresses. How many pages it reads is set by <b>Fast contact mode</b>. Included in the price. Turn off for faster runs without emails.

## `fastContactMode` (type: `boolean`):

On by default. Email lookup reads the marina's homepage and, only if no public business email is found there, at most one Contact page; it stops at the first valid email. Turn off for the thorough lookup (up to 3 pages: home, contact, about), which is slower. Always on with <b>Extract all Marinas.com marinas</b>.

## `includeReviews` (type: `boolean`):

Add every review shown on the marina's Marinas.com profile: rating, date, verified stay, text and the marina's response. Reviewer names are not collected. Included in the price; popular marinas can have hundreds of reviews.

## `includeClosed` (type: `boolean`):

Also return marinas that Marinas.com reports as closed (labelled <code>closed: true</code>). Skipped closed marinas are never charged.

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

Apify datacenter proxy works well for Marinas.com and is the default.

## Actor input object example

```json
{
  "extractAllMarinas": false,
  "maxResults": 20,
  "enrichEmailsFromWebsite": true,
  "fastContactMode": true,
  "includeReviews": false,
  "includeClosed": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `marinas` (type: `string`):

One row per unique marina.

## `contacts` (type: `string`):

Phones, emails with source, websites, addresses.

## `details` (type: `string`):

Slips, moorings, storage, depths, vessel limits.

## `runSummary` (type: `string`):

Totals: marinas delivered, coverage, skipped closed marinas, retries, stop reason.

# 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 = {
    "maxResults": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("zapticx/marinas-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 = {
    "maxResults": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("zapticx/marinas-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 '{
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call zapticx/marinas-com-scraper --silent --output-dataset

```

## MCP server setup

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