# Marinetraffic Realtime Data Scraper (`stealth_mode/marinetraffic-realtime-data-scraper`) Actor

Scrape live vessel positions, speed, and ship details from MarineTraffic.com's AIS tracking network. This scraper captures 12+ data fields per vessel including location, heading, ship type, and status — essential for maritime intelligence, shipping analytics, and supply chain monitoring.

- **URL**: https://apify.com/stealth\_mode/marinetraffic-realtime-data-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## MarineTraffic Real-Time Data Scraper: Extract Live Vessel Data

---

### What Is MarineTraffic?

MarineTraffic.com is the world's largest AIS (Automatic Identification System) tracking platform, displaying real-time positions of thousands of vessels globally. Ships broadcast their location, speed, course, and identification data via AIS transponders, and MarineTraffic aggregates this data into an interactive map. Instead of manually refreshing and recording vessel information, the **MarineTraffic Real-Time Data Scraper** automatically collects live vessel positions and details from specified geographic regions, delivering structured records for analysis and monitoring.

---

### Overview

The **MarineTraffic Real-Time Data Scraper** extracts vessel information directly from MarineTraffic.com's interactive map interface. It targets a geographic area (defined by center coordinates and zoom level) and captures all visible vessel records, including position, speed, course, ship type, and operational status.

This scraper is designed for:

- **Shipping & logistics companies** tracking fleet movements and competitor routes
- **Maritime analysts** monitoring regional vessel traffic patterns
- **Supply chain teams** verifying delivery timelines and port arrivals
- **Researchers** studying maritime data, piracy patterns, or geopolitical activity
- **Regulatory bodies** conducting vessel monitoring and compliance checks

Key features include real-time data collection, handling of map-based paginated data, and the ability to capture up to 200+ vessels per map view.

---

### Input Format

The scraper accepts a JSON configuration that defines which map regions to scrape:

```json
{
  "urls": [
    "https://www.marinetraffic.com/en/ais/home/centerx:6.6/centery:-2.7/zoom:5"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

#### Configuration Parameters

| Parameter | Type | Description |
|---|---|---|
| `urls` | Array | Direct links to MarineTraffic map views. Each URL encodes map center coordinates and zoom level |
| `centerx` | Float | Longitude of the map center (e.g., `6.6` = West Africa region) |
| `centery` | Float | Latitude of the map center (e.g., `-2.7` = Equatorial region) |
| `zoom` | Integer | Map zoom level (higher = narrower geographic focus; typical range 3–10) |
| `max_items_per_url` | Integer | Maximum vessels to extract per map view (default: `20`; can be increased to `200`) |
| `ignore_url_failures` | Boolean | If `true`, the scraper continues if a URL fails to load; if `false`, the entire run stops |

**Example URL breakdown:**

- `https://www.marinetraffic.com/en/ais/home/centerx:6.6/centery:-2.7/zoom:5`
  - Centered at 6.6°E, 2.7°S (West African coast)
  - Zoom level 5 (regional view)

> **Tip:** You can generate URLs by navigating MarineTraffic.com manually, zooming to your desired region, then copying the URL from your browser's address bar.

***

### Output Format

**Sample output**

```json
{
  "lat": "-6.1366668",
  "lon": "10.85",
  "speed": "0",
  "course": "308",
  "heading": null,
  "elapsed": "13",
  "shipname": "[SAT-AIS]",
  "shiptype": "8",
  "ship_id": "T0RVMk1UVXdPRFUyTVRVd09EVTJNUT09LW0xcUdCZXRCTHp5OWd3dlpEN0h3cXc9PQ==",
  "type_img": "8",
  "type_name": "Tanker",
  "status_name": "Default",
  "from_url": "https://www.marinetraffic.com/en/ais/home/centerx:6.6/centery:-2.7/zoom:5"
}
```

Each vessel captured returns a structured record with 12 core fields:

#### Location & Navigation

| Field | Meaning | Example |
|---|---|---|
| `Latitude` | Current vessel latitude in decimal degrees | `4.3521` |
| `Longitude` | Current vessel longitude in decimal degrees | `-74.0727` |
| `Speed` | Current speed over ground in knots | `12.5` |
| `Course` | Direction of travel in degrees (0–360°) | `145` |
| `Heading` | Vessel's actual heading/bearing in degrees | `142` |
| `Elapsed` | Time in seconds since last AIS position update | `35` |

