{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb Property-Operator Discovery Scraper",
    "description": "Finds Airbnb hosts who manage multiple properties (5+ listings) across India, Malaysia, Philippines, Thailand, Hong Kong/Macau, Japan, Australia and New Zealand. Searches major cities, groups listings by host, and returns the complete raw Airbnb JSON for every qualifying operator and listing.",
    "version": "0.1",
    "x-build-id": "ok9ueYrV7lx2itc8l"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/xtracto~airbnb-operator-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-xtracto-airbnb-operator-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/xtracto~airbnb-operator-scraper/runs": {
      "post": {
        "operationId": "runs-sync-xtracto-airbnb-operator-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/xtracto~airbnb-operator-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-xtracto-airbnb-operator-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": {
          "countries": {
            "title": "Target markets",
            "type": "array",
            "description": "Markets to search. Note: Airbnb has had no domestic listings/hosts inside mainland China since 2022, so 'China' is served via Hong Kong and Macau, its closest active market — see README.",
            "items": {
              "type": "string",
              "enum": [
                "India",
                "Malaysia",
                "Philippines",
                "Thailand",
                "China",
                "Japan",
                "Australia",
                "New Zealand"
              ]
            },
            "default": [
              "India",
              "Malaysia",
              "Philippines",
              "Thailand",
              "China",
              "Japan",
              "Australia",
              "New Zealand"
            ]
          },
          "citiesPerCountry": {
            "title": "City override (advanced)",
            "type": "object",
            "description": "Optional. Override the built-in city list for one or more countries, e.g. {\"Japan\": [\"Tokyo--Japan\", \"Kyoto--Japan\", \"Fukuoka--Japan\"]}. Values are Airbnb search-URL slugs, i.e. the part after /s/ in https://www.airbnb.com/s/<slug>/homes. Countries not listed here use the built-in defaults (2 cities each)."
          },
          "minListingsPerHost": {
            "title": "Minimum listings per host",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Only keep hosts whose Airbnb profile reports at least this many managed listings. The brief asks for property-management operators, so 5 is the recommended floor.",
            "default": 5
          },
          "maxSearchPagesPerCity": {
            "title": "Search pages per city",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many pages of search results (~18 listings/page) to sweep per city. Higher = more candidate listings discovered, more requests.",
            "default": 2
          },
          "maxListingsPerCity": {
            "title": "Max candidate listings per city",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Hard cap on candidate listings collected per city before PDP enrichment.",
            "default": 20
          },
          "maxHostsToResolve": {
            "title": "Max hosts to resolve",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on unique hosts whose public profile gets fetched in one run (this is the step that reveals the true listing count). Raise for a full production sweep.",
            "default": 150
          },
          "maxListingsPerOperator": {
            "title": "Max listings backfilled per operator",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "For a qualifying operator, how many of their listings to fetch full raw JSON for (beyond what the city search already found). Airbnb's own public profile page samples at most 10 listings per host regardless of their true total — see README 'Coverage & limitations'.",
            "default": 15
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "How many requests to run in parallel. Keep low (1-4) to stay under Airbnb's rate limits.",
            "default": 3
          },
          "logLevel": {
            "title": "Log level",
            "enum": [
              "INFO",
              "DEBUG"
            ],
            "type": "string",
            "description": "Set DEBUG for verbose troubleshooting output.",
            "default": "INFO"
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Residential proxy is strongly recommended for a full multi-country run.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}