Zillow data in n8n
Add Zillow listing and property data to an n8n workflow with the built-in HTTP Request node: every incoming item becomes a lookup, and later nodes map the price, status and Zestimate from its output.
Base URL https://api.propertiesapi.com/v1 · auth header x-api-key. PropertiesAPI is an independent service that returns Zillow property and listing data as JSON, provided as-is.
How n8n fits
A PropertiesAPI community node for n8n is built and coming, but it is not published yet, so you won't find it among the community nodes. Until it is, n8n's own HTTP Request node makes the same call: a GET request with your key in the x-api-key header and an address or Zillow link from the incoming item as a query parameter.
The HTTP Request node runs once for each item it receives, so a trigger, a sheet or a database query that hands it a list of homes produces one lookup per home. The JSON answer becomes that item's output, and the next node maps fields such as the price or the listing status with an expression. Keep the key in a Header Auth credential instead of typing it into the node: credentials are stored apart from the workflow, so the key doesn't travel with an exported or shared workflow.
A live lookup takes typically 8 seconds, up to about 20 seconds, so add the node's Timeout option and set it well above that. Repeat lookups of the same home within 24 hours come from our cache and are free. If you already have a working curl command from the curl guide, the node's Import cURL option fills in the method, URL and query for you; move the key into the credential afterwards.
Store the key in a Header Auth credential
Create a credential of type Header Auth. Its Name is the header the API reads and its Value is your key. The HTTP Request node then sends the header on every request, and the key never appears in the node's own fields.
Credential type: Header Auth
Name: x-api-key
Value: <your PropertiesAPI key>Look up each item with the HTTP Request node
Send address when the item carries a street address, or url when it carries a Zillow link, never both. Never Error and Include Response Headers and Status make an error answer arrive as a normal item with its status code, so the next node can route it instead of the workflow stopping.
Method: GET
URL: https://api.propertiesapi.com/v1/zillow/property
Authentication: Generic Credential Type
Generic Auth Type: Header Auth (the credential above)
Send Query Parameters: on
Specify Query Parameters: Using Fields Below
Name: address Value: {{ $json.address }}
(or Name: url Value: {{ $json.zillowLink }})
Options
Timeout: 120000
Response
Include Response Headers and Status: on
Never Error: onRoute on the status code and map the fields
With the full response on, each output item has body, headers, statusCode and statusMessage, and the API's JSON sits under body. An If node on statusCode sends found homes one way and errors the other. Failed lookups aren't billed; retry rate_limited and busy answers on a later run, and send address_ambiguous answers to a person with the closest match's Zillow link.
If node condition: Number > is equal to
{{ $json.statusCode }} 200
true branch, map fields with expressions:
Address {{ $json.body.data.address }}
Status {{ $json.body.data.homeStatus }}
Price {{ $json.body.data.price }}
Zestimate {{ $json.body.data.zestimate }}
Rent Zestimate {{ $json.body.data.rentZestimate }}
Zillow link {{ $json.body.data.detailUrl }}
From cache {{ $json.body.meta.cached }}
Credits used {{ $json.body.meta.credits }}
false branch, read the error:
Code {{ $json.body.error.code }}
Message {{ $json.body.error.message }}
Closest home {{ $json.body.error.details.candidate.detailUrl }} (address_ambiguous only)Batch: many items in one request
The batch endpoint takes up to 50 items per request. An Aggregate node collects the items' addresses into one list, the HTTP Request node posts it, and a Split Out node turns the results back into one item per home, each with ok, data and error. For a longer list, put a Loop Over Items node in front so each pass sends one batch. A full batch can take a few minutes, so raise the timeout.
Aggregate node
Aggregate: Individual Fields
Input Field Name: address
Rename Field: on
Output Field Name: items
HTTP Request node
Method: POST
URL: https://api.propertiesapi.com/v1/zillow/batch
Authentication: Generic Credential Type, Header Auth (same credential)
Send Body: on
Body Content Type: JSON
Specify Body: Using JSON
JSON: {{ JSON.stringify({ items: $json.items }) }}
Options > Timeout: 300000
Split Out node
Field to Split Out: data
If node: Boolean > is true {{ $json.ok }}
true: {{ $json.data.address }}, {{ $json.data.price }}, {{ $json.data.zestimate }}
false: {{ $json.error.code }}
Longer lists: Loop Over Items (Batch Size 50) in front of the Aggregate noden8n gotchas
- Send exactly one of url, zpid or address per request. If an item can carry both a link and an address, use an expression that sends the link when there is one and the address otherwise.
- Without Never Error, the first not_found or address_ambiguous answer stops the run. Turn it on as shown, or set the node's On Error setting to Continue (using error output) and handle failed items on the error branch.
- Retry On Fail retries every failure, including answers that won't change, such as not_found. Route on the status code instead and retry only rate_limited and busy answers.
- Fields Zillow doesn't show for a home come back as null, so never read null as zero. Test for it before any arithmetic, for example with an If condition such as Number > is empty.
Zillow API and n8n: questions
Is there a PropertiesAPI node for n8n?+
A community node is built and coming, but it is not published yet, so it can't be installed today. Until it is, use the HTTP Request node as shown here; it sends the same request the node will send.
Does this work on n8n Cloud and on self-hosted n8n?+
Yes. The HTTP Request node and Header Auth credentials are built into n8n, so the setup is the same on both.
What does each workflow run cost?+
Zillow links and addresses cost the same: 1 credit per successful lookup. Repeat lookups of the same home within 24 hours come from our cache and are free. Failed lookups cost nothing. You start with 50 free lookups.
Can an n8n workflow watch Zillow for new listings?+
No. PropertiesAPI looks up homes you already know by link, zpid or address; it doesn't search Zillow or list homes for sale in an area.
Make your first call from n8n
50 free lookups, no card, no approval.
Zillow is a trademark of Zillow, Inc. PropertiesAPI is an independent service and is not affiliated with, endorsed by or sponsored by Zillow.