{
  "openapi": "3.0.1",
  "info": {
    "title": "Vrbo Scraper",
    "description": "Scrape Vrbo.com vacation rentals — property details, reviews, host info, calendar availability, and search by location / coordinates / polygon / URL plus autocomplete. One dataset row per listing/review/host/day with photo, price, rating and Raw JSON.",
    "version": "1.0",
    "x-build-id": "BMomAIa2UwQ6FADbs"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/one-api~vrbo-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-one-api-vrbo-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/one-api~vrbo-scraper/runs": {
      "post": {
        "operationId": "runs-sync-one-api-vrbo-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/one-api~vrbo-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-one-api-vrbo-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": {
          "property_inputs": {
            "title": "Property ID or Vrbo URL (one per line)",
            "type": "array",
            "description": "Pull full details for a specific Vrbo property (title, description, rooms, amenities, photos, host, reviews summary, policies, price). Auto-detects each entry: all digits → propertyId (Vrbo's internal numeric id); http(s) URL → Vrbo property URL (the actor extracts `expediaPropertyId` from the query string, or falls back to a numeric path segment).",
            "items": {
              "type": "string"
            }
          },
          "reviews_inputs": {
            "title": "Property ID for reviews (one per line)",
            "type": "array",
            "description": "Pull paginated reviews for a property. Each review (author, date, rating, text, host reply) is pushed as its own dataset row. Use `reviews_resultCount` and `reviews_pages` below to control how many to fetch.",
            "items": {
              "type": "string"
            }
          },
          "reviews_resultCount": {
            "title": "Reviews per page",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Vrbo returns up to 50 reviews per request. Defaults to 10. Used for every entry in the Reviews section.",
            "default": 10
          },
          "reviews_pages": {
            "title": "Reviews pages per property",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many pages of reviews to fetch per property. Combined with `reviews_resultCount` (e.g. 50 × 5 = up to 250 reviews per property).",
            "default": 1
          },
          "reviews_sortOrder": {
            "title": "Review sort order",
            "enum": [
              "RECOMMENDED",
              "NEWEST_TO_OLDEST",
              "OLDEST_TO_NEWEST",
              "HIGHEST_RATED",
              "LOWEST_RATED"
            ],
            "type": "string",
            "description": "How to sort reviews. `RECOMMENDED` is Vrbo's default ranking; `NEWEST_TO_OLDEST` and `OLDEST_TO_NEWEST` are date-based; `HIGHEST_RATED` and `LOWEST_RATED` are by stars.",
            "default": "RECOMMENDED"
          },
          "host_inputs": {
            "title": "Property ID for host info (one per line)",
            "type": "array",
            "description": "Pull the `About the Host` block for a property: host name, profile photo, languages, response rate, years hosting, premier-host badge, and the host bio text. One dataset row per property.",
            "items": {
              "type": "string"
            }
          },
          "availability_inputs": {
            "title": "Property ID for calendar availability (one per line)",
            "type": "array",
            "description": "Pull the calendar of available dates and nightly rates for a property. Vrbo returns a ~12-month window of per-day data; each day with `available=true` (and any `displayPrice`) is pushed as its own dataset row. Optional `availability_startDate` / `availability_endDate` below override the default window.",
            "items": {
              "type": "string"
            }
          },
          "availability_startDate": {
            "title": "Availability start date (YYYY-MM-DD)",
            "type": "string",
            "description": "Optional ISO date (e.g. `2026-06-01`). When omitted, Vrbo returns its default 12-month window starting today.",
            "default": ""
          },
          "availability_endDate": {
            "title": "Availability end date (YYYY-MM-DD)",
            "type": "string",
            "description": "Optional ISO date (e.g. `2027-05-31`). Must be after `availability_startDate`.",
            "default": ""
          },
          "availability_onlyAvailable": {
            "title": "Only push available days",
            "type": "boolean",
            "description": "When checked (default), only days where Vrbo returns `available=true` are pushed as rows. Uncheck to also include blocked/unavailable days (useful if you want a full month-by-month map). The complete `days[]` array is always in the Raw column of every row.",
            "default": true
          },
          "search_inputs": {
            "title": "Search location, lat/lng radius, polygon, or Vrbo URL (one per line)",
            "type": "array",
            "description": "Paginated Vrbo property search. Auto-detects each entry:\n• `Orlando, Florida` or `Miami Beach` (free-text destination — resolved via autocomplete to a regionId)\n• `28.5383,-81.3792,5` (lat,lng,radius_miles — circle search)\n• `28.6,-81.5;28.6,-81.2;28.4,-81.2;28.4,-81.5` (polygon — `lat,lng;lat,lng;...` with ≥3 points)\n• `https://www.vrbo.com/search?destination=Orlando&regionId=2693` (Vrbo search URL)\n\nEach search returns up to 50 listings per page. Use `pages` below to fetch multiple pages.",
            "items": {
              "type": "string"
            }
          },
          "checkIn": {
            "title": "Check-in date (YYYY-MM-DD)",
            "type": "string",
            "description": "Optional. Filters search results to properties available on these dates and prices them for the stay. Combine with `checkOut`. Leaving both blank returns flexible-date pricing.",
            "default": ""
          },
          "checkOut": {
            "title": "Check-out date (YYYY-MM-DD)",
            "type": "string",
            "description": "Optional. Pair with `checkIn`.",
            "default": ""
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Number of adult guests for pricing. Defaults to 2.",
            "default": 2
          },
          "children": {
            "title": "Children",
            "minimum": 0,
            "maximum": 8,
            "type": "integer",
            "description": "Number of children. Defaults to 0.",
            "default": 0
          },
          "priceRange": {
            "title": "Price Range (USD per night)",
            "type": "string",
            "description": "`min:100`, `max:500`, or `min:100,max:500`. Filter is applied to nightly price.",
            "default": ""
          },
          "bedroomsRange": {
            "title": "Bedrooms Range",
            "type": "string",
            "description": "`min:1`, `max:4`, or `min:1,max:4`.",
            "default": ""
          },
          "bathroomsRange": {
            "title": "Bathrooms Range",
            "type": "string",
            "description": "`min:1`, `max:3`, or `min:1,max:3`.",
            "default": ""
          },
          "propertyType": {
            "title": "Property Types",
            "type": "string",
            "description": "Comma-separated Vrbo property types. Empty for all. Allowed values include: `HOUSE, APARTMENT, CONDO, VILLA, CABIN, COTTAGE, BUNGALOW, CHALET, STUDIO, HOTEL_RESORT, BED_AND_BREAKFAST, TOWNHOUSE`.",
            "default": ""
          },
          "amenities": {
            "title": "Required Amenities",
            "type": "string",
            "description": "Comma-separated Vrbo amenity tokens. Common: `POOL, HOT_TUB, WIFI, AIR_CONDITIONING, KITCHEN, WASHER, PETS_ALLOWED, PARKING, OCEANFRONT, BEACHFRONT, FIREPLACE, GYM`.",
            "default": ""
          },
          "sortOrder": {
            "title": "Sort Order",
            "enum": [
              "RECOMMENDED",
              "PRICE_LOW_TO_HIGH",
              "PRICE_HIGH_TO_LOW",
              "REVIEW",
              "DISTANCE"
            ],
            "type": "string",
            "description": "How to sort search results. `RECOMMENDED` is Vrbo's default.",
            "default": "RECOMMENDED"
          },
          "pages": {
            "title": "Pages to fetch per search",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Each page = up to 50 listings (Vrbo's default page size).",
            "default": 1
          },
          "resultCount": {
            "title": "Results per page",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Listings per search page. Default 50 (Vrbo's default).",
            "default": 50
          },
          "autocomplete_inputs": {
            "title": "Autocomplete query (one per line)",
            "type": "array",
            "description": "Vrbo search-box suggestions. Returns regionId + region name + geo type (CITY, NEIGHBORHOOD, MULTI_CITY, PROPERTY, AIRPORT, etc.) for any partial query. Useful for finding the canonical regionId to use in your own pipelines.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}