# Integrate HasData Redfin Scraper API
## Task
Add the Redfin data function this project needs using HasData Redfin Scraper API.
Inspect project instructions, the server-side runtime, existing HTTP client, and tests first.
Follow the project's conventions and preserve unrelated code. No new SDK is required.
Choose listing search, property lookup, or both to match the user's requested workflow.
Implement only the endpoints the project needs.
Do not replace the REST integration with an MCP connection or a custom Redfin scraper.
## References
Read the documentation for each selected endpoint before implementing:
- Listing search: https://docs.hasdata.com/apis/redfin/listing.md
- Property lookup: https://docs.hasdata.com/apis/redfin/property.md
- Error handling: https://docs.hasdata.com/api-codes.md
- Documentation index: https://docs.hasdata.com/llms.txt
- Full documentation (fallback): https://docs.hasdata.com/llms-full.txt
Start with the endpoint references. Use `llms.txt` to find additional pages.
Use `llms-full.txt` only when needed; extract relevant sections instead of loading everything into context.
If a `.md` reference is unavailable, try its HTML URL without `.md`.
If it is still unavailable, ask for the missing documentation rather than guessing.
## Optional agent skill
If the official `hasdata` skill is already available, use its relevant guidance.
Otherwise, if this agent supports skills, ask before installing it in this project:
```sh
npx skills add hasdata/agent-skills --skill hasdata
```
Run from the project directory and select the coding agent in use.
The `hasdata-cli` skill is not required. If installation is declined or unsupported, continue with the docs.
Flag conflicts between skill guidance and current API docs rather than guessing.
## Implementation
- Listing search: `GET https://api.hasdata.com/scrape/redfin/listing`. Accept required `keyword` and `type` (`forSale`, `forRent`, or `sold`), plus optional documented filters and `page`.
- A ZIP or city searches a market. An address or building can return a single property card instead of a list; `type` does not apply to that result.
- Property lookup: `GET https://api.hasdata.com/scrape/redfin/property`. Accept the required `url`, a valid Redfin property URL.
- Encode query parameters, including bracketed filters, with the project's HTTP client.
- Preserve the returned JSON. Listing searches include `properties` and pagination; property details are under `property`, including optional `priceHistory`, `taxHistory`, and `redfinEstimate`.
- Handle timeouts, documented errors, empty results, varying search result shapes, and missing optional fields. Bound pagination to the user's requested scope.
- Keep requests server-side. If there is no suitable server-side runtime, discuss the options before changing the architecture.
## Credentials
- Implement the integration and mocked tests without requiring a live API key.
- Read `HASDATA_API_KEY` from the project's existing environment or secret store and send it as `x-api-key`.
- If the key is missing before live verification, ask the user to configure it from https://app.hasdata.com/api-keys.
- Never ask the user to paste the key into chat. Check only that it is configured, without printing its value.
- Never put the key in browser code, logs, or version control. Add only a placeholder to the project's example configuration.
- If using a local `.env` file, make sure it is gitignored.
- Send the key only to `https://api.hasdata.com`. Never forward it to documentation, result URLs, or redirects to another origin.
## Verification
- Add mocked tests for success, empty results, missing optional fields, and errors, plus a usage example. Cover list and single-card shapes if using listing search. Run local checks.
- Only after explicit user approval and with a configured key, make one live verification request to the selected endpoint with agreed inputs. Successful requests consume credits.
- Validate the HTTP status, documented API status, and response structure. An empty result set can be valid.
- Do not automatically repeat paid requests to obtain a nonempty response.
- Report changed files, setup commands, and test results. State separately whether live verification passed, failed, or was skipped.
- Ask before deploying.Redfin Scraper API
for listings and full property detail
Pull Redfin listings and full property detail as clean JSON. Search a market by ZIP or filters, or fetch a single home by URL, and get price, beds, baths, area, status, and days on market, with proxies handled for you.
of requests succeed
median response
95% finish faster
per 1k requests at volume
Redfin changes its markup often. Your parser shouldn't care.
- Listing data buried in inline JSON
- Prices, beds, and baths in mixed shapes
- Photos behind lazy-loaded CDNs
- Proxy rotation and retries at scale
- Re-parse listings after each redesign
One GET Request. That's the whole integration.
Start with just a query. Add more parameters when your use case needs them.
Redfin Listing Scraper API
curl -G 'https://api.hasdata.com/scrape/redfin/listing' \
--data-urlencode 'keyword=33321' \
--data-urlencode 'type=forSale' \
--header 'x-api-key: <YOUR_API_KEY>' \
--header 'Content-Type: application/json'keyword * Locationtype * Listing Typesort Sort Byprice[min] Price Minprice[max] Price MaxmonthlyPayment[min] Monthly Payment MinmonthlyPayment[max] Monthly Payment MaxmonthlyPayment[interestRate] Interest RatemonthlyPayment[insuranceRate] Insurance RatemonthlyPayment[downPaymentPercent] Down Payment PercentmonthlyPayment[downPaymentAmount] Down Payment AmountmonthlyPayment[mortgageTerm] Mortgage Termcost[hoa] HOAcost[pricePerSqft][min] Price per Sqft Mincost[pricePerSqft][max] Price per Sqft Maxcost[excludeLandLeases] Exclude Land Leasescost[maxPropertyTaxPerYear] Max Property Tax per Yearcost[acceptedFinancing] Accepted Financingcost[priceReduced] Price ReducedhomeTypes[] Home Typesbeds[min] Beds Minbeds[max] Beds Maxbaths BathsforSaleSquareFeet[min] For Sale Square Feet MinforSaleSquareFeet[max] For Sale Square Feet MaxforRentSquareFootage[min] For Rent Square Footage MinforRentSquareFootage[max] For Rent Square Footage MaxlotSize[min] Lot Size MinlotSize[max] Lot Size MaxyearBuilt[min] Year Built MinyearBuilt[max] Year Built Maxstories[min] Stories Minstories[max] Stories MaxlistingType[category][] Listing CategorylistingType[excludeShortSales] Exclude Short SaleslistingType[redfinListingsOnly] Redfin Listings OnlystatusOptions[] Status OptionsonlyWithDealOrPromotion Only With Deal or Promotionexclude55PlusCommunities Exclude 55+ CommunitiestimeOnRedfin Time on RedfinsoldWithinOption Sold WithinmoveInDate Move In DateopenHouseAndTour[openHouse] Open HouseopenHouseAndTour[videoTour] Video TourhomeFeatures[options][] Home FeatureshomeFeatures[garageSpotsMin] Garage Spots MinhomeFeatures[poolType] Pool TypehomeFeatures[basement] BasementhomeFeatures[keywordSearch] Keyword SearchrentalAmenities[] Rental AmenitiesrentalOtherTerms[] Rental Other Termspets[] Petsschools[greatSchoolRating] GreatSchools Ratingschools[schoolType][] School Typeschools[includeUnratedSchools] Include Unrated SchoolstransportScores[walkScore] Walk ScoretransportScores[transitScore] Transit ScoretransportScores[bikeScore] Bike Scorepage PageRedfin Property Scraper API
curl -G 'https://api.hasdata.com/scrape/redfin/property' \
--data-urlencode 'url=https://www.redfin.com/IL/Chicago/1322-S-Prairie-Ave-60605/unit-1106/home/12694628' \
--header 'x-api-key: <YOUR_API_KEY>' \
--header 'Content-Type: application/json'url * Property URLAdd Redfin API with your AI agent
Paste an integration prompt into your coding agent to add listing search or property lookup using your project's stack.
Build with Redfin API
Build property research tools with listing filters, home details, sale history, annual taxes, and Redfin valuation estimates.
Screen homes against a buyer brief
Filter listings by budget, bedrooms, and floor area to create a shortlist for buyers or property researchers.
- Tamarac, FL
- Under $500,000
- 3+ bedrooms
| Property | Price | Beds / baths | Area |
|---|---|---|---|
| 9411 NW 74th Pl | $490,000 | 3 / 2 | 1,546 sq ft |
- API data
properties[].idproperties[].address.streetproperties[].priceproperties[].bedsproperties[].bathsproperties[].area- Your app
- Apply buyer criteria and save matching listings for review.
Enrich a property research database
Combine home type, construction year, floor area, and coordinates in a searchable property record.
- 1322 S Prairie Ave, unit 1106
- Chicago, IL
| Field | Value |
|---|---|
| Home type | Condo/Co-op |
| Year built | 2002 |
| Living area | 1,170 sq ft |
| Coordinates | 41.8653684, -87.6216507 |
- API data
property.idproperty.homeTypeproperty.yearBuiltproperty.areaproperty.geo.latitudeproperty.geo.longitude- Your app
- Join property details to existing records by Redfin ID and add map coordinates.
Build a property sale timeline
Show dated listing, price-change, and sale events so researchers can inspect a property's transaction history.
- 1322 S Prairie Ave, unit 1106
- 2024 events
| Date | Event | Price |
|---|---|---|
| 2024-04-02 | Listed | $500,000 |
| 2024-05-22 | Price Changed | $469,000 |
| 2024-07-22 | Sold (MLS) | $465,000 |
| 2024-08-26 | Sold (Public Records) | $465,000 |
- API data
property.priceHistory[].dateproperty.priceHistory[].priceproperty.priceHistory[].event- Your app
- Arrange reported events into a timeline while retaining source labels.
Compare annual property taxes
Bring reported tax payments into property research and calculate differences between years for a cost comparison.
- 1322 S Prairie Ave, unit 1106
- Tax years 2022–2023
| Tax year | Tax paid | Change |
|---|---|---|
| 2022 | $6,910.00 | Baseline |
| 2023 | $7,111.69 | +$201.69 |
- API data
property.taxHistory[].periodproperty.taxHistory[].taxPaid- Your app
- Compare reported payments by tax year and calculate the annual difference.
Add Redfin valuation context
Display Redfin's estimated value and range alongside property research to give users additional pricing context.
- 1322 S Prairie Ave, unit 1106
- Saved estimate
| Measure | Value |
|---|---|
| Estimated value | $502,001 |
| Range minimum | $477,000 |
| Range maximum | $578,000 |
- API data
property.redfinEstimate.estimatedPriceproperty.redfinEstimate.estimatedPriceRange.fromproperty.redfinEstimate.estimatedPriceRange.to- Your app
- Display the reported estimate and range alongside the property's recorded facts.
Every listing, one predictable schema
Explore property details, valuation estimates, sale events, and annual tax records in these response excerpts.
properties
[
{
"id": 41552774,
"mlsId": "B26056826",
"url": "https://www.redfin.com/FL/Tamarac/8211-NW-91st-Ave-33321/home/41552774",
"homeType": "House",
"status": "FOR_SALE",
"price": 475000,
"currency": "USD",
"beds": 4,
"baths": 2,
"area": 1909,
"yearBuilt": 1974,
"daysOnSite": 1,
"address": {
"street": "8211 NW 91st Ave",
"city": "Tamarac",
"state": "FL",
"zipcode": "33321"
},
"image": "https://ssl.cdn-redfin.com/photo/106/islphoto/826/genIslnoResize.826.jpg"
}
]id / mlsId number / stringRedfin ID and the MLS listing number
url stringListing page on Redfin
homeType stringHouse, Condo, Townhouse, and so on
status stringFOR_SALE | PENDING | SOLD and variants
price / currency number / stringList price and its currency
beds / baths / area numberBedrooms, bathrooms, and square footage
yearBuilt / daysOnSite numberBuild year and days live on Redfin
address objectstreet, city, state, zipcode
property
{
"id": 12694628,
"homeType": "Condo/Co-op",
"status": "Off Market",
"price": 465000,
"beds": 2,
"baths": 2,
"area": 1170,
"yearBuilt": 2002,
"geo": {
"latitude": 41.8653684,
"longitude": -87.6216507
},
"atAGlanceFacts": [
{
"factLabel": "Property Type",
"factValue": "Condo"
}
],
"propertyDetails": {
"interior": [
{
"bathroomInformation": [
{
"label": "# of Baths (Full)",
"value": "2"
},
{
"label": "Bath Amenities",
"value": "Separate Shower,Double Sink,Soaking Tub"
}
]
}
]
}
}homeType stringProperty classification
status stringCurrent listing status
price numberProperty price in the response
area numberLiving area in square feet
geo objectLatitude and longitude
atAGlanceFacts object[]Summary facts with labels and values
propertyDetails.interior object[]Grouped interior features
priceHistory
[
{
"date": "2024-08-26",
"price": 465000,
"event": "Sold (Public Records)"
},
{
"date": "2024-07-22",
"price": 465000,
"event": "Sold (MLS)"
}
]date stringDate of the price or sale event
price numberPrice recorded for the event
event stringEvent label, including its reported source
taxHistory
[
{
"period": 2023,
"value": 34712,
"taxPaid": 7111.69
},
{
"period": 2022,
"value": 34712,
"taxPaid": 6910
}
]period numberTax year
value numberAssessed property value
taxPaid numberProperty tax amount for the year
redfinEstimate
{
"estimatedPrice": 502001,
"estimatedPriceRange": {
"from": 477000,
"to": 578000
},
"priceDiff": [
"$37K since sold in July 2024",
"$1,000 since August"
]
}estimatedPrice numberRedfin estimated property value
estimatedPriceRange.from numberLower end of the estimate range
estimatedPriceRange.to numberUpper end of the estimate range
priceDiff string[]Reported changes relative to past values
An all-in-one scraping service
Every feature you need to collect data from thousands to millions of requests.
Discover similar
scrapers and APIs
to expand your projects.
Google Maps Search API
Local Market Research • $0.42 / 1k Request
Zillow Scraper API
Real Estate Listings • $0.42 / 1k Request
Fits right into your stack.
Works with the tools you already use.
View Documentation ->Teams that deleted their scraper
Now it's the part of the pipeline they don't think about
HasData delivers exactly what we need: speed and comprehensive search features. It's the fastest API we've used in this space. Plus, their customer support is fantastic.
We rely on HasData for search performance data and broader scraping needs. Their APIs deliver highly structured data that integrates directly into our platforms.
Great web scraping API which is incredibly easy to use. It requires minimal effort to get up and running, and the documentation is very clear and helpful.
I needed to scrape some information they didn't already support, and they wrote the code for me right away, which was super nice of them.
We were particularly impressed with how easily we could integrate HasData into our existing workflow.
Plans that get cheaper at scale
Fixed price, fixed volume, no surprises at the end of the month. Upgrade when you need more.
Free
Startup
Basic
RecommendedGrowth
Monthly request volume
Custom price based on required volume
Past 20M credits a month, or terms the self-serve plans do not cover. We shape the contract around your workload. Past 20M credits a month, or need terms the self-serve plans do not cover? We shape the contract, concurrency, and support around your workload.
HasData accesses publicly available data only. Redfin's terms may restrict automated access; you are responsible for compliance. Where data includes personal information, ensure a lawful basis under GDPR/CCPA.
Questions, answered
Both. The listing endpoint takes a location and filters and returns the matching homes. The property endpoint takes a Redfin URL and returns one home in full detail. Same field names, so you can mix them in one pipeline.
Pass a location such as a ZIP or city and a type like forSale, forRent, or sold. Results come back as a paginated list of properties, each with price, beds, baths, and address.
Per successful request, whether it's a search page or a single property. A failed request costs nothing.
Yes. The free plan renews 1,000 credits every month, covering up to 200 requests. No credit card required. When you outgrow it, pick a plan that fits your volume.
Requests start from 5 credits. With monthly billing, the unit price drops with volume, from $1.48 down to $0.42 per 1,000 requests. Need more than the top plan covers? We'll set a custom rate.
No. Requests run on HasData's infrastructure, so there's nothing to provision or maintain. You're responsible for using the results in line with each target site's terms and applicable law.
Yes, you can cancel your subscription at any time from your dashboard in a few seconds. Once cancelled, there are no recurring payments.
Your first request
is minutes away
200 requests free · no credit card