{
  "openapi": "3.0.1",
  "info": {
    "title": "Zoover Listings Extractor",
    "description": "Zoover listings extractor that scrapes hotel and holiday listings by country, region, or city, returning review scores, star ratings, awards, and package prices as clean rows so travel SEO and pricing teams can track the Benelux market without copying data by hand.",
    "version": "0.0",
    "x-build-id": "tvgiaFzFlhqfGnP84"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kawsar~zoover-listings-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kawsar-zoover-listings-extractor",
        "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/kawsar~zoover-listings-extractor/runs": {
      "post": {
        "operationId": "runs-sync-kawsar-zoover-listings-extractor",
        "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/kawsar~zoover-listings-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-kawsar-zoover-listings-extractor",
        "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": {
          "brand": {
            "title": "Zoover site",
            "enum": [
              "ZVRNL",
              "ZVRBE"
            ],
            "type": "string",
            "description": "Which Zoover storefront to search. ZVRNL returns Dutch listings and prices, ZVRBE returns the Belgian catalogue.",
            "default": "ZVRNL"
          },
          "transportType": {
            "title": "Transport type",
            "enum": [
              "INCLUDING_FLIGHT",
              "OWN"
            ],
            "type": "string",
            "description": "INCLUDING_FLIGHT returns flight and hotel packages. OWN returns accommodation-only stays where the traveller arranges transport.",
            "default": "INCLUDING_FLIGHT"
          },
          "countryIds": {
            "title": "Country IDs",
            "type": "array",
            "description": "Zoover destination IDs for countries, one per line. Example: 933 is Turkey, 919 is Spain, 922 is Greece. Find the ID in the heliosId value of any destination page. Leave empty to search every country.",
            "items": {
              "type": "string"
            }
          },
          "regionIds": {
            "title": "Region IDs",
            "type": "array",
            "description": "Zoover region IDs, one per line. Example: 4828 is the Turkish Riviera. Use this to target a coastline or province instead of a whole country.",
            "items": {
              "type": "string"
            }
          },
          "cityIds": {
            "title": "City IDs",
            "type": "array",
            "description": "Zoover city IDs, one per line. Example: 99048 is Belek. This is the tightest geographic filter and usually returns well under 100 properties.",
            "items": {
              "type": "string"
            }
          },
          "entityIds": {
            "title": "Accommodation entity IDs",
            "type": "array",
            "description": "Pull specific properties by their Zoover entity ID, one per line. Useful for tracking prices on a fixed shortlist of hotels.",
            "items": {
              "type": "string"
            }
          },
          "durationNights": {
            "title": "Trip lengths in nights",
            "type": "array",
            "description": "How many nights the trip should last, one number per line. Add several values to widen the search. Defaults to 5 through 9 nights.",
            "default": [
              "5",
              "6",
              "7",
              "8",
              "9"
            ],
            "items": {
              "type": "string"
            }
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 9,
            "type": "integer",
            "description": "Number of adults travelling. Prices are quoted for this party size.",
            "default": 2
          },
          "children": {
            "title": "Children",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Number of children aged 2 to 17 travelling.",
            "default": 0
          },
          "babies": {
            "title": "Babies",
            "minimum": 0,
            "maximum": 4,
            "type": "integer",
            "description": "Number of infants under 2 travelling.",
            "default": 0
          },
          "starRatings": {
            "title": "Star ratings",
            "type": "array",
            "description": "Keep only properties with these star ratings, one per line. Allowed values: 0, 1, 2, 3, 4, 5.",
            "items": {
              "type": "string"
            }
          },
          "minReviewScore": {
            "title": "Minimum review score",
            "enum": [
              "",
              ">=6",
              ">=7",
              ">=8",
              ">=9"
            ],
            "type": "string",
            "description": "Keep only properties at or above this Zoover review score out of 10.",
            "default": ""
          },
          "accommodationTypes": {
            "title": "Accommodation types",
            "type": "array",
            "description": "One type per line. Allowed values: hotel, aparthotel, resort, appartement, villa, bungalow, chalet, camping, bungalow_tent, bed_and_breakfast, pension, hostel, gasthof, country_house, castle, lodge, vakation_house, other.",
            "items": {
              "type": "string"
            }
          },
          "themes": {
            "title": "Holiday themes",
            "type": "array",
            "description": "One theme per line. Allowed values: city_trip, sun_holiday, child_friendly, luxe, all_inclusive, boutique, aqua_park, distant_destination, adult_only, budget, small_scale, wellness, golf, workation.",
            "items": {
              "type": "string"
            }
          },
          "attributes": {
            "title": "Property attributes",
            "type": "array",
            "description": "One attribute per line. Allowed values: city_trip, sun_holiday, child_friendly, luxe, boutique, aqua_park, distant_destination, adult_only, budget, small_scale, wellness, golf, workation, package_holiday, car_holiday, winter_sun, ski_holiday, children_deals, has_family_rooms.",
            "items": {
              "type": "string"
            }
          },
          "facilities": {
            "title": "Facilities",
            "type": "array",
            "description": "One facility per line. Allowed values: wifi, airco, playground, entertainment, restaurant, accessibility, pets_allowed, pool, jacuzzi, childrens_pool, waterpark, family_room, baby_cot, kids_club, gameroom, sport_facilities.",
            "items": {
              "type": "string"
            }
          },
          "awards": {
            "title": "Zoover awards",
            "type": "array",
            "description": "Keep only award winners. One per line, either gold or silver. Award winners are the highest rated properties in their destination.",
            "items": {
              "type": "string"
            }
          },
          "departureAirports": {
            "title": "Departure airports",
            "type": "array",
            "description": "IATA codes, one per line, applied only when transport type is a package with flight. Allowed values: AMS, ANR, BRU, CGN, CRL, DTM, DUS, EIN, FMO, GRQ, MST, NRN, RTM.",
            "items": {
              "type": "string"
            }
          },
          "tourOperators": {
            "title": "Tour operators",
            "type": "array",
            "description": "Operator codes, one per line, to restrict which supplier the package comes from.",
            "items": {
              "type": "string"
            }
          },
          "sortingOrder": {
            "title": "Sort results by",
            "enum": [
              "popularity_desc",
              "price",
              "price_desc",
              "hotel_review_rating",
              "price_quality"
            ],
            "type": "string",
            "description": "Order the search results before they are collected. Popularity mirrors the default order on the Zoover website.",
            "default": "popularity_desc"
          },
          "maxItems": {
            "title": "Maximum listings",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Stop after this many listings. Keeps runs cheap and predictable.",
            "default": 100
          },
          "pageSize": {
            "title": "Results per request",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many listings to pull per API call. Larger pages mean fewer requests and faster runs.",
            "default": 50
          },
          "startPage": {
            "title": "Start page",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Page number to begin from. Set this above 1 to resume a run or to skip results you already have.",
            "default": 1
          },
          "includeOffers": {
            "title": "Include full offer details",
            "type": "boolean",
            "description": "Attach the raw offer array to every listing, with room codes, board types, flight segments, surcharges, and fund breakdowns. Turn this off for a smaller, flatter dataset.",
            "default": true
          },
          "includeAggregations": {
            "title": "Save facet counts",
            "type": "boolean",
            "description": "Store the search facet counts (star ratings, themes, facilities, regions, award winners) in the key value store under AGGREGATIONS. Handy for keyword research and market sizing.",
            "default": false
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 180,
            "type": "integer",
            "description": "How long to wait for a single API response before giving up on it.",
            "default": 30
          },
          "timeoutSecs": {
            "title": "Run timeout (seconds)",
            "minimum": 30,
            "maximum": 3600,
            "type": "integer",
            "description": "Overall time budget for the run. The actor stops paginating and finishes cleanly once this is reached.",
            "default": 300
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Select proxies to use for requests. Helps avoid IP blocking and rate limits. Datacenter proxies are fastest; Residential proxies are harder to detect."
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}