Skip to content

How to Monitor Zillow Listing Price Drops

Track observed Zillow price changes with complete comparison baselines, clear monitoring state and repeatable scans in Apify or an MCP agent.

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

Falling price line beside a property

To monitor Zillow listing price drops, run the Zillow Price Drop Monitor on a narrow search with automatic baseline enabled. Finish the first complete scan, then repeat the same input. Review changeType, previousPrice and observedPrice in the next Dataset to find observed price changes.

The Actor maintains a comparison baseline for your account and exact query. A complete scan can become the baseline for the next scan; an incomplete scan preserves the previous complete baseline. Start manually, verify that state, then schedule the tested input.

Step 1. Choose a search small enough to complete

Use one ZIP, a narrow city segment or a checked Zillow search URL. Set a result cap and budget with room for the complete scan. A small cap is useful for testing the format, but a truncated scan cannot establish a complete monitoring baseline.

Open the Zillow Price Drop Monitor on Apify, click Try for free and open the editable Input form in Apify Console.

  1. Enter your city or ZIP, or use a supported search URL with locations left empty.
  2. Choose the listing type, such as sale.
  3. Set Maximum results this run with enough headroom for the intended scan.
  4. Keep Automatically update comparison baseline enabled.
  5. Leave the fixed previous scan ID and continuation run ID blank.
  6. Review pricing, set Max total charge and click Start.

The input reference explains the monitoring controls. The screenshot is read-only; enter the actual query in the Console form.

Zillow Price Drop Monitor input reference for query location, listing type, check-row cap and automatic baseline updates
Read-only reference for the query, check-row limit and automatic comparison baseline.
{
  "locations": ["02108"],
  "listingType": "sale",
  "maxResults": 100,
  "autoBaseline": true
}

This is a starting configuration. If it stops at a cap or source limit, narrow the query or adjust the permitted run limits and budget, then inspect the completion state. The number 100 is not a promise that this ZIP’s scan will finish.

Step 2. Verify the first complete baseline

After the run finishes, open RUN_SUMMARY, MONITOR_BASELINE and MONITOR_STATE. Read collection coverage and baseline state together.

Monitor records answer different questions
Record or fieldMeaning
RUN_SUMMARY.coverageCompleteWhether the scan achieved complete coverage under its query.
MONITOR_BASELINEThe current scan’s snapshot and completeness.
MONITOR_STATE.comparisonRunIdThe previous complete scan used for this comparison, when present.
MONITOR_STATE.baselineUpdatedWhether automatic comparison state was updated.
MONITOR_STATE.updateStatusThe explanation for an update, preservation or skipped run.

For the first complete automatic scan, updateStatus=updated confirms the stored baseline. Keep its run ID, exact query and output. A terminal successful run status can still accompany partial source work, so use the actual coverage and state records.

Step 3. Repeat the exact query and inspect changes

Start a fresh scan with the same location or URL, listing type and filters. Keep autoBaseline true and leave previousMonitorRunId blank for normal automatic monitoring. The latest complete same-query snapshot becomes the comparison.

How to interpret changeType
ValueInterpretation
baselineInitial observation for a baseline scan.
newA property is present without a matching previous observation.
price_dropThe comparable observed price is lower.
price_increaseThe comparable observed price is higher.
status_changedListing status changed; this classification takes priority when price also changes.
unchangedNo change was detected by the comparison rules.
not_observedA previous property was not seen in the completed query.

Filter price_drop for a basic drop report, then review the previous and observed prices. Also inspect price fields on status_changed rows if your report needs simultaneous price and status changes.

not_observed does not establish a sale or delisting. A property can move outside the filters or disappear from the available query results. Review the original listing and coverage before assigning a cause.

Understand automatic, fixed and continuation modes

Automatic monitoring uses the latest complete scan for the same account and query. Changing geography, listing type or filters creates a different query history, so preserve those settings with every export.

