Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/bnsf-carload-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Bnsf CARLOAD API
description: ''
termsOfService: http://www.bnsf.com/site-terms-of-use.html
contact:
name: BNSF Customer API
email: CustomerAPI@bnsf.com
version: '1.0'
servers:
- url: https://api.bnsf.com:6443
tags:
- name: CARLOAD
paths:
/v1/cars:
get:
tags:
- CARLOAD
summary: Cars - Returns tracing details for railcars on the BNSF network, with a default…
parameters:
- name: limit
in: query
description: The default and maximum number of cars to return per request.
schema:
type: integer
format: int32
example: 2000
- name: page
in: query
description: The page number of the set of cars you are requesting. For example, a query string of "?page=1" is equivalent to "?page=1&limit=2000" will return the first 2,000 cars. "?page=2" will return the next set of 2,000 cars.
schema:
type: integer
format: int32
example: 1
responses:
'200':
description: '**OK**
The request has succeeded.'
content:
application/json:
schema:
type: object
title: Schema
properties:
elements:
type: array
title: Elements
items:
$ref: '#/components/schemas/carload'
additionalProperties: false
'400':
$ref: '#/components/responses/400'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'504':
$ref: '#/components/responses/504'
deprecated: false
operationId: getV1Cars
x-operation-id-source: derived
post:
tags:
- CARLOAD
summary: Cars - Returns tracing details for requested cars, up to 300 at a time
requestBody:
content:
application/json:
schema:
type: object
title: Schema
properties:
carList:
$ref: '#/components/schemas/equipment_list'
additionalProperties: false
responses:
'200':
description: '**OK**
The request has succeeded.'
content:
application/json:
schema:
type: object
title: Schema
properties:
elements:
type: array
title: Elements
items:
$ref: '#/components/schemas/carload'
additionalProperties: false
'400':
$ref: '#/components/responses/400'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'429':
description: "**Too Many Requests**\n\nThe BNSF API Gateway enforces rate limits to maintain application security and performance. Current rate limits are set as follows:\n* 1 API Request Per Second, Per Partner, Per Service\n* 15 API Requests Per Minute, Per Partner, Per Service\n* 100 API Request Per Minute, Per Service\n \nWhen requests exceed these limits the API Gateway will return **429 Too Many Requests** error response to the Client. Upon receiving such exceptions, the client can resubmit failed requests in a rate-limited manner, complying with the API Gateway throttle limits.\n"
'500':
$ref: '#/components/responses/500'
'504':
$ref: '#/components/responses/504'
operationId: postV1Cars
x-operation-id-source: derived
/v1/carload-consist:
get:
tags:
- CARLOAD
summary: Carload Consist - Returns tracing details for railcars on U, J, C, E, G and X…
parameters:
- name: train
in: query
description: train
required: true
schema:
type: string
title: Schema
example: GBSBNSL907
responses:
'200':
description: '**OK**
The request has succeeded.'
content:
application/json:
schema:
type: object
title: Schema
properties:
elements:
type: array
title: Elements
items:
$ref: '#/components/schemas/carload'
additionalProperties: false
'400':
$ref: '#/components/responses/400'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'429':
description: "**Too Many Requests**\n\nThe BNSF API Gateway enforces rate limits to maintain application security and performance. Current rate limits are set as follows:\n* 1 API Request Per Second, Per Partner, Per Service\n* 15 API Requests Per Minute, Per Partner, Per Service\n* 100 API Request Per Minute, Per Service\n \nWhen requests exceed these limits the API Gateway will return **429 Too Many Requests** error response to the Client. Upon receiving such exceptions, the client can resubmit failed requests in a rate-limited manner, complying with the API Gateway throttle limits.\n"
'500':
$ref: '#/components/responses/500'
'504':
$ref: '#/components/responses/504'
operationId: getV1CarloadConsist
x-operation-id-source: derived
/v1/trip-plan-carload:
get:
tags:
- CARLOAD
summary: Trip Plan - Returns list of significant events planned for a railcar equipment…
parameters:
- name: equipmentInitial
in: query
description: Equipment Initial.
schema:
type: string
example: BNSF
- name: equipmentNumber
in: query
description: Equipment Number.
schema:
type: string
example: '12345'
responses:
'200':
description: '**OK**
The request has succeeded.'
content:
application/json:
schema:
$ref: '#/components/schemas/tripPlan'
'400':
$ref: '#/components/responses/400'
'403':
$ref: '#/components/responses/403'
'404':
$ref: '#/components/responses/404'
'405':
$ref: '#/components/responses/405'
'429':
$ref: '#/components/responses/429'
'500':
$ref: '#/components/responses/500'
'504':
$ref: '#/components/responses/504'
operationId: getV1TripPlanCarload
x-operation-id-source: derived
components:
schemas:
equipment_list:
type: array
title: Equipment List
items:
type: string
example: BNSF123456
minItems: 1
maxItems: 300
example:
- BNSF123456
- BNSF301133
tripPlan:
type: object
title: Trip Plan
description: Travel itinerary for rail equipment.
properties:
jobStatus:
type: integer
format: int32
title: jobStatus
minimum: 1
maximum: 4
example: 4
jobStatusDescription:
type: string
title: jobStatusDescription
example: Job is complete
resultSet:
type: array
title: resultSet
items:
type: object
required:
- equipmentInitial
- equipmentNumber
- estimatedEventDatetimeIndicator
- eventDatetime
- eventDescription
- eventLocation
- sequenceNumber
- trainId
properties:
equipmentInitial:
type: string
title: Equipment Initial
description: Equipment Initial is the prefix or alphabetic part of an equipment units identifying number.
example: BNSF
equipmentNumber:
type: string
title: Equipment Number
description: Equipment Number is the sequencing or serial part of an equipment units identifying number.
example: '12345'
estimatedEventDatetimeIndicator:
type: string
title: Estimated Event DateTime Indicator
description: Indicates if the Event DateTime is estimated or actual.
example: Y
eventDatetime:
type: string
title: Event DateTime
description: Date and Time when a given event was created. This represents the complete Date (YYYY-MM-DD), on the Gregorian calendar, along with a valid complete Time (HH:MM:SS:xx)
example: 2021-11-17 15.47.51
eventDescription:
type: string
title: Event Description
description: Description for an Event Code used to define an event or activity occurring on the rail network.
example: Train Departure
eventLocation:
type: string
title: Event Location Name
description: The combined name of the City and State Code where the event will or has occurred.
example: CLOVIS NM
sequenceNumber:
type: number
format: float
title: Trip Plan Segment Sequence Number
description: The sequence number applied to the processing (occurrence) of equipment through individual trip plan segments.
example: 110
trainId:
type: string
title: Train ID
description: The identification of an train.
example: S MEMSCO 1 15
additionalProperties: false
rowCount:
type: string
title: rowCount
example: '1'
additionalProperties: false
carload:
type: object
title: Carload
properties:
destinationRailNetworkLocationName:
type: string
title: Destination Station State
description: 'The final BNSF operating station and state. This can be different than customer destination. See **rail_destination_station_state** the final rail station and state as stated on the waybill. '
example: HALLOCK, MN
equipmentInitial:
type: string
title: Equipment Initial
description: The initials used in the equipment identification for the shipment.
example: BNSF
equipmentNumber:
type: string
title: Equipment Number
description: The numbers used in the equipment identification for the shipment.
example: '255314'
equipmentLoadStatusCode:
type: string
title: Equipment Status Code
description: L or E, this code describes whether the equipment is loaded or empty
enum:
- L
- E
minLength: 1
maxLength: 1
example: E
estimatedShipmentAvailabilityDate:
type: string
title: Estimated Availability Date
description: 'Estimated date that the shipment becomes available to the customer
'
example: 11/05/2019
estimatedShipmentAvailabilityTime:
type: string
title: Estimated Availability Time
description: 'Estimated time that the shipment becomes available to the customer
'
example: '12:09'
finalDestinationRailNetworkLocationName:
type: string
title: finalDestinationRailNetworkLocationName
description: The final station and state as stated on the waybill.
example: DILWORTH, MN
finalScheduledEventDescription:
type: string
title: finalScheduledEventDescription
description: Description of the final scheduled event in the trip plan
example: Actual Placed
lastEventDate:
type: string
title: lastEventDate
description: Date of most recent event.
example: 10/30/2019
lastEventDescription:
type: string
title: lastEventDescription
description: 'Description of most recent event
'
example: Train Departed
lastEventTime:
type: string
title: lastEventTime
description: Time of most recent event.
example: 09:03
lastEventRailNetworkLocationName:
type: string
title: lastEventRailNetworkLocationName
description: The location of the most recently reported event. See Event Description.
example: WILJCT, AZ
lastReportingSCAC:
type: string
title: lastReportingSCAC
description: Carrier abbreviation reporting the most recent event.
example: BNSF
latitude:
type: number
format: float
title: Latitude
description: Last reported latitude of the shipment.
example: 37.260433
longitude:
type: number
format: float
title: Longitude
description: Last reported longitude of the shipment.
example: -97.60999
message:
type: string
title: Message
description: Message regarding equipment search
example: You are not an authorized waybill party to track this equipment. Please verify your information and try again.
nextSCAC:
type: string
title: nextSCAC
description: The next carrier to move the shipment after BNSF.
nextScheduledEventDate:
type: string
title: nextScheduledEventDate
description: The estimated date the next scheduled event will occur.
example: 10/30/2019
nextScheduledEventDescription:
type: string
title: nextScheduledEventDescription
description: The next scheduled event to occur in the trip plan.
example: Train Departed
nextScheduledEventStateCode:
type: string
title: nextScheduledEventStateCode
description: The state where the next scheduled event will occur.
example: AZ
nextScheduledEventStation333:
type: string
title: nextScheduledEventStation333
description: The station where the next scheduled event will occur.
example: WINSLOW
nextScheduledEventTime:
type: string
title: nextScheduledEventTime
description: The estimated time the next scheduled event will occur.
example: 709
originRailNetworkLocationName:
type: string
title: originRailNetworkLocationName
description: The origin station and state of the shipment.
example: BARSTOW, CA
shipmentExceptionDescription:
type: string
title: shipmentExceptionDescription
description: 'A description of any exception that applies to the shipment
'
example: WILD DETECTOR/ WHL CONDITION
trainId:
type: string
title: trainId
description: 'The code that identifies a specific train and is used to locate cars, units, or shipments. Train IDs consist of four parts:
Type: Train type, based on the commodity being transported, or the speed the train needs to move. Valid values range from A to Z.
Symbol: A combination of carrier interchange and the number of trains out that day.
Day: The day of the month the train departed from origin location, in mm-dd format.
Schedule ID: A value from A to Z.
'
example: HBARGAL125A
waybillNumber:
type: string
title: waybillNumber
description: Waybill number assigned to the shipment.
example: '123456'
careOfParty633:
type: string
title: careOfParty633
description: Name of a receiver of rail cars on behalf of the actual consignee (the physical delivery point) which has been abbreviated from the Customer's full Legal Name through the use of a standardized programmatic process.
example: CAREOF1
careOfPartyFullName:
type: string
title: careOfPartyFullName
description: The full name of a receiver of rail cars on behalf of the actual consignee (the physical delivery point).
example: CARE OF 1
consignee633:
type: string
title: consignee633
description: Name of a Customer, acting as the Consignee (AKA Receiver), which has been abbreviated from the Customer's full Legal Name through the use of a standardized programmatic process.
example: CNSGNEE
consigneeFullName:
type: string
title: consigneeFullName
description: The full name of a customer that is filling the role of Consignee. A Consignee, also referred to as the \"Receiver\", is the company or individual receiving a shipment at a destination.
example: CONSIGNEE
notifyParty633:
type: string
title: notifyParty633
description: Name of the party to be notified at the time a container or trailer is grounded from a train. Most notify parties are draymen. Value has been abbreviated from the Customer's full Legal Name through the use of a standardized programmatic process.
example: NOTPRTY1
notifyPartyFullName:
type: string
title: notifyPartyFullName
description: Full name of the party to be notified at the time a container or trailer is grounded from a train. Most notify parties are draymen.
example: NOTIFY PARTY 1
shipper633:
type: string
title: shipper633
description: Name of a Customer, acting as the Shipper, which has been abbreviated from the Customer's full Legal Name through the use of a standardized programmatic process.
example: SHPRABC
shipperFullName:
type: string
title: shipperFullName
description: Full name of a Customer, acting as the Shipper.
example: SHIPPER
stcc:
type: string
title: stcc
description: STCC (Standard Transportation Commodity Code) number identifying a Commodity.
example: '9999'
billOfLadingId:
type: string
title: billOfLadingId
description: Is a unique identifier for an instance of an internal or external customer request for the Bill of Lading via rail.
example: 017415FD
additionalProperties: false
responses:
'429':
description: "**Too Many Requests**\n\nThe BNSF API Gateway enforces rate limits to maintain application security and performance. Current rate limits are set as follows:\n* 1 API Request Per Second, Per Partner, Per Service\n* 15 API Requests Per Minute, Per Partner, Per Service\n* 100 API Request Per Minute, Per Service\n \nWhen requests exceed these limits the API Gateway will return a **429 Too Many Requests** error response. Upon receiving such exceptions, you can resubmit failed requests in a rate-limited manner, complying with the API Gateway throttle limits. "
'404':
description: '**Not Found**
The server cannot find the requested resource (URI). That is, the address of the endpoint in your request does not exist. Please consult the documentation.'
'403':
description: "Unauthorized request. Here are the most common causes:\n \n* You are getting 403 Access Denied.\n\n * It takes a few days for us to get you set up after you register. When set up is complete, you will receive an email letting you know. If you have not received the email, please wait up to five business days. Let us know via API Support if you still have not received the email after five business days.\n * You can also get this error if your certificate is not configured properly on your side. Please review the Mutual Authentication in the Getting Started section of our documentation. \n\n\n* You are getting 403 \"message\": \"Insufficient privileges\" when accessing a restricted service for which you do not have permission. You can use our Registration form to request access. Be sure to explain the situation in the \"Please explain how you intend to use the API\" field.\n"
'400':
description: '**Bad Request**
The request could not be understood by the server due to incorrect syntax. Do not repeat the request without modifications.'
'504':
description: '**Gateway Timeout**
The server is acting as a gateway and cannot get a response in time for a request. Wait about one minute then try again.'
'500':
description: '**Internal Server Error**
The server encountered an unexpected condition which prevented it from fulfilling the request. This is always a problem on the server side. Our internal support systems will be made aware.'
'405':
description: '**Method Not Allowed**
The request HTTP method is known by the server but has been disabled and cannot be used for that resource. For example, you may be using GET when POST is required. Please consult the documentation.'