Zillow API connected to Retool, showing an internal property dashboard with a search bar, a results table, and a detail panel powered by a REST resource
An internal property dashboard built with Retool and the Zillapi Zillow API.

Retool is the fastest way to build internal tools on top of an API. You drag components onto a canvas, point them at queries, and you have a working dashboard in an afternoon. No frontend build, no deploy pipeline.

The Zillow API drops into Retool as a REST resource. Once connected, you can build a property research tool: search by address, browse results in a table, and drill into the full record on click.

Here is how to connect the Zillapi REST API to Retool and build a property dashboard.

What can you build?

Retool supplies the interface. The API supplies the property data. Together they cover internal real estate tools.

Architecture diagram showing a Retool app with search, table, and detail components calling a REST resource on Retool's backend, which adds the API key and calls the Zillow API, returning property data to the components
Retool’s backend holds the key and calls the API; components show the data.
ToolWhat it doesAPI endpoint
Property lookupSearch an address, see detailsProperty by address
Deal browserFilter and scan listingsSearch endpoint
Comp viewerShow recent sales near a subjectSearch (RECENTLY_SOLD)
Portfolio panelTrack values for owned propertiesProperty by address
Lead toolEnrich a lead with property dataProperty by address
Underwriting helperPull data into a calculatorProperty by address

Each API call costs 1 credit ($0.005). For API key setup, see the step-by-step guide.

How do I connect the API as a resource?

Retool calls an external API a resource. You configure it once, then every query in your app can use it.

Four numbered steps to set up the REST API resource in Retool: choose REST API, set the base URL to the Zillapi endpoint, add an Authorization bearer header with the API key, and save the resource
The REST resource setup: base URL, auth header, save.

In Retool, go to Resources and create a new one. Choose “REST API.” Fill in these settings.

SettingValue
NameZillapi
Base URLhttps://api.zillapi.com/v1
HeaderAuthorization: Bearer YOUR_API_KEY

Replace YOUR_API_KEY with your key from zillapi.com. Save the resource. Retool stores the key on its server, so it never reaches the browser.

Because the base URL is set on the resource, your queries only need the path, like /properties/by-address.

How do I build the search query?

Add a query that looks up a property by address. In the app editor, create a new query against the Zillapi resource.

Query settingValue
ResourceZillapi
MethodGET
URL path/properties/by-address
URL param: address{{ addressInput.value }}
URL param: fieldsaddress,zestimate,rentZestimate,bedrooms,bathrooms,livingArea,yearBuilt

Name the query lookupProperty. The {{ addressInput.value }} expression reads the value from a text input component named addressInput. When the query runs, Retool fills the address from whatever the user typed.

Add a text input to the canvas named addressInput and a button. Set the button to trigger lookupProperty on click.

How do I show results in a table?

For a search that returns many properties, use the search endpoint and a table component.

Create a second query named searchProperties.

Query settingValue
ResourceZillapi
MethodPOST
URL path/search
Body (JSON)see below
{
"location": "{{ locationInput.value }}",
"listingStatus": "FOR_SALE",
"homeType": ["SINGLE_FAMILY"],
"minPrice": {{ minPriceInput.value || 0 }},
"maxPrice": {{ maxPriceInput.value || 9999999 }}
}

Then drag a Table component onto the canvas. Set its Data source to the query result.

Diagram showing the JSON array returned by the search query on the left mapping into the rows and columns of a Retool table component on the right, with price, address, beds, and baths as columns
The query result array becomes the rows of the table component.
// Table component → Data source
{{ searchProperties.data.data }}

The expression points the table at the array the API returned. Retool reads the keys and creates a column for each. Hide the columns you do not need and rename the rest in the table settings.

When a user enters a location and runs the query, the table fills with matching properties.

How do I build the full dashboard?

A research dashboard has three parts: a search area, a results table, and a detail panel that shows the selected property.

Wireframe of a Retool property dashboard with a search bar and filters across the top, a results table filling the left, and a detail panel on the right showing the selected property's value, rent, beds, and baths
Search across the top, results on the left, details on the right.

Lay out the canvas like this. A container at the top holds the location input, price filters, and the search button. The table sits below on the left. A container on the right holds the detail panel.

In the detail panel, add text components and bind each to the selected row.

