# Yangming Marine Transport Scraper (1$ / 1K) (`memo23/yangming-cheerio`)

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://beta-securitybyobscurity.apify.com/memo23/yangming-cheerio.md
- **Developed by:** [Muhamed Didovic](https://beta-securitybyobscurity.apify.com/memo23) (community)
- **Categories:** Automation, Lead generation, Travel
- **Stats:** 7 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 results

This Actor is paid per result. You are not charged for the Apify platform usage, but only a fixed price for dataset items the Actor outputs.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-result

# 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`):

Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.

## Actor input object example

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

# 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"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// 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"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# 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"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
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

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Yangming Marine Transport Scraper (1$ / 1K)",
        "description": "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.",
        "version": "0.0",
        "x-build-id": "He94h7JaF7GcR6SpA"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~yangming-cheerio/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-yangming-cheerio",
                "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/memo23~yangming-cheerio/runs": {
            "post": {
                "operationId": "runs-sync-memo23-yangming-cheerio",
                "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/memo23~yangming-cheerio/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-yangming-cheerio",
                "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",
                "required": [
                    "containers"
                ],
                "properties": {
                    "containers": {
                        "title": "Container Numbers",
                        "type": "array",
                        "description": "Container Numbers"
                    },
                    "maxConcurrency": {
                        "title": "Max Concurrency",
                        "type": "integer",
                        "description": "Maximum number of pages that can be processed at the same time.",
                        "default": 10
                    },
                    "minConcurrency": {
                        "title": "Min Concurrency",
                        "type": "integer",
                        "description": "Minimum number of pages that will be processed at the same time.",
                        "default": 1
                    },
                    "maxRequestRetries": {
                        "title": "Max Request Retries",
                        "type": "integer",
                        "description": "Number of times the crawler will retry a failed request before giving up.",
                        "default": 100
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
