Carrier’s official API

ABF Freight API: integration guide

ArcBest publishes a set of APIs for its ABF Freight LTL network: rate quotes with transit times, bill of lading and pickup requests, shipment tracking and document image retrieval. A separate JSON API handles truckload quoting and booking. They are aimed at shippers, 3PLs and TMS vendors who want ABF rating and shipment data inside their own software.

This guide covers ABF Freight’s own API (www.abfs.com). Credentials come from ABF Freight, not from FreightAPIs, and we are not affiliated with them.

Want one API key for carrier terminals, NMFC and ports instead? ABF Freight location API · FreightAPIs API docs →

Interface HTTP GET/POST with query parameters, XML response (LTL) · REST/JSON (Truckload)Endpoints 9Reviewed 2026-10-09Open in ChatGPT↗Open in Claude↗

At a glance

CarrierABF Freight (ArcBest)
TypeLTL carrier
SCACABFS
InterfaceHTTP GET/POST with query parameters, XML response (LTL), REST/JSON (Truckload)
AuthenticationAPI key as a query parameter (LTL); Bearer API key plus App ID header (Truckload)
CapabilitiesLTL rate quote and transit time, Bill of lading and pickup request, Shipment tracking, Documents and images (BOL, POD, invoice), Truckload quote and booking

Getting access

  • The API documentation lives inside the arcb.com customer toolset (Resources > APIs), so you need an arcb.com login to read it.
  • Your personal API key is shown on those documentation pages once you are signed in. It is passed as the ID parameter on the LTL calls.
  • TMS providers also need an App ID. ArcBest asks TMS vendors to request one by email at api@arcb.com.
  • The Truckload API requires an App ID header on every request; the docs say to email api@arcb.com if you do not have one.
  • The documentation does not mention pricing for API access or a formal approval workflow beyond the App ID request.

Authentication

API key as a query parameter (LTL); Bearer API key plus App ID header (Truckload).

  • LTL services (rate quote, BOL/pickup, tracking, document retrieval): send your arcb.com API key in the ID query parameter. TMS providers add their App ID in the APP_ID parameter.
  • Truckload API: send Authorization: Bearer YOUR_API_KEY and X-App-ID: YOUR_APP_ID on every request.
  • There is no token exchange or expiry step documented. The key is static and tied to your arcb.com account.
  • Because the LTL key travels in the URL, prefer POST from your server and keep the key out of browser code and logs.

Environments

LTL XML services (production)https://www.abfs.com
Truckload JSON API (production)https://api.arcb.com

Endpoints

LTL rate quote and transit time

Returns a price for an LTL shipment plus the advertised transit days and due date, the origin and destination service centers, and any guaranteed delivery options. Supports up to 15 commodity lines and a long list of accessorial flags.

GET/xml/aquotexml.aspRequest an LTL rate quote (GET or POST); the response is XML.
Key inputsIDShipCity / ShipState / ShipZip / ShipCountryConsCity / ConsState / ConsZip / ConsCountryShipAff / ConsAff / TPBAff (which party you are)Wgt1…Wgt15, Class1…Class15FrtLng1 / FrtWdth1 / FrtHght1, FrtLWHType, UnitNo1, UnitType1ShipMonth / ShipDay / ShipYearAcc_* accessorial flags (e.g. Acc_RDEL, Acc_GRD_DEL, Acc_LAD + LADType)
Key outputsQUOTEIDCHARGE, DISCOUNTPERCENTAGEADVERTISEDTRANSIT, ADVERTISEDDUEDATEORIGTERMINFO / DESTTERMINFO (service center address, phone, TYPE: DIRECT, CONNECT or MIA)ITEMIZEDCHARGES (ITEM with TYPE, FOR, AMOUNT, RATE)GUARANTEEDOPTIONSSHIPMENTCUBE, NOTES

Bill of lading and pickup request

One call creates the bill of lading, shipping labels and PRO labels and books the pickup. It can auto-assign a PRO number, attach your quote ID, and carry hazmat details per commodity line.

