{
  "openapi": "3.0.1",
  "info": {
    "title": "Traveloka Scraper - Hotels, Rooms, Reviews and Flights",
    "description": "Extract Traveloka hotels, room details, guest reviews and flights across Southeast Asian and regional locales, plus links from other travel pages. Pay per delivered row plus a start fee.",
    "version": "0.2",
    "x-build-id": "d6iqCzkqPW5iIjcKC"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lentic_clockss~traveloka-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lentic_clockss-traveloka-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/lentic_clockss~traveloka-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lentic_clockss-traveloka-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/lentic_clockss~traveloka-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lentic_clockss-traveloka-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "service": {
            "title": "Service",
            "enum": [
              "auto",
              "hotels",
              "flights",
              "activities",
              "car_rental",
              "airport_transfer",
              "trains"
            ],
            "type": "string",
            "description": "What to collect. Auto picks Hotels when you fill Destination, Hotel geo ID or Hotel list URL, and Flights when you fill Origin. Hotels come from Traveloka's own hotel search with live prices for your dates; flights from the flight search page; the other services list links from their Traveloka pages and need no destination.",
            "default": "auto"
          },
          "destination": {
            "title": "Destination",
            "type": "string",
            "description": "Hotels: a city, region or area as you would type it on Traveloka (Bali, Ubud, Bangkok, Singapore). Flights: destination airport IATA code (e.g. DPS). Leave every target empty with Service on Auto for a short example run."
          },
          "origin": {
            "title": "Origin IATA (flights)",
            "pattern": "^([A-Za-z]{3})?$",
            "type": "string",
            "description": "Flights: origin airport IATA code (e.g. CGK). Filling it with Service on Auto runs a flight search. With Service = Flights and no codes, the route is CGK to DPS."
          },
          "hotelListUrl": {
            "title": "Hotel list URL (optional)",
            "pattern": "^((https?://)?([a-z0-9-]+\\.)*traveloka\\.com/.*hotel/.+)?$",
            "type": "string",
            "description": "A Traveloka hotel area or region URL, such as https://www.traveloka.com/en-id/hotel/indonesia/area/ubud-102771. Returns hotels up to your row limit, with advertised starting prices rather than rates for your dates."
          },
          "geoId": {
            "title": "Hotel geo ID (optional)",
            "pattern": "^([0-9]+)?$",
            "type": "string",
            "description": "Traveloka's id of the city/area (e.g. 102746 = Bali). Use it instead of Destination to skip the lookup."
          },
          "maxResults": {
            "title": "Max results per search",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum rows for this destination, geo ID, hotel-list URL, flight route, or other scalar service target. The default is 70; larger values are collected in parts of 70. Hotels, room offers, reviews, flights, and all other row types count together. The run stops at your maximum total charge. Free Apify plan users are limited to 200 rows per run and 10 total runs.",
            "default": 70
          },
          "checkin": {
            "title": "Check-in",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
            "type": "string",
            "description": "Hotels: check-in date, YYYY-MM-DD. Default: 21 days from today."
          },
          "checkout": {
            "title": "Check-out",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
            "type": "string",
            "description": "Hotels: check-out date, YYYY-MM-DD, after check-in, at most 30 nights. Default: 2 nights."
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "type": "integer",
            "description": "Number of adults.",
            "default": 2
          },
          "children": {
            "title": "Children",
            "minimum": 0,
            "type": "integer",
            "description": "Number of children. With hotels, set Child ages instead (one age per child).",
            "default": 0
          },
          "childAges": {
            "title": "Child ages (hotels)",
            "type": "array",
            "description": "One age (0-17) per child, e.g. [7, 10]."
          },
          "rooms": {
            "title": "Rooms",
            "minimum": 1,
            "type": "integer",
            "description": "Number of hotel rooms.",
            "default": 1
          },
          "enrichDetails": {
            "title": "Hotel details and rooms",
            "type": "boolean",
            "description": "Add hotel details and separate room rows for up to the first 100 hotels, within your combined row limit. Room rows are billed individually and may be unpriced catalog entries when dated offers are unavailable.",
            "default": false
          },
          "includeReviews": {
            "title": "Hotel reviews",
            "type": "boolean",
            "description": "Add reviews shown on the hotel page as separate billed rows, within maxReviews and the combined row limit. This is a sample, not the full review history.",
            "default": false
          },
          "maxReviews": {
            "title": "Max reviews per hotel",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum review rows per hotel when includeReviews is enabled, from 1 to 20. Reviews share maxResults with hotel and room rows.",
            "default": 20
          },
          "departureDate": {
            "title": "Departure date",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
            "type": "string",
            "description": "Flights: departure date, YYYY-MM-DD. Default: 28 days from today."
          },
          "returnDate": {
            "title": "Return date",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
            "type": "string",
            "description": "Flights (round trip): return date, YYYY-MM-DD. Default: 7 days after departure."
          },
          "tripType": {
            "title": "Trip type",
            "enum": [
              "oneway",
              "roundtrip"
            ],
            "type": "string",
            "description": "oneway or roundtrip for flights.",
            "default": "oneway"
          },
          "cabinClass": {
            "title": "Cabin class",
            "enum": [
              "ECONOMY",
              "PREMIUM_ECONOMY",
              "BUSINESS",
              "FIRST"
            ],
            "type": "string",
            "description": "Flight cabin class.",
            "default": "ECONOMY"
          },
          "infants": {
            "title": "Infants",
            "minimum": 0,
            "type": "integer",
            "description": "Number of infants.",
            "default": 0
          },
          "locale": {
            "title": "Locale",
            "enum": [
              "en-id",
              "id-id",
              "en-my",
              "en-sg",
              "en-ph",
              "en-th",
              "th-th",
              "en-vn",
              "vi-vn",
              "en-au",
              "ja-jp",
              "ko-kr",
              "en-en"
            ],
            "type": "string",
            "description": "Traveloka site language and market (e.g. en-sg = English, Singapore dollars). Sets the default currency.",
            "default": "en-sg"
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "Optional currency override (e.g. USD). Defaults to the locale's currency."
          },
          "domain": {
            "title": "Domain",
            "type": "string",
            "description": "Host. Default www.traveloka.com.",
            "default": "www.traveloka.com"
          },
          "proxyCountry": {
            "title": "Collection country hint",
            "type": "string",
            "description": "Optional two-letter country code, such as SG. Leave empty to use the selected market."
          },
          "workerBaseUrl": {
            "title": "Developer test setting",
            "type": "string",
            "description": "Leave empty. Used only by the developer for testing."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}