Skip to content
    ↑↓ to choose · Enter to open

    · 13 min read

    Container Shipping Rates Scraper: Up to 1,000 Free Results a Month

    By CrawlerBros Engineering Team

    You can get up to 1,000 results per month on Apify's free plan to fetch current container shipping rates and market data from the Freightos Baltic Exchange (FBX). This Actor provides standardized rate data for 12 major global trade routes across three container types, along with market indices and shipping lane data, all without needing login credentials. Freight rate records for "getFreightRates" and "searchRoutes" modes carry 16 fields, while "marketOverview" records have 8 fields. This is an effective tool for logistics professionals, supply chain managers, and market analysts who need to track shipping costs and market trends, but it is not for those requiring real-time spot rates from individual freight forwarders.

    Try it: open Container Shipping Rates Scraper on Apify, sign in on the free plan and run the prefilled example.

    Can you try Container Shipping Rates Scraper before paying?

    Yes. Apify's free plan includes $5.00 of prepaid usage every month and asks for no credit card. At $0.005 per result, that covers up to 1,000 results of Container Shipping Rates Scraper a month, before run-start charges and platform usage.

    The example request further down caps maxItems at 50, so a first run returns at most 50 results and costs at most $0.25 in result charges. That is enough to see the real shape of the data before deciding anything.

    Container Shipping Rates Scraper was last updated on 2026-06-07. It is one of 1,724 Actors CrawlerBros publishes on Apify, which together have 700,154 lifetime public runs and an average rating of 4.63 out of 5 across 416 reviews.

    What does it cost to run Container Shipping Rates Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    The primary factor influencing your bill is the number of results returned, which is controlled by the "maxItems" input. Each result costs $0.005, which amounts to $5.00 for every 1,000 results on the free plan. To efficiently determine if the Actor meets your needs, begin with the example input.

    How do you run Container Shipping Rates Scraper from the API?

    The schema marks 1 of its 5 controls as required: mode. Nothing in the payload below is illustrative. Those are the schema's prefilled defaults for Container Shipping Rates Scraper, so the request works once your token is in place.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~container-shipping-rates-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"mode":"getFreightRates","originPort":"Shanghai","destinationPort":"Rotterdam","containerType":"all","maxItems":50}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "mode": "getFreightRates",
      "originPort": "Shanghai",
      "destinationPort": "Rotterdam",
      "containerType": "all",
      "maxItems": 50
    }
    
    run = client.actor("crawlerbros~container-shipping-rates-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "mode": "getFreightRates",
      "originPort": "Shanghai",
      "destinationPort": "Rotterdam",
      "containerType": "all",
      "maxItems": 50
    }
    
    const run = await client.actor('crawlerbros~container-shipping-rates-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    Because the call is synchronous, your client waits for the whole run. Keep it for exploration. For scheduled work, start the run without waiting and collect the dataset afterwards, so network trouble costs you a retry rather than the results.

    Which Container Shipping Rates Scraper inputs matter, and which can you skip?

    The Actor provides 5 controls, with "mode" being the only required input. For initial runs, focus on setting the "mode" to "getFreightRates" to see current rates for major routes, or "searchRoutes" for specific lanes. Consider leaving "maxItems" at its default for initial testing. The "containerType" can remain at "all" unless you need data for a specific size.

    • mode (string): What to fetch. Default: "getFreightRates".
    • originPort (string): Origin port name or code (e.g. Shanghai, CNSHA, Rotterdam, DEHAM, New York, USNYC).
    • destinationPort (string): Destination port name or code (e.g. Rotterdam, DEHAM, Los Angeles, USLAX).
    • containerType (string): Container type to filter by. Default: "all".
    • maxItems (integer): Maximum number of rate records to return. Default: 50.

    Fixed-choice controls: mode accepts getFreightRates (Get current freight rates by route), searchRoutes (Search specific shipping routes), marketOverview (global index summary); containerType accepts 20GP (20ft Standard (20GP)), 40GP (40ft Standard (40GP)), 40HC (40ft High Cube (40HC)), all (All types).

    What does Container Shipping Rates Scraper return?

    The returned records are suitable for tracking historical rate trends, comparing costs across trade lanes, and understanding overall market conditions. The data conspicuously does not include individual freight forwarder quotes, real-time spot rates, or detailed information beyond the aggregated FBX index values. This means the output is best for strategic analysis rather than operational booking decisions.

    Freight Rate Records (getFreightRates / searchRoutes)

    • routeCode: String - FBX route code (e.g. FBX01)
    • route: String - Route description (e.g. Shanghai → Los Angeles)
    • originPort: String - Origin port name
    • originPortCode: String - Origin port UNLOCODE
    • destinationPort: String - Destination port name
    • destinationPortCode: String - Destination port UNLOCODE
    • tradeRoute: String - Trade lane name (e.g. Trans-Pacific Eastbound)
    • region: String - Geographic corridor
    • containerType: String - Container type: 20GP, 40GP, or 40HC
    • rateUsd: Integer - Rate in USD per container
    • currency: String - Always USD
    • rateUnit: String - Always per container
    • publishedDate: String - Date of rate publication (YYYY-MM-DD)
    • sourceUrl: String - Source URL
    • dataSource: String - Always Freightos Baltic Exchange (FBX)
    • scrapedAt: String - ISO 8601 timestamp when scraped

    Market Overview Records (marketOverview)

    • corridor: String - Trade corridor name
    • routeCodes: String - FBX route codes covered
    • compositeIndexUsd: Integer - Composite index value (USD/40GP)
    • currency: String - Always USD
    • unit: String - Rate unit
    • trend: String - Market trend indicator
    • publishedDate: String - Date of data
    • sourceUrl: String - Source URL

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open Container Shipping Rates Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Set the "mode" to "getFreightRates" to fetch rates for major trade routes, then check the output for "routeCode" and "rateUsd" to ensure data is returned as expected.
    2. If you need to narrow down rates, change "mode" to "searchRoutes" and specify an "originPort" and/or "destinationPort", verifying that the results match your chosen ports.
    3. To get a high-level overview, switch the "mode" to "marketOverview" and confirm that the "compositeIndexUsd" and "trend" fields provide the expected summary data.
    4. Experiment with the "containerType" control, setting it to specific values like "20GP" or "40HC", and observe how the "rateUsd" changes in the output.
    5. Adjust the "maxItems" to a smaller number, such as 10 or 20, to limit the dataset size during initial testing and quickly inspect sample records.
    6. Before scheduling, run the Actor with your final desired settings for "mode", "originPort", "destinationPort", "containerType", and "maxItems" to confirm the output is precisely what you need.

    How do you apply it? Three worked playbooks

    These are Container Shipping Rates Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Monitor supply chain costs

    Outcome: Monitor shipping costs for international supply chains

    Configure: Set "mode" to "getFreightRates", "containerType" to "all", and "maxItems" to 200. Leave "originPort" and "destinationPort" blank.

    Working method: Begin by running the Actor with "mode" set to "getFreightRates" to get a broad overview of rates across all major trade lanes. Review the "rateUsd" and "publishedDate" for different "route" entries. Then, schedule regular runs to track changes over time for relevant routes, comparing current rates against historical data to identify cost fluctuations.

    Deliverable: A dataset of current and historical shipping rates for 12 major global trade routes, broken down by container type and publication date.

    Stop condition: No new rate data is recorded for expected routes over several scheduled runs, or "rateUsd" values are consistently zero or null.

    Use case 2: Research trade lane pricing

    Outcome: Research trade lane pricing for logistics planning

    Configure: Set "mode" to "searchRoutes", specify an "originPort" (e.g., "Shanghai") and a "destinationPort" (e.g., "Rotterdam"), and set "containerType" to "all".

    Working method: Start by specifying a single "originPort" and "destinationPort" to understand the pricing for a specific trade lane. Examine the "rateUsd" for each "containerType". Gradually expand your research by running the Actor for additional origin/destination pairs, comparing rates across different routes to inform logistics decisions.

    Deliverable: A report detailing freight rates for specific shipping routes, including breakdowns by container type and origin/destination port codes, suitable for planning.

    Stop condition: The output dataset for specified routes is empty, or the "rateUsd" for common container types is unexpectedly high or low compared to market expectations.

    Use case 3: Build freight rate alerts

    Outcome: Build freight rate alert or tracking tools

    Configure: Set "mode" to "getFreightRates", "containerType" to a specific type (e.g., "40GP"), and "maxItems" to 200.

    Working method: Initially, run the Actor to establish a baseline of current rates for your key routes and container types. Store this data. In subsequent runs, compare the newly fetched "rateUsd" with the baseline. If a significant increase or decrease (e.g., more than 10%) is detected for a specific "route", trigger an alert.

    Deliverable: An automated alert system that notifies users of significant changes in freight rates for monitored trade routes and container types.

    Stop condition: Rate alerts are frequently triggered by insignificant changes, indicating the threshold needs adjustment, or no alerts are triggered despite clear market shifts.

    What breaks, and how do you design around it?

    If you encounter limitations on the number of results, increase the "maxItems" control up to its maximum of 200. If the data is not specific enough for your needs, you might need to combine this data with other sources.

    When should you not use Container Shipping Rates Scraper?

    This Actor is not suitable if your primary goal is to obtain live, granular spot rates directly from individual freight forwarders for immediate booking decisions. The rates provided are aggregated index values, not real-time quotes. For such specific, actionable pricing, you would be better served by contacting freight forwarders directly or using a marketplace that provides live bids, such as the uShip Freight Marketplace Scraper or SeaRates Ocean Freight Scraper. Additionally, if you need detailed information on container availability or sales, this Actor will not provide it; consider using the Boxhub Shipping Container Scraper for that purpose. This Actor is also not for those requiring mortgage rate data, for which you would use the Zillow Mortgage Rates Scraper.

    What should you check before trusting the output?

    • Watch for missing "rateUsd" values in "getFreightRates" or "searchRoutes" outputs, which could indicate a problem with the specified route or container type.
    • Check that "originPortCode" and "destinationPortCode" are valid UNLOCODEs when using route-specific modes.
    • For "marketOverview" output, ensure that "compositeIndexUsd" is a non-null integer and that "trend" contains a descriptive string.
    • Verify that the "publishedDate" is consistently formatted as YYYY-MM-DD across all records and is recent enough for your analysis.
    • If filtering by "containerType" to a specific value, confirm that the "containerType" field in the output records matches your input.
    • Monitor the number of records returned; if it consistently falls far below your "maxItems" setting for expected routes, investigate potential issues with input parameters.

    None of this proves a record is correct. It gives a scheduled Container Shipping Rates Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    Does this Actor provide real-time spot rates?

    No, the Actor provides publicly available FBX index baseline values. These reflect aggregated market conditions rather than live, real-time spot rates from individual carriers or forwarders. For live spot rates, you would need to consult a freight forwarder directly or use a dedicated freight marketplace. The data is suitable for market analysis and trend tracking. Last updated 2026-06-07.

    What is the cost per 1,000 results for this Actor?

    On Apify's free plan, the cost is $5.00 per 1,000 results. Each individual result costs $0.005. This does not include platform usage costs, which are billed separately by Apify. Your free plan includes $5.00 of monthly usage, which covers up to 1,000 results before additional charges. Remember that a run-start fee is charged for every run initiated.

    What container types can I filter by?

    You can filter by three standard container types: 20ft Standard (20GP), 40ft Standard (40GP), and 40ft High Cube (40HC). The "containerType" control also has an "all" option. This allows flexibility in your data collection based on specific shipping needs.

    Does the Actor require any login credentials or API keys?

    No, the Actor does not require any login credentials, API keys, or accounts. It operates by scraping publicly available index data from the Freightos Baltic Exchange (FBX) website. This means you can use it immediately without any prior setup or authentication, making it convenient for quick data access.

    How can I get data for a specific shipping route?

    To get data for a specific shipping route, set the "mode" input to "searchRoutes". Then, specify the "originPort" and "destinationPort" using either the port name or UNLOCODE (e.g., "Shanghai" or "CNSHA"). You can also filter by "containerType" to narrow down your results further. This allows you to target particular trade lanes for analysis.

    Where to go next

    When you are ready to run it, open Container Shipping Rates Scraper on Apify; the free plan covers up to 1,000 results a month.

    Other Actors we maintain for related data:

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-29.

    • Actor last updated by its maintainers on 2026-06-07.

    • Run outcome figures cover the 30 day public window ending 2026-09-29.

    • Container Shipping Rates Scraper on Apify

    Featured actors

    Container Shipping Rates Scraper

    Scrape publicly available container shipping rates and freight market data from Freightos Baltic Exchange (fbx.freightos.com). Fetches freight route rates, market indices, and shipping lane data for major global trade routes without requiring login.

    Run on Apify ↗