GET/xml/bolpkupxml.aspCreate a BOL and submit a pickup request (GET or POST); the response is XML.
Key inputsID, TestRequesterType (1 shipper, 2 consignee, 3 third party), PayTerms (P or C)RequesterName / RequesterEmail / RequesterPhoneShip* and Cons* contact and address fieldsHN1/HT1 (handling units), WT1, CL1, Desc1, HZ1 and HZ* hazmat fieldsShipDate or PickupDate (MM/DD/YYYY), AT / OT / CT (HH:MM)ProAutoAssign or Pronumber, QuoteID, Bol, PO1…PO10, CRN1…CRN10FileFormat, LabelFormat, LabelNum, ProLabelNum
Key outputsCONFIRMATION (pickup confirmation number)PRONUMBERBOLNUMBERDOCUMENT, LABELDOCUMENT, PROLABELDOCUMENT (paths to the generated files)

Shipment tracking

Looks up shipments by PRO, BOL, PO, customer reference or pickup confirmation number. It returns pickup and delivery dates, due and expected delivery dates, appointment details, status codes, OS&D exceptions and delivery signature names.

GET/xml/tracexml.aspTrack one reference number (GET or POST); the response is XML.
Key inputsIDRefNumRefType (A PRO, B BOL, P PO, C customer reference, K pickup confirmation)
Key outputsPRONUMBER, PICKUP, DELIVERYDATE, DUEDATE, EXPECTEDDELIVERYDATESHORTSTATUS2, LONGSTATUSOSDEXCEPTION, LATESTTTECODEDELIVSIGFIRSTNAME / DELIVSIGLASTNAMESTAORIGIN / STADESTINATION (3-digit station numbers)BOLNUMBERS, PONUMBERS, CARRIERPROS

Documents and images (BOL, POD, invoice)

Returns links to scanned document pages for a shipment. Document types include BOL, delivery receipt / POD, invoice, weight and inspection certificates, customs papers and more. This is also the only documented way to get ABF invoices; there is no structured invoice API.

GET/xml/docretxml.aspList document image pages for a shipment (GET or POST); the response is XML.
Key inputsIDRefNumRefType (A PRO, B BOL, P PO, C customer reference)DocType (ALL, BOL, DR, INV, PODI, WSL, CUS, CBL and others)ImageType (L low-res JPEG default, H high-res JPEG, T TIFF)
Key outputsDOCUMENTS > DOCUMENT > TYPEPAGES > PAGE (one image path per page)

Truckload quote and booking

A JSON API for full-truckload pricing. You request a quote, get back price options for the chosen equipment, optionally pre-validate, then book one option. ArcBest assigns a PRO number once the load is dispatched to a carrier.

POST/quotes/truckloadRequest a truckload quote; the result holds a quoteId and a list of priceOptions.
GET/quotes/truckload/{quoteId}Fetch an existing quote by its ID.
POST/quotes/truckload/manual/{quoteId}Send a quote that needs manual review to an ArcBest quote analyst.
GET/quotes/truckload/booking-requirements?quoteId={quoteId}&optionId={optionId}Pre-check whether a price option can be booked; problems come back in errors and warnings.
POST/quotes/truckload/bookingBook one price option from a completed quote.
Key inputsequipment (EVN dry van, RVN reefer, F48 flatbed, I53 intermodal)commodities[].weight { value, unit: "LBS" }, commodities[].descriptionshipper / consignee / thirdParty { account, companyName, primaryContact, location }paymentTerms (P or C)timeFrame { pickupDate, pickupTime, deliveryDate, deliveryTime }options[] (AIRRIDE, TEAM, FOODGRADE, LOADBARS, STRAPS, TARPS, TEMPERATR)Booking: quoteId, optionId, requester
Key outputsquoteId, status (C or I), expired, inManualQueuepriceOptions[] { id, totalPrice, fuelSurcharge, transitDays, lineItems, booked }milage { miles, milerType }pronumber (after dispatch)errors, warnings, messages

Example request

