Overview
The GigFreight API gives programmatic access to the EU & UK load marketplace. You can retrieve available loads, filter by origin/destination country, vehicle type, and page through results. The API is designed for:
TMS integration
Sync loads directly into your Transport Management System.
Automation
Auto-populate load boards and trigger alerts for matching freight.
Custom dashboards
Build your own reporting or carrier-facing load views.
Data export
Extract historical freight data for analysis and reporting.
Authentication
All API requests must include your API key in the Authorization header as a Bearer token. API keys are available to Elite plan subscribers underSettings β API Keys.
Keep your API key secret. Never expose it in client-side JavaScript, Git repositories, or public URLs. Rotate it immediately from your dashboard if it is ever compromised.
GET /api/v1/loads HTTP/1.1
Host: gigfreight.com
Authorization: Bearer fb_your_api_key_here
Accept: application/jsonBase URL
https://gigfreight.com/api/v1All endpoints are relative to this base URL. Requests must use HTTPS. HTTP requests are rejected.
Endpoints
/api/v1/loadsReturns a paginated list of available loads. Standard-visibility loads are returned for all authenticated users; Elite-visibility loads require an Elite plan subscription.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| origin_country | string | No | Filter by origin country (e.g. DE, PL, FR, GB) |
| destination_country | string | No | Filter by destination country |
| vehicle_type | string | No | Filter by vehicle type (see vehicle types list) |
| page | integer | No | Page number, default 1 |
| limit | integer | No | Items per page, default 20, max 100 |
Response Format
{
"data": [
{
"id": "uuid",
"status": "available",
"visibility": "standard",
"pickup_city": "Warsaw",
"origin_country": "PL",
"pickup_date": "2026-07-15",
"delivery_city": "Berlin",
"destination_country": "DE",
"delivery_date": "2026-07-16",
"vehicle_type": "curtainsider",
"weight_kg": 18000,
"distance_km": 575,
"rate": 1250.00,
"commodity": "Automotive parts",
"created_at": "2026-06-30T08:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 148,
"pages": 8
}
}Error Codes
| HTTP Status | Meaning |
|---|---|
| 200 OK | Request succeeded. |
| 400 Bad Request | Invalid query parameters or request body. |
| 401 Unauthorized | Missing or invalid API key. |
| 403 Forbidden | API key valid but plan does not permit this action (e.g. Elite content on Standard key). |
| 429 Too Many Requests | Rate limit exceeded. See X-RateLimit-* response headers. |
| 500 Internal Server Error | Something went wrong on our end. Contact support@gigfreight.com. |
Rate Limits
| Plan | Requests / minute | Requests / day |
|---|---|---|
| Elite | 60 req/min | 10,000 req/day |
Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Plan Requirements
- No API access
- Platform UI only
- Upgrade to Elite to unlock API
- Full REST API access
- Up to 5 API keys
- Elite-visibility loads included
- 10,000 requests/day
See Pricing for full plan comparison.
Code Examples
cURL
curl -X GET "https://gigfreight.com/api/v1/loads?origin_country=PL&destination_country=DE&page=1" \
-H "Authorization: Bearer fb_your_api_key" \
-H "Accept: application/json"JavaScript / fetch
const response = await fetch(
'https://gigfreight.com/api/v1/loads?origin_country=PL&vehicle_type=curtainsider',
{
headers: {
'Authorization': 'Bearer fb_your_api_key',
'Accept': 'application/json',
},
}
)
const { data, pagination } = await response.json()
console.log(`Found ${pagination.total} loads`)
data.forEach(load => {
console.log(`${load.pickup_city} β ${load.delivery_city}: β¬${load.rate}`)
})Python
import requests
API_KEY = "fb_your_api_key"
BASE_URL = "https://gigfreight.com/api/v1"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Accept": "application/json",
}
params = {
"origin_country": "DE",
"destination_country": "FR",
"limit": 50,
"page": 1,
}
response = requests.get(f"{BASE_URL}/loads", headers=headers, params=params)
response.raise_for_status()
result = response.json()
print(f"Found {result['pagination']['total']} loads")
for load in result["data"]:
print(f"{load['pickup_city']} β {load['delivery_city']}: β¬{load['rate']}")Changelog
- +Initial public API release
- +GET /loads with pagination and filtering
- +API key management in dashboard (up to 5 keys)
- +Elite plan required
Ready to integrate?
Upgrade to Elite and generate your first API key in under two minutes.