BusinessesForSale.com Listings — Price, Financials & Broker avatar

BusinessesForSale.com Listings — Price, Financials & Broker

Pricing

from $2.62 / 1,000 listing records

Go to Apify Store
BusinessesForSale.com Listings — Price, Financials & Broker

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

Vitalii Bondarev

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

3 days ago

Last modified

Features

Limited permissions

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.

FieldTypeFills whenDescription
search_querystringEvery rowKeyword that produced the record
listing_titlestringSearchBusiness name or advertised headline
locationstringSearchCity, state or region, and country
listing_labelsarray of stringsSearchResult badges such as New, Premium, or Business
asking_pricestringSearchDisplayed asking price, including disclosure text or a range
sales_revenuestringSearchDisplayed annual sales revenue
cash_flowstringSearchDisplayed annual cash flow or seller's discretionary earnings
listing_descriptionstringSearch/detailListing description text
broker_namestringDetailBroker or agency under Listed by; empty when none is named
broker_urlstringDetailBroker's marketplace roster link, when available
employeesstringDetailDisclosed employee count
years_establishedstringDetailDisclosed years established
financing_availablestringDetailDisclosed seller-financing note
support_trainingstringDetailDisclosed seller support or training note
listing_urlstringSearchDirect listing URL
detail_fetchedbooleanDerivedWhether the detail page was fetched
parse_confidencestringDerivedhigh, 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.

PlanActor startListing 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

  1. Open the Actor in the Apify Console and sign in with your Apify account.
  2. Enter free-text keywords in searchQueries; each keyword is searched independently.
  3. Set maxItems and maxPages, and leave fetchDetails true for broker and key-fact fields.
  4. Keep Apify Proxy enabled with the residential group and country US.
  5. Start the run and open the dataset when it finishes.
  6. 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

ParameterWhat it doesDefault
searchQueriesRequired list of free-text keywords; each non-empty keyword is searched independently.Prefill ["restaurant"] (required)
maxItemsLimit on saved listings. Accepted range 1–2000.20
maxPagesSearch-result pages per keyword; the input describes 25 listings per page. Accepted range 1–50.2
fetchDetailsOpens each listing page for broker and key-fact fields; false saves search-row fields only.true
proxyConfigurationProxy 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
disableUsageStatsSet 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 searchQueries value.
  • 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_fetched is 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_name and broker_url are 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.

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.

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.

Full list of collected fields