Skip to content

How to Export Zillow Listings Across Multiple ZIP Codes

Collect Zillow properties across ZIP territories, keep search attribution, and export CSV with clear per-ZIP quotas and continuation records.

Dievio Team · Growth Systems · November 6, 2026 · 6 min read

Map pin beside a grid of search areas

To export Zillow listings across multiple ZIP codes, put your ZIP list into the Zillow ZIP Code Scraper on Apify. Set a quota for each ZIP and a separate result cap for the run, choose sale, rent or sold, then download the Dataset as CSV. Keep the original territory list so you can reconcile coverage for every requested ZIP.

This workflow is useful when each territory needs its own allocation. Start with two ZIPs and ten results per ZIP, inspect the source attribution and summary, then expand the list. An MCP-connected agent can also prepare the input, run the collection and organize the files.

Step 1. Prepare ZIP codes as five-character strings

Keep a source sheet with the requested ZIP, territory name and your intended listing type. Import the ZIP column as text before copying values. 02108 needs its leading zero.

  1. Use five-digit US ZIP codes, one per input item.
  2. Remove surrounding spaces, blank cells and duplicate ZIPs.
  3. Check that spreadsheet formatting has preserved all five digits.
  4. Choose one listing type for the collection.
  5. Split lists larger than 100 ZIPs into logged collections.

The Actor accepts up to 100 ZIP entries and searches duplicate ZIPs once. For a city or one prepared search URL, the general Zillow listings guide is a simpler starting point.

Step 2. Set both limits in Apify Console

Open the Zillow ZIP Code Scraper on Apify, click Try for free and sign in if prompted. Open its editable Input form in Apify Console.

  1. Enter 02108 and 02109 under ZIP codes.
  2. Choose sale for Listing type.
  3. Set Results per ZIP to 10.
  4. Set Maximum results this run to 20.
  5. Leave advanced collection limits unchanged for the pilot.
  6. Review pricing, set Max total charge in the run settings and click Start.

The public input reference explains the two limits. The image is read-only; enter the actual territory list in the Console form.

Zillow ZIP Code Scraper reference showing ZIP codes, listing type, per-ZIP quotas and the total run cap
Read-only reference for the ZIP list, listing type and the two distinct result limits.
{
  "zipCodes": ["02108", "02109"],
  "listingType": "sale",
  "maxResultsPerZip": 10,
  "maxResults": 20
}

For rentals, choose rent; for sold listings, choose sold. Rental price filters use monthly USD. For sale-date criteria and candidate comparable properties, follow the dedicated sold-homes guide.

Understand per-ZIP quota and per-run cap

The limits control different parts of the collection
SettingScopePractical effect
maxResultsPerZipOne ZIP across the collection and its continuation chain.A ZIP that reaches its quota stays at that quota during continuation.
maxResultsNewly saved rows in the current run.The run can stop before every ZIP reaches its quota.
Collection and spending limitsWork and charges allowed for the batch.Requests, time, source access or budget can stop collection earlier.

With two ZIPs, ten per ZIP and twenty overall, there is room for both quotas. With an overall cap of twelve, the first ZIP might save ten rows while the second saves two before the run stops. Keep that second ZIP marked as potentially limited until you inspect the summary and continuation.

A reached quota is intentionally limited coverage. Ten results do not establish that a ZIP contains exactly ten matching properties. If your goal is a broader inventory, choose an appropriate quota and review source coverage separately.

Step 3. Review property identity and search attribution

Open the completed Dataset and inspect a few source links. Keep both the requested search ZIP and the property’s returned location fields.

Useful fields in the ZIP export
FieldUse
recordId, zpid, urlIdentify the saved property and review its source.
searchedZipcodeThe ZIP search that first saved the property.
zipcode, address, city, stateThe property’s available location information.
status, priceListing type and observed price context.
bedrooms, bathrooms, livingAreaProperty attributes for review.
source, scrapedAtCollection evidence and observation time.

