# Streeteasy.com Scraper (`memo23/apify-streeteasy-cheerio`)

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.

- **URL**: https://beta-securitybyobscurity.apify.com/memo23/apify-streeteasy-cheerio.md
- **Developed by:** [Muhamed Didovic](https://beta-securitybyobscurity.apify.com/memo23) (community)
- **Categories:** Real estate, Automation, Lead generation
- **Stats:** 59 total users, 9 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

$15.00/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.
You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#rental-actors

# README

## StreetEasy.com Scraper

### Overview

This is a rental version of the StreetEasy.com Scraper, you can check the also the pay per result version (you can get bypass limit of 1050 results set by StreetEasy site): <a href="https://apify.com/memo23/streeteasy-ppr">Here</a>

The StreetEasy.com Scraper is a sophisticated tool designed to extract real estate listings data from StreetEasy.com, New York City's leading real estate marketplace. Perfect for real estate professionals, researchers, and analysts, this scraper automates the collection of detailed property information, including prices, amenities, building details, and agent information across all NYC boroughs.

### Features

- **Comprehensive Property Data Collection**:
  - Sales and rental listings with complete property details
  - Historical price changes and time on market
  - Building information and amenities
  - Unit-specific details and floor plans

- **Support for Multiple and Individual Listings**:
  - Scrape multiple listings from pages like https://streeteasy.com/condo-buildings/nyc/new\_development:new%20development%7Chas\_sales:1
  - Scrape individual listings like https://streeteasy.com/building/one-fifty/rental/4642882?utm\_campaign=rental\_listing\&utm\_medium=share\&utm\_source=web\&lstt=VCs9nIkXlFsjgOWoLx4k3G1MZv745x2t0o2gJVn1JspnqnVn206EA8iUFXjNTzfJdZTBOQykFmPAw623

- **Address-Based Search**:
  - Search for properties by specific street addresses
  - Input addresses in format: "123 Main St, City" (e.g., "235 WEST 131 STREET")
  - Perfect for targeting specific buildings or street blocks

- **Agent Profile Data Extraction**:
  - Scrape agent profiles, including past deals and contact information, from links like:
    - https://streeteasy.com/profile/825932-milton-coste?tab\_profile=past\_deals
    - https://streeteasy.com/profile/826114
    - https://streeteasy.com/profile/825932

- **Advanced Search Capabilities**:
  - Filter by borough, neighborhood, or specific areas
  - Price range and property type filtering
  - Custom search criteria support (bedrooms, bathrooms, amenities)

- **Market Intelligence**:
  - Price per square foot calculations
  - Building history and property records
  - Agent and brokerage information
  - Market trends and pricing history

- **Data Management**:
  - Customizable data export formats (JSON, CSV, Excel)
  - Deduplication of listings
  - Incremental updates tracking
  - Historical data preservation

### Monitoring Mode

When `monitoringMode` is enabled, the scraper will only collect new listings that haven't been seen in previous runs. This is useful for:

- Tracking new properties as they come on the market
- Building a historical archive of property listings
- Monitoring specific areas for new opportunities without duplicating data

#### How Monitoring Mode Works

1. The scraper maintains a record of previously scraped property IDs
2. On subsequent runs with `monitoringMode: true`, it checks each property against this record
3. Only new properties (those not in the record) are processed and added to the output
4. The record is updated with any new property IDs found

### How to Use

1. **Set Up**: Ensure you have an Apify account and access to the Apify platform.
2. **Provide Start URLs**: Copy and paste the desired search link, specify the location you want to scrape from streeteasy.com (e.g., "https://streeteasy.com/for-rent/brooklyn"), or use a direct listing URL (e.g., "https://streeteasy.com/building/one-fifty/rental/4642882").
3. **Adjust Scraper Settings**: Modify settings like `maxItems`, `maxConcurrency`, and `minConcurrency` to suit your requirements.
4. **Configure Proxy Settings**: (Optional) Configure proxy settings for better reliability and to avoid IP blocks.
5. **Run the Scraper**: Execute the scraper on the Apify platform. The output will be available in various formats like JSON, CSV, or Excel, depending on your preference.
6. **Monitor Progress**: Use the Apify console to monitor the scraper's progress and handle any errors or retries.
7. **Export Data**: Once the scraper completes, download the data in your preferred format for further analysis.

### Input Configuration

Example configuration object:

```json
{
    "startUrls": [
        {
            "url": "https://streeteasy.com/for-rent/brooklyn"
        },
        {
            "url": "https://streeteasy.com/condo-buildings/nyc/new_development:new%20development%7Chas_sales:1"
        },
        {
            "url": "https://streeteasy.com/building/one-fifty/rental/4642882?utm_campaign=rental_listing&utm_medium=share&utm_source=web&lstt=VCs9nIkXlFsjgOWoLx4k3G1MZv745x2t0o2gJVn1JspnqnVn206EA8iUFXjNTzfJdZTBOQykFmPAw623"
        },
        {
            "url": "https://streeteasy.com/for-rent/brooklyn"
        },
        {
            "url": "https://streeteasy.com/for-sale/kips-bay/status:closed?sort_by=interesting_desc"

        },
        {
            "url": "https://streeteasy.com/condo-buildings/nyc/new_development:new%20development%7Chas_sales:1"
        },
        {
            "url": "https://streeteasy.com/building/one-fifty/rental/4642882?utm_campaign=rental_listing&utm_medium=share&utm_source=web&lstt=VCs9nIkXlFsjgOWoLx4k3G1MZv745x2t0o2gJVn1JspnqnVn206EA8iUFXjNTzfJdZTBOQykFmPAw623"
        },
        {
            "url": "https://streeteasy.com/profile/825932-milton-coste?tab_profile=past_deals"
        },
        {
            "url": "https://streeteasy.com/profile/826114"
        }
    ],
    "maxItems": 100,
    "maxConcurrency": 10,
    "minConcurrency": 1,
    "maxRequestRetries": 100,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
}
```

#### Input Fields Explanation

- **Start URLs** (`startUrls`):
  - Array of URLs to start scraping from
  - Uses the `requestListSources` editor
  - Example default URL: "https://streeteasy.com/for-rent/brooklyn"

- **Addresses** (`addresses`):
  - Array of specific street addresses to search for
  - Type: Array of strings
  - Format: "123 Main St, City" (e.g., "235 WEST 131 STREET")
  - Uses the `stringList` editor
  - Perfect for targeting specific buildings or street blocks

- **More Results** (`moreResults`):
  - Bypass StreetEasy's standard 1050 result limit to scrape all possible results
  - Type: Boolean
  - Default: false
  - **Warning**: This process may take longer and consume more resources
  - Useful for comprehensive market analysis or large-scale data collection

- **Max Items** (`maxItems`):
  - Maximum number of listings to scrape per crawl
  - Type: Integer
  - Default: 100
  - Optional: If not defined, all items will be scraped

- **Max Concurrency** (`maxConcurrency`):
  - Maximum number of pages processed simultaneously
  - Type: Integer
  - Default: 10

- **Min Concurrency** (`minConcurrency`):
  - Minimum number of pages processed simultaneously
  - Type: Integer
  - Default: 1

- **Max Request Retries** (`maxRequestRetries`):
  - Number of retry attempts for failed requests
  - Type: Integer
  - Default: 100

- **Monitoring Mode** (`monitoringMode`):
  - Enable monitoring mode to track new listings over time
  - Type: Boolean
  - Default: false

- **Proxy Configuration** (`proxy`):
  - Configuration for proxy servers to hide scraper origin
  - Type: Object
  - Default configuration:
    - `useApifyProxy`: true
    - `apifyProxyGroups`: \["RESIDENTIAL"]
  - Uses the Apify Proxy editor for configuration

## StreetEasy Scraper Output Structure

### Core Fields for Sale

```json
{
        "__typename": "OrganicSaleEdge",
        "node": {
            "__typename": "SearchSaleListing",
            "id": "1749037",
            "advertisedOnSe": false,
            "areaName": "Kips Bay",
            "availableAt": null,
            "bedroomCount": 3,
            "buildingType": "CONDO",
            "fullBathroomCount": 2,
            "furnished": false,
            "geoPoint": {
                "__typename": "Geo",
                "latitude": 40.74124,
                "longitude": -73.98183
            },
            "halfBathroomCount": 1,
            "hasTour3d": false,
            "hasVideos": false,
            "isNewDevelopment": false,
            "leadMedia": {
                "__typename": "LeadMedia",
                "photo": {
                    "__typename": "Photo",
                    "key": "ff882c3cdb2ca0bd3c00d9665ebe18c6"
                },
                "floorPlan": null
            },
            "livingAreaSize": 1629,
            "mediaAssetCount": 20,
            "offMarketAt": "2025-02-13",
            "photos": [
                {
                    "__typename": "Photo",
                    "key": "ff882c3cdb2ca0bd3c00d9665ebe18c6"
                },
                {
                    "__typename": "Photo",
                    "key": "50dcd49f179204bf00a9f8b2370d1044"
                },
                ...
            ],
            "price": 2795000,
            "priceChangedAt": "2025-01-09T22:01:53.000Z",
            "priceDelta": 0,
            "slug": null,
            "saleType": "SPONSOR_UNIT",
            "soldPrice": 0,
            "sourceGroupLabel": "Brown Harris Stevens Development Marketing",
            "sourceType": "FEED",
            "status": "NO_LONGER_AVAILABLE",
            "street": "368 Third Avenue",
            "unit": "9A",
            "upcomingOpenHouse": null,
            "urlPath": "/building/vu-new-york/9a",
            "verifiedAt": null,
            "verifiedUpToDate": false
        },
        "amenitiesMatch": null,
        "matchedAmenities": null,
        "missingAmenities": null
    }
```

#### Core Fields Explanation

- **id**: Unique identifier for the listing.
- **advertisedOnSe**: Boolean indicating if the property is advertised on StreetEasy.
- **areaName**: Name of the area where the property is located.
- **availableAt**: Date when the property is available.
- **bedroomCount**: Number of bedrooms in the property.
- **buildingType**: Type of building (e.g., CONDO, COOP).
- **fullBathroomCount**: Number of full bathrooms.
- **furnished**: Boolean indicating if the property is furnished.
- **geoPoint**: Geographical coordinates of the property.
  - **latitude**: Latitude of the property.
  - **longitude**: Longitude of the property.
- **halfBathroomCount**: Number of half bathrooms.
- **hasTour3d**: Boolean indicating if the property has a 3D tour.
- **hasVideos**: Boolean indicating if the property has videos.
- **isNewDevelopment**: Boolean indicating if the property is a new development.
- **leadMedia**: Main media associated with the property.
  - **photo**: Main photo of the property.
    - **key**: Unique key for the photo.
  - **floorPlan**: Floor plan of the property.
- **livingAreaSize**: Size of the living area in square feet.
- **mediaAssetCount**: Number of media assets (photos, videos, etc.).
- **offMarketAt**: Date when the property went off the market.
- **photos**: Array of photos of the property.
  - **key**: Unique key for each photo.
- **price**: Listing price of the property.
- **priceChangedAt**: Date when the price was last changed.
- **priceDelta**: Change in price since the last update.
- **slug**: URL slug for the property.
- **saleType**: Type of sale (e.g., SPONSOR\_UNIT).
- **soldPrice**: Sold price of the property.
- **sourceGroupLabel**: Label of the source group.
- **sourceType**: Type of source (e.g., FEED).
- **status**: Current status of the listing (e.g., NO\_LONGER\_AVAILABLE).
- **street**: Street address of the property.
- **unit**: Unit number of the property.
- **upcomingOpenHouse**: Information about upcoming open houses.
- **urlPath**: URL path to the property listing.
- **verifiedAt**: Date when the listing was verified.
- **verifiedUpToDate**: Boolean indicating if the listing is up-to-date.
- **amenitiesMatch**: Matching amenities for the property.
- **matchedAmenities**: List of matched amenities.
- **missingAmenities**: List of missing amenities.

### Core Fields for Rental

```json
{
    "id": "string",
    "areaName": "string",
    "availableAt": "ISO 8601 date string",
    "bedroomCount": "integer",
    "buildingType": "string",
    "fullBathroomCount": "integer",
    "halfBathroomCount": "integer",
    "furnished": "boolean",
    "geoPoint": {
        "latitude": "float",
        "longitude": "float"
    },
    "hasTour3d": "boolean",
    "hasVideos": "boolean",
    "isNewDevelopment": "boolean",
    "leaseTerm": "integer",
    "livingAreaSize": "integer",
    "monthsFree": "integer",
    "noFee": "boolean",
    "netEffectivePrice": "integer",
    "offMarketAt": "ISO 8601 date string | null",
    "price": "integer",
    "priceChangedAt": "ISO 8601 date string",
    "priceDelta": "integer",
    "slug": "string | null",
    "sourceGroupLabel": "string",
    "sourceType": "string",
    "state": "string",
    "status": "string",
    "street": "string",
    "upcomingOpenHouse": "object | null",
    "unit": "string",
    "urlPath": "string",
    "zipCode": "string"
}
```

#### Core Fields Explanation

- **id**: Unique identifier for the rental listing.
- **areaName**: Name of the area where the property is located.
- **availableAt**: Date when the property is available for rent.
- **bedroomCount**: Number of bedrooms in the property.
- **buildingType**: Type of building (e.g., CONDO, COOP).
- **fullBathroomCount**: Number of full bathrooms.
- **halfBathroomCount**: Number of half bathrooms.
- **furnished**: Boolean indicating if the property is furnished.
- **geoPoint**: Geographical coordinates of the property.
  - **latitude**: Latitude of the property.
  - **longitude**: Longitude of the property.
- **hasTour3d**: Boolean indicating if the property has a 3D tour.
- **hasVideos**: Boolean indicating if the property has videos.
- **isNewDevelopment**: Boolean indicating if the property is a new development.
- **leaseTerm**: Lease term duration in months.
- **livingAreaSize**: Size of the living area in square feet.
- **monthsFree**: Number of months free in the lease term.
- **noFee**: Boolean indicating if there is no broker fee.
- **netEffectivePrice**: Net effective price after accounting for any concessions.
- **offMarketAt**: Date when the property went off the market.
- **price**: Listing price of the rental property.
- **priceChangedAt**: Date when the price was last changed.
- **priceDelta**: Change in price since the last update.
- **slug**: URL slug for the property.
- **sourceGroupLabel**: Label of the source group.
- **sourceType**: Type of source (e.g., FEED).
- **state**: State where the property is located.
- **status**: Current status of the listing (e.g., ACTIVE, NO\_LONGER\_AVAILABLE).
- **street**: Street address of the property.
- **upcomingOpenHouse**: Information about upcoming open houses.
- **unit**: Unit number of the property.
- **urlPath**: URL path to the property listing.
- **zipCode**: Zip code of the property.

### Rental Object Structure

```json
{
    "rental": {
        "__typename": "Rental",
        "id": "string",
        "address": {
            "latitude": "string",
            "longitude": "string"
        },
        "anyrooms": "integer",
        "area": {
            "id": "string",
            "name": "string",
            "borough": {
                "name": "string"
            }
        },
        "closed_at": "date | null",
        "days_on_market": "integer",
        "is_furnished": "boolean",
        "is_featured": "boolean",
        "is_sponsored": "boolean",
        "is_viewed": "boolean",
        "listed_at": "ISO 8601 date string",
        "opaque": "string",
        "status_date": "date | null",
        "status_title": "string",
        "source_group_id": "string",
        "sourceuri": "string | null",
        "quick_url": "string",
        "smallImageURL": "string",
        "mediumImageURL": "string",
        "is_show_bsc_looker_report": "boolean",
        "twilio_number": "string | null"
    }
}
```

#### Rental Object Fields Explanation

- **id**: Unique identifier for the rental listing.
- **address**: Geographical coordinates of the property.
  - **latitude**: Latitude of the property.
  - **longitude**: Longitude of the property.
- **anyrooms**: Number of rooms in the property.
- **area**: Information about the area where the property is located.
  - **id**: Unique identifier for the area.
  - **name**: Name of the area.
  - **borough**: Borough where the property is located.
    - **name**: Name of the borough.
- **closed\_at**: Date when the rental listing was closed.
- **days\_on\_market**: Number of days the property has been on the market.
- **is\_furnished**: Boolean indicating if the property is furnished.
- **is\_featured**: Boolean indicating if the property is featured.
- **is\_sponsored**: Boolean indicating if the property is sponsored.
- **is\_viewed**: Boolean indicating if the property has been viewed.
- **listed\_at**: Date when the property was listed.
- **opaque**: Opaque identifier for the property.
- **status\_date**: Date when the status was last updated.
- **status\_title**: Title of the status.
- **source\_group\_id**: Identifier for the source group.
- **sourceuri**: URI of the source.
- **quick\_url**: Quick URL for the property listing.
- **smallImageURL**: URL for the small image of the property.
- **mediumImageURL**: URL for the medium image of the property.
- **is\_show\_bsc\_looker\_report**: Boolean indicating if the BSC Looker report is shown.
- **twilio\_number**: Twilio number for contact.

### Building Information

```json
{
    "building": {
        "id": "string",
        "title": "string",
        "subtitle": "string",
        "is_new_development": "boolean",
        "building_type": "string",
        "year_built": "integer",
        "open_rentals_count": "integer",
        "open_sales_count": "integer",
        "show_building_premium_page": "boolean",
        "medium_image_uri": "string",
        "residential_unit_count": "integer",
        "landmark_name": "string",
        "type": "string",
        "status": "string",
        "additionalDetails": {
            "leasingStartDate": "ISO 8601 date string",
            "salesStartDate": "ISO 8601 date string | null"
        }
    }
}
```

#### Building Information Fields Explanation

- **id**: Unique identifier for the building.
- **title**: Title of the building.
- **subtitle**: Subtitle of the building.
- **is\_new\_development**: Boolean indicating if the building is a new development.
- **building\_type**: Type of building (e.g., CONDO, COOP).
- **year\_built**: Year the building was built.
- **open\_rentals\_count**: Number of open rental listings in the building.
- **open\_sales\_count**: Number of open sales listings in the building.
- **show\_building\_premium\_page**: Boolean indicating if the building has a premium page.
- **medium\_image\_uri**: URI for the medium image of the building.
- **residential\_unit\_count**: Number of residential units in the building.
- **landmark\_name**: Name of the landmark.
- **type**: Type of the building.
- **status**: Current status of the building.
- **additionalDetails**: Additional details about the building.
  - **leasingStartDate**: Date when leasing starts.
  - **salesStartDate**: Date when sales start.

### Property Features and Amenities

```json
{
    "propertyDetails": {
        "address": {
            "street": "string",
            "houseNumber": "string",
            "streetName": "string",
            "city": "string",
            "state": "string",
            "zipCode": "string",
            "unit": "string"
        },
        "roomCount": "integer",
        "amenities": {
            "list": ["string"],
            "doormanTypes": ["string"],
            "parkingTypes": ["string"],
            "sharedOutdoorSpaceTypes": ["string"],
            "storageSpaceTypes": ["string"]
        },
        "features": {
            "list": ["string"],
            "fireplaceTypes": ["string"],
            "privateOutdoorSpaceTypes": ["string"],
            "views": ["string"]
        }
    }
}
```

#### Property Features and Amenities Fields Explanation

- **address**: Address details of the property.
  - **street**: Street name.
  - **houseNumber**: House number.
  - **streetName**: Street name.
  - **city**: City where the property is located.
  - **state**: State where the property is located.
  - **zipCode**: Zip code of the property.
  - **unit**: Unit number of the property.
- **roomCount**: Number of rooms in the property.
- **amenities**: List of amenities available in the property.
  - **list**: List of amenities.
  - **doormanTypes**: Types of doorman services.
  - **parkingTypes**: Types of parking available.
  - **sharedOutdoorSpaceTypes**: Types of shared outdoor spaces.
  - **storageSpaceTypes**: Types of storage spaces.
- **features**: List of features available in the property.
  - **list**: List of features.
  - **fireplaceTypes**: Types of fireplaces.
  - **privateOutdoorSpaceTypes**: Types of private outdoor spaces.
  - **views**: Types of views available from the property.

### Contact Information

```json
{
    "contacts": [
        {
            "secondary_phone": "string",
            "license": {
                "display_type": "string"
            },
            "email": "string",
            "id": "string",
            "name": "string",
            "primary_phone": "string",
            "is_pro": "boolean",
            "source_group": {
                "label": "string",
                "logo_url": "string"
            },
            "photo_uri": "string",
            "profile": {
                "url": "string"
            },
            "user_id": "string"
        }
    ]
}
```

#### Contact Information Fields Explanation

- **secondary\_phone**: Secondary phone number of the contact.
- **license**: License information of the contact.
  - **display\_type**: Display type of the license.
- **email**: Email address of the contact.
- **id**: Unique identifier for the contact.
- **name**: Name of the contact.
- **primary\_phone**: Primary phone number of the contact.
- **is\_pro**: Boolean indicating if the contact is a professional.
- **source\_group**: Source group information.
  - **label**: Label of the source group.
  - **logo\_url**: URL of the source group logo.
- **photo\_uri**: URI for the photo of the contact.
- **profile**: Profile information of the contact.
  - **url**: URL of the profile.
- **user\_id**: User ID of the contact.

### License Information

```json
{
    "license": {
        "business_name": "string",
        "business_address_1": "string",
        "business_address_2": "string | null",
        "business_city": "string",
        "business_state": "string",
        "business_zip": "string",
        "full_business_address": "string",
        "license_type": {
            "label": "string"
        }
    }
}
```

#### License Information Fields Explanation

- **business\_name**: Name of the business.
- **business\_address\_1**: First line of the business address.
- **business\_address\_2**: Second line of the business address.
- **business\_city**: City where the business is located.
- **business\_state**: State where the business is located.
- **business\_zip**: Zip code of the business.
- **full\_business\_address**: Full address of the business.
- **license\_type**: Type of license.
  - **label**: Label of the license type.

### Price History

```json
{
    "price_histories": [
        {
            "date": "YYYY-MM-DD",
            "price": "integer",
            "description": "string",
            "event": "string",
            "closing_id": "string | null"
        }
    ]
}
```

#### Price History Fields Explanation

- **date**: Date of the price event.
- **price**: Price at the time of the event.
- **description**: Description of the price event.
- **event**: Type of price event (e.g., PRICE\_DECREASE, LISTED).
- **closing\_id**: Closing ID associated with the event.

### Media Content

```json
{
    "media": {
        "photos": [
            {
                "key": "string",
                "description": "string",
                "url": "string"
            }
        ],
        "floorPlans": ["array"],
        "videos": ["array"],
        "tour3dUrl": "string | null",
        "assetCount": "integer"
    }
}
```

#### Media Content Fields Explanation

- **photos**: Array of photos of the property.
  - **key**: Unique key for each photo.
  - **description**: Description of the photo.
  - **url**: URL of the photo.
- **floorPlans**: Array of floor plans of the property.
- **videos**: Array of videos of the property.
- **tour3dUrl**: URL for the 3D tour of the property.
- **assetCount**: Number of media assets (photos, videos, etc.).

### Building Policies

```json
{
    "policies": {
        "list": ["string"],
        "petPolicy": {
            "catsAllowed": "boolean | null",
            "dogsAllowed": "boolean | null",
            "maxDogWeight": "integer | null",
            "restrictedDogBreeds": ["string"]
        }
    }
}
```

#### Building Policies Fields Explanation

- **list**: List of building policies.
- **petPolicy**: Pet policy information.
  - **catsAllowed**: Boolean indicating if cats are allowed.
  - **dogsAllowed**: Boolean indicating if dogs are allowed.
  - **maxDogWeight**: Maximum weight of allowed dogs.
  - **restrictedDogBreeds**: List of restricted dog breeds.

### Nearby Information

```json
{
    "nearby": {
        "transitStations": [
            {
                "name": "string",
                "distance": "float",
                "routes": ["string"],
                "geo": {
                    "latitude": "float",
                    "longitude": "float"
                }
            }
        ]
    }
}
```

#### Nearby Information Fields Explanation

- **transitStations**: Array of nearby transit stations.
  - **name**: Name of the transit station.
  - **distance**: Distance to the transit station.
  - **routes**: List of routes available at the transit station.
  - **geo**: Geographical coordinates of the transit station.
    - **latitude**: Latitude of the transit station.
    - **longitude**: Longitude of the transit station.

### Schools Information

```json
{
    "nearbySchools": [
        {
            "name": "string",
            "district": "string",
            "grades": ["string"],
            "id": "string",
            "idstr": "string",
            "geoCenter": {
                "latitude": "float",
                "longitude": "float"
            }
        }
    ]
}
```

#### Schools Information Fields Explanation

- **nearbySchools**: Array of nearby schools.
  - **name**: Name of the school.
  - **district**: School district.
  - **grades**: List of grades offered by the school.
  - **id**: Unique identifier for the school.
  - **idstr**: String identifier for the school.
  - **geoCenter**: Geographical center of the school.
    - **latitude**: Latitude of the school.
    - **longitude**: Longitude of the school.

### Property History

```json
{
    "propertyHistory": [
        {
            "listingId": "string",
            "sourceGroupLabel": "string",
            "offMarketAt": "ISO 8601 date string | null",
            "rentalEventsOfInterest": [
                {
                    "date": "YYYY-MM-DD",
                    "price": "integer",
                    "pricePercentChange": "float",
                    "status": "string"
                }
            ]
        }
    ]
}
```

#### Property History Fields Explanation

- **listingId**: Unique identifier for the listing.
- **sourceGroupLabel**: Label of the source group.
- **offMarketAt**: Date when the property went off the market.
- **rentalEventsOfInterest**: Array of rental events of interest.
  - **date**: Date of the rental event.
  - **price**: Price at the time of the event.
  - **pricePercentChange**: Percentage change in price.
  - **status**: Status of the rental event.

### Agent Profile Structure

```json
{
    "agentProfileId": "826114",
    "agentId": 279094,
    "id": 279094,
    "contact_id": 279094,
    "profile_id": 826114,
    "name": "Alexa Lambert",
    "license": {
        "license_holder_name": "LAMBERT ALEXA P",
        "license_number": "40LA0778336",
        "display_type": "Licensed Real Estate Salesperson",
        "license_expiration_date": "2026-06-17",
        "business_state": "NY"
    },
    "title": null,
    "email": "alexa.lambert@compass.com",
    "phone": "+19174038819",
    "cell": null,
    "primary_phone": "+19174038819",
    "secondary_phone": null,
    "expert": false,
    "expert_status": "expert_disabled",
    "pro": false,
    "bio": "Alexa Lambert has been a broker at Stribling & Associates since 1990...",
    "headshot_for_profile": "https://photos.zillowstatic.com/fp/3c903bf208196fd44b50e1c854d481ad-se_large_800_400.webp",
    "buy_side_deals_count": 15,
    "sell_side_deals_count": 514,
    "rental_deals_count": 58,
    "user_id": "1095873",
    "languages": [],
    "source_group": "Compass",
    "profile_url": "https://streeteasy.com/profile/826114-alexa-lambert",
    "display_name": null,
    "agency_logo_url": null,
    "facebook_url": null,
    "twitter_url": null,
    "neighborhoods": [],
    "neighborhoodDeals": [],
    "activeSaleDeals": [
        {
            "__typename": "AgentProfileListing",
            "address": {
                "__typename": "AgentProfileAddress",
                "lat": 40.77146514,
                "lon": -73.95899757,
                "pretty_address": "200 East 75th Street",
                "unit": "#9A"
            },
            "area": {
                "__typename": "Area",
                "name": "Lenox Hill"
            },
            "bathrooms": 4,
            "bedrooms": 4,
            "closed_at": null,
            "id": "1719688",
            "license": {
                "__typename": "License",
                "business_name": "COMPASS",
                "business_address_1": "90 5TH AVE",
                "business_address_2": "3RD FLOOR",
                "business_city": "NEW YORK",
                "business_state": "NY",
                "business_zip": "10011-7624",
                "full_business_address": "90 5th Avenue, New York, NY 10011-7624",
                "license_type": {
                    "__typename": "LicenseTypeInfo",
                    "label": "Corporate Broker"
                }
            },
            "listed_price": 6550000,
            "medium_image_uri": "https://photos.zillowstatic.com/fp/133b07d9ea5e928a7e949889877eb671-se_medium_500_250.webp",
            "unit_type_label": "Condo"
        }
    ],
    "activeRentalDeals": [
        {
            "__typename": "AgentProfileListing",
            "address": {
                "__typename": "AgentProfileAddress",
                "lat": 40.71737336,
                "lon": -73.99622667,
                "pretty_address": "58 Elizabeth Street",
                "unit": "#21"
            },
            "area": {
                "__typename": "Area",
                "name": "Chinatown"
            },
            "bathrooms": 1,
            "bedrooms": 1,
            "closed_at": null,
            "id": "4700185",
            "license": {
                "__typename": "License",
                "business_name": "KELLER WILLIAMS NYC",
                "business_address_1": "360 Madison Avenue",
                "business_address_2": "9th Floor",
                "business_city": "NEW YORK",
                "business_state": "NY",
                "business_zip": "10017",
                "full_business_address": "360 Madison Avenue, New York, NY 10017",
                "license_type": {
                    "__typename": "LicenseTypeInfo",
                    "label": "Limited Liability Broker"
                }
            },
            "listed_price": 2767,
            "medium_image_uri": "https://photos.zillowstatic.com/fp/1467113611742b42c11857f66f5dd771-se_medium_500_250.webp",
            "unit_type_label": "Rental Unit"
        }
    ],
    "pastRentalDeals": [
        {
            "__typename": "AgentProfileListing",
            "address": {
                "__typename": "AgentProfileAddress",
                "lat": 40.72119904,
                "lon": -74.00900269,
                "pretty_address": "7 Hubert Street",
                "unit": "#8A"
            },
            "area": {
                "__typename": "Area",
                "name": "Tribeca"
            },
            "bathrooms": 3,
            "bedrooms": 3,
            "closed_at": "2025-04-01T10:57:19-04:00",
            "id": "4619605",
            "license": {
                "__typename": "License",
                "business_name": "COMPASS",
                "business_address_1": "90 5TH AVE",
                "business_address_2": "3RD FLOOR",
                "business_city": "NEW YORK",
                "business_state": "NY",
                "business_zip": "10011-7624",
                "full_business_address": "90 5th Avenue, New York, NY 10011-7624",
                "license_type": {
                    "__typename": "LicenseTypeInfo",
                    "label": "Corporate Broker"
                }
            },
            "listed_price": 32000,
            "medium_image_uri": "https://photos.zillowstatic.com/fp/857af54b640be09bf58aba379c03517a-se_medium_500_250.webp",
            "unit_type_label": "Condo"
        }
    ],
    "pastClosingDeals": [
        {
            "__typename": "AgentProfileListing",
            "address": {
                "__typename": "AgentProfileAddress",
                "lat": 40.73419952,
                "lon": -73.99459839,
                "pretty_address": "45 Fifth Avenue",
                "unit": "#2AB"
            },
            "area": {
                "__typename": "Area",
                "name": "Greenwich Village"
            },
            "bathrooms": 2,
            "bedrooms": 2,
            "closed_at": "2025-01-23T12:26:04-05:00",
            "id": "1694548",
            "license": {
                "__typename": "License",
                "business_name": "BROWN HARRIS STEVENS RESIDENTIAL SALES LLC",
                "business_address_1": "445 PARK AVE 11TH FL",
                "business_address_2": null,
                "business_city": "NEW YORK",
                "business_state": "NY",
                "business_zip": "10022",
                "full_business_address": "445 Park Avenue 11th Fl, New York, NY 10022",
                "license_type": {
                    "__typename": "LicenseTypeInfo",
                    "label": "Real Estate Principal Office"
                }
            },
            "listed_price": 2495000,
            "medium_image_uri": "https://photos.zillowstatic.com/fp/4f121f02ecfcea36159c8f447415aa3c-se_medium_500_250.webp",
            "unit_type_label": "Co-op"
        }
    ]
}
```

#### Agent Profile Fields Explanation

- **agentProfileId**: Unique identifier for the agent's profile.
- **agentId**: Unique identifier for the agent.
- **id**: Alias for `agentId`.
- **contact\_id**: Identifier for the agent's contact information.
- **profile\_id**: Identifier for the agent's profile page.
- **name**: Full name of the agent.
- **license**: License details of the agent.
  - **license\_holder\_name**: Name of the license holder.
  - **license\_number**: License number of the agent.
  - **display\_type**: Type of license (e.g., "Licensed Real Estate Salesperson").
  - **license\_expiration\_date**: Expiration date of the license.
  - **business\_state**: State where the license is valid.
- **title**: Title or designation of the agent (if available).
- **email**: Email address of the agent.
- **phone**: Primary phone number of the agent.
- **cell**: Cell phone number of the agent (if available).
- **primary\_phone**: Primary phone number of the agent.
- **secondary\_phone**: Secondary phone number of the agent (if available).
- **expert**: Boolean indicating if the agent is an expert.
- **expert\_status**: Status of the agent's expert designation.
- **pro**: Boolean indicating if the agent is a professional.
- **bio**: Biography or description of the agent.
- **headshot\_for\_profile**: URL of the agent's profile picture.
- **buy\_side\_deals\_count**: Number of buy-side deals completed by the agent.
- **sell\_side\_deals\_count**: Number of sell-side deals completed by the agent.
- **rental\_deals\_count**: Number of rental deals completed by the agent.
- **user\_id**: Unique identifier for the agent's user account.
- **languages**: List of languages spoken by the agent.
- **source\_group**: Name of the agency or brokerage the agent is associated with.
- **profile\_url**: URL of the agent's profile page.
- **display\_name**: Display name of the agent (if available).
- **agency\_logo\_url**: URL of the agency's logo (if available).
- **facebook\_url**: URL of the agent's Facebook profile (if available).
- **twitter\_url**: URL of the agent's Twitter profile (if available).
- **neighborhoods**: List of neighborhoods the agent specializes in.
- **neighborhoodDeals**: List of deals completed in specific neighborhoods.
- **activeSaleDeals**: Array of active sale deals associated with the agent.
- **activeRentalDeals**: Array of active rental deals associated with the agent.
- **pastRentalDeals**: Array of past rental deals completed by the agent.
- **pastClosingDeals**: Array of past closing deals completed by the agent.

#### Active Sale Deals Fields Explanation

- **address**: Address details of the property.
  - **lat**: Latitude of the property.
  - **lon**: Longitude of the property.
  - **pretty\_address**: Formatted address of the property.
  - **unit**: Unit number of the property.
- **area**: Area where the property is located.
  - **name**: Name of the area.
- **bathrooms**: Number of bathrooms in the property.
- **bedrooms**: Number of bedrooms in the property.
- **closed\_at**: Date when the deal was closed (if applicable).
- **id**: Unique identifier for the deal.
- **license**: License details of the agent for this deal.
  - **business\_name**: Name of the business.
  - **business\_address\_1**: First line of the business address.
  - **business\_address\_2**: Second line of the business address (if available).
  - **business\_city**: City of the business.
  - **business\_state**: State of the business.
  - **business\_zip**: Zip code of the business.
  - **full\_business\_address**: Full address of the business.
  - **license\_type**: Type of license (e.g., "Corporate Broker").
- **listed\_price**: Listed price of the property.
- **medium\_image\_uri**: URL of the property's image.
- **unit\_type\_label**: Type of the unit (e.g., "Condo").

#### Active Rental Deals Fields Explanation

- **address**: Address details of the rental property.
  - **lat**: Latitude of the property.
  - **lon**: Longitude of the property.
  - **pretty\_address**: Formatted address of the property.
  - **unit**: Unit number of the property.
- **area**: Area where the property is located.
  - **name**: Name of the area.
- **bathrooms**: Number of bathrooms in the property.
- **bedrooms**: Number of bedrooms in the property.
- **closed\_at**: Date when the rental deal was closed (if applicable).
- **id**: Unique identifier for the rental deal.
- **license**: License details of the agent for this deal.
  - **business\_name**: Name of the business.
  - **business\_address\_1**: First line of the business address.
  - **business\_address\_2**: Second line of the business address (if available).
  - **business\_city**: City of the business.
  - **business\_state**: State of the business.
  - **business\_zip**: Zip code of the business.
  - **full\_business\_address**: Full address of the business.
  - **license\_type**: Type of license (e.g., "Limited Liability Broker").
- **listed\_price**: Listed price of the rental property.
- **medium\_image\_uri**: URL of the property's image.
- **unit\_type\_label**: Type of the unit (e.g., "Rental Unit").

#### Past Rental Deals Fields Explanation

- **address**: Address details of the past rental property.
  - **lat**: Latitude of the property.
  - **lon**: Longitude of the property.
  - **pretty\_address**: Formatted address of the property.
  - **unit**: Unit number of the property.
- **area**: Area where the property is located.
  - **name**: Name of the area.
- **bathrooms**: Number of bathrooms in the property.
- **bedrooms**: Number of bedrooms in the property.
- **closed\_at**: Date when the rental deal was closed.
- **id**: Unique identifier for the rental deal.
- **license**: License details of the agent for this deal.
  - **business\_name**: Name of the business.
  - **business\_address\_1**: First line of the business address.
  - **business\_address\_2**: Second line of the business address (if available).
  - **business\_city**: City of the business.
  - **business\_state**: State of the business.
  - **business\_zip**: Zip code of the business.
  - **full\_business\_address**: Full address of the business.
  - **license\_type**: Type of license (e.g., "Corporate Broker").
- **listed\_price**: Listed price of the rental property.
- **medium\_image\_uri**: URL of the property's image.
- **unit\_type\_label**: Type of the unit (e.g., "Condo").

#### Past Closing Deals Fields Explanation

- **address**: Address details of the past closing property.
  - **lat**: Latitude of the property.
  - **lon**: Longitude of the property.
  - **pretty\_address**: Formatted address of the property.
  - **unit**: Unit number of the property.
- **area**: Area where the property is located.
  - **name**: Name of the area.
- **bathrooms**: Number of bathrooms in the property.
- **bedrooms**: Number of bedrooms in the property.
- **closed\_at**: Date when the closing deal was completed.
- **id**: Unique identifier for the closing deal.
- **license**: License details of the agent for this deal.
  - **business\_name**: Name of the business.
  - **business\_address\_1**: First line of the business address.
  - **business\_address\_2**: Second line of the business address (if available).
  - **business\_city**: City of the business.
  - **business\_state**: State of the business.
  - **business\_zip**: Zip code of the business.
  - **full\_business\_address**: Full address of the business.
  - **license\_type**: Type of license (e.g., "Real Estate Principal Office").
- **listed\_price**: Listed price of the property.
- **medium\_image\_uri**: URL of the property's image.
- **unit\_type\_label**: Type of the unit (e.g., "Co-op").

### Benefits

- Access comprehensive NYC real estate data programmatically
- Track market trends and price changes in real-time
- Generate detailed market analysis reports
- Monitor specific buildings or neighborhoods
- Export data in various formats for analysis
- Save countless hours of manual data collection

### Why Choose This Scraper?

This StreetEasy.com scraper is specifically designed for the unique characteristics of the NYC real estate market. It handles the complexities of StreetEasy's data structure, including co-op and condo-specific information, building amenities, and NYC-specific property types. With built-in rate limiting and proxy support, it ensures reliable data collection while respecting the platform's usage guidelines.

### Explore More Scrapers

If you found this Apify Smartbuyglasses Scraper useful, be sure to check out our other powerful scrapers and actors at [memo23's Apify profile](https://apify.com/memo23). We offer a wide range of tools to enhance your web scraping and automation needs across various platforms and use cases.

### Support

- For issues or feature requests, please use the [Issues](https://console.apify.com/actors/78UWNeqywwtKfp5z6/issues) section of this actor.
- If you need customization or have questions, feel free to contact the author:
  - Author's website: <https://muhamed-didovic.github.io/>
  - Email: <muhamed.didovic@gmail.com>

### Additional Services

- Request customization or whole dataset: <muhamed.didovic@gmail.com>
- If you need anything else scraped, or this actor customized, email: <muhamed.didovic@gmail.com>
- For API services of this scraper (no Apify fee, just usage fee for the API), contact: <muhamed.didovic@gmail.com>
- Email: muhamed.didovic@gmail.com

# Actor input Schema

## `startUrls` (type: `array`):

URLs to start with.

## `addresses` (type: `array`):

Addresses to scrape - should be in format 123 Main St, City like: 235 WEST 131 STREET

## `monitoringMode` (type: `boolean`):

If checked, it will only scrape newly listings compared to what has been scraped in previous runs.

## `maxItems` (type: `integer`):

Maximum number of Listings/Items to scrape per crawl. If not defined, all items will be scraped.

## `maxConcurrency` (type: `integer`):

Maximum number of pages that can be processed at the same time.

## `minConcurrency` (type: `integer`):

Minimum number of pages that will be processed at the same time.

## `maxRequestRetries` (type: `integer`):

Number of times the crawler will retry a failed request before giving up.

## `proxy` (type: `object`):

Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://streeteasy.com/for-rent/brooklyn"
    }
  ],
  "addresses": [
    "2235 WEST 131 STREET"
  ],
  "monitoringMode": false,
  "maxItems": 100,
  "maxConcurrency": 10,
  "minConcurrency": 1,
  "maxRequestRetries": 100,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://streeteasy.com/for-rent/brooklyn"
        }
    ],
    "addresses": [
        "2235 WEST 131 STREET"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/apify-streeteasy-cheerio").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://streeteasy.com/for-rent/brooklyn" }],
    "addresses": ["2235 WEST 131 STREET"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/apify-streeteasy-cheerio").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://streeteasy.com/for-rent/brooklyn"
    }
  ],
  "addresses": [
    "2235 WEST 131 STREET"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call memo23/apify-streeteasy-cheerio --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=memo23/apify-streeteasy-cheerio",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "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": "oUqxc3I7d53jPU1h0"
    },
    "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",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "URLs to start with.",
                        "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
                    },
                    "maxItems": {
                        "title": "Max Listings/Items to scrape per crawl",
                        "type": "integer",
                        "description": "Maximum number of Listings/Items to scrape per crawl. If not defined, all items will be scraped.",
                        "default": 100
                    },
                    "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",
                        "type": "object",
                        "description": "Specifies proxy servers that will be used by the scraper in order to hide its origin.<br><br>For details, see <a href='https://apify.com/apify/web-scraper#proxy-configuration' target='_blank' rel='noopener'>Proxy configuration</a> in README.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
