Quickstart
Bundleport is a unified travel API platform that connects you to multiple hotel suppliers through a single integration. Get started in minutes with our REST API, GraphQL, or SDKs.
Prerequisites
- API Endpoint:
https://api.bundleport.com - API Key: Get your sandbox API key from app.bundleport.com (or contact support)
- cURL or your preferred HTTP client
Step 1: Get Your API Key
- Sign up for a Bundleport account at app.bundleport.com
- Navigate to API Keys in your dashboard
- Create a new API key with Sandbox access
- Copy your API key (you'll need it for all requests)
Sandbox vs Production
Start with sandbox keys to test without affecting real bookings. Production keys require additional verification.
Step 2: Authenticate Your Request
All Bundleport API requests require authentication via an API key in the Authorization header:
Authorization: ApiKey YOUR_API_KEY_HERE
Step 3: Make Your First API Call
- cURL
- JavaScript/TypeScript
- Python
curl -X POST https://api.bundleport.com/hotels/v1/search \
-H "Authorization: ApiKey YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{
"stay": {
"checkIn": "2025-12-15",
"checkOut": "2025-12-17"
},
"destination": {
"code": "BCN"
},
"occupancies": [
{
"adults": 2
}
],
"filters": {
"currency": "EUR"
}
}'
const response = await fetch('https://api.bundleport.com/hotels/v1/search', {
method: 'POST',
headers: {
'Authorization': 'ApiKey YOUR_API_KEY_HERE',
'Content-Type': 'application/json',
},
body: JSON.stringify({
stay: {
checkIn: '2025-12-15',
checkOut: '2025-12-17',
},
destination: {
code: 'BCN',
},
occupancies: [
{
adults: 2,
},
],
filters: {
currency: 'EUR',
},
}),
});
const data = await response.json();
console.log(data);
import requests
url = "https://api.bundleport.com/hotels/v1/search"
headers = {
"Authorization": "ApiKey YOUR_API_KEY_HERE",
"Content-Type": "application/json"
}
payload = {
"stay": {
"checkIn": "2025-12-15",
"checkOut": "2025-12-17"
},
"destination": {
"code": "BCN"
},
"occupancies": [
{
"adults": 2
}
],
"filters": {
"currency": "EUR"
}
}
response = requests.post(url, json=payload, headers=headers)
data = response.json()
print(data)
Step 4: Understand the Response
A successful search response includes:
{
"options": [
{
"optionRefId": "OPT-123456789",
"hotel": {
"code": "12345",
"name": "Example Hotel Barcelona",
"location": {
"city": "Barcelona",
"country": "ES"
}
},
"rooms": [
{
"description": "Standard Double Room",
"boardCode": "RO",
"price": {
"currency": "EUR",
"net": 150.00,
"suggested": 180.00
}
}
]
}
],
"tracing": {
"status": "OK",
"accessSpans": [
{
"access": "ACCESS_1",
"status": "OK",
"hotelsRequested": 10,
"hotelsReturned": 8
}
]
}
}
Next Steps
Now that you've made your first API call, explore:
- Connect Hotels Overview - Understand the complete search → quote → book journey
- Authentication Guide - Learn about API keys, scopes, and security
- REST API Reference - Browse all available endpoints
- GraphQL Quickstart - Use GraphQL for Hotel-X compatible queries
- SDKs - Use our official SDKs for faster integration
Common Issues
401 Unauthorized
- Verify your API key is correct
- Ensure the
Authorizationheader format is:ApiKey YOUR_KEY - Check that your API key has the required permissions
400 Bad Request
- Validate your request payload matches the API schema
- Check date formats (use
YYYY-MM-DD) - Ensure destination codes are valid (e.g., IATA codes for airports)
Rate Limits
- Default: 600 requests/minute, 15,000/hour, 250,000/day
- Configurable per service account via Core API
- Check your specific limits in app.bundleport.com
Need Help?
- 📚 Full API Documentation
- 💬 Contact Support
- 🐛 Report an Issue or contact support@bundleport.com