BusinessesForSale Scraper avatar

BusinessesForSale Scraper

Pricing

from $0.15 / 1,000 sale listings

Go to Apify Store
BusinessesForSale Scraper

BusinessesForSale Scraper

Collect public BusinessesForSale listings from search, category, franchise, and individual listing URLs or keyword targets. Get titles, prices, revenue, cash flow, locations, categories, images, and public contact links in structured dataset rows.

Pricing

from $0.15 / 1,000 sale listings

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

16

Total users

3

Monthly active users

13 days ago

Last modified

Share

💼 Find public BusinessesForSale listings for acquisition research

For buyers, brokers, and market researchers, BusinessesForSale Scraper collects public business and franchise listings from BusinessesForSale.com. It saves structured rows with listing titles, prices, revenue, cash flow, locations, descriptions, categories, detail facts, images, and public contact URLs so you can compare acquisition targets in a dataset.

Use it with a BusinessesForSale search, category, franchise, or individual listing URL, with search keywords, or with both. You can search the global site or the United States, United Kingdom, Canada, Australia, and New Zealand sites, then review a small first run before collecting a larger market snapshot.

  • Find resale opportunities with Franchise by reviewing public listings.
  • Search Apps listings and compare their public price, location, and source details.
  • Build a Car Wash shortlist from public business-for-sale listings.
  • Review Restaurants listings with their public financial and location fields.
  • Research Coffee Shop listings with titles, prices, and source links.

📦 Listing rows with price and source facts

Each saved row is one accepted BusinessesForSale business or franchise listing. The row keeps the first eligible match when the same source listing appears through more than one submitted URL or keyword, and sourceUrl shows the source target for that saved match. Fields can be null or empty when the source does not show them.

The Actor reads public data only. It does not contact sellers, value businesses, or include private seller data. It preserves visible financial text and includes currency when the source provides it.

  1. Open the Input tab.
  2. Add one or more BusinessesForSale search, category, franchise, or listing URLs, or add search keywords.
  3. For keyword searches, choose the country site and any industry, location, sort, or financial filters.
  4. Keep Listing limit small for a first run, such as 25.
  5. Run the Actor, then open the dataset or export it as JSON, CSV, Excel, XML, or HTML.

If both URL and keyword lists are empty, the Actor finishes with zero dataset rows and shows a clear warning that a public URL or keyword is needed. No saved-listing event is charged because no listing row is saved. Review the warning, add a target, and run again.

Pasted URLs keep their own BusinessesForSale country, category, location, and sort. The keyword and filter fields apply only to searches generated from keywords. Use maxResults to limit accepted listings across all targets, or leave it empty to return all available listings until the source is exhausted.

Use a saved category or search URL to monitor a market, check broker inventory, build a shortlist, compare asking prices, revenue, and cash flow, review public contact paths, track franchise resale opportunities, or feed listing rows into your own research workflow.

You can also export listing rows for use in spreadsheets, CRMs, BI tools, or internal research apps.

⚙️ Input

Input fields

FieldTypeWhat it does
startUrlsarray of objectsBusinessesForSale search, category, franchise, or individual listing URLs you already have.
startUrls[].urlstringOne public BusinessesForSale URL to use as a source target.
searchKeywordsarray of stringsBusiness types, sectors, brands, or other words for generated searches.
maxResultsintegerOptional limit for saved listings across all URLs and keyword searches. Leave it empty to return all available listings until the source is exhausted.
includeListingDetailsbooleanOpen each listing page to add fuller public details and media when available. Turn it off to use source list-page data only.
countrystringBusinessesForSale country site for generated keyword searches: global, us, uk, ca, au, or nz.
industrystringOptional BusinessesForSale category slug, such as restaurants or coffee-shops, for generated searches.
locationTextstringOptional city, region, state, or country words for generated searches.
sortOrderstringOrder for generated searches: newest, price, revenue, or cash flow in either direction.
minPriceintegerLowest visible asking price for generated searches.
maxPriceintegerHighest visible asking price for generated searches.
minRevenueintegerLowest visible revenue for generated searches.
maxRevenueintegerHighest visible revenue for generated searches.
minCashFlowintegerLowest visible cash flow for generated searches.
maxCashFlowintegerHighest visible cash flow for generated searches.
onlyDisclosedPricebooleanKeep only generated-search listings that show an asking price.
onlyDisclosedRevenuebooleanKeep only generated-search listings that show revenue.
onlyDisclosedCashFlowbooleanKeep only generated-search listings that show cash flow.

Successful default input

This is the exact public input from a successful default-input run on the current beta build.

