The Intelligent
Hotel Booking, Vacation Rentals & Tours API
Meet the next generation of booking integration. Beautiful out-of-the-box, developer-friendly, and built for scale. Search hotels, vacation rentals, and tours all in one unified API.
Already have an account? Partner Login →
TRUSTED BY LEADING COMPANIES
Hotel Chain A
Company B
Platform C
Startup D
Why Choose Our API?
Everything you need to build powerful booking integrations
Lightning Fast
Average response time under 200ms
Bank-Grade Security
API key auth & encrypted data
Developer Friendly
Clear docs & code examples
24/7 Support
Expert technical assistance
Getting Started
The Downfare Extranet API allows you to search hotels, vacation rentals, and tours, make bookings, and process payments programmatically.
Quick Start
- Register for an API partner account
- Get your API key from the dashboard
- Start making requests!
Authentication
All API requests require an API key in the request header:
X-API-Key: dpk_your_api_key_here
Some endpoints require additional permissions. Booking endpoints require the book permission, and payment endpoints require the payment permission.
Base URL
https://extranet.downfare.com/external-api
Hotels
POST
/hotels/search
Search for hotels based on criteria
Request Body:
{
"city_id": 1,
"check_in": "2024-11-01",
"checkout": "2024-11-05",
"rooms": [
{"total_adult": 2, "total_child": 1}
],
"min_fare": 50,
"max_fare": 200
}
GET
/hotels/{id}
Get detailed information about a specific hotel
Bookings
Note: Booking endpoints require the book permission on your API key.
POST
/bookings
Create a new booking
Request Body:
{
"owner_id": 1,
"check_in": "2024-11-01",
"checkout": "2024-11-05",
"total_adult": 2,
"total_child": 1,
"guest_name": "John Doe",
"guest_email": "john@example.com",
"guest_phone": "+1234567890",
"room_types": [
{"type_id": 1, "total_room": 2}
]
}
Payments
Note: Payment endpoints require the payment permission on your API key.
POST
/payments/process
Process a payment for a booking
Vacation Rentals
Search and book vacation rental properties (apartments, houses, villas, etc.)
GET
/rentals/search
Search for vacation rental properties based on criteria
Query Parameters:
city_id(optional) - Filter by city IDcountry_id(optional) - Filter by country IDproperty_type(optional) - apartment, house, villa, condo, etc.bedrooms(optional) - Number of bedroomsbathrooms(optional) - Number of bathroomsguests(optional) - Maximum guestsmin_price(optional) - Minimum price per nightmax_price(optional) - Maximum price per nightinstant_book(optional) - Filter by instant book availability (true/false)amenity_ids(optional) - Comma-separated amenity IDscheck_in(optional) - Check-in date (YYYY-MM-DD)checkout(optional) - Check-out date (YYYY-MM-DD)sort_by(optional) - Sort field (default: created_at)sort_order(optional) - Sort direction: asc or desc (default: desc)per_page(optional) - Results per page (default: 20, max: 100)
Example Response:
{
"success": true,
"message": "Rental properties retrieved successfully",
"data": {
"properties": [...],
"pagination": {
"total": 50,
"per_page": 20,
"current_page": 1,
"last_page": 3
}
}
}
GET
/rentals/filter-parameters
Get available filter parameters including amenities, property types, and options
Example Response:
{
"success": true,
"data": {
"amenities": {
"Essentials": [...],
"Kitchen": [...],
"Safety": [...]
},
"property_types": [
{"value": "apartment", "label": "Apartment"},
{"value": "house", "label": "House"},
...
],
"bedroom_options": [1, 2, 3, ...],
"bathroom_options": [1, 2, 3, ...],
"guest_options": [1, 2, 3, ...]
}
}
GET
/rentals/{id}
Get detailed information about a specific rental property
Returns comprehensive property details including photos, amenities, house rules, location, owner information, and reviews.
GET
/rentals/{id}/availability
Check availability and get pricing for specific dates
Query Parameters:
check_in(required) - Check-in date (YYYY-MM-DD)checkout(required) - Check-out date (YYYY-MM-DD)guests(required) - Number of guests
Example Response:
{
"success": true,
"message": "Property is available",
"data": {
"available": true,
"check_in": "2024-11-01",
"checkout": "2024-11-05",
"guests": 2,
"pricing": {
"base_amount": 400,
"cleaning_fee": 50,
"service_fee": 54,
"tax_amount": 50.4,
"total_amount": 554.4,
"currency": "USD",
"nights": 4
}
}
}
POST
/rentals/bookings
Requires: book permission
Create a new vacation rental booking
Request Body:
{
"property_id": 1,
"guest_name": "John Doe",
"guest_email": "john@example.com",
"guest_phone": "+1234567890",
"check_in": "2024-11-01",
"checkout": "2024-11-05",
"guests": 2,
"special_requests": "Late check-in please"
}
Note: Bookings for properties with instant_book: true are confirmed immediately. Otherwise, they are pending host approval.
GET
/rentals/bookings/{id}
Requires: book permission
Get details of a specific booking using booking ID or booking number
POST
/rentals/bookings/{id}/cancel
Requires: book permission
Cancel a booking and calculate refund amount
Request Body:
{
"reason": "Change of plans"
}
Tours
Search and book tours and activities
GET
/tours
List all available tours with pagination
Query Parameters:
page(optional) - Page number (default: 1)per_page(optional) - Results per page (default: 50, max: 100)
GET
/tours/search
Search tours with filters
Query Parameters:
keyword(optional) - Search in title and descriptioncategory_id(optional) - Filter by tour categorycity_id(optional) - Filter by citycountry_id(optional) - Filter by countrydifficulty(optional) - Filter by difficulty levelmin_price(optional) - Minimum pricemax_price(optional) - Maximum price
GET
/tours/categories
Get all available tour categories
GET
/tours/cities/{cityId}
Get all tours available in a specific city
GET
/tours/{id}
Get detailed information about a specific tour
Returns comprehensive tour details including photos, itineraries, pricing, schedules, provider information, and reviews.
GET
/tours/{id}/availability
Check tour availability for specific date and time
Query Parameters:
booking_date(required) - Booking date (YYYY-MM-DD)departure_time(required) - Departure time (HH:ii)total_guests(required) - Total number of guests
POST
/tours/{id}/check-price
Calculate the total price for a tour booking
Request Body:
{
"booking_date": "2024-11-15",
"adults": 2,
"children": 1,
"seniors": 0,
"infants": 0,
"students": 0,
"is_private": false
}
Example Response:
{
"success": true,
"data": {
"subtotal": 150,
"discount_amount": 10,
"commission": 15,
"total": 140,
"currency": "USD",
"breakdown": {...}
}
}
POST
/tours/{id}/book
Requires: book permission
Create a new tour booking
Request Body:
{
"booking_date": "2024-11-15",
"departure_time": "09:00",
"adults": 2,
"children": 1,
"guest_name": "Jane Doe",
"guest_email": "jane@example.com",
"guest_phone": "+1234567890",
"special_requests": "Wheelchair accessible"
}
GET
/tours/bookings/{bookingNumber}
Requires: book permission
Get details of a specific tour booking using booking number
POST
/tours/bookings/{bookingNumber}/cancel
Requires: book permission
Cancel a tour booking and calculate refund
Request Body:
{
"reason": "Change of plans"
}
Webhooks
Receive real-time notifications when events occur:
booking_created- New booking createdbooking_confirmed- Booking confirmed by hotel/providerbooking_cancelled- Booking cancelledpayment_received- Payment successfully processedrental_booking_created- Vacation rental booking createdrental_booking_confirmed- Vacation rental booking confirmedtour_booking_created- Tour booking createdtour_booking_confirmed- Tour booking confirmed
Configure webhooks in your partner dashboard. Webhooks are sent as POST requests to your configured URL with HMAC signature for verification.
Error Codes
| Code | Description |
|---|---|
200 | Success |
201 | Created |
400 | Bad Request - Invalid parameters |
401 | Unauthorized - Invalid or missing API key |
403 | Forbidden - API key lacks required permission |
404 | Not Found - Resource not found |
422 | Validation Error - Request validation failed |
429 | Rate Limit Exceeded |
500 | Server Error |
Ready to Build Something Amazing?
Join hundreds of developers using our API to power their booking platforms