FSBO.com homes for sale by owner
US homes for sale by owner on FSBO.com by place or keyword, with price, beds, baths, size, lot size, year built, HOA, home type, open-house, map-box and sort filters. Each result has id, link, headline, description, price, property type, beds, baths, square feet, year built, address with coordinates, status, plan, MLS flag, next open house and photos. Owners' own names and contact details are not returned. Pass next_page back as page; null on the last page.
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
location | string | City, state, ZIP or address text (e.g. "Austin, TX", "Florida"). Example: Austin, TX |
keywords | string | Words in the listing. |
price_min | number | Minimum price (USD). |
price_max | number | Maximum price (USD). |
beds_min | integer | Minimum bedrooms. |
baths_min | number | Minimum bathrooms. |
sqft_min | integer | Minimum square feet. |
sqft_max | integer | Maximum square feet. |
lot_size_min | number | Minimum lot size (acres). |
year_built_min | integer | Built in or after this year. |
hoa_max | number | Maximum monthly HOA fee (USD; 0 = no HOA). |
home_types | string | Home types, comma-separated: SINGLE_FAMILY, CONDO, TOWNHOUSE, MULTI_FAMILY, LAND, MOBILE_HOME, OTHER. |
open_house_within | 7 | 14 | 28 | Open house within the next 7, 14 or 28 days. |
hide_pending | boolean | true: leave out homes under contract. |
sw_lat | number | Map box south-west latitude (with sw_lng, ne_lat, ne_lng). |
sw_lng | number | Map box south-west longitude. |
ne_lat | number | Map box north-east latitude. |
ne_lng | number | Map box north-east longitude. |
sort | newest | price_asc | price_desc | sqft_desc | Sort order. |
limit | integer | Results per page, 1-100. Example: 24 |
page | integer | Page number, starting at 1. Pass next_page back as page; it is null on the last page. Example: 1 |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/fsbo/v1/search?location=Austin%2C+TX" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/fsbo/v1/search",
params={"location": "Austin, TX"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/fsbo/v1/search");
url.searchParams.set("location", "Austin, TX");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).