Deduplication across ZIP searches means a property can be saved once even when several searches surface it. searchedZipcode records the first saving search, not every possible search membership.

If you need a complete search-to-property matrix, run ZIPs separately and attach each run’s source ZIP before combining files. Keep that relationship table beside the unique-property table.

Dievio

Your next customer starts here.

Find decision-makers by role, company and location. Build your next prospect list in Dievio.

Find my leads

Free audience preview · No credit card

Find leadsExample
FounderSoftwareUnited States
AM
Alex MorganFounder & CEO · Northstaralex@northstar.example
JC
Jamie ChenCo-founder · Formlyjamie@formly.example
Work emailsCompany detailsCSV export

Step 4. Export CSV and reconcile every requested territory

  1. Download the completed Dataset as CSV.
  2. Preserve ZIP codes and property IDs as text.
  3. Save the original file with its input, run ID and Dataset ID.
  4. Build a coverage sheet starting from every ZIP you requested.
  5. Add saved counts and the reported status for each territory.
  6. Keep failed, partial, quota-reached and completed outcomes distinct.

Read RUN_SUMMARY, including target information and zipCounts when present. A ZIP with no saved rows can have a genuine empty search, overlap with earlier searches, restrictive filters or a source failure. The saved CSV alone cannot settle that distinction.

Use recordId or the verified ZPID for your unique-property table. Retain the original search attribution and timestamp so deduplication does not erase where an observation came from.

Continue a larger territory collection

After a finished batch, open PAGINATION. If hasMore is true, copy the full nextInput into a new run of this same Actor and account. Use the latest finished batch and set a new run budget.

Keep the ZIP list, listing type, filters and per-ZIP quota fixed. You can adjust the next batch’s total maxResults and advanced limits. Newly saved rows go into the new Dataset; retain earlier Datasets to assemble the complete collection.

For twenty ZIPs with fifty rows per ZIP, the requested allocation is up to 1,000 unique saved rows before source availability and overlap. A 200-row batch cap can make the work easier to inspect in stages. Calculate the remaining allocation from actual saved counts.

The input supports a per-run cap up to 100,000. The Free allowance is 100 rows across the collection’s continuation chain, using Apify credits. Continuation does not renew that allowance. Check current pricing and limits before expanding.

Check a stopped or incomplete ZIP search

Read stopReason, coverageComplete and target statuses in RUN_SUMMARY. Use ERRORS for source issues. A target marked quota-reached can satisfy your requested sample while remaining geographically incomplete.

If the per-ZIP allocation itself needs changing, start a separate collection with the revised quota and retain the previous input history. Compare identifiers across those independent exports. Keep saved rows after a temporary restriction, and use a provided continuation for unfinished work when appropriate.

Run multi-ZIP extraction with your agent through MCP

Connect an MCP-compatible agent to https://mcp.apify.com and authorize your Apify account through the MCP setup guide. Supply the territory list and both limits.

Use x_guru/zillow-zip-code-scraper.
ZIP list: [MY_FIVE_DIGIT_STRINGS]
Listing type: sale
Results per ZIP: 10
First-run maxResults: 20
Approved event-charge cap USD: [AMOUNT]

Inspect the current schema and start
with two ZIPs. Preserve leading zeros.
Apply the approved cap through
callOptions.maxTotalChargeUsd.

Wait for completion and read all pages.
Keep recordId, zpid, searchedZipcode,
property zipcode, URL and source fields.
Save the raw output, a property CSV and
a coverage row for every requested ZIP.
Read RUN_SUMMARY, ERRORS and PAGINATION.
Report quotas reached and unfinished
territories. Save run and Dataset IDs.
Wait before continuing or expanding.

The agent starts with call-actor, waits through get-actor-run and reads output using get-dataset-items. For property enrichment, follow the Dataset-to-details workflow. For regional historical series, see the market-data guide. API downloads are covered in the Apify run guide.

Keep reading

Build your first list.

100 free credits. No credit card required.

Start free