ForSaleByOwner.com Scraper — FSBO Listings
Pricing
from $1.90 / 1,000 listings
ForSaleByOwner.com Scraper — FSBO Listings
Scrape for-sale-by-owner US homes from ForSaleByOwner.com: address, price, beds/baths, sqft, GPS, photos, owner-financing flag & status. Search by state or city.
Pricing
from $1.90 / 1,000 listings
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Pull for-sale-by-owner homes from ForSaleByOwner.com. Search by state or city and get one clean row per listing — address, asking price, beds, baths, square footage, GPS coordinates, photos, an owner-financing flag, and status. Owner-posted listings, not agent feeds.

Why use this scraper
- Owner listings. ForSaleByOwner.com is a for-sale-by-owner marketplace — the inventory agents' feeds skip.
- Structured rows. Address (street/city/county/state/zip), price, beds/baths, square footage, year built, coordinates, photos and an owner-financing flag arrive parsed and typed.
- Owner phone extracted, not just implied. Sellers frequently paste a phone number in the description; the actor pulls it into an
ownerPhonefield. Competitors on this same feed ship an empty phone column — this one is filled when a number is present. - Motivated-seller scoring. Every row gets a
motivationScore(0–100) with amotivationReasonslist, derived from price drops, owner financing, short sale, lease-to-own, days on market and an owner phone in the listing. Filter withminMotivationScore,onlyPriceReducedorminDaysOnMarket. - Daily fresh-listing feed. Monitoring mode returns only listings not seen on earlier runs.
- Handles the US geo-block for you. The site is US-only behind a WAF; the actor runs on US residential with automatic IP rotation and retries.
What it does
You point the actor at states, city slugs, or ForSaleByOwner search URLs; it queries the site's listing API, pages through the full result set, and delivers clean JSON or CSV — one record per listing.
Supported inputs
- US states — one or more two-letter codes (
TX,FL), or leave empty for every state. - City location slugs —
city-stateform, e.g.houston-texas,miami-florida. - ForSaleByOwner search URLs — e.g.
https://www.forsalebyowner.com/search/list/houston-texas/fsbo-source/for_sale-status. - Source / status — owner-only (default) or all sources; for-sale, for-rent, sold or pending.
Use cases
- Investors & wholesalers sourcing agent-free, often motivated sellers (owner-financing listings are flagged).
- Buyer's agents finding FSBO inventory to represent buyers on.
- Market analysts tracking owner-listing supply and pricing by market.
- Lead tools & CRMs topping up a territory with fresh FSBO records on a schedule.
How it works
- You provide states, city slugs, or search URLs, plus source/status.
- The actor resolves each location and POSTs to ForSaleByOwner's search API through a US residential IP, retrying on a fresh IP if the WAF blocks one.
- It pages through the whole result set.
- Each listing is mapped to a clean row (coordinates, absolute photo URLs, owner-financing flag).
- With monitoring mode on, listings delivered before are skipped.
- Results stream to the dataset as JSON, CSV, Excel or API.
Input configuration
| Field | Type | Description |
|---|---|---|
states | array | Two-letter US state codes. Empty = every state. |
locationSlugs | array | City slugs in city-state form. |
startUrls | array | ForSaleByOwner search URLs (override the fields above). |
source | string | fsbo (owner only, default) or all. |
status | string | for_sale (default), for_rent, sold, pending. |
monitoringMode | boolean | Return only listings not seen on previous runs. |
maxItems | integer | Hard cap on delivered listings. |
proxy | object | Defaults to Apify US residential. |
Example input
{"states": ["TX", "FL"],"source": "fsbo","status": "for_sale","maxItems": 1000}
Output overview
One row per listing. Prices are in US dollars, coordinates are split into latitude/longitude, photo URLs are absolute, and ownerFinancing flags sellers open to financing.
Output sample
{"listingId": "6aa3350dfc2bee7de504f075","listingUrl": "https://www.forsalebyowner.com/listing/1301-REAR-Bellaire-Street-Amarillo-TX-79106/6aa3350dfc2bee7de504f075","street": "1301 REAR Bellaire Street","city": "Amarillo","county": "Potter","state": "TX","zip": "79106","propertyType": "House","bedrooms": 1,"bathrooms": 1,"livingAreaSqft": 13047,"yearBuilt": 1946,"listPrice": 108800,"latitude": 35.201901,"longitude": -101.8887064,"status": "Active","source": "For Sale By Owner","forSaleByOwner": true,"ownerFinancing": true,"willWorkWithBuyersAgent": "buyer_agent_and_commission","photoCount": 7,"listingSource": "ForSaleByOwner.com","scrapedAt": "2026-09-11T15:05:31.551Z"}
Key output fields
| Field | Description |
|---|---|
listingId | ForSaleByOwner.com internal ID. |
listingUrl | Browsable listing URL. |
street, city, county, state, zip | Full property address. |
propertyType | House, Condo, Land, etc. |
bedrooms, bathrooms, livingAreaSqft, yearBuilt | Core property facts. |
listPrice | Asking price in US dollars. |
latitude, longitude | Property coordinates. |
status, source | Listing status and source. |
forSaleByOwner | True when the source is an owner. |
ownerFinancing, shortSale, leaseToOwn | Seller-flexibility / distress flags. |
ownerPhone, ownerPhones, ownerEmails | Owner contact pulled from the description text (present when the owner included it). |
daysOnMarket | Whole days since the listing date. |
motivationScore, motivationReasons | Seller-motivation score 0–100 and the signals behind it. |
description | Property description — often contains the owner's phone number. |
primaryPhotoUrl, photoUrls, photoCount | Listing photos. |
FAQ
Is there an owner phone number?
There is no dedicated structured contact field, but sellers frequently include a phone number in the listing description, so many rows carry direct contact.
Why does it need a US proxy?
ForSaleByOwner.com serves listings only to US visitors. The actor routes through its own US residential proxy (fresh IP + retry per request) by default, so you don't configure anything. To use your own US residential proxy instead, set the proxy input.
Owner listings only?
Yes with source: fsbo (the default). Set source: all to include the agent/MLS listings the site also aggregates.
Can I get only new listings each day? Yes — enable monitoring mode and schedule the actor.
Support
Found a bug or need an extra field? Open an issue on the actor's Issues tab in Apify Console.
Additional services
Need bigger US for-sale-by-owner volume? The companion FSBO.com Scraper (same owner-listing niche, tens of thousands of listings) pairs well with this one. Ask via the contact on the profile.
Explore more scrapers
Part of a large real-estate scraping suite covering FSBO.com, Zillow, Redfin, Realtor.com, Trulia, LoopNet, Crexi, Land.com and more.
🤖 For AI agents & LLM apps
Inputs and outputs are plain JSON with documented field names, so an LLM agent can ask for "for-sale-by-owner homes in Texas with owner financing" and get structured rows — address, price, beds/baths, coordinates, owner-financing flag and listing URL — no HTML parsing.
⚠️ Disclaimer
This scraper collects only publicly available listing information from ForSaleByOwner.com. Use the data in line with ForSaleByOwner.com's terms of service and all applicable laws, including real-estate marketing, data-protection and anti-solicitation rules in your jurisdiction. You are responsible for how you use the output.
SEO keywords
ForSaleByOwner scraper, ForSaleByOwner.com scraper, for sale by owner listings, FSBO scraper, FSBO leads, owner listings, US real estate scraper, owner financing homes, motivated seller leads, real estate investor leads, off-market properties, property data API, homes for sale by owner, real estate lead generation.