Redfin Property Scraper — Schools, Risk & Parcels
Pricing
from $5.10 / 1,000 property records
Redfin Property Scraper — Schools, Risk & Parcels
Read any Redfin home in full from its page address. Twelve sections come back per home: the listing record, the long-form property history and public records, the agent and brokerage panel, assigned schools, flood, fire, heat and wind risk scores, the county parcel record and comparable sales.
Pricing
from $5.10 / 1,000 property records
Rating
0.0
(0)
Developer
The Netaji
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
Redfin Property Scraper
The full Redfin record for a home, read from its page address. Twelve named sections come back per property: the listing record, the long-form property history and public records, the agent and brokerage panel, assigned and nearby schools, flood, fire, heat and wind risk scores, the county parcel record, the history of Redfin's own value estimate, the listing's activity, the neighbourhood context, Redfin's comparable sales, nearby listings and nearby open houses.
Several of those exist nowhere else on a listing. A search row states the price, the size and the address; it states nothing about the flood risk, the assessed value on the county's parcel record, or which homes Redfin considers comparable.
Accepted input
propertyUrls is required and takes one or more Redfin property pages, one per line, given
either as full links or as paths ending in /home/<number>. Both forms are accepted and may
be mixed in one list. A link and a path for the same home count as one entry.
The address is the key and it cannot be assembled. A Redfin property path carries a
street-address slug in the middle of it — /CA/San-Francisco/331-Bartlett-St-94110/home/801881
— and that slug is part of the address rather than decoration, so the page cannot be reached
from the number at the end. Every row
Redfin Search Scraper produces carries
exactly this value in its url field, which is the intended way to obtain one.
{"propertyUrls": ["https://www.redfin.com/CA/San-Francisco/331-Bartlett-St-94110/home/801881"]}
Response fields
Each home is one row. Four fields identify it and twelve carry the record.
{"property_id": "801881","url": "https://www.redfin.com/CA/San-Francisco/331-Bartlett-St-94110/home/801881","requested_url": "/CA/San-Francisco/331-Bartlett-St-94110/home/801881","sections_present": ["above_the_fold","below_the_fold","main_house_info","schools","risk_factors","parcel_info","similar_listings"],"above_the_fold": { "…": "Redfin's own shape" },"below_the_fold": { "…": "Redfin's own shape" },"main_house_info": { "…": "Redfin's own shape" },"schools": { "…": "Redfin's own shape" },"risk_factors": { "…": "Redfin's own shape" },"parcel_info": { "…": "Redfin's own shape" },"avm_history": null,"activity": null,"around_this_home": null,"similar_listings": { "…": "Redfin's own shape" },"nearby_listings": null,"nearby_open_houses": null}
above_the_fold holds the price, address, beds, baths, area and listing status.
below_the_fold holds the long-form record: property history, public records, listing
details and amenities. main_house_info is the agent and brokerage attribution panel.
schools carries assigned and nearby schools with their ratings and distances.
risk_factors carries flood, fire, heat and wind scores. parcel_info is the county parcel
record matched to the address, with lot, APN and assessment data. avm_history is the
history of Redfin's own estimate of the home's value. activity is views, favourites and
tour requests. around_this_home is the neighbourhood context. similar_listings,
nearby_listings and nearby_open_houses are the surrounding market, and each entry in
them carries a Redfin address of its own, which this Actor takes.
Every section is republished in Redfin's own shape under its own name rather than renamed into fields of this Actor's choosing. That is deliberate and it is the opposite of what a flat export usually does, so it is worth stating why: renaming fields that have not been observed populated would publish a column of permanent nulls and call it a schema.
sections_present lists the sections that actually arrived, counted from the response
rather than from a list of what was asked for. It is the field that makes a null column
readable: a home with eleven sections and no parcel_info is an address no county record
was matched to, and a home with two is a page that came back thin. The count is also
written to the run log for each home.
property_id is read off the address rather than lifted out of a section, because the
sections are the part with no guaranteed shape and an identifier taken from one would be
null exactly when that section was. requested_url echoes the path the row was read for, so
a run given pasted links can be matched to the paths they resolved to.
Behaviour on partial results
A home that Redfin no longer serves — withdrawn between a search and this run — is skipped with a line in the log and the run continues. Twenty addresses taken from a search last week will not all still be listed, and losing nineteen good rows to one dead one is the wrong trade. An entry that is not a Redfin property address at all is refused before the request rather than after it, with a message naming the shape.
A section the page did not carry is null. Null means the page did not carry it, not that the home has none of what it describes.
Frequently asked questions
Why does this Actor take an address rather than a property identifier?
Because on Redfin the address is the key. A property path contains a street-address slug
that is not derivable from the numeric identifier at the end of it, so property_id alone
cannot reach the page. That identifier is still published on every row, because it is what
joins a row to anything else on the site — it is simply not what opens the page.
How many rows does one home produce? One. All twelve sections belong to the same home and are read in the same request, so splitting them across rows would produce a spreadsheet where the schools no longer line up with the house they are assigned to.
Why did some homes come back with far fewer sections than others?
Because the page carried fewer. A new-construction listing with no sale history, an address
with no matched county parcel record, and a home with no comparable sales nearby all return
fewer sections than an established resale in a dense market, and every one of those is a
complete answer. sections_present says which arrived.
Is there a way to read a whole market this way? Not economically. This Actor spends one request per home, which is why a row here costs several times what a listing row costs. The market read is Redfin Search Scraper, which returns an entire region in a single request and already carries the price, the size, the address, the MLS status and the listing agent's own description. The usual shape of a job is a region read there, filtered down, and then a shortlist read here.
Are sold homes covered?
No. Redfin does not serve sold listings through the surface these Actors read, which is a
measurement rather than a choice — a request built exactly as Redfin's own sold search
builds it returns the for-sale listings unchanged. below_the_fold does carry a home's own
past sales where Redfin publishes them, but that is one home's history rather than a way to
enumerate a market's sales.
Is a Redfin account, cookie or API key required? No. No account, session cookie or key of any kind is supplied to the Actor or needed by it.
Related Actors
Redfin Search Scraper reads every home for sale in a city, ZIP code, neighbourhood, county, state or school district in one request, and every row it produces carries the exact address this Actor takes. It is where a job on this site starts.