{
  "openapi": "3.0.1",
  "info": {
    "title": "Vacation Rental Dynamic Pricing and Demand API: Wheelhouse",
    "description": "Vacation rental and Airbnb dynamic pricing API: daily price recommendations, base price, occupancy, ADR, RevPAR and comp set KPIs, neighborhood prices, market time series and demand signals by latitude and longitude, through the Wheelhouse API. Bring your own key.",
    "version": "0.1",
    "x-build-id": "t2cccQaxVbgkg8JFo"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~vacation-rental-dynamic-pricing-demand-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-vacation-rental-dynamic-pricing-demand-api",
        "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/nabeelbaghoor~vacation-rental-dynamic-pricing-demand-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-vacation-rental-dynamic-pricing-demand-api",
        "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/nabeelbaghoor~vacation-rental-dynamic-pricing-demand-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-vacation-rental-dynamic-pricing-demand-api",
        "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": {
          "mode": {
            "title": "What to read",
            "enum": [
              "listings",
              "priceRecommendations",
              "basePriceRecommendation",
              "listingKpis",
              "monthlyKpis",
              "neighborhoodPricing",
              "neighborhoodOccupancy",
              "markets",
              "marketTimeSeries",
              "demandSignal"
            ],
            "type": "string",
            "description": "Each mode calls one documented read endpoint of the Wheelhouse Revenue Management API, or the Demand Signal API. Listing modes take listing IDs (or All listings); the market time series takes market IDs; the demand signal takes coordinates. Nothing is ever written to your Wheelhouse account.",
            "default": "listings"
          },
          "listingIds": {
            "title": "Listings",
            "type": "array",
            "description": "Listing modes. One listing per line as channel:id with the id and channel from the listings mode (such as airbnb:12345678 or vrbo:321.4567), or a bare ID read under the channel below. A Wheelhouse listing ID works with the channel wheelhouse.",
            "items": {
              "type": "string"
            }
          },
          "channel": {
            "title": "Channel for bare IDs",
            "type": "string",
            "description": "Listing modes. The channel a bare listing ID is read under: wheelhouse (the default) reads it as a Wheelhouse listing ID; otherwise the channel field from the listings mode, such as airbnb.",
            "default": "wheelhouse"
          },
          "allListings": {
            "title": "All listings",
            "type": "boolean",
            "description": "Listing modes. When no listing IDs are given, read the portfolio first (not charged) and then every listing in it, up to 1,000.",
            "default": false
          },
          "includeInactive": {
            "title": "Include inactive listings",
            "type": "boolean",
            "description": "Listings mode and All listings. Also return inactive listings; hidden listings are returned either way.",
            "default": false
          },
          "includeManagedListings": {
            "title": "Include managed listings",
            "type": "boolean",
            "description": "Listings mode and All listings. Include listings you manage for another Wheelhouse account through shared access, not only your own.",
            "default": true
          },
          "includePhotos": {
            "title": "Include photo URLs",
            "type": "boolean",
            "description": "Listings mode. Add the URL of each listing photo to the listing record.",
            "default": false
          },
          "ownerUserId": {
            "title": "Owner user ID",
            "minimum": 1,
            "type": "integer",
            "description": "Optional, listings mode and All listings. Return only the listings of this Wheelhouse user, such as a team you belong to."
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "Optional, price and base price modes. ISO-4217 code such as USD, EUR or GBP to convert prices to; the listing currency by default."
          },
          "attribution": {
            "title": "Price attribution",
            "type": "boolean",
            "description": "Price recommendations mode. Add the per factor attribution of each daily price: seasonality, local demand, availability, time, day of week, scarcity, occupancy pacing, historical anchoring, restrictions and your adjustments.",
            "default": false
          },
          "priceModel": {
            "title": "Price model",
            "enum": [
              "",
              "current",
              "opt_in"
            ],
            "type": "string",
            "description": "Optional, price recommendations mode. The price model version to read; empty uses the model active for the listing.",
            "default": ""
          },
          "countryCode": {
            "title": "Country code",
            "type": "string",
            "description": "Market list mode (required) and demand signal mode. 2 letter ISO-3166 code such as US, GB, FR or ES. A demand location line may carry its own code instead.",
            "default": "US"
          },
          "marketIds": {
            "title": "Market IDs",
            "type": "array",
            "description": "Market time series mode. One Wheelhouse market ID per line, from the market list mode or the market_id of a listing. Only markets where you hold a Pro listing are readable.",
            "items": {
              "type": "string"
            }
          },
          "metrics": {
            "title": "Market metrics",
            "type": "array",
            "description": "Optional, market time series mode. Metrics to return; empty returns all.",
            "items": {
              "type": "string",
              "enum": [
                "occupancy",
                "occupancy_adjusted",
                "nights_bookable",
                "asking_rate_w_fees",
                "adr_w_fees",
                "lead_time",
                "revpar_adjusted_w_fees",
                "revpar_w_fees",
                "revenue_w_fees"
              ],
              "enumTitles": [
                "Occupancy (booked / calendar nights)",
                "Open occupancy (booked / bookable nights)",
                "Bookable nights",
                "Asking rate with fees",
                "ADR with fees",
                "Lead time (days)",
                "RevPAR over open nights with fees",
                "RevPAR with fees",
                "Revenue with fees"
              ]
            }
          },
          "startDate": {
            "title": "Start date",
            "type": "string",
            "description": "Optional, market time series mode. yyyy-mm-dd, within 3 years back and 1 year ahead; today by default."
          },
          "endDate": {
            "title": "End date",
            "type": "string",
            "description": "Optional, market time series mode. yyyy-mm-dd after the start date; one year from today by default."
          },
          "performance": {
            "title": "Performance tier",
            "enum": [
              "",
              "low",
              "average",
              "high"
            ],
            "type": "string",
            "description": "Optional, market time series mode. Limit the market to listings of one performance tier.",
            "default": ""
          },
          "bedrooms": {
            "title": "Bedroom group",
            "type": "string",
            "description": "Optional, market time series mode. A bedroom group of the market such as 0, 1, 2 or 6+; groups differ by market, and a group the market lacks is refused with the groups it has."
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "",
              "apartment",
              "bnb",
              "boat",
              "bus",
              "cabin",
              "camper",
              "camping",
              "castle",
              "holiday_home",
              "hostel",
              "hotel",
              "house",
              "houseboat",
              "island",
              "mill",
              "other",
              "room",
              "shared",
              "tower"
            ],
            "type": "string",
            "description": "Optional, market time series mode. Limit the market to one property type.",
            "default": ""
          },
          "locations": {
            "title": "Demand locations (latitude,longitude)",
            "type": "array",
            "description": "Demand signal mode. One latitude,longitude pair in decimal degrees per line, optionally followed by a country code, such as 34.0522,-118.2437,US or 41.3874,2.1686,ES.",
            "items": {
              "type": "string"
            }
          },
          "baths": {
            "title": "Bathrooms",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Optional, demand signal mode. Bathrooms of the property, 1 to 10; the API default is 1."
          },
          "guestsIncluded": {
            "title": "Guests included",
            "minimum": 1,
            "type": "integer",
            "description": "Optional, demand signal mode. Guests included in the nightly price; the API default is 2."
          },
          "rowLayout": {
            "title": "Row layout",
            "enum": [
              "days",
              "series"
            ],
            "type": "string",
            "description": "Daily modes. One row per stay date (or month), or one row per listing, market or location holding every date with point count, first and last date, and min, max and mean per value.",
            "default": "days"
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "The most rows this run returns and charges for. Price recommendations for a Pro listing run about 540 daily rows; a market year is 365.",
            "default": 500
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "Pacing for calls to Wheelhouse. Empty means 50 for the RM API (its default limit is 60) and 20 for the Demand Signal API. Throttled calls are retried after the Retry-After pause."
          },
          "apiKey": {
            "title": "Wheelhouse RM API key",
            "type": "string",
            "description": "Your Revenue Management API key from your Wheelhouse account settings (Api Key). Stored as a secret, sent only in the X-Integration-Api-Key header to api.usewheelhouse.com and never logged. You can instead set the DATA_API_KEY environment secret."
          },
          "demandApiKey": {
            "title": "Demand Signal integration key",
            "type": "string",
            "description": "Optional, demand signal mode. The integration key Wheelhouse issued you for the Demand Signal API; when empty the RM API key is tried."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}