# Zillow Photo Downloader (`scraperoka/zillow-photo-downloader`) Actor

📸 Zillow Photo Downloader helps you quickly download high-quality property photos from Zillow for research, marketing, or listings. Save time, organize images fast, and streamline your workflow—ideal for agents, analysts & real estate pros. 🚀

- **URL**: https://apify.com/scraperoka/zillow-photo-downloader.md
- **Developed by:** [Scraperoka](https://apify.com/scraperoka) (community)
- **Categories:** Real estate, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### Zillow Photo Downloader 🎯

Manually visiting each Zillow property to collect listing photos wastes hours you don’t have. **Zillow Photo Downloader** scrapes Zillow property pages to extract high-resolution images in bulk. Ideal for marketers, researchers, and growth teams looking for the best Zillow photo downloader, Zillow image downloader, or a Zillow photo extraction tool to download Zillow photos fast at scale.

***

### What You Get: Sample Output

Here’s a sample record from a single run:

```json
{
  "success": true,
  "zpid": "82443556",
  "propertyUrl": "https://www.zillow.com/homedetails/82443556_zpid/",
  "inputUrl": "https://www.zillow.com/homedetails/3161-Ala-Ilima-St-APT-509-Honolulu-HI-96818/82443556_zpid/",
  "hiResImage": "https://example.com/images/hires.jpg",
  "streetViewImage": null,
  "totalPhotos": 42,
  "jpegImagesCount": 10,
  "webpImagesCount": 32,
  "jpegImages": [
    "https://example.com/images/photo1.jpeg",
    "https://example.com/images/photo2.jpeg"
  ],
  "webpImages": [
    "https://example.com/images/photo1.webp",
    "https://example.com/images/photo2.webp"
  ],
  "firstPhotoResolutions": [
    {
      "url": "https://example.com/images/first-photo.jpeg"
    }
  ],
  "photos": [
    {
      "photoIndex": 1,
      "jpeg": [
        { "url": "https://example.com/images/photo1.jpeg" }
      ],
      "webp": [
        { "url": "https://example.com/images/photo1.webp" }
      ]
    }
  ]
}
```

| Field | Type | What It Tells You |
|---|---|---|
| `success` | boolean | Whether the property page was processed successfully |
| `zpid` | string | Zillow property identifier extracted from the listing page |
| `propertyUrl` | string | A normalized Zillow property URL built from the extracted `zpid` |
| `inputUrl` | string | The exact URL you provided as input for traceability |
| `hiResImage` | string | null | The first high-resolution image URL (when available) |
| `streetViewImage` | null | Included in the output record (currently returned as `null`) |
| `totalPhotos` | number | Total number of photo entries the tool found for the listing |
| `jpegImagesCount` | number | How many JPEG image URLs were captured |
| `webpImagesCount` | number | How many WebP image URLs were captured |
| `jpegImages` | array | Collected JPEG image URLs for each listing |
| `webpImages` | array | Collected WebP image URLs for each listing |
| `firstPhotoResolutions` | array | The resolution entries for the first photo (as available in the page data) |
| `photos` | array | A structured per-photo list including `photoIndex`, plus JPEG/WebP source arrays |
| `error` | string (only on failure) | Error message when scraping fails for a property |

Export your dataset as JSON, CSV, or Excel — straight from the Apify dashboard.

***

### Why Zillow Photo Downloader?

There are a lot of ways to pull data from Zillow listings — here’s what sets Zillow Photo Downloader, Zillow listing photo scraper, and Zillow image bulk downloader apart.

#### Bulk extraction of listing photos

Zillow Photo Downloader takes a list of Zillow property URLs and extracts the photo URLs from each page, so you can download Zillow photos without manual copy-paste work.

#### Complete, structured photo output

Results include both a per-photo breakdown (`photos`) and convenient aggregates like `jpegImages` / `webpImages`, along with `totalPhotos`, `jpegImagesCount`, and `webpImagesCount` for quick filtering.

#### Resilient run handling with success/error states

Each property result includes a `success` flag; failures include an `error` field so you can review what worked and what needs another try—useful when building a Zillow photos download tool pipeline.

#### Built-in proxy support for reliable scraping

For better stability across larger batches, Zillow Photo Downloader includes built-in proxy support, helping keep runs consistent when you process many listings.

***

### Configuring Your Run

Drop this into your `input.json` to get started:

```json
{
  "propertyUrls": [
    "https://www.zillow.com/homedetails/3161-Ala-Ilima-St-APT-509-Honolulu-HI-96818/82443556_zpid/"
  ]
}
```

| Parameter | Required | What It Does |
|---|---|---|
| `propertyUrls` | ✅ | Provide a list of Zillow property page URLs you want to scrape to download Zillow photos |

***

### Core Capabilities

#### Photo URL extraction from Zillow property pages

Zillow Photo Downloader scrapes each provided Zillow property URL and returns image URLs for the photos found on the page—making it a practical Zillow property photo downloader for bulk workflows.

#### High-resolution focus with clear image outputs

The actor returns a `hiResImage` field when available and also provides full URL lists in `jpegImages` and `webpImages`, so you can choose the right format for your use case.

#### Organized per-photo structure

Beyond simple arrays, the `photos` field includes a structured list with `photoIndex` plus JPEG and WebP source arrays—great for downstream processing when you need ordering or grouping (Zillow listing image downloader use cases).

#### Batch-friendly processing

You can pass many `propertyUrls` at once. The actor processes each URL and pushes a result record for each property, so your dataset stays consistent as the Zillow image downloader scales.

#### Clear failure visibility for quality control

When something goes wrong for a listing, the tool returns an object with `success: false` and an `error` message, helping you troubleshoot without losing visibility across the run.

***

### Who Gets the Most Out of This

Here's how different teams put Zillow Photo Downloader to work:

**Marketing teams** use Zillow Photo Downloader to build photo-ready assets for campaign planning, quickly pulling listing photos into a structured dataset instead of manually downloading images one listing at a time.

**Real estate researchers and analysts** use it as a Zillow photo extraction tool to collect consistent photo URLs across multiple properties, enabling comparisons, dataset enrichment, and image inventory reporting.

**Lead generation and outreach teams** can use the output from a Zillow listing photo scraper workflow to support property-based research tasks (for example, assembling photo references for reports or outreach packets) while keeping everything traceable via `inputUrl` and `propertyUrl`.

**Developers and automation specialists** integrate this Zillow photos download tool output into pipelines, because each run produces structured JSON records containing `photos`, `jpegImages`, and `webpImages` plus success/error states.

***

### Step-by-Step: How to Use It

No coding needed. Here's how to run Zillow Photo Downloader from start to finish:

1. **Open** the actor on Apify via the actor page (console.apify.com).
2. **Enter** your inputs by filling in `propertyUrls` with one or more Zillow property links.
3. **Configure** proxy settings in the run environment (use the actor’s built-in proxy support for more reliable scraping on larger batches).
4. **Hit Run** and watch the live log while each `propertyUrl` is processed.
5. **View** results in the Apify dataset tab—each property generates a structured result record.
6. **Export** your dataset as JSON, CSV, or Excel directly from the Apify dashboard.

The whole process takes under 5 minutes to set up.

***

### Integrations & Export Options

Once your data is collected, Zillow Photo Downloader plugs directly into your existing workflow.

You can export from the Apify dashboard in common formats, including JSON, CSV, and Excel, using the dataset created by each run. For automation and system-to-system workflows, you can connect the run outputs using Apify’s API features and integrations (for example, pushing results onward when processing completes). If you want to keep everything hands-off, you can schedule runs and let Zillow image bulk downloader jobs execute automatically on a cadence. For deeper integration details, refer to the Apify developer docs at [apify.com/docs/api](https://apify.com/docs/api).

***

### Pricing & Free Trial

Zillow Photo Downloader runs on the Apify platform, which offers a **free tier** — no credit card required to get started. You can test with a few property URLs first, then scale your runs when you’re confident in the output quality. For the most up-to-date costs (including compute and plan specifics), check the pricing information on the Apify website. Start for free at [apify.com](https://apify.com) and scale when you're ready.

***

### Reliability & Performance

| What We Handle | How |
|---|---|
| Data freshness | Extracts photo data directly from each provided Zillow property page during the run |
| Rate-limit pressure | Uses built-in request pacing and stability mechanisms for batch processing |
| Reliability across batches | Built-in proxy support helps keep runs consistent |
| Failure visibility | Each record includes `success` and an `error` message when applicable |

**Limitations:** The actor relies on data available on the provided public Zillow pages. If a page doesn’t contain the expected photo data, the record may return `success: false` with an `error`.

For enterprise-scale runs, contact us to discuss custom configurations.

***

### Frequently Asked Questions

#### Is there a free plan or trial for Zillow Photo Downloader?

Yes. Apify offers a **free tier** to help you test Zillow Photo Downloader with real input data before scaling up.

#### Do I need to log in to Zillow to use this?

No. This actor is designed to scrape data from publicly available Zillow property pages you provide via `propertyUrls`.

#### How accurate is the data extracted by Zillow Photo Downloader?

The output is as accurate as the photo data present on each property page at run time. Results include image URLs and counts like `totalPhotos`, `jpegImagesCount`, and `webpImagesCount`, and failures return `success: false` with an `error`.

#### How many results can I get per run?

You can pass as many `propertyUrls` as you need in the input list. The run produces one result record per processed URL, so your final dataset size matches your input list.

#### How often is the data updated / how fresh is it?

Data is fetched during your run, so results reflect the photo data available when the actor processed each listing. If Zillow changes photos afterward, you’ll want to re-run for the latest outputs.

#### Is this legal? Does it comply with GDPR / CCPA?

It depends on how you use and store the output. Zillow Photo Downloader collects **publicly available data**, but you’re responsible for ensuring your workflow complies with GDPR, CCPA, platform ToS, and any applicable local regulations.

#### Can I export results to Google Sheets or Excel?

Yes. You can export your Apify dataset in formats like JSON, CSV, and Excel from the Apify dashboard, and then import into tools such as Google Sheets.

#### Can I run this on a schedule automatically?

Yes. You can schedule actor runs on Apify so your Zillow photos download tool workflow runs automatically on a cadence.

#### Can I access this via API?

Yes. You can trigger and retrieve results programmatically using the Apify API. See [apify.com/docs/api](https://apify.com/docs/api) for details.

#### What happens if the actor hits an error?

Each listing result includes `success`. When a property fails, the actor returns a record with `success: false` and an `error` message, so you can identify which `inputUrl` values need attention.

***

### Need Help or Have a Request?

Got a question about Zillow Photo Downloader or want a new feature added? Reach out at <dataforleads@gmail.com>. We actively maintain this actor and can help with workflow ideas like batch CSV upload for `propertyUrls` or webhook notifications when a run completes.

***

### Disclaimer & Responsible Use

*Zillow Photo Downloader is the fastest, most reliable way to download Zillow photos — start your free run today.*

This actor collects **publicly available data** from Zillow property pages you provide. It does not access private listings, login-gated content, or password-protected pages. You are responsible for complying with GDPR, CCPA, platform ToS, and any applicable local regulations when using or storing the results. For data removal requests, contact <dataforleads@gmail.com>. Use responsibly, ethically, and only for lawful purposes.

# Actor input Schema

## `propertyUrls` (type: `array`):

List of Zillow property URLs to scrape.

## Actor input object example

```json
{
  "propertyUrls": [
    "https://www.zillow.com/homedetails/3161-Ala-Ilima-St-APT-509-Honolulu-HI-96818/82443556_zpid/"
  ]
}
```

# 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 = {
    "propertyUrls": [
        "https://www.zillow.com/homedetails/3161-Ala-Ilima-St-APT-509-Honolulu-HI-96818/82443556_zpid/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scraperoka/zillow-photo-downloader").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 = { "propertyUrls": ["https://www.zillow.com/homedetails/3161-Ala-Ilima-St-APT-509-Honolulu-HI-96818/82443556_zpid/"] }

# Run the Actor and wait for it to finish
run = client.actor("scraperoka/zillow-photo-downloader").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 '{
  "propertyUrls": [
    "https://www.zillow.com/homedetails/3161-Ala-Ilima-St-APT-509-Honolulu-HI-96818/82443556_zpid/"
  ]
}' |
apify call scraperoka/zillow-photo-downloader --silent --output-dataset

```

## MCP server setup

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

```

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/avLB6xWYyBGGp5LOb/builds/feEzWZ8cHFqI8LCPi/openapi.json
