Chrobinson APIchrobinson.com ↗
Search available freight loads, get real-time load board stats, and retrieve carrier services from C.H. Robinson via a single REST API.
What is the Chrobinson API?
This API exposes 6 endpoints covering C.H. Robinson's public load board, returning shipment details across origin, destination, equipment type, weight, and distance. The search_loads endpoint accepts origin city/state, pickup date range, and equipment type to return matching shipments and a total count, while get_load_board_stats surfaces live aggregate counts for dry van, reefer, and flatbed loads without any query parameters.
curl -X POST 'https://api.parse.bot/scraper/51f78174-cf11-4299-ae0c-0c59fd644885/search_loads' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"mode": "A",
"page_size": "20",
"origin_city": "Chicago",
"origin_state": "IL",
"origin_latitude": "41.8781",
"origin_longitude": "-87.6298"
}'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 chrobinson-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: C.H. Robinson load board — search loads, autocomplete, stats, catalog."""
from parse_apis.c.h._robinson_logistics_api import CHRobinson, EquipmentType, LocationNotFound
client = CHRobinson()
# Get current load board statistics (total loads, by equipment type).
stats = client.loadboards.stats()
print(f"Total loads: {stats.total_available_loads}, Dry Van: {stats.dry_van_loads}")
# Autocomplete a city to get coordinates for searching loads.
location = client.loadboards.autocomplete(query="Dallas", limit=3).first()
if location:
print(f"Found: {location.display_name} ({location.latitude}, {location.longitude})")
# Search Van loads originating near the resolved location.
for shipment in client.loadboards.search(
origin_city=location.city_name,
origin_state=location.state_province_code,
origin_latitude=location.latitude,
origin_longitude=location.longitude,
equipment_type=EquipmentType.VAN,
limit=3,
):
print(f"Load {shipment.external_shipment_id}: {shipment.origin.city}, {shipment.origin.state_code} → "
f"{shipment.destination.city}, {shipment.destination.state_code} | "
f"{shipment.distance_miles} mi, {shipment.weight_pounds} lbs")
# Browse the freight services catalog.
for svc in client.catalogs.freight_services(limit=5):
print(f"Service: {svc.name}")
# Retrieve carrier programs and technology info.
try:
carrier = client.catalogs.carrier_services()
print(f"Carrier tech: {carrier.technology}, Programs: {carrier.programs}")
except LocationNotFound as exc:
print(f"Not found: {exc}")
# List industry verticals served.
for ind in client.catalogs.industries(limit=3):
print(f"Industry: {ind.name} ({ind.url})")
print("Exercised: loadboards.stats / autocomplete / search, catalogs.freight_services / carrier_services / industries")
Search for available freight loads on the public load board. Returns a list of shipments with origin, destination, distance, weight, and equipment details. Requires origin coordinates and city/state. Optionally filter by destination, equipment type, and pickup dates. Destination coordinates must be provided in the request body only (not query params) to avoid upstream 500 errors.
| Param | Type | Description |
|---|---|---|
| mode | string | Shipping mode. A for All. |
| page_size | integer | Number of results per page |
| pickup_end | string | Pickup date range end in YYYY-MM-DD format. Defaults to tomorrow (UTC). |
| origin_cityrequired | string | Origin city name |
| origin_staterequired | string | Origin US state code (two-letter, e.g. IL) |
| pickup_start | string | Pickup date range start in YYYY-MM-DD format. Defaults to today (UTC). |
| origin_radius | integer | Origin search radius in miles |
| equipment_type | string | Trailer equipment type filter: Van, Flatbed, or Reefer |
| origin_latituderequired | number | Origin latitude |
| destination_city | string | Destination city name |
| origin_longituderequired | number | Origin longitude |
| destination_state | string | Destination US state code (two-letter, e.g. TX) |
| destination_radius | integer | Destination search radius in miles |
| destination_latitude | number | Destination latitude |
| destination_longitude | number | Destination longitude |
{
"type": "object",
"fields": {
"shipments": "array of shipment objects with origin, destination, distance, weight, equipment, modes, stops, and activityDate",
"totalShipmentCount": "integer total number of matching shipments"
},
"sample": {
"data": {
"shipments": [
{
"modes": [
"V"
],
"stops": [
{
"stopType": "1",
"warehouseInformation": {
"city": "Salt Lake City",
"openTime": "06:00:00",
"closeTime": "15:00:00",
"stateCode": "UT",
"countryCode": "US"
},
"isScheduledOpenTimeSpecified": true,
"calculatedArriveByEndDateTime": "2026-06-15T15:00:00",
"isScheduledCloseTimeSpecified": true,
"calculatedArriveByStartDateTime": "2026-06-15T06:00:00"
}
],
"origin": {
"city": "Carol Stream",
"stateCode": "IL",
"coordinate": {
"sOriginDeadHead": ""
},
"countryCode": "US"
},
"weight": {
"pounds": 44000
},
"distance": {
"miles": 1370
},
"equipment": {
"width": {
"standard": 0
},
"height": {
"standard": 0
},
"length": {
"standard": 53
}
},
"destination": {
"city": "Salt Lake City",
"stateCode": "UT",
"countryCode": "US"
},
"activityDate": "2026-06-12T00:00:00",
"externalShipmentId": "dbe0081d-fca2-3d6d-2071-6ea5551c820d"
}
],
"totalShipmentCount": 556
},
"status": "success"
}
}About the Chrobinson API
Load Search and Board Statistics
The search_loads endpoint accepts origin_city, origin_state, and optional parameters including equipment_type (Van, Flatbed, Reefer), origin_radius, pickup_start/pickup_end in YYYY-MM-DD format, and a page_size for pagination. It returns an array of shipment objects — each carrying origin, destination, distance, weight, equipment details, modes, stop count, and activityDate — alongside a totalShipmentCount integer for the full result set. Note that destination coordinates must be passed in the request body, not as query parameters, to avoid server errors.
get_load_board_stats requires no inputs and returns four comma-formatted string fields: total_available_loads, dry_van_loads, reefer_loads, and flatbed_loads. These reflect current aggregate counts from the public load board.
Location Autocomplete
The get_location_autocomplete endpoint accepts a query string (city name or postal code) and returns an array of location objects. Each object includes displayName, coordinate (latitude and longitude), cityName, stateProvinceCode, countryCode, and country. This is useful for building origin/destination inputs before calling search_loads.
Services and Industry Catalog
Three catalog endpoints return static data about C.H. Robinson's offerings. get_freight_services returns a services array with each service's name and URL path. get_carrier_services returns a structured carrier_services object segmented into financial_services, programs, technology, and onboarding arrays. get_industries returns an industries array listing the vertical markets C.H. Robinson serves, each with a name and URL path.
The Chrobinson API is a managed, monitored endpoint for chrobinson.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when chrobinson.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 chrobinson.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 available flatbed load counts in real time using
get_load_board_statsfor carrier dispatch dashboards. - Filter freight shipments by equipment type and pickup date range using
search_loadsfor load matching tools. - Build origin/destination autocomplete inputs using
get_location_autocompletewith city or ZIP query strings. - Map load density by origin state and equipment type by paginating through
search_loadsresults. - Aggregate carrier financial programs and technology offerings from
get_carrier_servicesfor competitive research. - Enumerate industry verticals served by a major 3PL using
get_industriesfor market segmentation analysis. - Track changes in total available loads over time by polling
get_load_board_statson a schedule.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does C.H. Robinson have an official developer API?+
What does the `search_loads` endpoint return for each shipment?+
shipments array includes origin and destination details, distance, weight, equipment type, available shipping modes, stop information, and an activityDate. The totalShipmentCount field gives the full count of matching loads regardless of page_size.Does the API return individual load pricing or rate quotes?+
search_loads endpoint returns shipment metadata including weight, equipment, and routing — but no rate or price fields are included in the response. You can fork this API on Parse and revise it to add a rate-retrieval endpoint if that data becomes accessible.Can I search loads by destination city rather than just origin?+
search_loads endpoint is structured around origin parameters (origin_city, origin_state, origin_radius). Destination filtering isn't exposed as a named input parameter. You can fork the API on Parse and revise it to add destination-based filtering if that capability is needed.How should I handle the coordinate requirement for destination in `search_loads`?+
get_location_autocomplete first to resolve a destination city to its latitude/longitude, then include those coordinates in the body of your search_loads request.