{
"startUrls": [
{
"url": "https://www.businessesforsale.com/search/coffee-shops-for-sale"
}
],
"maxResults": 70,
"includeListingDetails": false,
"country": "global",
"industry": "",
"locationText": "",
"sortOrder": "newest",
"onlyDisclosedPrice": false,
"onlyDisclosedRevenue": false,
"onlyDisclosedCashFlow": false
}

🧾 Output

Output shape: one listing row

FieldTypeWhat it does
listingIdstring or nullPublic listing identifier when the source provides one.
urlstringCanonical public URL for the listing.
sourceUrlstringSearch, category, franchise, or listing URL that caused this row to be saved.
resultPositioninteger or nullListing position in its source results when available.
titlestringName shown for the business or franchise listing.
listingLabelsarray of stringsLabels shown on the source listing, such as New or Franchise.
listingLabels[]stringOne label shown on the source listing.
listingClassstring or nullSource classification, such as business or franchise, when available.
locationobjectSource location object.
location.displaystring or nullFull location text shown by the source.
location.countrystring or nullCountry shown by the source.
location.regionstring or nullRegion, state, or province shown by the source.
location.citystring or nullCity shown by the source.
descriptionstring or nullBest public description or summary from the source.
financialsobjectSource financial text and currency when available.
financials.askingPriceobjectAsking price object.
financials.askingPrice.textstring or nullOriginal asking price wording from the source.
financials.askingPrice.currencystring or nullCurrency shown for asking price when available.
financials.revenueobjectRevenue object.
financials.revenue.textstring or nullOriginal revenue wording from the source.
financials.revenue.currencystring or nullCurrency shown for revenue when available.
financials.cashFlowobjectCash-flow object.
financials.cashFlow.textstring or nullOriginal cash-flow wording from the source.
financials.cashFlow.currencystring or nullCurrency shown for cash-flow when available.
financials.ebitdaobjectEBITDA object.
financials.ebitda.textstring or nullOriginal EBITDA wording from the source.
financials.ebitda.currencystring or nullCurrency shown for EBITDA when available.
businessobjectSource categories and tags.
business.categoriesarray of objectsCategories linked to the listing by the source.
business.categories[]objectOne category linked to the listing by the source.
business.categories[].namestringCategory name shown by the source.
business.categories[].urlstringPublic URL for the category.
business.tagsarray of stringsTags shown by the source for the listing.
business.tags[]stringOne tag shown by the source for the listing.
detailsobjectPublic facts about premises, lease, operations, support, and growth.
details.realEstatestring or nullReal-estate or ownership term shown by the source.
details.leaseTermsstring or nullLease terms shown by the source.
details.premisesstring or nullPremises facts shown by the source.
details.employeesstring or nullEmployee count or wording shown by the source.
details.yearsEstablishedstring or nullYears established shown by the source.
details.tradingHoursstring or nullTrading hours shown by the source.
details.supportTrainingstring or nullSupport or training terms shown by the source.
details.reasonForSellingstring or nullReason for selling shown by the source.
details.expansionPotentialstring or nullExpansion details shown by the source.
mediaobjectDirect public image URLs from the source.
media.imageUrlsarray of stringsDirect public image URLs for the listing.
media.imageUrls[]stringOne direct public image URL for the listing.
contactobjectPublic seller or broker contact details shown by the source.
contact.urlstring or nullPublic contact URL for the seller or broker.
contact.sellerNamestring or nullSeller or broker name shown by the source.

Example listing row

This complete row is from a successful current-beta run with listing details enabled. It is shown without shortening.

