{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb [Only $0.8💰] Search | with prices | Reviews included",
    "description": "💰 $0.80 per 1,000 only, scrape Airbnb for rentals with comprehensive data extraction. Get property descriptions, locations with coordinates, detailed pricing (base/discounts/fees), ratings, host profiles, structured amenities with icons, house rules, image galleries, and availability.",
    "version": "0.0",
    "x-build-id": "YR7Vh3ngEpwDjl6PW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~airbnb-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-airbnb-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/memo23~airbnb-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-airbnb-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/memo23~airbnb-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-airbnb-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": {
          "locationQueries": {
            "title": "Location queries",
            "type": "array",
            "description": "Enter one or more locations to search (e.g. \"London\", \"Paris, France\", \"Miami Beach, FL\"). Each location is turned into an Airbnb search. Use this for the easiest setup — no need to build a search URL. You can combine this with Start URLs.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "URLs to start with. The actor supports multiple URL types:\n\n1. **Property URLs**: `https://www.airbnb.com/rooms/28198214`\n2. **Search URLs**: `https://www.airbnb.com/s/Paris--France/homes?tab_id=home_tab`\n3. **User Profile URLs**: `https://www.airbnb.com/users/show/212911408` or `https://www.airbnb.ba/users/profile/1463755106656161646`\n\nUse a pre-built search URL to apply filters not exposed as input fields (property type, amenities, etc.).\n\n**Note**: If you specify dates/guests/price below, they will be applied to all URLs and location queries that don't already specify them.",
            "items": {
              "type": "string"
            }
          },
          "checkIn": {
            "title": "Check-in Date (Optional)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Global check-in date (YYYY-MM-DD format). This will be applied to all property and search URLs that don't have their own check-in date specified."
          },
          "checkOut": {
            "title": "Check-out Date (Optional)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Global check-out date (YYYY-MM-DD format). This will be applied to all property and search URLs that don't have their own check-out date specified."
          },
          "adults": {
            "title": "Number of Adults (Optional)",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Number of adults for the stay. Applied to all search and property URLs that don't specify their own adults parameter.",
            "default": 2
          },
          "children": {
            "title": "Number of Children (Optional)",
            "minimum": 0,
            "maximum": 15,
            "type": "integer",
            "description": "Number of children (ages 2–12). Filters searches by guest capacity."
          },
          "infants": {
            "title": "Number of Infants (Optional)",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Number of infants (under 2). Filters searches by guest capacity."
          },
          "pets": {
            "title": "Number of Pets (Optional)",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Number of pets. Filters searches to pet-friendly listings."
          },
          "priceMin": {
            "title": "Minimum nightly price (Optional)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings at or above this nightly price (in the selected currency). When Full coverage is on, the price-band splitting is clipped to this lower bound."
          },
          "priceMax": {
            "title": "Maximum nightly price (Optional)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include listings at or below this nightly price (in the selected currency). When Full coverage is on, the price-band splitting is clipped to this upper bound."
          },
          "minBeds": {
            "title": "Minimum beds (Optional)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum number of beds."
          },
          "minBedrooms": {
            "title": "Minimum bedrooms (Optional)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum number of bedrooms."
          },
          "minBathrooms": {
            "title": "Minimum bathrooms (Optional)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum number of bathrooms."
          },
          "locale": {
            "title": "Language",
            "enum": [
              "en-US",
              "en-GB",
              "de-DE",
              "fr-FR",
              "es-ES",
              "it-IT",
              "pt-BR",
              "ja-JP",
              "ko-KR",
              "zh-CN",
              "zh-TW",
              "nl-NL",
              "pl-PL",
              "ru-RU"
            ],
            "type": "string",
            "description": "Language for listing descriptions and labels.",
            "default": "en-US"
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "CAD",
              "AUD",
              "JPY",
              "CNY",
              "KRW",
              "BRL",
              "INR",
              "MXN",
              "CHF",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "CZK",
              "HUF",
              "RUB",
              "TRY"
            ],
            "type": "string",
            "description": "Currency for prices.",
            "default": "USD"
          },
          "skipDetailPages": {
            "title": "Search-only mode (fast & cheap)",
            "type": "boolean",
            "description": "Skip the per-listing detail fetch and return only search-result-level data (id, name, price, rating, coordinates, photo) for each listing. Much faster and cheaper for market scans, but omits description, amenities, host info, full photos, reviews and calendar. Only affects location queries and search URLs.",
            "default": false
          },
          "includeReviews": {
            "title": "Include reviews",
            "type": "boolean",
            "description": "If checked, it will include reviews in the output.",
            "default": false
          },
          "maxReviewsPerListing": {
            "title": "Max reviews per listing",
            "minimum": 0,
            "type": "integer",
            "description": "Cap how many reviews are fetched per listing when Include reviews is on (0 = all). Lower values are faster and cheaper for review-heavy listings.",
            "default": 0
          },
          "includeRevenueEstimate": {
            "title": "Include occupancy & revenue estimate",
            "type": "boolean",
            "description": "If checked, fetches each listing's 12-month availability calendar and adds occupancy rates (30/90/365 days), booked vs available nights, an estimated revenue (booked nights × nightly price), and average minimum-stay. Adds one extra request per listing, so runs are slower.",
            "default": false
          },
          "calendarMonths": {
            "title": "Per-day availability calendar (months)",
            "minimum": 0,
            "maximum": 12,
            "type": "integer",
            "description": "Emit the full per-day availability calendar for each listing, 0–12 months ahead (0 = off). Each day includes date, availability, check-in/check-out eligibility, min/max nights, and nightly price. Adds one request per listing (shared with the occupancy estimate if that's also on).",
            "default": 0
          },
          "maxItems": {
            "title": "Maximum number of items OR limit the results per crawl",
            "type": "integer",
            "description": "Maximum number of items that will be scraped.",
            "default": 10000
          },
          "fullCoverage": {
            "title": "Full coverage (bypass the ~270-result search cap)",
            "type": "boolean",
            "description": "For search/city URLs, Airbnb returns at most ~270 results per query. When enabled, the Actor splits the search into nightly-price bands and de-duplicates, surfacing far more of a dense city's listings (up to Max results). Adds more requests, so runs are slower. No effect on single property/room URLs.",
            "default": false
          },
          "monitoringMode": {
            "title": "Run in monitoring mode where only newly listings compared to previous runs will be scraped",
            "type": "boolean",
            "description": "If checked, it will only scrape newly listings compared to what has been scraped in previous runs.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "type": "integer",
            "description": "Maximum number of pages that can be processed at the same time.",
            "default": 10
          },
          "minConcurrency": {
            "title": "Min Concurrency",
            "type": "integer",
            "description": "Minimum number of pages that will be processed at the same time.",
            "default": 1
          },
          "maxRequestRetries": {
            "title": "Max Request Retries",
            "type": "integer",
            "description": "Number of times the crawler will retry a failed request before giving up.",
            "default": 100
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}