Evergreen Sailing Schedules: Cut-offs, ETD/ETA & Loops avatar

Evergreen Sailing Schedules: Cut-offs, ETD/ETA & Loops

Pricing

from $2.00 / 1,000 sailing scrapeds

Go to Apify Store
Evergreen Sailing Schedules: Cut-offs, ETD/ETA & Loops

Evergreen Sailing Schedules: Cut-offs, ETD/ETA & Loops

Scrape Evergreen Line point-to-point sailing schedules: service loop, port cut-off, ETD/ETA, transit days, vessel/voyage. Give port names, no login, no browser.

Pricing

from $2.00 / 1,000 sailing scrapeds

Rating

0.0

(0)

Developer

Arman Hossain

Arman Hossain

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

Evergreen Sailing Schedules: Cut-offs & ETD/ETA

Evergreen Sailings: Point to point sailing schedules with transit days, cut-off dates and the service loop

Pulls Evergreen Line's point-to-point sailing schedules straight from its own booking site: service loop, port cut-off, estimated departure and arrival, transit days, and the vessel and voyage working the leg. Give an origin and destination as ordinary port or city names; Evergreen's own internal location codes (not UN/LOCODEs) are resolved for you.

Agent skill: SKILL.md

https://api.apify.com/v2/key-value-stores/t7YoTxpZEJOWvw4Ug/records/evergreen-sailing-schedules-scraper.md

What you get

FieldWhat it holds
routeRequestedThe route as you wrote it, "Origin > Destination"
originCode, destinationCodeEvergreen's own 5-character location codes for the lane
originLabel, destinationLabelThe port name used for the query, upper-cased
recordNoRow number in Evergreen's own results table for this search
placeOfReceipt, portOfLoadingWhere cargo is received and where it's loaded
portCutOffDatePort cut-off date and time for the sailing
serviceThe loop/service code, e.g. FAL3
portOfDischarge, placeOfDeliveryWhere the container is discharged and delivered
transitDaysTotal transit time, in days
departureDate, arrivalDateETD at the port of loading, ETA at the port of discharge
vesselVoyageVessel name and voyage number working the leg
vgmHardCopyCutOff, vgmEdiCutOffVGM cut-off, by hard copy and by EDI/WEB/APP, when Evergreen publishes one
routingDetailSeqThe sequence ID Evergreen uses for this sailing's full routing detail
remarkAny remark Evergreen attaches to the sailing, or null
searchedDepartureDate, durationWeeksThe date window this record was found in
scrapedAtRun timestamp

RUN_SUMMARY in the key-value store holds per-run counts, the filters you used, and any route that failed to resolve or fetch.

Use cases

  • Rate quoting. Pull the next sailings on a lane before quoting a customer, with cut-off and transit time in hand.
  • Loop/alliance tracking. The service field names the loop, so runs over time build a picture of which vessels rotate through which loop.
  • Multi-carrier schedule comparison. Evergreen is one of a shrinking number of top-10 carriers still reachable this way; join its sailings against other carrier Actors on lane and departure week.
  • Cut-off reminders. Watch portCutOffDate and vgmEdiCutOff for lanes you book often and alert before they pass.
  • Transit-time benchmarking. Compare transitDays across loops on the same lane to see which service is actually faster this quarter.

Quick start

The default lane, the next 4 weeks:

{
"routes": ["Shanghai > Rotterdam"]
}

Several lanes, a wider window, sorted by transit time:

{
"routes": ["Shanghai > Rotterdam", "Kaohsiung > Los Angeles", "Hamburg > New York"],
"durationWeeks": 8,
"sortBy": "TRANSDAY",
"sortOrder": "ASC"
}

A specific departure date, reefer service only:

{
"routes": ["Shanghai > Rotterdam"],
"departureDate": "2026-09-15",
"durationWeeks": 4,
"reeferCargo": true
}

Input

FieldTypeDefaultNotes
routesarray["Shanghai > Rotterdam"]One lane per entry, written "Origin > Destination" as port or city names. A 5-character Evergreen code works too if you already know it.
departureDatestringtodayEarliest sailing to include, YYYY-MM-DD. Empty means today, on the Actor's server clock.
durationWeeksinteger4How many weeks ahead of departureDate to search. Clamped to 1-12.
sortBystring"LINE"LINE (service loop), TRANSDAY (transit time), POLDEP (loading departure) or PODARR (discharge arrival).
sortOrderstring"ASC"ASC or DESC.
reeferCargobooleanfalseRestrict to sailings that carry reefer cargo on this lane.
maxSailingsPerRouteinteger50Cap on sailings saved, and charged for, per route. Clamped to 1-200.

