Complete guide to the Explore Cape Town Tourism API
All API responses are returned in JSON format with a consistent structure:
Note: Contact our team to obtain an API key for protected endpoints. Public endpoints like tour packages and locations don't require authentication.
/api/v1/itinerary/packagesRetrieve available tour packages
{
"success": true,
"data": [
{
"id": "cape-point-full-day",
"name": "Cape Point Full-Day Tour",
"base_price": 1200,
"duration_hours": 8,
"city": "Cape Town"
}
]
}/api/v1/itinerary/customCreate a custom tour itinerary
{
"pickup_location": "Cape Town City Centre",
"destinations": [
"Table Mountain",
"V&A Waterfront"
],
"preferences": {
"budget_range": "mid-range",
"group_size": 4,
"interests": [
"nature",
"culture"
],
"duration_days": 1
}
}/api/v1/calculate/quoteCalculate pricing for a tour
{
"pickup": "Cape Town City Centre",
"stops": [
"Table Mountain",
"V&A Waterfront"
],
"vehicle_size": 4,
"duration_hours": 6,
"tour_type": "multi_stop"
}// Fetch tour packages
const response = await fetch('https://www.explore-capetown.co.za/api/v1/itinerary/packages?city=cape-town');
const data = await response.json();
if (data.success) {
console.log('Available packages:', data.data);
}
// Calculate quote
const quoteResponse = await fetch('https://www.explore-capetown.co.za/api/v1/calculate/quote', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
pickup: "Cape Town City Centre",
stops: ["Table Mountain", "V&A Waterfront"],
vehicle_size: 4,
duration_hours: 6,
tour_type: "multi_stop"
})
});
const quote = await quoteResponse.json();
console.log('Quote:', quote.data.total_price);1,000
requests per hour
5,000
requests per hour