FreightWaves News Scraper — Logistics & Trucking News avatar

FreightWaves News Scraper — Logistics & Trucking News

Pricing

from $4.31 / 1,000 article returneds

Go to Apify Store
FreightWaves News Scraper — Logistics & Trucking News

FreightWaves News Scraper — Logistics & Trucking News

Scrape FreightWaves news into JSON: headline, author, dates, section, tags, and full article text for freight and logistics news monitoring. $5.39 per 1,000.

Pricing

from $4.31 / 1,000 article returneds

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

6 days ago

Last modified

Security

Limited permissions

Share

FreightWaves News Scraper turns public FreightWaves news pages into structured article records: headline, summary (dek), author, publish and update times, section, tags, image, and the full visible article text. It is built for freight brokers, carriers, 3PLs, shippers, analysts, and AI pipelines that monitor logistics and trucking news, and costs USD 5.39 per 1,000 articles on the Apify FREE tier (USD 4.31 per 1,000 on GOLD and above).

Point it at the FreightWaves News feed, a category or tag page, or a single article URL. It follows listing pages, opens each story, and returns one clean JSON record per article through the Apify API, MCP, or a dataset export (JSON, CSV, Excel).

What does the FreightWaves News Scraper return?

Each article is one record with these fields. Values the page does not expose are null.

FieldWhat it contains
articleUrl, canonicalUrlPublic FreightWaves article URL and the canonical URL it declares
articleIdStable ID derived from the canonical URL, for deduplication across runs
titleHeadline
dekShort summary shown under the headline
authorByline, for example Noi Mahoney
publishedAt, updatedAtPublish and last-update times in ISO 8601
sectionFreightWaves section, for example American Shipper or Borderlands: Mexico
tagsTopic labels, for example Trucking, Maritime, Container Shipping
imageUrlLead image
bodyFull visible article text (set includeArticleBody: false to skip it)
sourceUrlThe listing or input URL where the article was found
scrapedAt, warningsCollection time and any extraction notes
recordTypearticle for stories

The last record of every run has recordType: "summary" with page and article counts and warnings. It is not billed, and the same summary is saved as RUN_SUMMARY in the key-value store. Filter on recordType = "article" when you load the data.

In the 2026-10-26 default run, all 20 articles had author, dates, section, tags, image, and body text, with bodies of 2,088 to 8,547 characters.

How do I scrape FreightWaves news by category, tag, or article URL?

Add up to 10 FreightWaves URLs to startUrls. Each one can be:

  • the News feed (default): https://www.freightwaves.com/news/category/news;
  • a category, for example https://www.freightwaves.com/news/category/news/international/borderlands-mexico;
  • a tag page, in the form https://www.freightwaves.com/news/tag/<tag>;
  • a single story, for example https://www.freightwaves.com/news/truckload-contract-rate-increases-riding-steady-above-10.
{
"startUrls": [
{ "url": "https://www.freightwaves.com/news/category/news" },
{ "url": "https://www.freightwaves.com/news/category/logistics-supply-chains" }
],
"maxResults": 50,
"maxPages": 3,
"includeArticleBody": true,
"requestDelayMs": 750
}

maxResults (1–100, default 20) caps articles across all URLs. maxPages (1–10, default 3) caps how many listing pages are followed per URL. requestDelayMs (250–5,000 ms, default 750) paces requests. URLs from other sites are rejected before any article is billed.

Call it from code

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/freightwaves-news-scraper').call(
{ startUrls: [{ url: 'https://www.freightwaves.com/news/category/news' }], maxResults: 25 },
{ memory: 1024 },
);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const articles = items.filter((i) => i.recordType === 'article');
console.log(articles.map((a) => `${a.publishedAt} ${a.section}: ${a.title}`));
from apify_client import ApifyClient
client = ApifyClient("MY_APIFY_TOKEN")
run = client.actor("muhammadafzal/freightwaves-news-scraper").call(
run_input={"maxResults": 25, "includeArticleBody": False},
memory_mbytes=1024,
)
articles = [i for i in client.dataset(run.default_dataset_id).iterate_items() if i["recordType"] == "article"]

Can I monitor freight and logistics news on a schedule?

Yes. Save an input with the categories you follow, add an Apify schedule (for example every morning), and send each finished dataset to a webhook, Slack, Google Sheets, or your database. Use articleId to skip stories you already stored.

Use it from an AI assistant

FreightWaves News Scraper works from Claude, ChatGPT, Cursor, or any MCP client through Apify's MCP server. Add https://mcp.apify.com/?tools=muhammadafzal/freightwaves-news-scraper as a server and ask in plain language, for example: "Get the 20 latest FreightWaves news stories and summarize what they say about truckload rates and cross-border trade." The assistant sees the input fields and the price per article before it runs the tool.

