BusinessesForSale Scraper
Pricing
from $0.15 / 1,000 sale listings
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é
Maintained by CommunityActor stats
0
Bookmarked
16
Total users
3
Monthly active users
13 days ago
Last modified
Categories
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.
▶️ Run a focused BusinessesForSale search
- Open the Input tab.
- Add one or more BusinessesForSale search, category, franchise, or listing URLs, or add search keywords.
- For keyword searches, choose the country site and any industry, location, sort, or financial filters.
- Keep
Listing limitsmall for a first run, such as25. - 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
| Field | Type | What it does |
|---|---|---|
startUrls | array of objects | BusinessesForSale search, category, franchise, or individual listing URLs you already have. |
startUrls[].url | string | One public BusinessesForSale URL to use as a source target. |
searchKeywords | array of strings | Business types, sectors, brands, or other words for generated searches. |
maxResults | integer | Optional limit for saved listings across all URLs and keyword searches. Leave it empty to return all available listings until the source is exhausted. |
includeListingDetails | boolean | Open each listing page to add fuller public details and media when available. Turn it off to use source list-page data only. |
country | string | BusinessesForSale country site for generated keyword searches: global, us, uk, ca, au, or nz. |
industry | string | Optional BusinessesForSale category slug, such as restaurants or coffee-shops, for generated searches. |
locationText | string | Optional city, region, state, or country words for generated searches. |
sortOrder | string | Order for generated searches: newest, price, revenue, or cash flow in either direction. |
minPrice | integer | Lowest visible asking price for generated searches. |
maxPrice | integer | Highest visible asking price for generated searches. |
minRevenue | integer | Lowest visible revenue for generated searches. |
maxRevenue | integer | Highest visible revenue for generated searches. |
minCashFlow | integer | Lowest visible cash flow for generated searches. |
maxCashFlow | integer | Highest visible cash flow for generated searches. |
onlyDisclosedPrice | boolean | Keep only generated-search listings that show an asking price. |
onlyDisclosedRevenue | boolean | Keep only generated-search listings that show revenue. |
onlyDisclosedCashFlow | boolean | Keep 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
| Field | Type | What it does |
|---|---|---|
listingId | string or null | Public listing identifier when the source provides one. |
url | string | Canonical public URL for the listing. |
sourceUrl | string | Search, category, franchise, or listing URL that caused this row to be saved. |
resultPosition | integer or null | Listing position in its source results when available. |
title | string | Name shown for the business or franchise listing. |
listingLabels | array of strings | Labels shown on the source listing, such as New or Franchise. |
listingLabels[] | string | One label shown on the source listing. |
listingClass | string or null | Source classification, such as business or franchise, when available. |
location | object | Source location object. |
location.display | string or null | Full location text shown by the source. |
location.country | string or null | Country shown by the source. |
location.region | string or null | Region, state, or province shown by the source. |
location.city | string or null | City shown by the source. |
description | string or null | Best public description or summary from the source. |
financials | object | Source financial text and currency when available. |
financials.askingPrice | object | Asking price object. |
financials.askingPrice.text | string or null | Original asking price wording from the source. |
financials.askingPrice.currency | string or null | Currency shown for asking price when available. |
financials.revenue | object | Revenue object. |
financials.revenue.text | string or null | Original revenue wording from the source. |
financials.revenue.currency | string or null | Currency shown for revenue when available. |
financials.cashFlow | object | Cash-flow object. |
financials.cashFlow.text | string or null | Original cash-flow wording from the source. |
financials.cashFlow.currency | string or null | Currency shown for cash-flow when available. |
financials.ebitda | object | EBITDA object. |
financials.ebitda.text | string or null | Original EBITDA wording from the source. |
financials.ebitda.currency | string or null | Currency shown for EBITDA when available. |
business | object | Source categories and tags. |
business.categories | array of objects | Categories linked to the listing by the source. |
business.categories[] | object | One category linked to the listing by the source. |
business.categories[].name | string | Category name shown by the source. |
business.categories[].url | string | Public URL for the category. |
business.tags | array of strings | Tags shown by the source for the listing. |
business.tags[] | string | One tag shown by the source for the listing. |
details | object | Public facts about premises, lease, operations, support, and growth. |
details.realEstate | string or null | Real-estate or ownership term shown by the source. |
details.leaseTerms | string or null | Lease terms shown by the source. |
details.premises | string or null | Premises facts shown by the source. |
details.employees | string or null | Employee count or wording shown by the source. |
details.yearsEstablished | string or null | Years established shown by the source. |
details.tradingHours | string or null | Trading hours shown by the source. |
details.supportTraining | string or null | Support or training terms shown by the source. |
details.reasonForSelling | string or null | Reason for selling shown by the source. |
details.expansionPotential | string or null | Expansion details shown by the source. |
media | object | Direct public image URLs from the source. |
media.imageUrls | array of strings | Direct public image URLs for the listing. |
media.imageUrls[] | string | One direct public image URL for the listing. |
contact | object | Public seller or broker contact details shown by the source. |
contact.url | string or null | Public contact URL for the seller or broker. |
contact.sellerName | string or null | Seller 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
amountfields are no longer included. - The
featuredsort 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 🫡
🔗 Related Actors
- Company Domain Finder - Find a likely company website from a business name before follow-up research.
- LinkedIn Company Profile Scraper - Look up a named target's public LinkedIn company page for extra company context.
- BusinessesForSale Listings Scraper - Compare another BusinessesForSale export with public prices, categories, and contact links.
- BusinessesForSale.com Scraper - Businesses, Prices & Financials - Search another set of business and franchise listings by keyword, country, or financial filters.
- BusinessesForSale Scraper with Financials & Description - Collect a separate listing set from URLs, categories, or search terms for comparison.
Made with ❤️ by Maxime Dupré