Bookings API

The Bookings API is currently in beta. The interface is stable but may receive additions in future releases.

The Bookings API lets you programmatically retrieve your booking data. Use it to feed data into spreadsheets, BI tools, custom dashboards, or any external system.

Authentication

Every request must include an API key in the Authorization header as a Bearer token.

Authorization: Bearer td_your_key_here

You can create and manage API keys from the API settings page. Each company can have up to 2 active keys at a time.

API keys are prefixed with td_ and shown only once at creation. Store them securely — TourDash cannot retrieve a key after it has been created.

Base URL

https://tourdash.app

GET /api/v1/bookings

Returns a paginated list of bookings for tours that start within the given date range.

Query parameters

ParameterRequiredDefaultDescription
fromYesStart of date range (ISO 8601). Example: 2026-02-01
toYesEnd of date range (ISO 8601). Must be after from.
pageNo1Page number (1-based).
page_sizeNo50Number of bookings per page. Maximum 200.

Example request

curl -H "Authorization: Bearer td_your_key_here" \
  "https://tourdash.app/api/v1/bookings?from=2026-02-01&to=2026-02-28"

Example response

{
  "data": [
    {
      "id": 12345,
      "ext_ref": "GYG-ABC123",
      "tour": {
        "name": "Gothic Quarter Walking Tour",
        "start_time": "2026-02-15T10:00:00",
        "language": "EN"
      },
      "contact": {
        "name": "Jane Doe",
        "phone": "+1234567890",
        "email": "jane@example.com"
      },
      "platform": "GetYourGuide",
      "booked": {
        "adults": 2,
        "children": 1,
        "infants": 0
      },
      "attended": {
        "adults": 2,
        "children": 1,
        "infants": 0
      },
      "checked_in_by": "Alex Smith",
      "status": "confirmed",
      "received_at": "2026-02-10T14:32:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "page_size": 50,
    "total_count": 1,
    "total_pages": 1
  }
}

Response fields

FieldTypeDescription
idnumberUnique booking ID.
ext_refstringExternal reference from the booking platform (e.g. GetYourGuide order ID).
tour.namestringName of the tour.
tour.start_timestringTour start time in local timezone (ISO 8601, no offset).
tour.languagestringTour language code (e.g. EN, ES).
contact.namestringGuest's contact name.
contact.phonestringGuest's phone number.
contact.emailstringGuest's email address.
platformstringBooking source (e.g. GetYourGuide, Viator, Civitatis).
bookedobjectNumber of guests booked (adults, children, infants).
attendedobjectNumber of guests who attended (adults, children, infants).
checked_in_bystring | nullName of the guide who checked in the guests, or null if not checked in.
statusstringBooking status (e.g. confirmed, cancelled).
received_atstringTimestamp when the booking was received (ISO 8601 with timezone).

Rate limiting

Each API key is limited to 20 requests per 60-second window. If you exceed the limit, the API returns a 429 status with a Retry-After: 60 header. Wait for the window to reset before making additional requests.

Error responses

Errors are returned as JSON with an error field:

StatusMeaning
401Missing, malformed, invalid, or revoked API key.
422Missing or invalid query parameters (from, to).
429Rate limit exceeded. Wait and retry after 60 seconds.
500Internal server error. Please try again or contact support.
{
  "error": "Missing required query parameters: from, to"
}

Quick start

  1. Go to API settings and create an API key.
  2. Copy the key immediately — it's only shown once.
  3. Make your first request:
    curl -H "Authorization: Bearer td_your_key_here" \
      "https://tourdash.app/api/v1/bookings?from=2026-02-01&to=2026-02-28"
  4. Parse the JSON response and use the data in your workflow.