For a fixed comparison, set previousMonitorRunId to a finished complete run from this Actor and account with the same query. That comparison overrides automatic mode and leaves the automatic baseline unchanged.

resumeFromRunId has another purpose: finishing one interrupted scan. It retains that scan’s comparison across batches. Copy the full PAGINATION.nextInput from the latest finished batch and keep the query and baseline settings unchanged.

With automatic mode disabled and no fixed previous run, independent scans create their own baselines. Select the mode deliberately before expecting a comparison across dates.

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

Read a three-snapshot example

Imagine Monday’s complete scan sees property A at $450,000 and B at $390,000. Its monitoring state becomes updated. Wednesday’s same-query complete scan sees A at $440,000, producing an observed $10,000 drop against Monday.

If Friday’s scan stops at a budget or source limit, keep the saved rows and check updateStatus. incomplete_scan preserves Wednesday’s complete baseline. A continuation can finish Friday’s scan against its pinned comparison without silently switching the reference midway through collection.

Keep each observation run ID and comparisonRunId with the property, prices and timestamps. That makes the actual comparison dates clear when a scheduled scan was skipped or incomplete.

Schedule the tested input in Apify

After a complete baseline, save the normal same-query input as an Apify task. In Console, create a schedule, select the task, choose its frequency and timezone, and review the next run times before enabling it. The official schedule guide covers the controls.

Keep autoBaseline=true, with fixed previous-run and continuation IDs unset in the recurring task. Schedule fresh scans; use continuation separately to finish an interrupted scan. Choose an interval long enough for the scan to complete and keep a per-run budget.

The Actor exports checks and monitoring state. For notifications, connect the completed-run output to your chosen integration or webhook. Configure the recipient and change filter in that integration; the Actor has no default notification destination.

Plan costs and handle incomplete or overlapping scans

Every saved property check is billed as a result, including baseline, unchanged and not-observed rows. Count checks rather than only price changes when planning volume. The result cap includes those rows too.

The maximum requested count is 100,000 per run, subject to source and collection limits. The Free collection allowance is 100 rows across continuation batches, using Apify credits. Read the current Pricing tab and leave headroom for both current observations and relevant missing-observation checks.

If a scan stops early, retain the output, inspect ERRORS and use a provided continuation when appropriate. Read MONITOR_STATE for states such as already_running, incomplete_scan or newer_baseline_preserved. A skipped overlap should not be interpreted as an empty market.

The latest automatic snapshot is stored for the account and query in named Apify storage. It can outlive default run-storage retention. Keep that monitor storage while you need its history; removing it resets the automatic comparison state.

Run monitoring with your agent through Apify MCP

Connect an MCP-compatible agent to https://mcp.apify.com and authorize Apify using the MCP setup guide. Give it the exact query and a budget for each scan.

Use x_guru/zillow-price-drop-monitor.
Query: [MY_NARROW_AREA_AND_FILTERS]
Approved event-charge cap USD: [AMOUNT]

Inspect the current schema. Use
autoBaseline=true. Leave fixed previous
and continuation IDs unset for a fresh
normal scan. Choose maxResults with
headroom for complete query coverage.
Apply the approved cap through
callOptions.maxTotalChargeUsd.

Wait for the run and read all pages.
Inspect RUN_SUMMARY, MONITOR_BASELINE,
MONITOR_STATE, ERRORS and PAGINATION.
Report comparisonRunId, coverage and
updateStatus. Preserve property IDs,
changeType, both prices and observedAt.
Save raw checks and a reviewed CSV.
Explain incomplete or skipped work.
Wait before another paid scan or
creating a recurring schedule.

The agent starts with call-actor, waits using get-actor-run and reads results through get-dataset-items. For a single inventory export, use the listing guide. For source-provided property history, use Property Details. Application downloads are covered in the Apify run guide.

Keep reading

Build your first list.

100 free credits. No credit card required.

Start free