What does the output look like?

Two article records from the default run on 2026-10-26, with body shortened:

[
{
"recordType": "article",
"articleUrl": "https://www.freightwaves.com/news/truckload-contract-rate-increases-riding-steady-above-10",
"canonicalUrl": "https://www.freightwaves.com/news/truckload-contract-rate-increases-riding-steady-above-10",
"articleId": "14c86d7aa4a4530d",
"title": "Truckload contract rate increases riding steady above 10%",
"dek": "The new index from SONAR shows that carriers have been trying to get rate increases since before the market turned...",
"author": "Zach Strickland, FW Market Expert & Market Analyst",
"publishedAt": "2026-10-25T00:30:00.000Z",
"updatedAt": "2026-10-25T00:30:00.000Z",
"section": "Chart of the Week",
"imageUrl": "https://www.freightwaves.com/wp-content/uploads/2026/10/23/FW_GAL_T7-409.jpg",
"tags": ["Chart of the Week"],
"body": "Chart of the Week: Contract Rate Change Direction Index – USA SONAR: CRCD.USA Shippers who have reset truckload contracts...",
"sourceUrl": "https://www.freightwaves.com/news/category/news",
"scrapedAt": "2026-10-26T07:57:25.211Z",
"warnings": [],
"summary": null
},
{
"recordType": "article",
"articleUrl": "https://www.freightwaves.com/news/borderlands-mexico-avocado-imports-generate-641m-for-us-trucking-warehousing",
"title": "Borderlands Mexico: Avocado imports generate $641M for US trucking, warehousing",
"author": "Noi Mahoney",
"publishedAt": "2026-10-25T11:00:00.000Z",
"section": "Borderlands: Mexico",
"tags": ["Borderlands: Mexico", "News", "Top Stories", "Trucking"],
"body": "Borderlands Mexico is a weekly rundown of developments in the world of United States-Mexico cross-border trucking and trade..."
}
]

Pricing: how much do 1,000 FreightWaves articles cost?

You pay per article returned plus a start fee. The summary record is free, and platform usage is included in these prices.

EventFREEBRONZESILVERGOLDPLATINUMDIAMOND
Article returned (each article)$0.005391$0.005256$0.005121$0.004312$0.004312$0.004312
Actor start, per started GB of allocated memory$0.006251$0.006094$0.005938$0.005$0.005$0.005

The Actor's default memory is 512 MB, so a default run pays one start event (any memory up to 1 GB also pays one). An article is charged only after its record is saved. Worked totals:

  • The default 20 articles at 512 MB on FREE: $0.006251 + 20 × $0.005391 = $0.1141.
  • 100 articles at 1 GB on GOLD: $0.005 + 100 × $0.004312 = $0.4362.

Set maxResults and Apify's maximum total charge per run to bound spend.

When should I use it, and when not?

Use it when you need:

  • a daily feed of FreightWaves headlines and full text for a broker, carrier, or shipper team;
  • trucking, maritime, air cargo, and supply chain news for dashboards, alerts, or sentiment models;
  • article text for an AI summary, RAG index, or market newsletter.

Use something else when you need:

Limits and reliability

  • One run returns at most 100 articles. Run several inputs for more.
  • Requests run one at a time with a polite delay; the default 20-article run took about 24 seconds on 2026-10-26.
  • Temporary blocks or server errors are retried with a fresh session. If every request fails, the run fails with a clear message instead of returning an empty success.
  • If a story exposes metadata but no body text, the record is still returned with a warning.

FAQ

Is there a FreightWaves news API?

This Actor is a FreightWaves news API alternative: call it from apify-client, the Apify REST API, or MCP and get JSON article records without maintaining your own scraper.

Can I scrape a single FreightWaves article?

Yes. Put the article URL in startUrls and set maxResults to 1.

Does it scrape FreightWaves SONAR data?

No. SONAR dashboards and subscriber-only material are out of scope. The Actor reads public news pages only.

How do I get only new stories each day?

Schedule a daily run and keep the articleId values you have already stored; skip any record whose ID you have seen.

Why is there one extra record in my dataset?

It is the run summary (recordType: "summary"). It is not billed. Filter it out with recordType = "article".

Do I need a FreightWaves account or my own proxy?

No. The Actor reads public pages and handles data access itself.

Can an AI agent run it by itself?

Yes. Through Apify's MCP server an agent reads the input schema and the price per article, runs the Actor, and receives the dataset. Set includeArticleBody: false when the agent only needs headlines.

Compliance note

The Actor reads public pages only and never bypasses paywalls or logins. FreightWaves owns its articles: use the text for monitoring and analysis, link back when you quote, and do not republish full stories without permission.

Last verified: 2026-10-27