API Reference
Complete REST API endpoint documentation
The CarrierScout API exposes the DotLookup integration layer that powers the CarrierScout web app. Use these endpoints to submit a range of MC numbers and retrieve a filtered list of active, carrier-only authorities. The API silently drops inactive authorities, brokers, and dual carrier/broker registrations, returning only the records that represent legitimate, currently active freight carriers.
| Parameter | Type | Required | Description |
|---|---|---|---|
start | integer | Yes | The first MC number in the range to search (inclusive). Must be a positive integer. |
end | integer | Yes | The last MC number in the range to search (inclusive). Must be a positive integer greater than or equal to start. |
Requests are submitted as HTTP GET requests to the search endpoint:
GET /api/search?start={start}&end={end}
Both start and end are passed as query string parameters.
On success, the API returns an HTTP 200 response with a JSON body containing an array of carrier records. Each record represents a single MC number whose authority is currently active and carrier-only at the time of the DotLookup query. Records for inactive authorities, brokers, and dual carrier/broker registrations are omitted from the response entirely.
Response body shape (success):
{
"carriers": [
{
"mcNumber": 123456,
"name": "Example Freight LLC",
"authorityStatus": "ACTIVE",
"operatingType": "CARRIER"
}
]
}
| Field | Type | Description |
|---|---|---|
carriers | array | List of matching active carrier-only records. May be empty if no MC numbers in the range meet the criteria. |
carriers[].mcNumber | integer | The MC number of the matching carrier. |
carriers[].name | string | The legal name of the carrier as returned by DotLookup. |
carriers[].authorityStatus | string | Always "ACTIVE" for returned records. |
carriers[].operatingType | string | Always "CARRIER" for returned records. |
| Error | HTTP Status | When it occurs |
|---|---|---|
Bad Request | 400 | start or end is missing, not a valid integer, or end is less than start. |
Bad Gateway | 502 | The DotLookup API is unreachable or returns an unexpected response for one or more MC numbers in the range. |
Internal Server Error | 500 | An unexpected error occurred within the CarrierScout web app during processing. |
All error responses return a JSON body with an error field describing the problem:
{
"error": "'end' must be greater than or equal to 'start'"
}
Search a small range of MC numbers
The following request searches MC numbers 500000 through 500010 and returns any that are active, carrier-only authorities.
curl "http://localhost:3000/api/search?start=500000&end=500010"
Expected response (one matching carrier found):
{
"carriers": [
{
"mcNumber": 500003,
"name": "Sunrise Hauling Inc",
"authorityStatus": "ACTIVE",
"operatingType": "CARRIER"
}
]
}
Search a range with no matching carriers
If none of the MC numbers in the range represent active, carrier-only authorities, the carriers array is empty.
curl "http://localhost:3000/api/search?start=999990&end=999995"
Expected response:
{
"carriers": []
}
Invalid range request
Passing an end value smaller than start returns a 400 error.
curl "http://localhost:3000/api/search?start=500010&end=500000"
Expected response:
{
"error": "'end' must be greater than or equal to 'start'"
}
Using the Vercel deployment
Replace http://localhost:3000 with your Vercel project URL — no additional configuration is required.
curl "https://your-project.vercel.app/api/search?start=500000&end=500010"
-
Range size and rate limiting: CarrierScout queries DotLookup individually for each MC number in the specified range. Large ranges result in a proportionally larger number of outbound requests to the DotLookup API. Keep ranges reasonably sized to avoid long response times or downstream throttling from the public DotLookup database.
-
Filtering behavior is silent: CarrierScout does not report on MC numbers it drops. Inactive authorities, brokers, and dual carrier/broker registrations are silently excluded from the response. If you need to audit which numbers were skipped and why, you will need to query DotLookup directly for those specific MC numbers.
-
No authentication required: CarrierScout does not require API keys or authentication headers. Access is open to any HTTP client that can reach the CarrierScout web app.
-
Data freshness: Results reflect the state of the DotLookup database at the time of the request. Authority statuses can change; re-query periodically for compliance-sensitive workflows.
-
Vercel deployment: When deployed to Vercel, no environment variables need to be configured. The DotLookup integration works out of the box in both local and Vercel environments.
-
Node.js requirement for local development: Running the CarrierScout web app locally requires Node.js version 22.13.0 or higher. Verify your Node.js version with
node --versionbefore starting the local server.