{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb Scraper (Working) — $1.50 per 1,000 Listings",
    "description": "$1.50 per 1,000 listings — no hidden fees, no start fee. Scrape Airbnb by location with date, guest, price & room-type filters: name, price, rating, reviews, lat/lng, beds, baths, images, URL. Optional detail enrichment (amenities, host, description) + new-listing monitor. No login or API key.",
    "version": "0.1",
    "x-build-id": "CS0OsNYigp3PI7kTi"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapersdelight~airbnb-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapersdelight-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/scrapersdelight~airbnb-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapersdelight-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/scrapersdelight~airbnb-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapersdelight-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",
        "required": [
          "location"
        ],
        "properties": {
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Where to search — city, neighborhood, region, or address, exactly as you'd type it on airbnb.com, e.g. 'Austin, TX', 'Paris, France', 'Brooklyn, NY', 'Lake Tahoe'."
          },
          "checkIn": {
            "title": "Check-in date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Optional check-in date (YYYY-MM-DD). When set with check-out, prices are exact stay totals for those dates and only available listings are returned."
          },
          "checkOut": {
            "title": "Check-out date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Optional check-out date (YYYY-MM-DD). Pair with check-in."
          },
          "adults": {
            "title": "Adults",
            "minimum": 0,
            "maximum": 16,
            "type": "integer",
            "description": "Number of adult guests (0 = unspecified).",
            "default": 0
          },
          "children": {
            "title": "Children",
            "minimum": 0,
            "maximum": 15,
            "type": "integer",
            "description": "Number of child guests.",
            "default": 0
          },
          "infants": {
            "title": "Infants",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Number of infants.",
            "default": 0
          },
          "pets": {
            "title": "Pets",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Number of pets (filters to pet-friendly listings).",
            "default": 0
          },
          "priceMin": {
            "title": "Min price per night",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings at/above this nightly price (in the selected currency). Leave empty for no floor."
          },
          "priceMax": {
            "title": "Max price per night",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings at/below this nightly price. Leave empty for no cap."
          },
          "roomType": {
            "title": "Room type",
            "enum": [
              "any",
              "entire_home",
              "private_room",
              "shared_room",
              "hotel_room"
            ],
            "type": "string",
            "description": "Restrict to a listing type (server-side filter).",
            "default": "any"
          },
          "minBedrooms": {
            "title": "Min bedrooms",
            "minimum": 0,
            "maximum": 16,
            "type": "integer",
            "description": "Only listings with at least this many bedrooms (server-side filter)."
          },
          "minBeds": {
            "title": "Min beds",
            "minimum": 0,
            "maximum": 16,
            "type": "integer",
            "description": "Only listings with at least this many beds."
          },
          "minBathrooms": {
            "title": "Min bathrooms",
            "minimum": 0,
            "maximum": 16,
            "type": "integer",
            "description": "Only listings with at least this many bathrooms."
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "Currency for all prices (ISO code, e.g. USD, EUR, GBP, CAD). Defaults to USD so results are stable regardless of where the request exits.",
            "default": "USD"
          },
          "fetchDetails": {
            "title": "Fetch full details",
            "type": "boolean",
            "description": "Visit each listing's /rooms/{id} page for the full record: description, complete amenity list (grouped, incl. unavailable ones), host profile (name, Superhost, rating, years hosting), exact room type, guest capacity, city, and the FULL photo gallery. One extra request per listing.",
            "default": false
          },
          "maxItems": {
            "title": "Max listings per run",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap on listings scraped this run (cost/safety guard). Defaults to 50 for a fast first run — set 0 to walk every available page (~270 listings per search; narrow with filters to cover more of a market).",
            "default": 50
          },
          "monitorMode": {
            "title": "Monitor mode (new-listing watcher)",
            "type": "boolean",
            "description": "Recurring watcher: diff against the prior run's seen listings (per search scope) and output/alert ONLY listings new to this search. Pair with an Apify Schedule.",
            "default": false
          },
          "alertOnNewListing": {
            "title": "Alert on new listings",
            "type": "boolean",
            "description": "In monitor mode, deliver an alert for each new listing via the channels below.",
            "default": true
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "POST endpoint for new-listing alert payloads (Make / Zapier / n8n / custom). One JSON body per alert."
          },
          "slackWebhookUrl": {
            "title": "Slack webhook URL",
            "type": "string",
            "description": "Slack incoming-webhook URL for formatted new-listing cards (photo + price + rating)."
          },
          "emailRecipients": {
            "title": "Email recipients",
            "type": "array",
            "description": "Email addresses for the new-listing digest (sent via apify/send-mail).",
            "items": {
              "type": "string"
            }
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Proxy settings. Datacenter rotation works today; if you scrape at heavy volume and see empty pages, switch to residential.",
            "default": {
              "useApifyProxy": true
            }
          },
          "requestConcurrency": {
            "title": "Request concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Max parallel requests for detail fetches. Keep modest to stay under the radar.",
            "default": 5
          },
          "diagnose": {
            "title": "Diagnostic mode (dev)",
            "type": "boolean",
            "description": "Dev only. Dumps the raw embedded JSON + parsed first row to the key-value store (DEBUG_SEARCH_JSON / DEBUG_DETAIL_JSON), logs a pagination check, then exits. Leave off for normal runs.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}