# Yangming Marine Transport Scraper \[only $0.75] (`memo23/yangming-cheerio`) Actor

Track global container shipments effortlessly with the Yangming Scraper! Extract real-time container statuses, vessel schedules, and port activities. Save time, optimize logistics, and make smarter shipping decisions—all with structured, analysis-ready data at your fingertips.

- **URL**: https://apify.com/memo23/yangming-cheerio.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Automation, Lead generation, Travel
- **Stats:** 24 total users, 1 monthly users, 100.0% runs succeeded, 2 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.95 / 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.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

## Yangming Marine Transport Corporation Scraper

### Overview

The **Yangming Marine Transport Corporation Scraper** extracts detailed container tracking and shipping data from [Yangming.com](https://www.yangming.com/en), a leading global container shipping company. Designed for logistics professionals, supply chain analysts, and shipping companies, this tool automates the collection of container statuses, vessel schedules, and port activities to streamline operations and enhance decision-making.

***

### Features

- **Container Tracking**: Scrape real-time container statuses, locations, and activities.
- **Freight Rates**: Extract up-to-date freight rates for global routes.
- **Vessel Information**: Extract vessel names, voyage numbers, and schedules.
- **Port Activities**: Retrieve detailed port arrival and departure data.
- **Port Information**: Access detailed port data, including services and facilities.
- **Vessel Schedules**: Scrape real-time vessel schedules, including departure and arrival times.
- **Proxy Support**: Use residential proxies to avoid IP blocks and ensure uninterrupted scraping.
- **Customizable Workflow**: Adjust concurrency, retries, and data limits for large-scale scraping.

***

### How to Use

1. **Set Up**: Deploy the scraper on the [Apify Platform](https://apify.com/).
2. **Configure Input**: Define your container numbers, limits, and proxy settings (see example below).
3. **Run the Scraper**: Execute the job and monitor progress in real time.
4. **Export Results**: Download data in JSON, CSV, or Excel formats.

***

### Input Configuration

#### Example Input

```json
{
    "containers": [
        "YMLU8825399"
    ],
    "maxConcurrency": 10,
    "minConcurrency": 1,
    "maxRequestRetries": 100,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": ["RESIDENTIAL"]
    }
}
```

#### Input Fields Explained

| Field | Type | Description | Default |
|-------|------|-------------|---------|
| **containers** | `array` | List of container numbers to track. | `[]` |
| **maxConcurrency** | `integer` | Maximum parallel requests to process pages. | `10` |
| **minConcurrency** | `integer` | Minimum parallel requests to maintain. | `1` |
| **maxRequestRetries** | `integer` | Retry failed requests up to this number before stopping. | `100` |
| **proxy** | `object` | Proxy configuration for anonymity:<br>- `useApifyProxy`: Enable Apify Proxy.<br>- `apifyProxyGroups`: Use `RESIDENTIAL` for hard-to-scrape targets. | `{ "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }` |

***

### Output Structure

The scraper returns structured container tracking data. Below is an example output:

```json
{
    "newLink": "https://e-solution.yangming.com/e-service/track_trace/ctconnect.aspx?var=0XFp7%2fIgQ2YW%2frdIHIIHS2U35%2bQ%2fH1j6QbBG2sJPPdMZnaiy2pwlam5IEr0F7n84QOth9%2bxMs2O%2bv%2fphYa4hkBaznhp7ixvX1JcCB1yzxY0%3d",
    "container_number": "YMLU8825399",
    "Container_Size": "40",
    "vessel_name": "YM TRILLION",
    "voyage_no": "013E",
    "ETD_Origin": "2024-12-06T23:00:00.000Z",
    "Port_of_Origin": "SHANGHAI",
    "Port_of_Discharge": "VANCOUVER",
    "Port_of_Destination": "MONTREAL",
    "Current_Status": "Empty Returned",
    "ETA_Port_of_Discharge": null,
    "Current_Location": "MONTREAL - CP RAIL - LACHINE",
    "Activities_Array": [
        {
            "date": "2025-01-28T20:55:00.000Z",
            "status": "Empty Returned",
            "location": "MONTREAL - CP RAIL - LACHINE",
            "transport": "",
            "vessel_name": "",
            "voyage_no": ""
        },
        {
            "date": "2025-01-26T07:14:00.000Z",
            "status": "Full to Consignee",
            "location": "MONTREAL - CP RAIL - LACHINE",
            "transport": "",
            "vessel_name": "",
            "voyage_no": ""
        }
    ],
    "ata_eta": false,
    "atd_etd": false
}
```

#### Key Output Fields

- **container\_number**: Unique container identifier.
- **vessel\_name**: Name of the vessel carrying the container.
- **voyage\_no**: Voyage number of the vessel.
- **ETD\_Origin**: Estimated time of departure from the origin port.
- **Port\_of\_Origin**: Origin port of the container.
- **Port\_of\_Discharge**: Port where the container will be discharged.
- **Port\_of\_Destination**: Final destination port of the container.
- **Current\_Status**: Current status of the container (e.g., "Empty Returned").
- **Current\_Location**: Current location of the container.
- **Activities\_Array**: Detailed timeline of container activities (e.g., arrivals, departures).

***

### Benefits

- **Operational Efficiency**: Automate container tracking and status updates.
- **Real-Time Insights**: Monitor container locations and activities in real time.
- **Market Analysis**: Analyze shipping trends and port activities for better decision-making.
- **Scalable**: Track thousands of containers across routes and ports in hours.

***

### Why Use This Scraper?

Yangming Marine Transport Corporation is a key player in global shipping, but manual data extraction is time-consuming. This scraper:

- **Saves Time**: Automates container tracking and status updates.
- **Ensures Accuracy**: Delivers structured, analysis-ready data in JSON/CSV.
- **Avoids Blocks**: Residential proxies prevent IP bans.

***

### Support

- **Issues**: Report via [Apify Actor Issues](https://console.apify.com/actors/YOUR_ACTOR_ID/issues).
- **Contact**:
  - Email: <muhamed.didovic@gmail.com>
  - Portfolio: <https://muhamed-didovic.github.io/>

***

### Custom Services

Need tailored solutions? Contact me for:

- Custom fields (e.g., specific container types, route analysis).
- Bulk data extraction for historical container tracking.
- Integration with logistics management systems.

Email: <muhamed.didovic@gmail.com>

# Actor input Schema

## `containers` (type: `array`):

Container Numbers

## `maxConcurrency` (type: `integer`):

Maximum number of pages that can be processed at the same time.

## `minConcurrency` (type: `integer`):

Minimum number of pages that will be processed at the same time.

## `maxRequestRetries` (type: `integer`):

Number of times the crawler will retry a failed request before giving up.

## `proxy` (type: `object`):

Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies.

## Actor input object example

```json
{
  "containers": [
    "TCNU2325192"
  ],
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 100
}
```

# 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 = {
    "containers": [
        "TCNU2325192"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/yangming-cheerio").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 = { "containers": ["TCNU2325192"] }

# Run the Actor and wait for it to finish
run = client.actor("memo23/yangming-cheerio").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 '{
  "containers": [
    "TCNU2325192"
  ]
}' |
apify call memo23/yangming-cheerio --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=memo23/yangming-cheerio",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/E126cHQU6Bey4Kpug/builds/5SdmHs0vs0RdLVx7y/openapi.json
