BusinessesForSale.com Listings — Price, Financials & Broker
Pricing
from $2.62 / 1,000 listing records
BusinessesForSale.com Listings — Price, Financials & Broker
Search business-for-sale listings from BusinessesForSale. Get asking price, sales revenue, cash flow, description, and broker name plus roster link. Run with keyword input and an Apify account; no site login. Pricing: $0.0027 per listing record on Free.
Pricing
from $2.62 / 1,000 listing records
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Features
Share
BusinessesForSale.com Listings Scraper
Search public business-for-sale listings on us.businessesforsale.com and extract asking price, revenue, cash flow, description, and broker details. It is for brokers, M&A advisors, and roll-up buyers; use an Apify account without a site login or your own proxy credentials.
- Find acquisition targets by industry keyword, including franchise buyers.
- Compare asking price, revenue, and cash flow for restaurants, laundromats, HVAC businesses, and other categories.
- Extract a broker name and public roster link when the listing provides them.
- Save disclosed employee count, years established, financing, and training notes.
What you get
Each saved listing is one dataset record. Detail fields populate only when fetchDetails is true and the listing page loads.
| Field | Type | Fills when | Description |
|---|---|---|---|
search_query | string | Every row | Keyword that produced the record |
listing_title | string | Search | Business name or advertised headline |
location | string | Search | City, state or region, and country |
listing_labels | array of strings | Search | Result badges such as New, Premium, or Business |
asking_price | string | Search | Displayed asking price, including disclosure text or a range |
sales_revenue | string | Search | Displayed annual sales revenue |
cash_flow | string | Search | Displayed annual cash flow or seller's discretionary earnings |
listing_description | string | Search/detail | Listing description text |
broker_name | string | Detail | Broker or agency under Listed by; empty when none is named |
broker_url | string | Detail | Broker's marketplace roster link, when available |
employees | string | Detail | Disclosed employee count |
years_established | string | Detail | Disclosed years established |
financing_available | string | Detail | Disclosed seller-financing note |
support_training | string | Detail | Disclosed seller support or training note |
listing_url | string | Search | Direct listing URL |
detail_fetched | boolean | Derived | Whether the detail page was fetched |
parse_confidence | string | Derived | high, medium, or low |
Missing string values are empty strings; listing_labels is an empty array when there are no badges. detail_fetched is false when details are off or the detail fetch fails.
parse_confidence is high when the title and at least one financial field are present and the detail page adds a full description or broker name. It is medium when core search fields are present but enrichment is missing or thin, including fetchDetails: false. It is low when core search fields are missing. A result without a title is not saved.
Records contain marketplace listing data and, when present, a broker or agency's public name and roster link. They do not include a private person's address, phone, or email.
Sample output
One saved listing from a restaurant run with detail fetching enabled.
{"search_query": "restaurant", "listing_title": "Absentee-run Mediterranean Restaurant – $1.26M Sales","location": "Hallandale, Florida, US", "listing_labels": ["New", "Business"],"asking_price": "$560,000", "sales_revenue": "$1,260,000", "cash_flow": "$236,000","listing_description": "$236K Cash Flow · Strong Margins · Turnkey.\nEstablished Mediterranean and Middle Eastern restaurant strategically located on US-1 in Hallandale Beach. This is a fully absentee-owned operation, with an...","broker_name": "Negocios En Florida","broker_url": "https://us.businessesforsale.com/us/agents/negocios-en-florida","employees": "15", "years_established": "3", "financing_available": "","support_training": "4 weeks of training at no cost. Seller signs a 3-year, 15-mile non-compete.","listing_url": "https://us.businessesforsale.com/us/absentee-run-mediterranean-restaurant-1-26m-sales.aspx","detail_fetched": true, "parse_confidence": "high"}
Pricing
This Actor uses pay per event. Platform usage for runs, including compute, proxy traffic, and storage, is not billed separately because it does not use the Pay per event + usage option.
listing-record is charged once for each listing saved, including rows that were not enriched. A detail retry does not add a second charge. On the Free plan, it costs $0.0027 per listing record.
apify-actor-start is charged when the Actor starts. It uses one event per GB of memory, with a minimum of one event. On the Free plan, it costs $0.00005 per Actor Start event.
| Plan | Actor start | Listing record |
|---|---|---|
| Free | $0.00005 | $0.0027 |
| Bronze | $0.0000495 | $0.002673 |
| Silver | $0.000049 | $0.002646 |
| Gold | $0.0000485 | $0.002619 |
| Platinum | $0.000048 | $0.002592 |
| Diamond | $0.0000475 | $0.002565 |
On the Free plan, 1,000 listing records cost $2.70 and 10,000 cost $27; 1,000 Actor Start events cost $0.05 and 10,000 cost $0.50.
20 listing records = $0.054 on Free. With one Actor Start event, the run is $0.05405 on Free.
The Apify Free plan includes $5 of monthly platform credit. After one Actor Start at the Free price, that credit covers 1,851 listing records.
How to use
- Open the Actor in the Apify Console and sign in with your Apify account.
- Enter free-text keywords in
searchQueries; each keyword is searched independently. - Set
maxItemsandmaxPages, and leavefetchDetailstrue for broker and key-fact fields. - Keep Apify Proxy enabled with the residential group and country US.
- Start the run and open the dataset when it finishes.
- Repeat the run through Apify Schedules, using daily as a starting point for listing searches.
{"searchQueries": ["restaurant"],"maxItems": 20,"maxPages": 2,"fetchDetails": true,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
Export the dataset as JSON or CSV, or read it through the Apify dataset API.
Input parameters
| Parameter | What it does | Default |
|---|---|---|
searchQueries | Required list of free-text keywords; each non-empty keyword is searched independently. | Prefill ["restaurant"] (required) |
maxItems | Limit on saved listings. Accepted range 1–2000. | 20 |
maxPages | Search-result pages per keyword; the input describes 25 listings per page. Accepted range 1–50. | 2 |
fetchDetails | Opens each listing page for broker and key-fact fields; false saves search-row fields only. | true |
proxyConfiguration | Proxy settings. Residential US is required for reliable access; failed setup allows the run to continue without a proxy and logs a warning. | Apify Proxy, residential, US |
disableUsageStats | Set to true to turn off the run summary in Usage statistics. | false |
Limits and edge cases
Note: Asking price, sales revenue, and cash flow remain display strings. Listings can show Undisclosed, On request, Not applicable, or a range such as 100K - 250K.
- Blank keywords: The run logs a warning, succeeds with an empty dataset, and saves nothing. Add a non-empty
searchQueriesvalue. - Blocked search page: The affected keyword stops without a retry; collected rows remain, later keywords run, and the run succeeds. Use Apify residential proxy with country US and run the keyword again.
- Blocked detail page: The listing page is retried up to two extra times with a new residential proxy session each time. If all attempts fail, the search-row fields are saved, detail-only fields are empty,
detail_fetchedis false, and the listing-record charge still applies. Other detail failures are not retried. - Fatal search error: A network, not-found, or unexpected search failure fails the run. Completed batches remain; an unsaved final batch smaller than 10 is not saved.
- Thin or repeated results: Pagination stops when a page has no listing cards. Cards without a title are dropped and not charged. A listing URL is saved once per run, even when multiple keywords return it.
- Owner-direct listing:
broker_nameandbroker_urlare empty when no broker is named. Employees, years established, financing, and support/training appear only when disclosed. - Rows reach the dataset in batches of 10.
- The Actor collects public marketplace data. Whether your use is legal depends on the marketplace's terms and the law applicable to your use case.
FAQ
How much does it cost to scrape BusinessesForSale.com?
On the Free plan, each listing record costs $0.0027 and each Actor Start event costs $0.00005. 20 listing records cost $0.054 on Free; with one Actor Start event, the run costs $0.05405.
Why is my dataset empty?
An empty dataset can have several causes, including blank keywords, a blocked search page and result pages with no listing cards. Limits and edge cases describes each case and the run status.
Why are broker or financial fields blank?
Financial values remain the marketplace's display strings and may be undisclosed. Broker and key-fact fields require a successful detail fetch, and owner-direct listings have no broker fields.
What should I check if the run fails?
Confirm that searchQueries contains a keyword and that the proxy is Apify residential, US. A non-challenge search failure fails the run; a failed detail fetch does not.
Is it legal to collect these listings?
The Actor reads public data from listing pages on us.businessesforsale.com. Whether your use is allowed depends on the marketplace's terms and the law that applies to your use case. This README does not guarantee that any particular use is permitted.
Related actors
- Acquire.com Public Listings collects public businesses-for-sale listings from a different marketplace.
- B2B Leads List Builder — Maps + Email + Phone Enrichment builds map-based lead lists with email and phone, which this Actor does not collect.
- Allabolag Company Registry Scraper — Swedish Business Data reads Swedish registered-company records, not businesses listed for sale.
Usage statistics
This Actor creates a small, content-free summary at the end of each run, used only to monitor reliability and improve this Actor. No input values, credentials or scraped data are sent.
A copy of the exact record for your run is saved as USAGE_STATS in your own Apify key-value store.
To opt out, set disableUsageStats to true in the input. Nothing is sent then.