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
  1. Register for an API partner account
  2. Get your API key from the dashboard
  3. 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 ID
  • country_id (optional) - Filter by country ID
  • property_type (optional) - apartment, house, villa, condo, etc.
  • bedrooms (optional) - Number of bedrooms
  • bathrooms (optional) - Number of bathrooms
  • guests (optional) - Maximum guests
  • min_price (optional) - Minimum price per night
  • max_price (optional) - Maximum price per night
  • instant_book (optional) - Filter by instant book availability (true/false)
  • amenity_ids (optional) - Comma-separated amenity IDs
  • check_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 description
  • category_id (optional) - Filter by tour category
  • city_id (optional) - Filter by city
  • country_id (optional) - Filter by country
  • difficulty (optional) - Filter by difficulty level
  • min_price (optional) - Minimum price
  • max_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 created
  • booking_confirmed - Booking confirmed by hotel/provider
  • booking_cancelled - Booking cancelled
  • payment_received - Payment successfully processed
  • rental_booking_created - Vacation rental booking created
  • rental_booking_confirmed - Vacation rental booking confirmed
  • tour_booking_created - Tour booking created
  • tour_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
200Success
201Created
400Bad Request - Invalid parameters
401Unauthorized - Invalid or missing API key
403Forbidden - API key lacks required permission
404Not Found - Resource not found
422Validation Error - Request validation failed
429Rate Limit Exceeded
500Server Error

Ready to Build Something Amazing?

Join hundreds of developers using our API to power their booking platforms

✓ No credit card required • ✓ Instant access • ✓ Free tier available

We may use cookies or any other tracking technologies when you visit our website, including any other media form, mobile website, or mobile application related or connected to help customize the Site and improve your experience. learn more

Allow