{
  "openapi": "3.0.1",
  "info": {
    "title": "NYC Rentals and Sales Scraper for StreetEasy: Comps, Price Cuts",
    "description": "Scrape NYC rentals and sales from StreetEasy with full detail in every row: gross and net-effective rent, free months, disclosed fees, price history, building and subway facts. Monitor mode returns only new listings, price cuts, rented and sold units. Export to Excel or Sheets. $1.50 per 1K.",
    "version": "0.1",
    "x-build-id": "c0zdfv0NI8VQ0q99n"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~streeteasy-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-streeteasy-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/getascraper~streeteasy-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-streeteasy-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/getascraper~streeteasy-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-streeteasy-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": {
          "mode": {
            "title": "What to do",
            "enum": [
              "search",
              "urls",
              "monitor"
            ],
            "type": "string",
            "description": "Search listings with the filters below, paste StreetEasy page links, or monitor a search for changes. Monitor mode is built for schedules: each run returns only new listings, price drops, price increases and status changes since the previous run, and unchanged listings are never charged.",
            "default": "search"
          },
          "listingType": {
            "title": "Rentals or sales",
            "enum": [
              "rentals",
              "sales"
            ],
            "type": "string",
            "description": "Apartments for rent or homes for sale. Used by search and monitor modes.",
            "default": "rentals"
          },
          "status": {
            "title": "Listing status",
            "enum": [
              "active",
              "in_contract",
              "past"
            ],
            "type": "string",
            "description": "Active = on the market now. In contract = a deal is pending. Past = already rented or sold, useful for rent and sale comps (each past row carries its full price history).",
            "default": "active"
          },
          "startUrls": {
            "title": "StreetEasy URLs",
            "type": "array",
            "description": "Used in 'Paste StreetEasy URLs' mode. Paste any search page (its filters are kept), a listing page (one full row), or a building page (its units with the status chosen above). Each search or building link returns up to 'Max listings'. Links that cannot be read are listed in the run summary, never saved as empty rows.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "locations": {
            "title": "Neighborhoods or boroughs",
            "type": "array",
            "description": "Type places the way people say them: 'Upper West Side', 'UWS', 'Williamsburg', 'LIC', 'Bed-Stuy', 'Brooklyn'. Each one is matched to StreetEasy's own neighborhood list, and anything that does not match is reported in the log with suggestions. Leave empty to search all of NYC and North Jersey.",
            "default": [
              "Manhattan"
            ],
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Min price (USD)",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Lowest monthly rent or asking price to include."
          },
          "maxPrice": {
            "title": "Max price (USD)",
            "minimum": 0,
            "maximum": 1000000000,
            "type": "integer",
            "description": "Highest monthly rent or asking price to include."
          },
          "priceBasis": {
            "title": "Price filter applies to",
            "enum": [
              "gross",
              "netEffective"
            ],
            "type": "string",
            "description": "Rentals only. Gross = the advertised monthly rent. Net effective = the rent averaged over the lease after free months, which is what a concession listing really costs. Every row carries both values in separate columns, so you never mix them up.",
            "default": "gross"
          },
          "minBeds": {
            "title": "Min bedrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "0 means studios are included."
          },
          "maxBeds": {
            "title": "Max bedrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Set Min and Max to 0 for studios only."
          },
          "minBaths": {
            "title": "Min bathrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "number",
            "description": "Minimum number of full bathrooms."
          },
          "minSqft": {
            "title": "Min size (sq ft)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Many NYC listings do not state their size; those are left out when this is set."
          },
          "noFeeOnly": {
            "title": "No-fee rentals only",
            "type": "boolean",
            "description": "Only rentals marked as no broker fee. Every row also lists the fees each landlord disclosed (application, move-in, amenity, pet and more), which tells you more than the yes/no flag.",
            "default": false
          },
          "furnishedOnly": {
            "title": "Furnished only",
            "type": "boolean",
            "description": "Only furnished units. Useful for relocation, corporate housing and short stays; rows show the furnished rent when the landlord quotes one.",
            "default": false
          },
          "petsAllowed": {
            "title": "Pets allowed",
            "type": "boolean",
            "description": "Only listings that allow pets.",
            "default": false
          },
          "availableBy": {
            "title": "Available by (move-in date)",
            "type": "string",
            "description": "Only rentals you can move into on or before this date. Listings with no stated move-in date are treated as available now."
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "newest",
              "oldest",
              "price_asc",
              "price_desc",
              "sqft_desc",
              "ppsf_asc",
              "beds_desc",
              "open_house"
            ],
            "type": "string",
            "description": "Order of results in search mode. Monitor mode always scans newest first.",
            "default": "newest"
          },
          "maxItems": {
            "title": "Max listings",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Most listings to save per search (per link in URL mode). In monitor mode, this is how many of the newest matching listings are checked each run; set it above the search's total size to also catch listings that leave the market.",
            "default": 100
          },
          "includeDetails": {
            "title": "Include full listing details",
            "type": "boolean",
            "description": "Price and status history, amenities, pet policy, open houses, building facts, nearby subway stations and schools, photos, floor plans and the description. Fetched together with the listing, so it does not slow the run down.",
            "default": true
          },
          "maxPhotos": {
            "title": "Photos per listing",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "How many photo links to include per listing. 0 skips photos.",
            "default": 5
          },
          "includeAgentContacts": {
            "title": "Include agent contact details",
            "type": "boolean",
            "description": "Adds each listing agent's name, phone, email and license number. Off by default because this is personal data; turn it on only if you have a legitimate reason to process it. The listing's brokerage name is always included.",
            "default": false
          },
          "stateName": {
            "title": "Monitor name (optional)",
            "type": "string",
            "description": "Monitor mode only. Runs that share a name share one memory of what was already seen, so a schedule, a saved task and an API call can all continue the same monitor. Leave empty and the monitor is identified by its filters instead."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "US residential proxies are the default and the most reliable choice. Change this only if you know you need a different connection.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}