Choosing an API

Free Real Estate APIs: What You Can Test Before Paying

A free tier is an evaluation budget. Use it to test identity, missing fields, freshness, error billing and cache behavior on your own properties before you choose a real estate data API.

7 min read

What a free real estate API usually gives you

Searches for a free real estate API tend to find three kinds of offer: a small trial allowance on a paid API, a sample dataset or sandbox that returns fixed records, and programs that are free to call but only after an application or a partnership agreement. Each can be useful. None of them is the same as free production access without limits, and it pays to know which one you are looking at before you build on it.

Partner programs deserve a careful read. Zillow Group's developer portal lists several APIs and says they are available to the public as well as partners, without making every program open to every developer. Listing feeds built on the RESO Web API standard are reached through a local MLS, which sets its own data-use and licensing terms. Check the current terms of any program you consider; they change, and access is often granted per use case.

What the PropertiesAPI free plan includes

The PropertiesAPI free plan includes 50 free lookups as a one-time trial, with no card. It calls the same endpoints as a paid plan and returns the same JSON, so a test you run on it tells you how the product behaves in production rather than in a sandbox.

Free accounts: 10 requests a minute and up to 25 live lookups a day (UTC); lookups paid from prepaid credits don't count toward it. Cache hits are free and don't count as live lookups. Zillow links and addresses cost the same: 1 credit per successful lookup. Failed lookups cost nothing. Plan your test set to fit inside those limits, and keep the remaining lookups for a second round after you fix whatever the first round reveals.

Spend the trial on the cases that break integrations

A trial spent on easy, famous addresses proves little. Choose properties that resemble your real workload and include the awkward ones. A dozen well-chosen inputs teach more than a long list of similar homes. Use the same inputs for every API you evaluate so the results are comparable.

  • A home currently for sale, so price means an asking price.
  • A rental, so you can confirm price is reported as monthly rent and not mixed with sale prices.
  • A recently sold home, including one in a state where sale prices may not be disclosed.
  • A condo or apartment with a unit number, to test that the right unit comes back.
  • A home where Zillow shows no Zestimate, to see how a missing estimate is represented.
  • An address with a deliberate mistake, to see whether you get a clear error or a confident wrong home.
  • One repeat of an earlier input, to observe caching and whether the repeat is billed.

Run the test and keep the raw evidence

Save every response body and its headers. You will want them when you compare providers or when a teammate asks why you chose one. The commands below look up one home twice and keep both responses. The first call is a live lookup; the second, made shortly after, should come from the cache.

Set a generous client timeout. A live lookup collects the property at request time, so treat a slow response as normal and a dropped connection as an uncertain outcome to check, not as proof that nothing happened.

After the single-home test, send the rest of your test set through the batch endpoint in one request. Each item comes back with its own ok flag, so you can see how one failure is reported next to successes, and the batch meta reports how many credits were charged. Compare that figure with the usage shown on your dashboard afterwards; the two should agree.

Look up one home twice and inspect cache and billing
# One property, saved with its response headers.
curl -sG "https://api.propertiesapi.com/v1/zillow/property" \
  -H "x-api-key: $PROPERTIESAPI_KEY" \
  --data-urlencode "url=https://www.zillow.com/homedetails/<your-test-home>_zpid/" \
  -D first.headers -o first.json --max-time 130

# The same property again: expect x-cache: HIT and meta.credits 0.
curl -sG "https://api.propertiesapi.com/v1/zillow/property" \
  -H "x-api-key: $PROPERTIESAPI_KEY" \
  --data-urlencode "url=https://www.zillow.com/homedetails/<your-test-home>_zpid/" \
  -D second.headers -o second.json --max-time 130

grep -i '^x-cache' first.headers second.headers
python3 -c "import json; [print(f, json.load(open(f))['meta']) for f in ('first.json', 'second.json')]"

Record each outcome in a small log

Write one row per test input. Record what you expected, what came back, and which fields were missing. The decision column is where you note whether the behavior is acceptable for your product, needs a workaround, or rules the API out.

The checklist file linked below covers the broader evaluation, including permitted use and operations. The log here is narrower: it captures the evidence from your free lookups so the decision rests on observed behavior rather than a feature page.

trial-log.csv (fill in as you test)
test_case,input,expected,ok,error_code,returned_address,fields_missing,fetched_at,cached,credits,decision
sale_listing,<link>,price is asking price,,,,,,,,
rental,<link>,price is monthly rent,,,,,,,,
sold_home,<link>,price is sale price or missing,,,,,,,,
condo_with_unit,<address with unit>,same unit returned,,,,,,,,
no_estimate,<link>,zestimate missing not zero,,,,,,,,
typo_address,<wrong house number>,clear error not wrong home,,,,,,,,
repeat_lookup,<first link again>,cache hit at no cost,,,,,,,,

Questions your free lookups should answer

When the trial is spent, you should be able to answer each question below from your saved responses, not from memory. If you cannot, the trial did not test enough, and spending more money will not make the answer clearer.

QuestionWhere the evidence is
Did each input return the intended home?Returned address, unit and zpid versus your input.
Are missing values explicit?Fields that come back null rather than zero or blank text.
When was the data collected?meta.fetched_at, separate from when you made the request.
Was a repeat billed?meta.cached, meta.credits and the x-cache header.
Were failures billed?Error responses and your account usage afterwards.
Can my use case be served at all?Whether the API looks up known properties or searches a market.

Red flags to watch for during any trial

Some problems show up only when you look at the raw responses rather than a demo page. Treat each of the following as a reason to ask the vendor a direct question before you commit, whichever API you are testing.

None of these is unusual in isolation, and some have reasonable explanations. What matters is whether the behavior is documented, consistent and something your product can handle without hiding it from users.

  • A wrong home returned with no warning when the address was ambiguous or mistyped.
  • Missing values returned as zero, or as an empty string that looks like a real value.
  • No collection timestamp, so you cannot tell an old observation from a new one.
  • Errors that consume trial credits, or a usage counter you cannot reconcile with your own log.
  • A sandbox that returns the same fixed records whatever you send, which tells you nothing about coverage.
  • Terms that forbid the storage or display your product needs.

Move from trial to plan with real numbers

Once the behavior is acceptable, estimate cost from your actual workload: how many distinct properties, how often you look each one up, and how many repeats fall inside the cache window. The pricing page is the authoritative source for plans, and the worksheet guide below turns those workload assumptions into a monthly estimate.

Be wary of choosing an API only because it is free to start. The cost that matters is the one you pay after launch, including the engineering time spent working around unclear errors or silent wrong matches. A short, honest trial is the cheapest way to find those problems.

Sources and documentation

Product details checked against the linked documentation on October 22, 2026. Code and sample inputs are illustrative unless stated otherwise.

Written by PropertiesAPI, an independent property data service. We are not affiliated with Zillow. Source data may be incomplete or change over time.