Jbhunt APIjbhunt.com ↗
Access J.B. Hunt shipment tracking, LTL freight classes, location search, site content search, and company data via a single REST API.
What is the Jbhunt API?
The J.B. Hunt API exposes 6 endpoints covering shipment tracking, LTL freight reference data, and site-wide content search. The get_freight_classes endpoint returns the full array of standard LTL freight class codes used for quoting, while search_locations resolves city names or ZIP codes into validated origin/destination pairs with local time. Together these endpoints give logistics developers direct programmatic access to J.B. Hunt's core reference and operational data.
curl -X GET 'https://api.parse.bot/scraper/814fc4ff-8060-4f61-a74e-15dcfd633eff/search_site?page=1&query=intermodal' \ -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 jbhunt-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: J.B. Hunt SDK — site search, freight classes, locations, company info."""
from parse_apis.j.b._hunt_scraper_api import JBHunt, LocationNotFound
client = JBHunt()
# Search site content for intermodal shipping info
for result in client.searchresults.search(query="intermodal", limit=3):
print(result.title, result.link)
# List all available LTL freight classes
for fc in client.freightclasses.list(limit=5):
print(fc.name, fc.value)
# Search for shipping locations by city name
location = client.locations.search(query="Chicago", limit=1).first()
if location:
print(location.city_name, location.state_name, location.postal_codes)
# Get company overview (singleton resource)
overview = client.companyoverviews.get()
print(overview.name, overview.founded, overview.headquarters)
# Typed error handling for location search
try:
for loc in client.locations.search(query="Nonexistent", limit=3):
print(loc.city_name)
except LocationNotFound as exc:
print(f"Location not found: {exc.query}")
print("exercised: searchresults.search / freightclasses.list / locations.search / companyoverviews.get")
Full-text search across jbhunt.com content including services, company news, blog posts, and support pages. Returns paginated results with title, link, and description for each match. Paginates via integer page number; each page returns up to 20 results.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for paginated results. |
| queryrequired | string | Search query string (e.g. 'intermodal', 'LTL shipping', 'tracking'). |
{
"type": "object",
"fields": {
"label": "string describing the search performed",
"query": "the search query echoed back",
"results": "array of search result objects with title, link, and description",
"success": "boolean indicating if the search completed",
"pagination": "object with currentPage, totalPages, and totalMatches"
},
"sample": {
"data": {
"label": "Showing results for: \"intermodal\"",
"query": "intermodal",
"message": "",
"results": [
{
"link": "/shippers/intermodal",
"title": "Intermodal",
"description": "As the North America's largest intermodal company, J.B. Hunt helps provide cost-effective shipping options that grow your business while reducing waste."
}
],
"success": true,
"pagination": {
"totalPages": 16,
"currentPage": 1,
"totalMatches": 309
}
},
"status": "success"
}
}About the Jbhunt API
Site Search and Company Reference
The search_site endpoint accepts a query string and an optional page integer, returning paginated results where each item includes a title, link, and description. The pagination object exposes currentPage, totalPages, and totalMatches, so you can walk through all results for queries like 'intermodal' or 'LTL shipping'. The get_company_overview endpoint requires no parameters and returns fixed reference fields: name, ticker, founded, services (array), fleet_size, headquarters, network_coverage, and technology_platforms.
LTL Freight Classes and Location Lookup
get_freight_classes returns a classCodes array where each object has a name and a value string — the exact codes J.B. Hunt uses for LTL quoting. search_locations accepts a query param (city name or ZIP code) and returns cityName, stateName, countryName, localTime (ISO 8601), and a postalCodes array. This makes it straightforward to validate shipping origins and destinations before submitting a quote or routing request.
Shipment Tracking
Two tracking endpoints handle different shipment types: track_business_shipment targets B2B freight identified by order number or BOL, and track_home_delivery_shipment handles final-mile consumer deliveries. Both endpoints note a reCAPTCHA token requirement for production use. Response shapes for these endpoints are not fully documented in the current spec, so treat them as available but exploratory.
The Jbhunt API is a managed, monitored endpoint for jbhunt.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when jbhunt.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 jbhunt.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?+
- Populate a freight quoting form with valid LTL class codes from
get_freight_classes. - Validate shipping origin and destination inputs using
search_locationsbefore submitting a routing request. - Surface J.B. Hunt service pages or blog content in an internal logistics knowledge base via
search_site. - Display J.B. Hunt company facts — ticker, founding year, fleet size — on a carrier comparison dashboard using
get_company_overview. - Track B2B freight shipments by BOL or order number with
track_business_shipmentin a TMS integration. - Monitor final-mile home delivery status for customer-facing order tracking pages via
track_home_delivery_shipment. - Page through
search_siteresults programmatically to index J.B. Hunt's published service and news content.
| 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 J.B. Hunt offer an official public developer API?+
What does `search_locations` return beyond just a city name?+
search_locations returns cityName, stateName (two-letter abbreviation), countryName (e.g. USA), localTime in ISO 8601 format, and a postalCodes array listing all ZIP codes associated with the matched location. This lets you resolve an ambiguous input like 'Springfield' into specific state and postal code combinations.Does the API expose LTL rate quotes or just freight class reference data?+
get_freight_classes and validated location data via search_locations, both of which are inputs to a quote — but it does not return calculated rate quotes or pricing. You can fork this API on Parse and revise it to add an endpoint that retrieves quote results once origin, destination, and class are known.What are the limitations of the tracking endpoints?+
track_business_shipment and track_home_delivery_shipment note a reCAPTCHA token requirement for production use, and their full response shapes are not yet documented in the spec. The endpoints are available but the fields they return — such as status milestones, estimated delivery dates, or carrier events — are not currently enumerated. You can fork this API on Parse and revise it to capture and document the full tracking response structure.Can I search for J.B. Hunt job listings through this API?+
search_site endpoint can return job-related pages if J.B. Hunt's site indexes them in its general search, but there is no dedicated jobs endpoint returning structured fields like job title, location, or requisition ID. You can fork this API on Parse and revise it to add a targeted careers search endpoint with structured output.