{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb Full Year Price Tracker Scraper",
    "description": "Track Airbnb prices for an entire year from any listing. This actor collects daily rates, seasonal changes, availability, and minimum stay rules. Ideal for revenue optimization, competitive analysis, and long term pricing research.",
    "version": "0.1",
    "x-build-id": "db0OWN9w6kah9yKNZ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scraper-engine~airbnb-full-year-price-tracker-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scraper-engine-airbnb-full-year-price-tracker-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/scraper-engine~airbnb-full-year-price-tracker-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scraper-engine-airbnb-full-year-price-tracker-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/scraper-engine~airbnb-full-year-price-tracker-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scraper-engine-airbnb-full-year-price-tracker-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",
        "required": [
          "startUrls"
        ],
        "properties": {
          "startUrls": {
            "title": "🔗 Airbnb URLs / Listing IDs / Keywords",
            "type": "array",
            "description": "Airbnb room URLs, numeric listing IDs, or search keywords. Example: 'https://www.airbnb.com/rooms/7431972', '7431972', or 'luxury apartment in Paris'.",
            "items": {
              "type": "string"
            }
          },
          "startDate": {
            "title": "📆 Start Date",
            "type": "string",
            "description": "First check-in date to track (absolute YYYY-MM-DD or relative like '7 days'). Past dates are shifted to tomorrow. Default: tomorrow."
          },
          "endDate": {
            "title": "📆 End Date (optional)",
            "type": "string",
            "description": "Last check-in date to track (absolute or relative). If empty, 'Total Days to Track' is used instead. Range is capped to ~12 months (calendar coverage)."
          },
          "numberOfDays": {
            "title": "🗓️ Total Days to Track",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Used only when End Date is empty: number of days from Start Date to track. Example: 30. Only genuinely bookable dates in this window are priced.",
            "default": 30
          },
          "nightsPerStay": {
            "title": "🌙 Nights Per Stay",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Nights per simulated booking. 0 = auto: use each date's own minimum-nights requirement (recommended, most accurate). If set, it is raised to the date's minimum when necessary.",
            "default": 0
          },
          "onlyBookable": {
            "title": "✅ Only Bookable Dates",
            "type": "boolean",
            "description": "When ON, only bookable dates (with a real price) are emitted. When OFF, blocked/unavailable dates are also emitted as rows with a null price (never charged).",
            "default": true
          },
          "dayFilter": {
            "title": "📅 Day Filter",
            "enum": [
              "all",
              "weekends",
              "weekdays"
            ],
            "type": "string",
            "description": "Restrict tracking to all days, weekends only (Fri/Sat check-in), or weekdays only.",
            "default": "all"
          },
          "maxNightlyPrice": {
            "title": "💰 Max Nightly Price",
            "minimum": 0,
            "type": "integer",
            "description": "Drop priced dates whose nightly rate exceeds this ceiling (in the selected currency). 0 = no ceiling.",
            "default": 0
          },
          "adults": {
            "title": "🧑 Adults",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Adult guests in the price request. Default 2.",
            "default": 2
          },
          "children": {
            "title": "🧒 Children",
            "minimum": 0,
            "maximum": 16,
            "type": "integer",
            "description": "Children in the guest count. Default 0.",
            "default": 0
          },
          "infants": {
            "title": "👶 Infants",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Infants in the guest count. Default 0.",
            "default": 0
          },
          "pets": {
            "title": "🐾 Pets",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Pets traveling with the guests. Default 0.",
            "default": 0
          },
          "currency": {
            "title": "💱 Currency",
            "type": "string",
            "description": "Currency for displayed prices. Airbnb supports 40+ ISO codes — enter any (e.g. USD, GBP, EUR, CAD, AUD, JPY, MXN, BRL, INR, AED). Default USD.",
            "default": "USD"
          },
          "includeAmenities": {
            "title": "🛋️ Include Amenities",
            "type": "boolean",
            "description": "Fetch the full amenities list on the per-listing metadata call. Default ON.",
            "default": true
          },
          "includePhotos": {
            "title": "🖼️ Include Photo Gallery",
            "type": "boolean",
            "description": "Fetch the full photo gallery (all images) on the per-listing metadata call. Default ON.",
            "default": true
          },
          "maxListings": {
            "title": "🔢 Max Listings Per Keyword",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "For keyword inputs, how many listings to expand each search into. Default 5.",
            "default": 5
          },
          "maxPriceRequestsPerListing": {
            "title": "🧮 Max Price Requests Per Listing",
            "minimum": 0,
            "type": "integer",
            "description": "Safety cap on per-date price requests per listing (cost control). 0 = no cap (price every bookable date in range).",
            "default": 0
          },
          "requestThrottleSeconds": {
            "title": "⏱️ Request Throttle (seconds)",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "Delay between requests in the price loop to avoid rate limits. Default 0.7.",
            "default": 0.7
          },
          "proxyConfiguration": {
            "title": "🛡️ Proxy Configuration",
            "type": "object",
            "description": "Apify Proxy settings. The actor starts without proxy for lower cost, escalates to datacenter, then reserves residential for the price loop when blocked."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}