Autocomplete US Locations

View all Redfin Property Data endpoints →

Type-ahead resolver for US real-estate geography. Pass any free-text fragment (city, ZIP code, neighborhood, school district, building or address) and receive data.exactMatch plus data.rows, where each row carries id (the region identifier, e.g. 6_30749 for New York), type, name, subName (canonical 'New York, NY, USA' form), url (e.g. /city/30749/NY/New-York), searchType (Places, Schools, Agents or Buildings) and countryCode. Chain rows[].id into the region-search endpoints and rows[].subName into the location-search endpoints. A location that matches nothing still returns HTTP 200 with hasFakeResults=true and a sentinel row id 23_null (searchType 'Search On Map'), so check hasFakeResults before treating results as real places.

API Features

Region IDs for search chaining exactMatch and every row expose the id token (type_regionId, e.g. 6_30749) required by the region-search endpoints.
Canonical place names subName normalizes messy input into the 'City, ST, USA' string accepted by the location-search endpoints.
Mixed result types One call covers cities, ZIP codes, neighborhoods, school districts, buildings and agent markets with a searchType label per row.
Explicit no-match signal Unknown text returns hasFakeResults=true with a 23_null sentinel row instead of an error, so forms can show a clean 'no such place' state.

Live API Demo

GET /api/project/redfin/property-auto-complete

API Response (JSON)

{}
curl -X GET 'https://api.opendata-api.com/api/project/redfin/property-auto-complete?key=<API_KEY>&location=New+York'
📢
Need Help?
If you encounter API issues or need other API requirements, please contact us.
Contact Us

Use Cases

Frequently asked questions

Does Redfin have an official API? How do I get the data without one?

Redfin retired its public developer offering long ago. This project packages the same place, search and detail data the website uses into a stable JSON API — one authenticated call per question, with no scraper or proxy pool to maintain.

How do I turn a city name into the region ID the search endpoints need?

Send the city fragment as location, then read exactMatch.id or rows[].id — a token like 6_30749 — and pass it straight in as the regionId of the region-search endpoints.

Will an unresolvable place throw an error?

No. A no-match lookup returns HTTP 200 with hasFakeResults=true plus a sentinel row whose id is 23_null and searchType is 'Search On Map'. Check that flag before treating rows as real places.

Related operations

Guides

View Subscription Plans →