LTL rate quote: one pallet, Dallas TX to Tulsa OKbash
curl -G 'https://www.abfs.com/xml/aquotexml.asp' \ --data-urlencode 'DL=2' \ --data-urlencode 'ID=YOUR_API_KEY' \ --data-urlencode 'ShipAff=Y' \ --data-urlencode 'ShipCity=DALLAS' \ --data-urlencode 'ShipState=TX' \ --data-urlencode 'ShipZip=75201' \ --data-urlencode 'ShipCountry=US' \ --data-urlencode 'ConsCity=TULSA' \ --data-urlencode 'ConsState=OK' \ --data-urlencode 'ConsZip=74104' \ --data-urlencode 'ConsCountry=US' \ --data-urlencode 'Wgt1=400' \ --data-urlencode 'Class1=50.0' \ --data-urlencode 'UnitNo1=1' \ --data-urlencode 'UnitType1=PLT' \ --data-urlencode 'FrtLng1=48' \ --data-urlencode 'FrtWdth1=40' \ --data-urlencode 'FrtHght1=48' \ --data-urlencode 'FrtLWHType=IN' \ --data-urlencode 'ShipMonth=10' \ --data-urlencode 'ShipDay=15' \ --data-urlencode 'ShipYear=2026'

DL=2 is copied from ArcBest's own example URLs; the docs do not define it. Check NUMERRORS in the XML response before reading QUOTEID and CHARGE.

Integration notes

  • Errors come back inside the XML, not as a separate status. Read NUMERRORS first: it must be "0" before QUOTEID, CHARGE, CONFIRMATION, shipment or document data is present.
  • If a city, state and ZIP do not line up, the rate and BOL calls return SIMILARCITIES / SIMILARZIPS suggestions under SHIP, CONS or TPB instead of a result. Plan a step that lets the user pick the intended location.
  • Date formats differ by call. The rate quote splits the date into ShipMonth, ShipDay and ShipYear. The BOL call wants MM/DD/YYYY and 24-hour HH:MM times in half-hour steps. The Truckload API uses YYYY-MM-DD and hh:mm.
  • Dimensions in the rate quote are rounded up to whole inches (or the next tenth of a meter); a NOTE with TYPE="DIMS-ROUNDED" reports it. If you send both overall dimensions and Cube, Cube is ignored and a CUBE-IGNORED note is added.
  • Read ITEMIZEDCHARGES when it is populated; INCLUDEDCHARGES is the fallback. TruckPack amounts (TPDELIVERYCHARGE, TPCHARGEPERBOX) are not included in CHARGE and must be added yourself.
  • Testing: the BOL/pickup call accepts Test=Y and returns the dummy confirmation WWW0000000. The Truckload API has no separate test environment and bookings cannot be cancelled through the API, so always send an X-Dry-Run header while developing.
  • Daily limits per 24 hours: 20,000 rate quotes, 5,000 BOL/pickup requests, 30,000 tracking requests and 15,000 document retrieval requests. The Truckload API docs do not state a limit.
  • Tracking supports pickup confirmation numbers (RefType K) but document retrieval does not. In tracking, SHORTSTATUS is deprecated; use SHORTSTATUS2. Truckload weights are accepted in LBS only, and reefer loads must include the TEMPERATR option.

FAQ

Does ABF Freight have a public API?

Yes. ArcBest documents XML services for ABF LTL rate quotes, bill of lading and pickup requests, tracking and document retrieval, plus a JSON API for truckload quotes and booking. The documentation is reached through an arcb.com account.

How do I get an ABF API key?

Sign in to arcb.com and open the API documentation under Resources; your API key is shown on those pages. TMS providers also need an App ID, which ArcBest issues on request via api@arcb.com.

Can I track ABF shipments by BOL or PO number through the API?

Yes. The tracking call takes a RefNum and a RefType: A for PRO, B for bill of lading, P for purchase order, C for customer reference and K for pickup confirmation number.

How do I get an ABF proof of delivery or invoice through the API?

Use the document retrieval call with DocType=DR (delivery receipt) or PODI for a POD, and DocType=INV for the invoice. It returns image page paths, not structured invoice data.

Does the ABF API have a sandbox?

There is no separate sandbox documented. The BOL/pickup call has a Test=Y flag, and the Truckload API has an X-Dry-Run header that validates a booking without submitting it.

On FreightAPIs

Official resources

Written from ABF Freight’s published API documentation and last checked 2026-10-09. FreightAPIs is not affiliated with ABF Freight; endpoints and access rules can change, so confirm details in the carrier’s own documentation before going live.

Other carrier API guides