{
  "openapi": "3.0.1",
  "info": {
    "title": "Airbnb & Booking Toronto STR Registration Checker",
    "description": "Check the short-term rental registration number (STR-YYMM-XXXXXX) of Airbnb listings and Booking.com properties in Toronto against the City's open register: verdict, exact registered address with the unit number, property type, ward — plus listing and host details.",
    "version": "0.0",
    "x-build-id": "NftPsTEWMGRuVS7dh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nice_dev~airbnb-toronto-license-checker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nice_dev-airbnb-toronto-license-checker",
        "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/nice_dev~airbnb-toronto-license-checker/runs": {
      "post": {
        "operationId": "runs-sync-nice_dev-airbnb-toronto-license-checker",
        "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/nice_dev~airbnb-toronto-license-checker/run-sync": {
      "post": {
        "operationId": "run-sync-nice_dev-airbnb-toronto-license-checker",
        "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": {
          "startUrls": {
            "title": "Airbnb URLs",
            "maxItems": 1000,
            "type": "array",
            "description": "Airbnb listing URLs (`https://www.airbnb.com/rooms/12345`, any Airbnb domain such as airbnb.ca) and/or Airbnb search URLs (`https://www.airbnb.com/s/Toronto--Ontario--Canada/homes`, map searches included: their filters are kept, pagination and map splitting are automatic). Max 1 000 URLs.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "listingIds": {
            "title": "Airbnb listing IDs",
            "maxItems": 1000,
            "uniqueItems": true,
            "type": "array",
            "description": "Airbnb listing IDs alone (the digits after `/rooms/`), one per line — checked in this order, before any search: with a result limit, the first ones are the ones saved. Max 1 000.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "bookingUrls": {
            "title": "Booking.com URLs",
            "maxItems": 1000,
            "uniqueItems": true,
            "type": "array",
            "description": "Booking.com property pages to check, e.g. `https://www.booking.com/hotel/ca/urban-nest-toronto.html` (any language version). Read whatever Sites searched says.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Place",
            "maxLength": 200,
            "type": "string",
            "description": "A place in Toronto, as typed in Airbnb's or Booking.com's search box (e.g. `Toronto, Ontario, Canada`, `Scarborough, Toronto`, `Etobicoke`), searched on the **Sites searched**. Each listing found is opened and its registration checked. Listings outside the City of Toronto (Mississauga, Vaughan…) are saved with the verdict `region_not_covered`, except one that shows a Toronto number: that number is checked."
          },
          "locations": {
            "title": "More places",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Several places in one run (one search each and per site, max 100). Added to **Place**; a listing found by several searches is saved once.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "title": "Sites searched",
            "type": "array",
            "description": "The sites each place (Place, More places) is searched on: Airbnb, Booking.com, or both (one search per place and site, each with its own Max listings per search). Airbnb URLs, listing IDs and map areas always go to Airbnb, Booking.com URLs to Booking.com.",
            "items": {
              "type": "string",
              "enum": [
                "airbnb",
                "booking"
              ],
              "enumTitles": [
                "Airbnb",
                "Booking.com"
              ]
            },
            "default": [
              "airbnb"
            ]
          },
          "boundingBoxes": {
            "title": "Map areas",
            "maxItems": 100,
            "uniqueItems": true,
            "type": "array",
            "description": "Map rectangles to search, one per line as `south latitude, west longitude, north latitude, east longitude` (e.g. `43.63, -79.41, 43.66, -79.37` for downtown Toronto). The surest way to cover a whole city: Airbnb returns at most 270 listings per search, and a full area is split into smaller ones automatically.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "licenseNumbers": {
            "title": "Registration numbers to check",
            "maxItems": 1000,
            "uniqueItems": true,
            "type": "array",
            "description": "Toronto short-term rental registration numbers checked against the register without any listing (`STR-2608-JGXPVZ`; spaces, missing dashes and lower case are accepted). One result per number. Max 1 000.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "registerWards": {
            "title": "Register records of these wards",
            "type": "array",
            "description": "Every active registration of these wards, straight from the City's register — address with the unit, property type, month of issue, position of the address — without any Airbnb search. Newest first (month of issue read in the number). Filtered by **Issued in or after** and **Property types**. All wards = the whole register (≈ 8 700 records).",
            "items": {
              "type": "string",
              "enum": [
                "all",
                "etobicoke-north",
                "etobicoke-centre",
                "etobicoke-lakeshore",
                "parkdale-high-park",
                "york-south-weston",
                "york-centre",
                "humber-river-black-creek",
                "eglinton-lawrence",
                "davenport",
                "spadina-fort-york",
                "university-rosedale",
                "toronto-st-pauls",
                "toronto-centre",
                "toronto-danforth",
                "don-valley-west",
                "don-valley-east",
                "don-valley-north",
                "willowdale",
                "beaches-east-york",
                "scarborough-southwest",
                "scarborough-centre",
                "scarborough-agincourt",
                "scarborough-north",
                "scarborough-guildwood",
                "scarborough-rouge-park"
              ],
              "enumTitles": [
                "All wards",
                "1 · Etobicoke North",
                "2 · Etobicoke Centre",
                "3 · Etobicoke-Lakeshore",
                "4 · Parkdale-High Park",
                "5 · York South-Weston",
                "6 · York Centre",
                "7 · Humber River-Black Creek",
                "8 · Eglinton-Lawrence",
                "9 · Davenport",
                "10 · Spadina-Fort York",
                "11 · University-Rosedale",
                "12 · Toronto-St. Paul's",
                "13 · Toronto Centre",
                "14 · Toronto-Danforth",
                "15 · Don Valley West",
                "16 · Don Valley East",
                "17 · Don Valley North",
                "18 · Willowdale",
                "19 · Beaches-East York",
                "20 · Scarborough Southwest",
                "21 · Scarborough Centre",
                "22 · Scarborough-Agincourt",
                "23 · Scarborough North",
                "24 · Scarborough-Guildwood",
                "25 · Scarborough-Rouge Park"
              ]
            },
            "default": []
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Maximum number of results (listings checked, registration numbers and register records) to save for the whole run, after filters. 0 = no limit.",
            "default": 100
          },
          "maxItemsPerQuery": {
            "title": "Max listings per search",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Cap for EACH search (place and site, map area or search URL), so that the first search cannot use up the whole **Max results** budget. 0 = no per-search cap — except when the run searches both sites (places on both, or a Booking.com place next to an Airbnb map area or search URL): **Max results** is then shared evenly between the searches (a Booking.com page brings 100 properties at once and would take every slot) — and per ward named in **Register records of these wards** (`all` = one cap for the whole register, newest first).",
            "default": 0
          },
          "splitMap": {
            "title": "Split full areas",
            "type": "boolean",
            "description": "Airbnb shows at most 270 listings (15 pages) per search: a full search has its map area cut into 4 smaller areas, again and again. Booking.com shows at most 1 000 properties per search: a bigger one is also read district by district. Off = the first 270 (Airbnb) or 1 000 (Booking.com) of each search only.",
            "default": true
          },
          "cardsOnly": {
            "title": "Cards only (fast)",
            "type": "boolean",
            "description": "Deliver the card of each Airbnb search result — link, title, type of place, price, rating, position, bedrooms — without opening the listing: faster and cheaper, but no registration number, no verdict, nothing from the register. Charged per card (see Pricing), nothing else is charged in this mode. Needs a place, a map area or an Airbnb search URL. Not compatible with the options that read the listing (host profile, calendar, risk score, revenue estimate, comparables, AI labels), with Airbnb listing URLs and IDs, Booking.com, registration numbers and register wards, nor with the host type filter and the filters on verdicts, wards and register property types.",
            "default": false
          },
          "checkIn": {
            "title": "Check-in date",
            "type": "string",
            "description": "Travel dates of the search (`2027-07-12`). Airbnb then shows the listings free on those dates and their price for the stay; empty = Airbnb's own flexible dates. Today or later (the day in Toronto): Airbnb shows nothing for a stay that has begun."
          },
          "checkOut": {
            "title": "Check-out date",
            "type": "string",
            "description": "End of the stay (`2027-07-15`), after the check-in date."
          },
          "adults": {
            "title": "Guests",
            "minimum": 0,
            "maximum": 16,
            "type": "integer",
            "description": "Number of guests: only the listings that can host them. 0 = any.",
            "default": 0
          },
          "children": {
            "title": "Children",
            "minimum": 0,
            "maximum": 15,
            "type": "integer",
            "description": "Children aged 2-12 travelling (Airbnb filter). 0 = none.",
            "default": 0
          },
          "infants": {
            "title": "Infants",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Infants under 2 travelling (Airbnb filter). 0 = none.",
            "default": 0
          },
          "pets": {
            "title": "Pets",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Pets travelling: only listings that allow pets. 0 = none.",
            "default": 0
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "CAD",
              "USD",
              "EUR",
              "GBP"
            ],
            "type": "string",
            "description": "Currency of the prices shown on the search results.",
            "default": "CAD"
          },
          "priceMin": {
            "title": "Min price per night",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Lowest price per night, in the currency above. 0 = no minimum.",
            "default": 0
          },
          "priceMax": {
            "title": "Max price per night",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Highest price per night, in the currency above. 0 = no maximum.",
            "default": 0
          },
          "roomTypes": {
            "title": "Type of place",
            "type": "array",
            "description": "Only these kinds of place. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "entire_home",
                "private_room",
                "shared_room",
                "hotel_room"
              ],
              "enumTitles": [
                "Entire home",
                "Private room",
                "Shared room",
                "Hotel room"
              ]
            },
            "default": []
          },
          "propertyTypes": {
            "title": "Property type",
            "type": "array",
            "description": "Only these kinds of property (Airbnb filter). Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "house",
                "apartment",
                "guesthouse",
                "hotel"
              ],
              "enumTitles": [
                "House",
                "Apartment",
                "Guesthouse",
                "Hotel"
              ]
            },
            "default": []
          },
          "minBedrooms": {
            "title": "Min bedrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Only listings with at least this many bedrooms. 0 = any.",
            "default": 0
          },
          "minBeds": {
            "title": "Min beds",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Only listings with at least this many beds. 0 = any.",
            "default": 0
          },
          "minBathrooms": {
            "title": "Min bathrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Only listings with at least this many bathrooms. 0 = any.",
            "default": 0
          },
          "superhostOnly": {
            "title": "Superhosts only",
            "type": "boolean",
            "description": "Only listings of Superhosts (Airbnb filter).",
            "default": false
          },
          "bookingPropertyTypes": {
            "title": "Booking.com property types",
            "type": "array",
            "description": "Kinds of properties a Booking.com search lists. Default: apartments, holiday homes and villas — the homes a short-term rental registration is for (hotels and inns are not registered).",
            "items": {
              "type": "string",
              "enum": [
                "apartment",
                "holiday_home",
                "villa",
                "chalet",
                "country_house",
                "farm_stay",
                "guesthouse",
                "homestay",
                "bed_and_breakfast",
                "condo_hotel",
                "hotel",
                "hostel"
              ],
              "enumTitles": [
                "Apartments",
                "Holiday homes",
                "Villas",
                "Chalets",
                "Country houses",
                "Farm stays",
                "Guesthouses",
                "Homestays",
                "Bed and breakfasts",
                "Condo hotels",
                "Hotels",
                "Hostels"
              ]
            },
            "default": [
              "apartment",
              "holiday_home",
              "villa"
            ]
          },
          "registeredAfter": {
            "title": "Issued in or after",
            "type": "string",
            "description": "Only registrations issued in this month or later (`2026-01-01`; the month is read in the number, a number STR-2601-… was issued in January 2026): the new operators of the ward. Empty = all."
          },
          "registerPropertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Only these property types, as the register gives them. Also applied to listings: one not found in the register has no type and is dropped. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "condominium",
                "house",
                "apartment",
                "townhouse",
                "multiplex"
              ],
              "enumTitles": [
                "Condominium",
                "Single / semi-detached house",
                "Apartment",
                "Townhouse / row house",
                "Duplex / triplex / fourplex"
              ]
            },
            "default": []
          },
          "onlyVerdicts": {
            "title": "Keep only these verdicts",
            "type": "array",
            "description": "Save only the listings whose verdict is one of these — e.g. `never_issued`, `not_in_register`, `other_property`, `unknown_format` and `no_number` to get the suspicious listings only (the verdicts marked isSuspicious). Empty = every listing.",
            "items": {
              "type": "string",
              "enum": [
                "valid",
                "never_issued",
                "not_in_register",
                "other_property",
                "unknown_format",
                "no_number",
                "exempt_claimed",
                "region_not_covered",
                "register_unavailable"
              ],
              "enumTitles": [
                "Valid: an active registration, at the listing's place",
                "Never issued: a month the City could not have issued it in",
                "Not in the register: well-formed but not active (expired, cancelled or invented)",
                "Other property: the registered address is far from the listing",
                "Unknown format: not an STR-YYMM-XXXXXX number",
                "No number shown",
                "Says it is exempt (e.g. a hotel)",
                "Outside the City of Toronto (not checked)",
                "Register unavailable in this run"
              ]
            },
            "default": []
          },
          "wards": {
            "title": "Wards",
            "type": "array",
            "description": "Only listings in these wards (the listing's position on the map; the register's ward when the position is unknown). Outside Toronto (`other`) keeps the listings of neighbouring cities; a listing whose ward is unknown is dropped. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "etobicoke-north",
                "etobicoke-centre",
                "etobicoke-lakeshore",
                "parkdale-high-park",
                "york-south-weston",
                "york-centre",
                "humber-river-black-creek",
                "eglinton-lawrence",
                "davenport",
                "spadina-fort-york",
                "university-rosedale",
                "toronto-st-pauls",
                "toronto-centre",
                "toronto-danforth",
                "don-valley-west",
                "don-valley-east",
                "don-valley-north",
                "willowdale",
                "beaches-east-york",
                "scarborough-southwest",
                "scarborough-centre",
                "scarborough-agincourt",
                "scarborough-north",
                "scarborough-guildwood",
                "scarborough-rouge-park",
                "other"
              ],
              "enumTitles": [
                "1 · Etobicoke North",
                "2 · Etobicoke Centre",
                "3 · Etobicoke-Lakeshore",
                "4 · Parkdale-High Park",
                "5 · York South-Weston",
                "6 · York Centre",
                "7 · Humber River-Black Creek",
                "8 · Eglinton-Lawrence",
                "9 · Davenport",
                "10 · Spadina-Fort York",
                "11 · University-Rosedale",
                "12 · Toronto-St. Paul's",
                "13 · Toronto Centre",
                "14 · Toronto-Danforth",
                "15 · Don Valley West",
                "16 · Don Valley East",
                "17 · Don Valley North",
                "18 · Willowdale",
                "19 · Beaches-East York",
                "20 · Scarborough Southwest",
                "21 · Scarborough Centre",
                "22 · Scarborough-Agincourt",
                "23 · Scarborough North",
                "24 · Scarborough-Guildwood",
                "25 · Scarborough-Rouge Park",
                "Outside Toronto (neighbouring cities)"
              ]
            },
            "default": []
          },
          "hostType": {
            "title": "Host type",
            "enum": [
              "any",
              "business",
              "individual"
            ],
            "type": "string",
            "description": "Only listings of business hosts (companies and professionals, who must show their business details) or of individual hosts, as Airbnb labels them on the search results (on the listing page for listing URLs and IDs) — on Booking.com, as the host declared itself (professional or private).",
            "default": "any"
          },
          "minRating": {
            "title": "Min rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Only listings rated at least this much out of 5 (Booking.com's score out of 10 is halved; listings without a rating are dropped). 0 = any.",
            "default": 0
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "maxItems": 50,
            "uniqueItems": true,
            "type": "array",
            "description": "Drop the listings whose title contains one of these words (case and accents ignored).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "gpsToleranceKm": {
            "title": "Distance tolerance",
            "minimum": 0.2,
            "maximum": 50,
            "type": "number",
            "description": "Airbnb blurs a listing's position by about 150 m (measured in Toronto: 92 m median, 160 m at most). A registered address (placed with the City's address points) farther than this from the listing — or from the Booking.com property — gives the verdict `other_property`.",
            "default": 0.5
          },
          "includeHostProfile": {
            "title": "Host's listing count",
            "type": "boolean",
            "description": "Airbnb: open the host's public profile (1 extra request per host, not per listing) for the number of listings they manage and their IDs. Charged per host profile (see Pricing). Booking.com shows no host profile.",
            "default": false
          },
          "includeCalendar": {
            "title": "Availability calendar (12 months)",
            "type": "boolean",
            "description": "Read each Airbnb listing's calendar (1 extra request per listing): nights open and nights booked or blocked from today to the end of the 11th month after this one (Airbnb's 12 calendar months), per month and per day, and whether it is open more than the 180 nights a year Toronto allows for renting an entire home. Charged per listing whose calendar reaches your results (see Pricing).",
            "default": false
          },
          "includeRiskScore": {
            "title": "Risk score (0-100)",
            "type": "boolean",
            "description": "Give each Airbnb listing and Booking.com property a risk score from 0 to 100 and the short codes of the rules behind it: the verdict first, then a number shown by several listings, a registered address far from the listing, an entire home, a type of home that differs from the register's, a host who manages several listings (needs **Host's listing count**), a calendar open past 180 nights (needs **Availability calendar**) and a professional host. A rule whose data is not read is skipped and named, never counted as a risk. No extra request. Charged per listing whose row carries a score (see Pricing); a row whose register could not be read gets none and is not charged for it.",
            "default": false
          },
          "includeComparables": {
            "title": "Comparable listings",
            "type": "boolean",
            "description": "Add, to each Airbnb listing, the Airbnb listings around it: the nearest ones of the same type of place and within one bedroom of it (up to **Max comparables per listing**), each with its price per night, rating, bedrooms and distance, and the median price per night of them. Read from the cards of a search around the listing: no listing page is opened, and one search serves every listing of the same area. Give **Check-in** and **Check-out** to get prices: without dates the comparables have no price and there is no median. Charged per listing whose row carries comparables (see Pricing).",
            "default": false
          },
          "maxComparablesPerListing": {
            "title": "Max comparables per listing",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Most comparable listings kept for each listing (**Comparable listings**): the nearest ones.",
            "default": 10
          },
          "downloadPhotos": {
            "title": "Download photos",
            "type": "boolean",
            "description": "Download the first photos of each listing into this run's key-value store and give their public links, their SHA-256 and the time of the download: a dated copy of what the listing showed that day. The links in **Photos** (`images`) stay in every run for free. A photo that cannot be had (gone, too big, not an image) is left out and not charged. Charged per photo delivered (see Pricing). Not available with **Cards only (fast)**.",
            "default": false
          },
          "maxPhotosPerListing": {
            "title": "Max photos per listing",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Photos downloaded for each listing (**Download photos**): the first ones of the listing.",
            "default": 5
          },
          "includeBusinessContact": {
            "title": "Business contact (Booking.com)",
            "type": "boolean",
            "description": "For a Booking.com property run by a professional host (a company), add the business e-mail and phone its page shows: `businessEmail` and `businessPhone`. Only professional hosts have them, a private host's contact is not given. Airbnb and the City's register give no contact (the register says: *Operator names and contact information are not included*). Charged per property whose row carries an e-mail or a phone (see Pricing). Not available with **Cards only (fast)**.",
            "default": false
          },
          "includeProHostContact": {
            "title": "Professional host contact",
            "type": "boolean",
            "description": "Add the business e-mail and phone of professional Airbnb hosts, from publicly available sources, with the page each comes from and a confidence: `proHostEmails`, `proHostPhones`, `proHostContactSourceUrl`, `proHostContactConfidence`. A host is looked up only when a company name is known (the business name Airbnb gives, or a host or co-host whose name is a company's), never a private person. Charged per listing whose row carries a contact (see Pricing); a listing with none is delivered as it is, not charged. Not available with **Cards only (fast)**.",
            "default": false
          },
          "includeAiLabels": {
            "title": "AI labels (needs 2 GB of memory)",
            "type": "boolean",
            "description": "Label each Airbnb listing's description with five yes / no AI labels and their scores: managed by a company or a property manager, self check-in with a lockbox or a keypad, monthly or long stays (28 nights or more), host does not live in the home, mentions a licence or a permit. English descriptions only: a description in another language, a Booking.com property and a listing without a description get none. The labels are read in the text of the description, they are indications, not facts. Needs 2 GB of memory (Run options → Memory): with less, the AI labels are skipped, said in the log, and nothing is charged. The descriptions are read one at a time, so a run with this option is slower. Charged per listing whose row carries its labels (see Pricing).",
            "default": false
          },
          "includeRevenueEstimate": {
            "title": "Revenue estimate (12 months)",
            "type": "boolean",
            "description": "Estimate the revenue of each Airbnb listing from its availability calendar: the nights the calendar shows as not open (booked, or closed by the host — Airbnb does not tell them apart) × the price per night of the dates searched, with the share of the calendar that is blocked. An estimate, not what the host earned. Needs **Check-in** and **Check-out** (the price per night comes from a search with dates; a listing given by URL or ID has none) and reads the calendar too, charged as **Availability calendar**. A listing without a price per night gets no estimate and is not charged for one. Charged per listing whose row carries its estimate (see Pricing).",
            "default": false
          },
          "onlyNew": {
            "title": "Only new listings",
            "type": "boolean",
            "description": "Skip the listings (and registration numbers) that a previous run (same **Memory name**) already delivered: they are not saved and not charged, and their page is not even opened. First run = everything is new.",
            "default": false
          },
          "memoryName": {
            "title": "Memory name",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$",
            "maxLength": 64,
            "type": "string",
            "description": "Name of the memory used by **Only new listings**. Give each schedule / task its own name (e.g. `toronto-weekly`) so that they do not share their memory. Letters, digits, `-` and `_`.",
            "default": "default"
          },
          "resetState": {
            "title": "Reset the memory",
            "type": "boolean",
            "description": "Forget everything remembered under this **Memory name** before the run: this run returns (and charges) every listing again. Untick it afterwards.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy or your own proxies, for the Airbnb and Booking.com pages. Keep the default: it is included in the price. The residential Apify proxy is not available in this Actor. The official registers are downloaded directly.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of Airbnb pages processed in parallel.",
            "default": 8
          },
          "maxRequestsPerMinute": {
            "title": "Max requests per minute",
            "minimum": 10,
            "maximum": 2000,
            "type": "integer",
            "description": "Most requests to Airbnb and Booking.com in any 60 seconds, all of them counted: search pages, listing pages and host profiles. A budget, not an even pace: up to this many can leave at once when the minute starts (spread them with the minimum delay below). Lower it if Airbnb or Booking.com answers HTTP 429 / 403 in the log.",
            "default": 120
          },
          "minRequestIntervalMs": {
            "title": "Min delay between requests",
            "minimum": 0,
            "maximum": 60000,
            "type": "integer",
            "description": "Smallest gap between two requests to Airbnb, in milliseconds. Unlike the per-minute rate, this spreads the requests evenly instead of letting them go out in a burst. 0 = no gap.",
            "default": 0
          },
          "maxRequestRetries": {
            "title": "Max request retries",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Retries per request before it is marked as failed. Behind a proxy, a request Airbnb turns away is also retried on a new proxy session up to 10 times without using up these retries.",
            "default": 5
          },
          "debugLog": {
            "title": "Debug log",
            "type": "boolean",
            "description": "Include debug messages in the run log.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}