# Zillow Rentals Scraper: Apartments, Houses & Rent Data (`deepmine/zillow-rentals-scraper`) Actor

Zillow rentals scraper: apartments, houses, condos and townhomes for rent by city, ZIP or Zillow link. Rent range, rent per bedroom count, move-in date, fees, offers, beds, baths, sq ft, photos, coordinates; optional floor plans, every available unit, lease and pets. Only-new monitor. No login.

- **URL**: https://apify.com/deepmine/zillow-rentals-scraper.md
- **Developed by:** [DeepMine](https://apify.com/deepmine) (community)
- **Categories:** Real estate, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.59 / 1,000 rental listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Zillow Rentals Scraper: Apartments, Houses & Rent Data

Zillow rentals scraper for apartments, houses, condos and townhomes for rent: type a city or ZIP and get each listing's rent range, rent per bedroom count, units available, move-in date and fees.

| Address | Listing | Rent | Beds | Units | Available |
|---|---|---|---|---|---|
| 7618 Burnet Rd, Austin, TX 78757 | The Waylon | $1,644-$4,207 | Studio-3 | 64 | – |
| 4605 S Pleasant Valley Rd, Austin, TX 78744 | Sage at Franklin Park | $1,681-$2,181 | 2-4 | 74 | – |
| 14440 Pearson Market Cir, Austin, TX 78717 | The Eden at Pearson Ranch | $1,564-$3,016 | 1-3 | 33 | – |
| 4451 Stony Meadow Ln, Austin, TX 78731 | Single family | $3,500 | 3 | – | 2026-12-01 |
| 6120 Dedham Ln, Austin, TX 78739 | Single family | $5,250 | 4 | – | 2026-10-19 |
| 7104 Blessing Ave #A, Austin, TX 78752 | Condo | $2,200 | 3 | – | 2026-11-14 |
<sub>Collected 2026-10-18 from the prefilled run (`Austin, TX`, the newest 100 listings: 77 apartment communities and 23 homes; first row after 4.3 s, the median of 4 runs).</sub>

**$0.85 per 1,000 listings** on Starter ($1.02 Free, $0.74 Scale, $0.59 Business); full details $0.99 per 1,000 more. The prefilled run (100 listings) costs about $0.09.

### What you get

- **Apartment communities priced by bedroom count.** Zillow shows a community as one card. Each row keeps it as one listing with `units`: one record per bedroom count with its lowest rent, plus the community's rent range (`minRent`, `maxRent`) and the units available now: all 77 communities of the Austin run had them; 32 showed a special offer and 37 their required monthly fees.
- **Homes for rent with their move-in date.** Houses, condos and townhomes come with rent, beds, baths, square feet, Zillow's rent and value estimates and the date they're available (19 of 23 in the Austin run).
- **Every available unit, with Full details.** A community's own page adds each available unit (unit number, floor plan, beds, baths, sq ft, rent, base rent, move-in date, lease), per bedroom count the rent range, sq ft and units available, the pet policy with its fees, laundry, phone, amenities and Walk Score. In a 100-listing Austin run, 71 of 77 communities listed their units (2,857 units in all); the other 6 show floor plans without units, which still give the rent per bedroom count. Homes add lease term, deposit, pets, furnished, laundry, price history, schools and the listing agent.
- **Past Zillow's 820-result limit.** Above 820 listings per location, the Actor reads the whole area box by box and returns the newest: 4,270 Austin listings read in 29 map boxes, the newest 1,500 delivered in 30 s.
- **Only new listings.** Schedule the same search and get only listings no earlier run returned (see below).

### Input

| Field | What it does |
|---|---|
| **Locations** | A city with its state (`Austin, TX`), a ZIP code (`78704`), a county, a neighborhood, or a Zillow rentals search link copied from your browser (its own filters and map area are used). One per line. |
| **Max rentals per location** | Newest listings first; up to 100,000 per location (1,000 if left out). |
| **Full details ($)** | Reads each listing's page: a community's floor plans and every available unit, a home's lease, deposit and pets. At the details price; a listing whose page can't be read is charged as a plain listing (`detailsStatus` `Failed`). |
| **Filters** | Min and max rent, min and max bedrooms, min bathrooms, rental types (apartments, houses, townhomes, condos, multi-family, manufactured), listed within 1 to 90 days. Sent to Zillow's own search: a ZIP with filters and the same search pasted as a Zillow link returned the same 131 listings in the same order. |
| **Only new listings**, **Monitor name** | See *Only new listings* below. |
| **Max listings in total**, **Proxy** | A cap over all locations; Apify datacenter IPs by default, with requests Zillow blocks retried on US residential IPs automatically. |

```json
{
  "locations": ["Austin, TX", "78704", "https://www.zillow.com/denver-co/rentals/"],
  "maxResults": 500,
  "minRent": 1200,
  "maxRent": 2500,
  "minBeds": 1,
  "homeTypes": ["apartment", "house"],
  "includeDetails": false
}
```

API callers may also send `location`, `listingUrl`, `maxItems`, `rentalType` (`APARTMENT`, `HOUSE`, `TOWNHOUSE`, `CONDO`) and `monitorMode`.

### Output

One row per listing, newest first, in input order; a listing found by several locations comes once, under the first. Every row of a run has the same fields; a value Zillow doesn't show is `null`. An apartment community has no ZPID on Zillow: its row carries Zillow's own `lotId` and `buildingId` and its link instead, and is never split into made-up homes.

| Field | Meaning |
|---|---|
| `photo`, `photos`, `photoCount` | Main photo, every photo link (full size with details) and the photo count |
| `address`, `street`, `city`, `state`, `zipcode`, `latitude`, `longitude` | Address (a community's building address), its parts and coordinates |
| `price`, `priceUsd` | Rent as Zillow shows it (`$2,200/mo`, `From $1,644/mo`) and as a number |
| `status` | `For rent` |
| `isBuilding`, `buildingName` | True for an apartment community (one row for all its units), and its name |
| `minRent`, `maxRent` | Monthly rent range: a home's rent; a community's lowest and highest rent. With details, its dearest available unit. Without, the top rent on its search card: base rent plus the required fees when Zillow's rents include them; when the card has no top rent, its dearest bedroom count's starting rent, a lower bound (31 of 77 Austin communities) |
| `units` | A community's units per bedroom count: `beds` (0 = studio), `minRent`, `maxRent`, `availableUnits`, `minSqft`, `maxSqft`, `availableFrom`, `roomForRent`. From the search card: each bedroom count's lowest rent; with details all of them, from the community's available units |
| `unitCount`, `buildingUnits` | Units available now, and the unit types as text (`1 bd from $2,024/mo`; with details one line per unit) |
| `availableFrom` | Move-in date (YYYY-MM-DD): a home's; a community's earliest available unit (details). Zillow's "available now" is the run's date |
| `specialOffer`, `specialHousing` | Zillow's special-offer badge (`4 Months Free`; with details the offer's full text) and Income restricted / Senior housing / Student housing (6 of 77 Austin communities) |
| `requiredFeesMin`, `requiredFeesMax`, `rentIncludesFees` | Required monthly fees on top of base rent, and whether Zillow's rents include them |
| `leaseTerm`, `deposit`, `petsAllowed`, `furnished`, `laundry` | Lease length, deposit, pets, furnished and laundry (details; deposit and furnished on homes) |
| `unitList` | Every available unit of a community (details): `unitNumber`, `floorPlan`, `beds`, `baths`, `sqft`, `rent`, `baseRent`, `availableFrom`, `leaseTerm`, `floor`, `zpid` |
| `petPolicy` | A community's pet rules and fees per pet type: `Cats: $350 one-time, $30/mo` (details) |
| `walkScore`, `transitScore`, `bikeScore` | A community's Walk, Transit and Bike Score (details) |
| `beds`, `baths`, `livingArea`, `lotSize`, `homeType` | Bedrooms, bathrooms, square feet (a community: its smallest unit), lot, Apartment / Single family / Condo / Townhouse / ... |
| `bathsFull`, `bathsHalf`, `bathsThreeQuarter`, `yearBuilt` | Bathroom types and year built (homes, details) |
| `zestimate`, `rentZestimate` | Zillow's value and rent estimates (homes) |
| `daysOnZillow`, `listedAt`, `pageViews`, `saves` | Days on Zillow, listing date, page views and saves (the last three with details) |
| `priceChange`, `priceChangedAt` | The latest rent change and its date |
| `openHouse`, `has3dTour`, `hasVideo`, `virtualTourUrl`, `floorPlanUrl` | Open houses, 3D tour and video flags, tour and floor plan links |
| `description`, `descriptionSnippet`, `facts`, `features` | Description, its first 50 characters, Zillow's at-a-glance facts and features by kind; a community's amenities (details) |
| `priceHistory`, `taxHistory`, `schools`, `schoolDistricts` | Rent and price events, tax years, assigned schools (details) |
| `parkingSpaces`, `garageSpaces`, `hasGarage`, `hasAttachedGarage`, `parkingFeatures` | Parking (homes, details) |
| `agentName`, `agentPhone`, `agentLicense`, `agentEmail`, `coAgentName`, `coAgentPhone`, `coAgentLicense` | Listing agent or a community's manager and leasing phone, co-agent (details) |
| `brokerName`, `brokerPhone`, `listedBy` | Listing brokerage and phone (details) |
| `buyerAgentName`, `buyerAgentLicense`, `buyerBrokerName`, `soldAt`, `lastSoldPrice` | A home's last sale, when Zillow shows it (details) |
| `hoaFee`, `taxAssessedValue`, `annualTax`, `taxRate`, `mortgageRate30Year`, `mortgageRate15Year`, `mortgageRateArm5`, `pricePerSqft`, `listingSubType` | Sale-side facts of the home Zillow keeps on rentals' pages too (details; mostly empty on rentals) |
| `mlsId`, `mlsName`, `mlsDisclaimer`, `mlsLastChecked`, `mlsLastUpdated` | The listing's source (`Zillow Rentals`, an MLS) and when it last changed (details) |
| `parcelId`, `county`, `neighborhood`, `subdivision`, `timeZone`, `staticMapUrl` | Parcel, county, neighborhood, subdivision, time zone, map image (details) |
| `propertyUrl` | The Zillow page |
| `zpid`, `lotId`, `buildingId` | A home's Zillow property id; a community's lot id and building id |
| `detailsStatus` | `OK` with details; `Failed` when the page couldn't be read, `Skipped` when the run's time limit came first (charged as plain listings) |
| `inputs`, `scrapedAt` | The location the row came from, and when it was collected (UTC) |

The Console has four tables: 📊 Overview, 🏢 Communities, 🏠 Homes and 📝 Lease & Pets (Full details). The run's **OUTPUT** record says per location what happened: Zillow's count, rows found and delivered, and the monitor's counts.

### Only new listings

Turn on **Only new listings** and schedule the run (daily or weekly). The first run returns the current market and remembers each listing it delivered, in a key-value store in your Apify account. Later runs of the same search skip those listings: they're not read, not returned and not charged. In our check, a second run of the prefilled Austin search right after the first returned 0 listings and said `100 listings earlier runs delivered were skipped`. Without a name, each location with its filters is its own monitor; give a **Monitor name** to share one memory across filter changes and locations. A restarted or resurrected run never charges a listing twice.

### Pricing

Pay per listing, no start fee, no minimum.

| Per 1,000 | Free | Starter | Scale | Business |
|---|---|---|---|---|
| Rental listing | $1.02 | $0.85 | $0.74 | $0.59 |
| Listing with full details | $2.01 | $1.84 | $1.73 | $1.58 |

Platinum and Diamond plans pay the Business price. The details add-on is charged only for a listing delivered with its details. A community that shows "Call" instead of a price comes without a rent and is charged as a listing (5 of 1,500 in the Austin run). Set a maximum cost per run in the Console; the run stops there and says so.

### FAQ

**Why is Zillow's total bigger than what I get?** For rentals Zillow counts units: Austin had 23,939 for rent, in 4,270 listings (communities and homes). This Actor returns listings, each community with its units per bedroom count.

**Why does a community have no ZPID?** Zillow gives apartment communities none on its search pages. The row keeps Zillow's own ids for it (`lotId`, `buildingId`) and its link, so you can join runs on them.

**Can I get every unit of a community as its own row?** Each row keeps the community whole, with its available units in `unitList` (Full details). To look up units one by one with full home details, paste the community link into [Zillow API](https://apify.com/deepmine/zillow-scraper) with *Building links: units*.

**Does it need a Zillow account?** No: only public pages, no login, no cookies.

### Related Actors

- [Zillow API: Property Details, Search & Sold Homes](https://apify.com/deepmine/zillow-scraper): the same engine for any home: look up addresses, ZPIDs and links, or search for sale, for rent and sold.
- [Zillow Scraper: Listings for Sale, Rent & Sold](https://apify.com/deepmine/zillow-listings-scraper): city, ZIP or Zillow search link in, homes for sale, for rent or recently sold out.

### Feedback

Something missing or wrong? Open an issue on the Issues tab and it gets fixed. If the Actor saves you time, a short review on its Store page helps other renters and analysts find it.

# Actor input Schema

## `locations` (type: `array`):

Where to find rentals, one per line: a city with its state ("Austin, TX"), a ZIP code ("78704"), a county, a neighborhood, or a Zillow rentals search link copied from your browser (its own filters and map area are used as they are).

## `maxResults` (type: `integer`):

Newest listings first. You pay per listing returned. Past Zillow's 820-result limit the Actor reads the whole area box by box and returns the newest.

## `includeDetails` (type: `boolean`):

Also read each listing's page. Apartment communities: every floor plan and available unit (unit number, beds, baths, sq ft, rent, move-in date, lease), pet policy and fees, amenities, phone, Walk Score. Single homes: lease term, deposit, pets, furnished, laundry, price history, schools, agent and broker phones, description, full-size photos. Costs more per listing (see Pricing); a listing whose page can't be read is charged as a plain listing.

## `minRent` (type: `integer`):

Lowest monthly rent, USD.

## `maxRent` (type: `integer`):

Highest monthly rent, USD.

## `minBeds` (type: `integer`):

At least this many bedrooms (0 = studio).

## `maxBeds` (type: `integer`):

At most this many bedrooms.

## `minBaths` (type: `integer`):

At least this many bathrooms.

## `homeTypes` (type: `array`):

Empty = all. Apartments include apartment communities.

## `daysOnZillow` (type: `string`):

Only listings that appeared on Zillow within this time.

## `onlyNewListings` (type: `boolean`):

For scheduled runs: return (and pay for) only listings no earlier run of the same search returned. The Actor remembers them in a key-value store in your account. The first run returns the current market.

## `monitorName` (type: `string`):

Optional. Without a name each search (location + filters) is its own monitor, so changing a filter starts afresh. With a name, every run using it shares one memory, also when filters change or locations are added.

## `maxProperties` (type: `integer`):

Most listings the whole run returns over all locations. You pay per listing returned. Empty = Max rentals per location for each location.

## `proxyConfiguration` (type: `object`):

Leave as is: Apify Proxy datacenter IPs, with requests Zillow blocks there retried on US residential IPs automatically. Choose RESIDENTIAL to use residential IPs for everything.

## `listingType` (type: `string`):

forRent: this Actor's searches are rentals. Zillow search links keep their own listing type.

## `includeCommunityDetails` (type: `boolean`):

With Full details on, apartment communities also read their page (floor plans, every available unit). On by default.

## `includeRentalFields` (type: `boolean`):

Rows carry the rental fields: rent range, units per bedroom count, move-in date, fees, special offer, Zillow's community ids. On by default.

## `location` (type: `string`):

One location, for API callers that send it under this key; added to Locations.

## `listingUrl` (type: `string`):

A Zillow rentals search link, for API callers that send it under this key; added to Locations.

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

Same as Max rentals per location, for API callers that send it under this key.

## `rentalType` (type: `string`):

APARTMENT, HOUSE, TOWNHOUSE or CONDO, for API callers; same as Rental types.

## `monitorMode` (type: `boolean`):

Same as Only new listings, for API callers that send it under this key.

## Actor input object example

```json
{
  "locations": [
    "Austin, TX"
  ],
  "maxResults": 100,
  "includeDetails": false,
  "daysOnZillow": "any",
  "onlyNewListings": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "listingType": "forRent",
  "includeCommunityDetails": true,
  "includeRentalFields": true
}
```

# Actor output Schema

## `properties` (type: `string`):

No description

## `summary` (type: `string`):

No description

# 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 = {
    "locations": [
        "Austin, TX"
    ],
    "maxResults": 100,
    "includeDetails": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("deepmine/zillow-rentals-scraper").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 = {
    "locations": ["Austin, TX"],
    "maxResults": 100,
    "includeDetails": False,
}

# Run the Actor and wait for it to finish
run = client.actor("deepmine/zillow-rentals-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "locations": [
    "Austin, TX"
  ],
  "maxResults": 100,
  "includeDetails": false
}' |
apify call deepmine/zillow-rentals-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,deepmine/zillow-rentals-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/2zvwsJodLzyLejGUi/builds/c18XAIew7LmJh7Pk5/openapi.json