Nothing is required. Running with no input returns Shanghai to Rotterdam sailings for the next 4 weeks.

Output example

A real record:

{
"routeRequested": "Shanghai > Rotterdam",
"originCode": "CNSHG",
"destinationCode": "NLRDM",
"originLabel": "SHANGHAI",
"destinationLabel": "ROTTERDAM",
"recordNo": 1,
"placeOfReceipt": "SHANGHAI",
"portOfLoading": "SHANGHAI",
"portCutOffDate": "AUG-19-2026 12:00",
"service": "FAL3",
"portOfDischarge": "ROTTERDAM",
"placeOfDelivery": "ROTTERDAM",
"transitDays": 36,
"departureDate": "AUG-22-2026",
"arrivalDate": "SEP-27-2026",
"vesselVoyage": "CMA CGM JACQUES SAADE 0FMMQW1MA",
"vgmHardCopyCutOff": null,
"vgmEdiCutOff": "AUG-18-2026 17:00",
"routingDetailSeq": 21,
"remark": null,
"searchedDepartureDate": "2026-08-22",
"durationWeeks": 4,
"scrapedAt": "2026-08-22T09:14:03.187Z"
}

Evergreen sails partner-line vessels on its own loops, so vesselVoyage naming another carrier (as above) is expected, not an error, the service loop code is Evergreen's.

Writing a route

routes entries read "Origin > Destination":

You writeActor resolves to
"Shanghai > Rotterdam"oriLocation=CNSHG, desLocation=NLRDM
"Kaohsiung > Los Angeles"oriLocation=TWKSG, desLocation=USLAX
"CNSHG > NLRDM"Used directly, any 5-character token skips the name lookup

Evergreen's location codes are its own, not UN/LOCODEs: Kaohsiung is TWKSG, not TWKHH; Rotterdam is NLRDM, not NLRTM. A name that Evergreen's own location search can't match (a typo, or a place it doesn't book) is recorded in RUN_SUMMARY.failures with stage: "resolve-location", and the run continues with whatever routes did resolve.

API example

curl -X POST "https://api.apify.com/v2/acts/arman-bd~evergreen-sailing-schedules-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"routes": ["Shanghai > Rotterdam"],
"durationWeeks": 4
}'

JavaScript example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('arman-bd/evergreen-sailing-schedules-scraper').call({
routes: ['Shanghai > Rotterdam', 'Hamburg > New York'],
durationWeeks: 6,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const s of items) {
console.log(`${s.routeRequested} · ${s.service} · ${s.vesselVoyage} · ETD ${s.departureDate} → ETA ${s.arrivalDate} (${s.transitDays}d)`);
}

Notes

  • Evergreen does not paginate this endpoint: durationWeeks is the only window control, and every sailing in that window comes back in one page. maxSailingsPerRoute bounds what's kept and charged for on a busy lane or a wide window.
  • A route with no sailings in the window (a self-loop, or a lane Evergreen doesn't run) comes back as zero records for that route, not an error. Only a route that fails to resolve or fetch lands in RUN_SUMMARY.failures.
  • Dates and times are kept exactly as Evergreen displays them (AUG-22-2026, AUG-18-2026 17:00), not converted to ISO, since the site's own format is what a booking desk expects to match against.
  • vgmHardCopyCutOff and vgmEdiCutOff are null on a sailing where Evergreen has not published that cut-off yet, which is common further out in the window.
  • The same lane listed twice, in any case, is charged once.
  • Requests are spaced out between routes and between location look-ups, so a run with several routes takes some seconds even though each route itself is a single request.

FAQ

Do I need an Evergreen or ShipmentLink account? No. You supply no credentials.

Can I use a UN/LOCODE? No, Evergreen's internal codes are its own scheme and differ from UN/LOCODEs for some ports (Rotterdam, Kaohsiung, and others). Write the port name instead and let the Actor resolve it, or pass Evergreen's own code if you already have it.

How far ahead can I search? durationWeeks goes up to 12 from departureDate. For a date further in the future than that, set departureDate closer to it and run again.

Does it fetch the leg-by-leg routing detail (transshipment ports)? Not the full per-leg breakdown, routingDetailSeq is the ID Evergreen uses for that sub-page, so you can reference or fetch it yourself if you need the intermediate calls.

What if a port I search for has multiple matches (e.g. several towns named "Hamburg")? The Actor uses Evergreen's own best/first match for the name you gave. If that's the wrong one, use a more specific name (add the state or country) or pass Evergreen's 5-character code directly.

Can I plug it into something else? Yes. Apify API, the client libraries, webhooks, scheduled runs, dataset exports to JSON, CSV or Excel, or MCP. The output is structured JSON.