{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb Listings Scraper - Stays, Prices & Ratings",
    "description": "Scrape Airbnb vacation rentals by city across global markets. Extract stay prices, ratings, review counts, images, and listing URLs. Filter by room type, category tags, and property type for Excel, CSV, or JSON.",
    "version": "0.4",
    "x-build-id": "xEkycw9SM8iYzbU1a"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lentic_clockss~airbnb-listings-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lentic_clockss-airbnb-listings-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/lentic_clockss~airbnb-listings-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lentic_clockss-airbnb-listings-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/lentic_clockss~airbnb-listings-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lentic_clockss-airbnb-listings-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": {
          "destination": {
            "title": "Destination",
            "type": "string",
            "description": "City, region, or country to search (e.g. 'Osaka', 'Paris', 'Bali'). Required when startUrls and detailUrls are empty.",
            "default": "Singapore"
          },
          "market": {
            "title": "Market / storefront",
            "enum": [
              "AE",
              "AL",
              "AM",
              "AR",
              "AR_AR",
              "AT",
              "AU",
              "AZ",
              "BA",
              "BE",
              "BE_FR",
              "BG",
              "BO",
              "BR",
              "BZ",
              "CA",
              "CA_FR",
              "CH",
              "CH_FR",
              "CH_IT",
              "CL",
              "CN",
              "CO",
              "CR",
              "CZ",
              "DE",
              "DK",
              "EC",
              "EE",
              "ES",
              "ES_CAT",
              "FI",
              "FR",
              "GB",
              "GE",
              "GR",
              "GT",
              "GY",
              "HK",
              "HN",
              "HR",
              "HU",
              "ID",
              "IE",
              "IE_GA",
              "IL",
              "IN",
              "IN_HI",
              "IN_KN",
              "IN_MR",
              "IS",
              "IT",
              "JP",
              "KR",
              "LT",
              "LU",
              "LU_DE",
              "LV",
              "ME",
              "MK",
              "MT",
              "MX",
              "MY",
              "NI",
              "NL",
              "NO",
              "NZ",
              "PA",
              "PE",
              "PH",
              "PL",
              "PT",
              "PY",
              "RO",
              "RS",
              "RU",
              "SE",
              "SG",
              "SI",
              "SK",
              "SV",
              "SW",
              "TH",
              "TR",
              "TW",
              "UA",
              "US",
              "US_ES",
              "US_ZH",
              "US_ZH_T",
              "VE",
              "VN",
              "ZA_XH",
              "ZA_ZU"
            ],
            "type": "string",
            "description": "Airbnb country/language storefront. Controls host domain, default locale, and currency.",
            "default": "US"
          },
          "domain": {
            "title": "Domain override",
            "type": "string",
            "description": "Optional host override (e.g. www.airbnb.jp). Leave empty to use the market default.",
            "default": ""
          },
          "locale": {
            "title": "Locale override",
            "type": "string",
            "description": "Optional storefront language sent with HTTP requests (e.g. ja-JP). Leave empty to use the market default.",
            "default": ""
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "ISO currency for display_currency on search URLs and price parsing fallback (e.g. USD, JPY, EUR). Leave empty to use the market default.",
            "default": ""
          },
          "placeId": {
            "title": "Google Place ID",
            "type": "string",
            "description": "Optional place_id to stabilize geography (e.g. ChIJ...).",
            "default": ""
          },
          "checkin": {
            "title": "Check-in Date",
            "type": "string",
            "description": "Check-in date in YYYY-MM-DD format. Leave empty for flexible search.",
            "default": ""
          },
          "checkout": {
            "title": "Check-out Date",
            "type": "string",
            "description": "Check-out date in YYYY-MM-DD format. Leave empty for flexible search.",
            "default": ""
          },
          "adults": {
            "title": "Number of Adults",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Number of adult guests.",
            "default": 2
          },
          "roomTypes": {
            "title": "Room types",
            "uniqueItems": true,
            "type": "array",
            "description": "Type of place filters (OR). Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "Entire home/apt",
                "Private room",
                "Shared room",
                "Hotel room"
              ]
            },
            "default": []
          },
          "categoryTags": {
            "title": "Category tags",
            "uniqueItems": true,
            "type": "array",
            "description": "Airbnb stays category rail filters. Each tag runs a separate search with its own maxResults allowance; results are merged and deduped. Labels map to Tag:NNNN; raw Tag:NNNN also accepted.",
            "items": {
              "type": "string",
              "enum": [
                "A-frames",
                "Amazing pools",
                "Amazing views",
                "Arctic",
                "Barns",
                "Beach",
                "Beachfront",
                "Bed and breakfasts",
                "Boats",
                "Cabins",
                "Campers",
                "Camping",
                "Casas particulares",
                "Castles",
                "Caves",
                "Chef's kitchens",
                "Containers",
                "Countryside",
                "Creative spaces",
                "Cycladic homes",
                "Dammusi",
                "Desert",
                "Design",
                "Domes",
                "Earth homes",
                "Farms",
                "Golfing",
                "Grand pianos",
                "Hanoks",
                "Historical homes",
                "Houseboats",
                "Iconic cities",
                "Icons",
                "Islands",
                "Kezhans",
                "Lake",
                "Lakefront",
                "Luxe",
                "Mansions",
                "Minsus",
                "National parks",
                "Off-the-grid",
                "OMG!",
                "Play",
                "Riads",
                "Ryokans",
                "Shared homes",
                "Shepherd's huts",
                "Ski-in/out",
                "Skiing",
                "Surfing",
                "Tiny homes",
                "Top of the world",
                "Towers",
                "Treehouses",
                "Tropical",
                "Trulli",
                "Vineyards",
                "Windmills",
                "Yurts"
              ]
            },
            "default": []
          },
          "propertyTypeIds": {
            "title": "Property types",
            "uniqueItems": true,
            "type": "array",
            "description": "Property type filters (property_type_id[]). Choose labels and/or numeric IDs.",
            "items": {
              "type": "string",
              "enum": [
                "Apartment",
                "Barn",
                "Bed and breakfast",
                "Boat",
                "Boutique hotel",
                "Bungalow",
                "Bus",
                "Cabin",
                "Camper/RV",
                "Casa particular",
                "Casa rural",
                "Castle",
                "Cave",
                "Chalet",
                "Condo",
                "Cottage",
                "Cycladic house",
                "Dammusi",
                "Dome",
                "Earth house",
                "Farm stay",
                "Floor",
                "Guest suite",
                "Guesthouse",
                "Holiday park",
                "Hostel",
                "Hotel",
                "House",
                "Hut",
                "Island",
                "Lighthouse",
                "Loft",
                "Minsu",
                "Resort",
                "Riad",
                "Ryokan",
                "Serviced apartment",
                "Shipping container",
                "Tent",
                "Tiny home",
                "Tipi",
                "Tower",
                "Townhouse",
                "Train",
                "Treehouse",
                "Villa",
                "Windmill",
                "Yurt",
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
                "8",
                "9",
                "12",
                "14",
                "15",
                "16",
                "17",
                "18",
                "19",
                "21",
                "22",
                "23",
                "26",
                "28",
                "32",
                "33",
                "34",
                "35",
                "36",
                "37",
                "38",
                "40",
                "43",
                "44",
                "45",
                "46",
                "47",
                "48",
                "51",
                "52",
                "53",
                "54",
                "56",
                "57",
                "58",
                "59",
                "60",
                "61",
                "62",
                "63",
                "64",
                "65"
              ]
            },
            "default": []
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Optional full Airbnb search URLs. When set, destination builder is skipped (pagination still applied).",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "detailUrls": {
            "title": "Listing detail URLs",
            "type": "array",
            "description": "Optional Airbnb /rooms/{listingId} URLs. When provided, the worker skips destination search and processes up to detailEnrichLimit URLs. Requires enrichDetails=true.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "enrichDetails": {
            "title": "Enrich listing details",
            "type": "boolean",
            "description": "Read a bounded number of public listing pages to add host, location, and amenity fields. In a search, detail requests only use row budget left after the search rows: when the search rows already fill maxResults, no listing page is read, the rows keep every lead field with a not_verified reason, and diagnostics.notes says detailSkipped:rowBudget.",
            "default": true
          },
          "detailEnrichLimit": {
            "title": "Detail enrichment limit",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Maximum number of emitted listings whose listing pages are read. Remaining rows keep every lead field with a not_verified reason.",
            "default": 3
          },
          "reviewsLimit": {
            "title": "Reviews limit",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum reviews fetched per enriched listing, newest first. Zero disables reviews unless Detail extras includes reviews, which then fetches up to 24.",
            "default": 0
          },
          "detailExtras": {
            "title": "Detail extras",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional datasets fetched for each enriched listing: detailApi (lightweight Sections+SEO interfaces instead of the full page), reviews, policies, priceBreakdown (itemized lines need checkin and checkout), and hostProfile (the public host profile merged into org). Reviews are also enabled whenever reviewsLimit is greater than zero; they stay as a list on the listing row and are not charged as separate rows. similarListings is retired and no longer collected: saved tasks that still select it keep running, and the option is ignored.",
            "items": {
              "type": "string",
              "enum": [
                "detailApi",
                "reviews",
                "policies",
                "priceBreakdown",
                "hostProfile",
                "similarListings"
              ],
              "enumTitles": [
                "detailApi",
                "reviews",
                "policies",
                "priceBreakdown",
                "hostProfile",
                "similarListings (retired, ignored)"
              ]
            },
            "default": []
          },
          "maxResults": {
            "title": "Max results per input",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Most rows for each destination, category tag, start URL, or detail URL. Default 70; larger numbers are collected in parts of 70. All row types count together. The whole run stops at your maximum total charge. Free Apify plan: up to 200 rows per run and 10 runs of this Actor (limits set by the Actor developer).",
            "default": 70
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}