// Detail panel text components
{{ propertyTable.selectedRow.address.streetAddress }}
{{ "$" + propertyTable.selectedRow.zestimate.toLocaleString() }}
{{ propertyTable.selectedRow.bedrooms + " bd / " + propertyTable.selectedRow.bathrooms + " ba" }}
{{ propertyTable.selectedRow.livingArea.toLocaleString() + " sqft" }}

Each component reads from propertyTable.selectedRow, so the panel updates the moment a user clicks a different row. No extra query needed for data the table already holds.

How do I drill into full details on row click?

The search result has the basics. To pull the full 300-field record for a selected property, run a second query on row selection.

Create a query named propertyDetail.

Query settingValue
ResourceZillapi
MethodGET
URL path/properties/{{ propertyTable.selectedRow.zpid }}

Then set the query to run automatically when the table selection changes. In the query settings, add an event so it triggers on propertyTable selection.

// propertyDetail runs when a row is selected; bind panel fields to it
{{ propertyDetail.data.data.taxAssessedValue }}
{{ propertyDetail.data.data.yearBuilt }}
{{ propertyDetail.data.data.lotAreaValue }}

Now clicking a row pulls the complete record into the detail panel. This is the master-detail pattern: a list query for the table, a detail query for the selection. Each row click costs 1 credit.

How does this compare to building from scratch?

You could build the same tool with a custom React frontend and a backend. Retool plus the API gets you there faster.

Comparison matrix of a custom build versus Retool plus Zillapi across build time, frontend code, API key security, hosting, property data, and maintenance, showing the Retool approach ships in an afternoon with no frontend code or hosting to manage
Retool plus the API ships in an afternoon with no frontend or hosting to manage.
FactorCustom buildRetool + Zillapi
Build timeDays to weeksAn afternoon
Frontend codeYou write itDrag and drop
API key securityYou handle itResource keeps it server-side
HostingYou manage itRetool hosts it
Property dataSame APISame API
MaintenanceOngoingMinimal

For a public, high-traffic product, a custom frontend gives you full control. For an internal tool your team uses, Retool plus the API is the faster path.

An internal tool serving 1,000 lookups a month costs $5 for the data. The API is the cheap part of the build.

How do I get started?

Go to zillapi.com and sign up. You get 100 free credits with no credit card required. Then open Retool, add the Zillapi REST resource, and build the search query.

Start with the property lookup query and a single text input. Confirm it returns data. Then add the table, the detail panel, and the row-click drill-down.

For the Next.js version of a property tool, see the Next.js guide. For the no-code database version, see the Airtable guide. For property field documentation, see the property data guide.

Frequently asked questions

Can I connect the Zillow API to Retool?

Yes. Add a REST API resource in Retool with the base URL set to the Zillapi endpoint and an Authorization header holding your API key. Then create queries that call the property and search endpoints. Bind the query results to a table or text components. The whole setup takes about 15 minutes. Each lookup costs 1 credit ($0.005), and the free tier gives 100 credits at signup.

How do I build a property dashboard in Retool?

Add a search input, a table, and a detail panel to the canvas. Wire a search query to the API that runs on the input value, and set the table’s data source to the query result. When a user selects a table row, a second query pulls the full property details into the panel. This gives you a working internal property research tool with no frontend code.

Do I need to code to use the Zillow API in Retool?

Barely. Retool is low-code. You configure the API resource in a form, and you write small JavaScript expressions in double curly braces to pass inputs and read results. The examples in this guide show exactly what to paste. Most of the work is dragging components and pointing them at queries.

How much does it cost to build a Retool property tool?

Retool has a free tier for small teams, with paid plans for larger ones. The API costs $5 per month for 1,000 property lookups or $54 per year for 12,000. An internal tool serving 1,000 lookups a month costs $5 for the data. You get 100 free API credits at signup with no credit card.

How do I keep my API key safe in Retool?

Store the API key in the resource configuration, not in a query or component. Retool keeps resource credentials on the server and does not expose them to the browser. Every query runs through Retool’s backend, so the key never reaches the client. For extra control, use Retool’s environment variables or secrets manager.

Can I trigger a property lookup from a table row in Retool?

Yes. Set a query to read the selected row of your table with a JavaScript expression, then pass a field like the address or zpid as a parameter. Set the query to run when the selection changes. The detail panel then shows the full record for whichever row the user clicks. This is the standard master-detail pattern in Retool.