{
"listingId": "3946027",
"url": "https://uk.businessesforsale.com/uk/hazardous-and-non-hazardous-waste-management-in-scotland.aspx",
"sourceUrl": "https://uk.businessesforsale.com/uk/search/maintenance-businesses-for-sale-2",
"resultPosition": 20,
"title": "Hazardous And Non Hazardous Waste Management In Scotland For Sale",
"listingLabels": [
"Business"
],
"listingClass": "business",
"location": {
"display": "Stirling, UK",
"country": "UK",
"region": "Stirling",
"city": null
},
"description": "Based in Central Scotland. The company provides specialist, expert waste management services, including the collection and disposal of hazardous…",
"financials": {
"askingPrice": {
"text": "£1M - £5M",
"currency": "GBP"
},
"revenue": {
"text": "£500K - £1M",
"currency": "GBP"
},
"cashFlow": {
"text": "Not applicable",
"currency": null
},
"ebitda": {
"text": "£253k",
"currency": "GBP"
}
},
"business": {
"categories": [
{
"name": "Worldwide",
"url": "https://www.businessesforsale.com/search/businesses-for-sale"
},
{
"name": "Buy a Business",
"url": "https://uk.businessesforsale.com/uk/search/businesses-for-sale"
},
{
"name": "Buy a Franchise Resale",
"url": "https://uk.businessesforsale.com/uk/search/franchise-resales-for-sale"
},
{
"name": "Industrial Cleaning Businesses",
"url": "https://uk.businessesforsale.com/uk/search/industrial-cleaning-businesses-for-sale"
},
{
"name": "General Services Businesses",
"url": "https://uk.businessesforsale.com/uk/search/general-services-businesses-for-sale"
},
{
"name": "Waste Management Businesses",
"url": "https://uk.businessesforsale.com/uk/search/waste-management-businesses-for-sale"
},
{
"name": "Industrial Cleaning Businesses in Scotland",
"url": "https://uk.businessesforsale.com/uk/search/industrial-cleaning-businesses-for-sale-in-scotland"
},
{
"name": "General Services Businesses in Stirling",
"url": "https://uk.businessesforsale.com/uk/search/general-services-businesses-for-sale-in-stirling"
},
{
"name": "Maintenance Businesses in Central Scotland",
"url": "https://uk.businessesforsale.com/uk/search/maintenance-businesses-for-sale-in-central-scotland"
},
{
"name": "Businesses in Stirling",
"url": "https://uk.businessesforsale.com/uk/search/businesses-for-sale-in-stirling-stirling"
}
],
"tags": [
"Relocatable"
]
},
"media": {
"imageUrls": [
"https://uk.businessesforsale.com/content/shared/images/categoryimages/services.png"
]
},
"details": {
"realEstate": null,
"leaseTerms": null,
"premises": "The offices are currently rented, 2 offices in total with parking",
"employees": "8",
"yearsEstablished": "7years",
"tradingHours": "24/7 operation, office is open 8am - 5pm",
"supportTraining": "The owners will provide any training required to prospective buyer, they are also willing to stay in place for time period to ensure a smooth transition",
"reasonForSelling": "The business is family run & the owners are looking at early retirement",
"expansionPotential": "The business has fantastic growth potential, year on year growth since the business began & customers that are spread across the UK"
},
"contact": {
"url": "https://uk.businessesforsale.com/uk/hazardous-and-non-hazardous-waste-management-in-scotland/contact",
"sellerName": null
}
}

💳 Pricing

This Actor uses pay-per-event pricing. You are charged for each business or franchise listing saved to the dataset. Duplicate listings, skipped inputs, empty searches, and detail-page misses do not create saved-listing charges.

Apify platform usage costs are separate. Keep your first run small if you want to inspect the output shape before collecting a larger market snapshot.

Limits and caveats

BusinessesForSale pages vary by country, category, broker, and listing type. Some listings show full financials and operations details, while others only show a short card. The Actor keeps visible source text and leaves unavailable values as null or empty arrays.

Ranges such as $100K - $250K stay as source text. Currency is included when the source provides it.

🔌 Integrations

Open the finished dataset in Apify and export it as JSON, CSV, Excel, XML, or HTML. You can also call the Actor through the Apify API, schedule repeat runs in Apify, or connect Apify webhooks.

❓ FAQ

What happens if I run with no URL or keyword?

The Actor finishes with zero dataset rows and shows a warning that you need a public URL or keyword. No saved-listing event is charged because no listing row is saved. Add a target and run again when you are ready.

Do pasted URLs use the keyword filters?

No. Keyword, industry, location, sort, and financial fields apply only to searches generated from keywords. Pasted URLs keep their own country, category, location, and sort.

How are duplicate listings handled?

The Actor saves the first eligible occurrence of a source listing and ignores later matches from other submitted URLs or keywords. The saved row keeps the source URL for that first match.

Should I fetch listing details?

Leave includeListingDetails off when source list-page data is enough. Turn it on when you want fuller public details and media from listing pages when available.

Why are some financial values empty?

Sellers disclose different information. The Actor keeps visible ranges and text, and it leaves unavailable values as null or empty arrays instead of guessing.

Can I contact sellers with this Actor?

No. It saves a public contact URL or seller name when the source shows one, but it does not submit forms, message sellers, or reveal private contact details.

Can I schedule repeat market checks?

Yes. You can schedule the Actor in Apify, call it through the Apify API, or export finished datasets after a run.

📝 Changelog

v2.0 (07-10-2026)

  • Detail runs now use 512 MB by default.
  • Each listing is saved before its event charge is applied.
  • Franchise rows now include a contact URL when the source provides one.
  • Financial fields keep source text and currency. Parsed amount fields are no longer included.
  • The featured sort option has been removed.

v1.0

  • Expanded listing data and search options.
  • Added structured business and franchise listing details, direct listing targets, and optional detail enrichment.
  • Added flexible keyword filters and clear guidance for empty runs.

v0.0

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré