FreightWaves APIforum.freightwaves.com ↗
Access FreightWaves Forum discussions via API. Retrieve freight, logistics, and supply chain topics, post content, author info, and engagement metrics.
What is the FreightWaves API?
The FreightWaves Forum API provides access to public discussions from forum.freightwaves.com across 2 endpoints. Use get_posts to retrieve the latest posts site-wide or browse topic listings filtered by category slug, and use get_topic_posts to pull the full post stream for any individual topic by its numeric ID — including HTML content, author details, reply counts, and like counts.
curl -X GET 'https://api.parse.bot/scraper/5aa4e107-ce57-492d-84cb-981a525633df/get_posts?category=general' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace forum-freightwaves-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: FreightWaves Forum SDK — list topics, drill into posts."""
from parse_apis.forum_freightwaves_com_api import FreightWavesForum, InputNotFound
client = FreightWavesForum()
# List recent topics in the general category, capped at 5.
for topic in client.topics.list(category="general", limit=5):
print(topic.title, f"({topic.posts_count} posts, {topic.views} views)")
# Drill into the first topic's posts via .first().
topic = client.topics.list(category="general", limit=1).first()
if topic is not None:
# Navigate from Topic to its child posts.
for post in topic.posts.list(limit=3):
print(post.username, post.cooked[:80])
# Point-construct a topic by known ID and fetch its posts.
try:
specific = client.topic(id=5)
first_post = specific.posts.list(limit=1).first()
if first_post is not None:
print(first_post.username, first_post.score)
except InputNotFound:
print("Topic not found")
print("exercised: topics.list / topic.posts.list / InputNotFound")
Get posts from the FreightWaves Forum. Without a category filter, returns the latest posts across all categories with full post content. With a category filter, returns topic listings for that category with pagination support. Each page returns up to 30 topics.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for category topic listings (0-indexed). Only applies when category is specified. |
| category | string | Category slug to filter topics (e.g. 'general', 'news-discussion', 'fraud', 'modern-shipper', 'american-shipper', 'postalmag', 'what-the-truck', 'site-feedback'). When omitted, returns latest posts across all categories. |
{
"type": "object",
"fields": {
"page": "current page number (present with category filter)",
"posts": "array of post objects (returned when no category filter); each contains id, topic_id, topic_title, topic_slug, post_number, username, name, created_at, updated_at, excerpt, cooked (HTML content), reply_count, like_count, reads, score, category_id",
"topics": "array of topic objects (returned when category is specified); each contains id, title, slug, posts_count, reply_count, views, like_count, created_at, last_posted_at, excerpt, category_id, tags, pinned, closed, archived, last_poster_username",
"has_more": "boolean indicating more pages available (present with category filter)"
},
"sample": {
"data": {
"page": 0,
"topics": [
{
"id": 5,
"slug": "welcome-to-freightwaves-forum",
"tags": [],
"title": "Welcome to FreightWaves Forum! :wave:",
"views": 668,
"closed": false,
"pinned": true,
"excerpt": "FreightWaves Forum\nWelcome to the FreightWaves Forum...",
"archived": false,
"created_at": "2025-02-19T15:25:54.281Z",
"like_count": 4,
"category_id": 4,
"posts_count": 7,
"reply_count": 0,
"last_posted_at": "2026-07-13T15:12:38.901Z",
"last_poster_username": "DBw0y"
}
],
"has_more": true
},
"status": "success"
}
}About the FreightWaves API
What the API Returns
The FreightWaves Forum is a Discourse-based community where freight brokers, carriers, shippers, and supply chain analysts discuss industry news, fraud alerts, regulatory changes, and operational topics. The API surfaces this public content in structured JSON, covering two main interaction patterns: browsing posts or topics at a category level, and drilling into a specific topic's full conversation thread.
get_posts Endpoint
Without a category parameter, get_posts returns an array of the latest posts across all forum categories. Each post object includes id, topic_id, topic_title, topic_slug, post_number, and username. When a category slug is provided — such as general, news-discussion, or fraud — the endpoint returns topic listings instead, with fields like title, slug, posts_count, reply_count, views, and like_count. Category topic listings are paginated (up to 30 topics per page) using the 0-indexed page parameter, and the has_more boolean signals whether additional pages exist.
get_topic_posts Endpoint
get_topic_posts accepts a topic_id (obtainable from get_posts results) and returns a topic metadata object alongside a posts array covering every reply in the thread. Post objects include post_number, username, name, created_at, updated_at, cooked (the rendered HTML body of the post), reply_count, and engagement metrics. The topic object exposes title, slug, views, like_count, category_id, tags, closed, and archival status — useful for understanding the age and activity level of a thread before processing its contents.
The FreightWaves API is a managed, monitored endpoint for forum.freightwaves.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when forum.freightwaves.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official forum.freightwaves.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor the
fraudcategory for new scam alerts and broker fraud reports usingget_postswith category filter - Track topic view counts and reply counts to identify trending freight and logistics discussions
- Extract
cookedHTML post content fromget_topic_poststo build a searchable archive of supply chain Q&A - Aggregate
usernameand engagement fields across topics to identify active community contributors - Pull
tagsandcategory_idfrom topic metadata to classify discussions by subject area - Paginate through
news-discussioncategory topics using thepageparameter to ingest recent industry news threads - Compare
created_atandupdated_attimestamps on posts to surface recently edited or revisited discussions
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does FreightWaves provide an official developer API for its forum?+
What does get_posts return differently when a category is specified versus when it is not?+
category parameter, the endpoint returns a posts array of individual post objects with fields like topic_title, post_number, and username. With a category slug set, it returns a topics array instead — each entry is a topic summary with posts_count, reply_count, views, and like_count, plus pagination via the page parameter and a has_more flag.Does the API expose private or members-only forum content?+
Can I search forum posts by keyword or filter by a specific user?+
Are user profile details like bio, trust level, or post history available?+
username and name, but detailed user profiles, trust levels, and historical post counts per user are not part of the current response schema. You can fork this API on Parse and revise it to add a user-profile endpoint targeting individual Discourse member pages.