{
  "openapi": "3.0.1",
  "info": {
    "title": "Streeteasy.com Scraper",
    "description": "Unlock the NYC real estate market with instant access to detailed property data, pricing trends, and neighborhood insights. Our StreetEasy scraper delivers comprehensive listing information across all boroughs, helping you make data-driven decisions faster than your competition.",
    "version": "0.0",
    "x-build-id": "gwXwZahXWozU0jZPh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~apify-streeteasy-cheerio/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-apify-streeteasy-cheerio",
        "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/memo23~apify-streeteasy-cheerio/runs": {
      "post": {
        "operationId": "runs-sync-memo23-apify-streeteasy-cheerio",
        "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/memo23~apify-streeteasy-cheerio/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-apify-streeteasy-cheerio",
        "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": {
          "dbInstant": {
            "title": "Serve agents from the database",
            "type": "boolean",
            "description": "Pull real-estate agents straight from our pre-collected StreetEasy database: instant, nothing to get blocked on. Every record has a name and company; most carry a direct phone, and agents with a public profile also carry email and NY license. Leave the Start URLs empty when using this.",
            "default": false
          },
          "dbCountOnly": {
            "title": "Count only (free preview — no records delivered)",
            "type": "boolean",
            "description": "Returns how many agents match your filters WITHOUT delivering or charging for records, so you can size the pull before paying for it.",
            "default": false
          },
          "dbNeighborhood": {
            "title": "Neighborhood (optional)",
            "type": "string",
            "description": "Narrow to one NYC neighborhood, e.g. Williamsburg, Upper East Side. Leave empty for all of NYC."
          },
          "dbCompany": {
            "title": "Company / Brokerage contains (optional)",
            "type": "string",
            "description": "Match on the agent's firm, e.g. Corcoran, Compass, Douglas Elliman."
          },
          "dbName": {
            "title": "Agent name contains (optional)",
            "type": "string",
            "description": "Match on the agent's name."
          },
          "dbHasEmail": {
            "title": "Only records with an email",
            "type": "boolean",
            "description": "Email comes from the agent's public profile. Agents without a profile (leasing offices, owners) have a name, phone and company but no email — this filter excludes them.",
            "default": false
          },
          "dbHasPhone": {
            "title": "Only records with a phone",
            "type": "boolean",
            "description": "Only return agents that have a phone number on record. Use it to avoid paying for records you cannot call.",
            "default": false
          },
          "dbLicensedOnly": {
            "title": "Only licensed agents",
            "type": "boolean",
            "description": "Only records carrying an NY real-estate license number.",
            "default": false
          },
          "dbProOnly": {
            "title": "Only StreetEasy Pro agents",
            "type": "boolean",
            "description": "Only return agents carrying the StreetEasy Pro badge.",
            "default": false
          },
          "dbInRentals": {
            "title": "Active on rental listings",
            "type": "boolean",
            "description": "Only return agents seen representing rental listings.",
            "default": false
          },
          "dbInSales": {
            "title": "Active on sale listings",
            "type": "boolean",
            "description": "Only return agents seen representing sale listings.",
            "default": false
          },
          "dbMinListings": {
            "title": "Minimum live listings",
            "minimum": 1,
            "type": "integer",
            "description": "Only agents currently named on at least this many listings — a proxy for how active they are."
          },
          "dbUpdatedWithinDays": {
            "title": "Updated within the last N days",
            "minimum": 1,
            "type": "integer",
            "description": "Only return agents whose record was refreshed within this many days. Leave empty for the whole database."
          },
          "dbOffset": {
            "title": "Skip first N records (resume a split pull)",
            "minimum": 0,
            "type": "integer",
            "description": "Skip the first N matching records. Use it to continue a large pull in a second run without repeating what you already received."
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "URLs to start with. Accepts StreetEasy search URLs (e.g. https://streeteasy.com/for-rent/brooklyn), building pages, individual-listing URLs, short-URL listings (e.g. https://streeteasy.com/rental/4920170), and agent-profile URLs (e.g. https://streeteasy.com/profile/826114).",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "addresses": {
            "title": "Addresses to search",
            "type": "array",
            "description": "Addresses to scrape - should be in format 123 Main St, City like: 235 WEST 131 STREET",
            "items": {
              "type": "string"
            }
          },
          "monitoringMode": {
            "title": "Run in monitoring mode where only newly listings compared to previous runs will be scraped",
            "type": "boolean",
            "description": "If checked, it will only scrape newly listings compared to what has been scraped in previous runs.",
            "default": false
          },
          "moreResults": {
            "title": "Scrape all possible results (this process may take longer and consumes more resources)",
            "type": "boolean",
            "description": "StreetEasy only paginates the first 100 pages of a search (~1,400 rentals / ~3,800 sales per URL), so a big market like /for-rent/queens returns at most ~1,400 even though it lists more. When enabled, the scraper automatically splits an over-cap search into price bands, sweeps each, and merges the results — capturing close to the full market (~90%). Uses more requests and takes longer, so leave it off for small searches.",
            "default": false
          },
          "enrichEmails": {
            "title": "Enrich with contact emails (experimental)",
            "type": "boolean",
            "description": "If enabled, finds a contact email for each result from its own website (or by discovering it from the name). Adds contactEmail + contactWebsite columns plus a detailed emailEnrichment object. Best-effort.",
            "default": false
          },
          "maxItems": {
            "title": "Max Listings/Items to scrape per crawl",
            "type": "integer",
            "description": "Maximum number of results this run may produce. Caps a database pull exactly the same way it caps a live scrape, and each delivered record is billed as one result.",
            "default": 100
          },
          "flattenDatasetItems": {
            "title": "Flatten dataset rows",
            "type": "boolean",
            "description": "When true (default), all dataset items are flattened to a single level (nested keys become key_subkey).",
            "default": true
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "type": "integer",
            "description": "Maximum number of pages that can be processed at the same time.",
            "default": 10
          },
          "minConcurrency": {
            "title": "Min Concurrency",
            "type": "integer",
            "description": "Minimum number of pages that will be processed at the same time.",
            "default": 1
          },
          "maxRequestRetries": {
            "title": "Max Request Retries",
            "type": "integer",
            "description": "Number of times the crawler will retry a failed request before giving up.",
            "default": 100
          },
          "proxy": {
            "title": "Proxy configuration (optional override)",
            "type": "object",
            "description": "Leave empty — the actor already routes all traffic through its own built-in residential proxy at no extra cost to you. Only set this if you want to use your own proxies."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}