#### Vessel Identification

| Field | Meaning | Example |
|---|---|---|
| `Ship Name` | Official vessel name as registered | `Ever Given` |
| `Ship ID` | MMSI (Maritime Mobile Service Identity) number | `353136000` |
| `Ship Type` | Numeric IMO ship type code | `70` |
| `Type Name` | Human-readable ship category | `Container Ship` |
| `Type Image` | URL to the vessel type icon | `https://cdn.marinetraffic.com/images/...` |

#### Operational Status

| Field | Meaning | Example |
|---|---|---|
| `Status Name` | Current vessel status | `Under Way Using Engine`, `Moored`, `At Anchor` |

***

### How to Use

1. **Find your target region** — Navigate to MarineTraffic.com, zoom to your area of interest, and copy the map URL from your browser's address bar.

2. **Configure the scraper** — Paste the URL(s) into the `urls` array. Adjust `max_items_per_url` based on how many vessels you expect (typical: 20–200).

3. **Set error handling** — Use `ignore_url_failures: true` for large batch jobs to skip problematic URLs without stopping the entire run.

4. **Execute the scraper** — Start the run and monitor progress in the task log.

5. **Export data** — Download results as JSON, CSV, or Excel for use in databases, GIS tools, or business intelligence platforms.

**Best practices:**

- For high-traffic regions (e.g., Suez Canal, Singapore Strait), use multiple narrower URLs instead of one wide view to ensure complete data capture.
- Increase `max_items_per_url` to 200 for comprehensive coverage of busy shipping lanes.
- Schedule runs during off-peak hours to minimize API load.

***

### Use Cases & Business Value

- **Fleet monitoring:** Track your own vessels or monitor competitors' shipping routes in real time
- **Port intelligence:** Identify incoming vessels, estimated arrivals, and congestion patterns
- **Risk management:** Detect unauthorized vessel movements or piracy-prone regions
- **Supply chain analytics:** Correlate vessel positions with order fulfillment timelines
- **Academic research:** Analyze global shipping patterns, emissions, or geopolitical chokepoints

The MarineTraffic Real-Time Data Scraper transforms unstructured map data into actionable intelligence, eliminating manual screenshot-taking and enabling automated, continuous vessel monitoring at scale.

***

### Conclusion

The **MarineTraffic Real-Time Data Scraper** brings industrial-grade vessel tracking to your workflow. With 12 structured data fields and flexible geographic targeting, it enables real-time maritime visibility across any global region. Whether you're optimizing shipping routes, managing risk, or conducting research, this scraper delivers the accurate, timely data you need.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the Map urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.marinetraffic.com/en/ais/home/centerx:6.6/centery:-2.7/zoom:5"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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 = {
    "urls": [
        "https://www.marinetraffic.com/en/ais/home/centerx:6.6/centery:-2.7/zoom:5"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/marinetraffic-realtime-data-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 = {
    "urls": ["https://www.marinetraffic.com/en/ais/home/centerx:6.6/centery:-2.7/zoom:5"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/marinetraffic-realtime-data-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.marinetraffic.com/en/ais/home/centerx:6.6/centery:-2.7/zoom:5"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/marinetraffic-realtime-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/marinetraffic-realtime-data-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Marinetraffic Realtime Data Scraper",
        "description": "Scrape live vessel positions, speed, and ship details from MarineTraffic.com's AIS tracking network. This scraper captures 12+ data fields per vessel including location, heading, ship type, and status — essential for maritime intelligence, shipping analytics, and supply chain monitoring.",
        "version": "0.0",
        "x-build-id": "6LIhAOvrLOKQiEm2K"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~marinetraffic-realtime-data-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-marinetraffic-realtime-data-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/stealth_mode~marinetraffic-realtime-data-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-marinetraffic-realtime-data-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/stealth_mode~marinetraffic-realtime-data-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-marinetraffic-realtime-data-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "title": "URLs of the Map urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the Map urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
