
Google Ads Scraper
scrape.ly/store/querystone/google-ads-scraperLead generationSEO tools
4 monthly users

Scrape for-sale-by-owner homes from FSBO.com in every US state: asking price, full address, coordinates, beds, baths, square feet, lot, year built, description, all photos, the seller's name and phone, HOA fee, open houses and Zillow, Redfin and Realtor.com value estimates. Search by state, city or ZIP with filters, or paste URLs.
Pull for-sale-by-owner homes from FSBO.com in every US state: asking price, full address with coordinates, beds, baths, square feet, year built, the seller's description, every photo, the seller's name and phone, HOA fee and the Zillow, Redfin and Realtor.com value estimates the site shows. Search by state, city or ZIP code with price, bedroom and type filters, or paste FSBO.com URLs. No login and no browser: in our tests 1,000 listings with full details took about 30 seconds and 10,000 about 3.5 minutes.
Florida or FL), a city with its state (Austin, TX), a ZIP code (78701) or USA. Or paste FSBO.com search or listing URLs.| Field | What it does |
|---|---|
searchLocations | US states, "City, ST" or ZIP codes. Each entry is its own search. USA searches the whole country. |
startUrls | FSBO.com search pages (e.g. https://fsbo.com/search/list/miami-fl/condos) or listing pages. They keep their own filters. |
maxResults | Most listings to save (default 20, 0 = no limit). |
propertyType | Single-family, condo, townhouse, multi-family, mobile home, land or other. |
minPrice / maxPrice | Asking price range in USD. |
minBeds / minBaths | Minimum bedrooms and bathrooms. |
minSqft / maxSqft, minYearBuilt, maxHoaFee, keywords | More filters. |
ownerListedOnly, hidePending | Only owner-claimed listings; hide homes already under contract. |
includePropertyDetails | On by default: opens each listing for the seller's name, county, HOA, features, every photo and value estimates. |
sortBy | Newest first, price low/high, or largest first. |
{
"searchLocations": ["Austin, TX", "78641", "Florida"],
"propertyType": "single_family",
"minPrice": 250000,
"maxPrice": 750000,
"minBeds": 3,
"maxResults": 200
}
One flat row per listing.
| Field | Description |
|---|---|
price, pricePerSqft | Asking price in USD and price per square foot |
address, street, city, state, zipCode, county, neighborhood, schoolDistrict | Location |
latitude, longitude | Coordinates |
propertyType, beds, baths, sqft, lotSize, lotUnit, yearBuilt, stories, garage | Property facts |
title, headline, description | Seller's headline and full description |
features, interiorFeatures, utilities, inclusions, specialConditions | Feature lists |
hasHOA, hoaFee, hoaName, hasPool, hasSpa, hasSolarPanels | HOA and amenities |
sellerName, sellerPhone | Seller's name (owner-claimed listings) and a phone number found in the listing text |
zillowEstimate, redfinEstimate, realtorEstimate, estimateLow, estimateHigh, valuations | Value estimates shown on the listing |
primaryPhotoUrl, photoUrls, photos, photoCount | Photos |
nextOpenHouse, openHouses | Open houses |
status, mlsListed, isUnclaimed, isVerified, planName, publishedAt, expiresAt, daysOnMarket | Listing status and dates |
listingId, url, scrapedAt | Identifiers |
Example (from a test run; seller name, phone and street changed to fictional values, photo list shortened):
{
"listingId": "cmuwu03wq05h3s601vk97pk4g",
"url": "https://fsbo.com/search/475-river-square-lane-ormond-beach-fl-32174-1791300391317",
"title": "Modern Elegance : 4 Bedroom 3 Bath pool home: Beautifully maintained with striking curb appeal",
"propertyType": "SINGLE_FAMILY",
"status": "ACTIVE",
"price": 519000,
"pricePerSqft": 223,
"address": "100 Example Lane, Ormond Beach, FL 32174",
"city": "Ormond Beach",
"state": "FL",
"zipCode": "32174",
"county": "Volusia",
"neighborhood": "River Oaks",
"latitude": 29.267232,
"longitude": -81.117115,
"beds": 4,
"baths": 3,
"sqft": 2327,
"yearBuilt": 2018,
"garage": 3,
"roofType": "Asphalt Shingle",
"cooling": "Central AC",
"description": "Situated in the River Oaks community convenient to Ormond Beach shopping, dining, recreation...",
"features": ["10' Ceilings", "Walk-in Closet", "Office", "Swimming Pool", "Central AC"],
"inclusions": ["Refrigerator", "Range / oven", "Dishwasher", "Washer", "Dryer"],
"hasPool": true,
"hasHOA": true,
"hoaFee": 63,
"hoaName": "Southern States",
"primaryPhotoUrl": "https://fsbo.com/api/fsbo/photos?key=fsbo%2Flistings%2Fcmuwu03wq05h3s601vk97pk4g%2Fphotos%2F1791308971741-1a7x9664hxi.jpg",
"photoCount": 36,
"sellerName": "Jordan Ellis",
"sellerPhone": "(386) 555-0142",
"zillowEstimate": null,
"planName": "MLS",
"mlsListed": false,
"isUnclaimed": false,
"publishedAt": "2026-10-06T18:47:56.858Z",
"daysOnMarket": 15
}
You pay $4.00 per 1,000 listings ($0.004 per listing saved), whether or not full details are on, plus a small amount of platform usage (compute and datacenter proxy traffic). Example: 1,000 listings ≈ $4.00 in listing fees plus a few cents of usage. You are never charged for listings that were not saved, and the run stops cleanly when it reaches your maximum charge.
Is it legal to scrape FSBO.com? The actor reads only public listing pages that anyone can open without an account. You are responsible for how you use the data, including contact rules such as do-not-call lists in your state.
Do I need a login or my own proxy? No. No account is used, and the default Scrapely datacenter proxy works; if the site ever blocks it, the run switches to US residential proxies by itself.
How many results can I get? As many as the site lists for your search. Set Maximum results to 0 to sweep every match; FSBO.com lists over 20,000 active homes across the US.
Why is the seller's name or phone empty on some rows? The site shows the seller's name only on listings the owner set up or claimed (turn on "Owner-claimed listings only" to keep just those), and the phone comes from the listing text when the seller typed one in. Card-level runs (full details off) have no seller name.
Why are the value estimates empty on some rows? FSBO.com shows Zillow, Redfin and Realtor.com estimates only for some homes; when the listing has none, the fields are empty.
Can I schedule it or use the API? Yes. Save your input as a task, schedule it daily or weekly, and fetch the results through the Scrapely API or integrations.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchLocationsarrayOptionalSearch locations
US states ('Florida' or 'FL'), cities with their state ('Austin, TX'), or 5-digit ZIP codes ('78701'). Each entry is its own search. Use 'USA' to search the whole country. Leave empty when you paste URLs below.
startUrlsarrayOptionalFSBO.com URLs
Optional. Paste FSBO.com search pages (e.g. https://fsbo.com/search/list/state/fl, https://fsbo.com/search/list/miami-fl/condos) or single listing pages. Pasted search pages keep their own filters; the filters below apply to search locations only.
maxResultsintegerOptionaldefault 20Maximum results
Most listings to save in this run, across all locations and URLs. 0 means no limit (the run sweeps every matching listing).
Optional. Filters apply to search locations; pasted URLs keep their own filters.
propertyTypeenumOptionaldefault "all"Property type
Only listings of this type.
minPriceintegerOptionalMinimum price (USD)
Only listings asking at least this much.
maxPriceintegerOptionalMaximum price (USD)
Only listings asking at most this much.
minBedsintegerOptionalMinimum bedrooms
Only listings with at least this many bedrooms. Listings that state no bedroom count are left out when this is set.
minBathsintegerOptionalMinimum bathrooms
Only listings with at least this many bathrooms. Listings that state no bathroom count are left out when this is set.
minSqftintegerOptionalMinimum living area (sq ft)
Only listings with at least this much living area. Listings without a square-footage figure are left out when this is set.
maxSqftintegerOptionalMaximum living area (sq ft)
Only listings with at most this much living area. Listings without a square-footage figure are left out when this is set.
minYearBuiltintegerOptionalBuilt in or after
Only homes built in this year or later, e.g. 2000. Listings without a build year are left out when this is set.
maxHoaFeeintegerOptionalMaximum HOA fee (USD per month)
Only listings whose HOA fee is at most this much. 0 keeps only listings without an HOA fee.
keywordsstringOptionalKeywords
Only listings that mention this word or phrase, e.g. 'pool', 'waterfront', 'acreage'.
ownerListedOnlybooleanOptionaldefault falseOwner-claimed listings only
Only listings the owner set up or claimed on FSBO.com (they carry the seller's name). Leaves out listings the site imported.
hidePendingbooleanOptionaldefault falseHide pending sales
Leave out listings that are already under contract.
includePropertyDetailsbooleanOptionaldefault trueFull property details
Opens each listing for the seller's name, county, neighborhood, school district, lot size, HOA fee and name, room features, utilities, every photo, open houses and the Zillow, Redfin and Realtor.com value estimates the site shows. Turn off for faster card-level rows (price, address, beds, baths, square feet, year built, description, coordinates and photos).
sortByenumOptionaldefault "newest"Sort by
Order in which listings are collected. Matters when Maximum results is lower than the number of matches.
maxResultsPerSearchintegerOptionalMaximum results per search
Optional cap for each location or URL, so one big state does not use up the whole run. Empty or 0 means no per-search cap.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy
Datacenter proxies work in our tests. If the site starts blocking them, the run moves to US residential proxies by itself.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| listingId | string | null | FSBO.com listing ID |
| url | string | null | Listing page |
| source | string | null | Always fsbo.com |
| scrapedAt | string | null | When the row was scraped (ISO 8601) |
| title | string | null | Seller's headline, or a label built from the property |
| headline | string | null | Seller's own headline |
| propertyType | string | null | SINGLE_FAMILY, CONDO, TOWNHOUSE, MULTI_FAMILY, MOBILE_HOME, LAND or OTHER |
| status | string | null | Listing status, e.g. ACTIVE or PENDING |
| price | number | null | Asking price in USD |
| pricePerSqft | number | null | Asking price per square foot |
| address | string | null | Full one-line address |
| street | string | null | Street line |
| unitNumber | string | null | Unit number |
| city | string | null | City |
| state | string | null | Two-letter state code |
| zipCode | string | null | ZIP code |
| county | string | null | County |
| neighborhood | string | null | Neighborhood |
| schoolDistrict | string | null | School district |
| latitude | number | null | Latitude |
| longitude | number | null | Longitude |
| beds | number | null | Bedrooms |
| baths | number | null | Bathrooms |
| halfBaths | number | null | Half bathrooms |
| sqft | number | null | Living area in square feet |
| lotSize | number | null | Lot size |
| lotUnit | string | null | Unit of lotSize (acres or sqft) |
| yearBuilt | number | null | Year built |
| stories | number | null | Stories |
| garage | number | null | Garage spaces |
| carportSpaces | number | null | Carport spaces |
| basement | string | null | Basement |
| foundation | string | null | Foundation |
| roofType | string | null | Roof type |
| cooling | string | null | Cooling |
| heating | string | null | Heating |
| waterSource | string | null | Water source |
| description | string | null | Seller's full description |
| features | array | Features |
| interiorFeatures | array | Interior features |
| utilities | array | Utilities |
| amenities | array | Amenities |
| inclusions | array | Items included in the sale |
| specialConditions | array | Special sale conditions |
| occupancyStatus | string | null | Occupancy |
| hasPool | boolean | null | Has a pool |
| hasSpa | boolean | null | Has a spa |
| hasSolarPanels | boolean | null | Has solar panels |
| hasHOA | boolean | null | Has an HOA |
| hoaFee | number | null | HOA fee in USD per month |
| hoaName | string | null | HOA name |
| virtualTourUrl | string | null | Virtual tour |
| videoTourUrl | string | null | Video tour |
| droneTourUrl | string | null | Drone tour |
| primaryPhotoUrl | string | null | Main photo |
| photoUrls | array | All photo URLs |
| photos | array | Photos with sort order and primary flag |
| photoCount | number | null | Number of photos |
| sellerName | string | null | Seller's name (owner-claimed listings) |
| sellerPhone | string | null | Phone number found in the listing text |
| sellerConcessions | string | null | Seller concessions |
| zillowEstimate | number | null | Zillow value estimate shown on the listing (USD) |
| redfinEstimate | number | null | Redfin value estimate shown on the listing (USD) |
| realtorEstimate | number | null | Realtor.com value estimate shown on the listing (USD) |
| estimateLow | number | null | Lowest value estimate (USD) |
| estimateHigh | number | null | Highest value estimate (USD) |
| valuations | array | Value estimates by source |
| nextOpenHouse | object | null | Next open house |
| openHouses | array | Scheduled open houses |
| planName | string | null | Seller's FSBO.com plan |
| planSlug | string | null | Plan code |
| mlsListed | boolean | null | Also listed on the MLS |
| isUnclaimed | boolean | null | Imported listing not yet claimed by the owner |
| isVerified | boolean | null | Verified by FSBO.com |
| reviewStatus | string | null | Review status |
| buyerContact | boolean | null | Seller accepts buyer messages |
| addressSlug | string | null | Address slug in the URL |
| publishedAt | string | null | When the listing was published |
| expiresAt | string | null | When the listing expires |
| daysOnMarket | number | null | Days since publishing |
| detailsIncluded | boolean | null | Whether the full listing details were loaded |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Listing | One FSBO.com listing saved to the dataset. | $0.004 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/fsbo-scraper').call({
"searchLocations": [
"Florida"
],
"maxResults": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/fsbo-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/fsbo-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
A city search with property type, price and bedroom filters.
Paste any FSBO.com search page; its filters are kept.
Faster rows without seller names or value estimates.
Several states in one run, sorted by price, up to 8 per state.
Search by 5-digit ZIP codes; each ZIP is its own search.
Only listings the owner set up or claimed, which carry the seller's name.

Scrape Google Maps places for any search term and city, with no code or with one API call. A real run, its output, its log and its exact cost, plus the limits and the legal side.
Read the article
Paste an Amazon search or product URL into a ready-made Actor and get one row per product with price, ASIN, rating and review count. This guide covers the no-code steps, the API, ZIP code pricing, a real run and its cost.
Read the article
Scrape Google search results by query and country and get each results page as JSON: organic results with positions, People Also Ask and related searches. Run it without code or from Python, with a real run, the cost per page and Google's terms.
Read the articleScrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.