BizBuySell Scraper avatar

BizBuySell Scraper

Pricing

$1.19 / 1,000 results

Go to Apify Store
BizBuySell Scraper

BizBuySell Scraper

Collect public business and franchise listings by search URL, location, and keyword. Export asking prices, financials, categories, listing details, and contact information.

Pricing

$1.19 / 1,000 results

Rating

0.0

(0)

Developer

MLG Data

MLG Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Scrape BizBuySell business-for-sale and franchise listings from public search pages. Export BizBuySell listing data to CSV or JSON for market research, deal review, and recurring monitoring; the structured dataset is a practical BizBuySell API alternative for public listings.

Use a state, city, category, or franchise search URL, or enter a state name and an optional keyword. The scraper follows result pages, removes duplicate listings, and can visit business detail pages for revenue, category, equipment, facilities, financing, and other published facts. Each saved row represents one public listing. The search URL and collection time are retained so you can trace a row back to its source.

What data can you extract from BizBuySell?

Fields are flat and use consistent camelCase names. A field appears only when its value is available. Business and franchise listings expose different fields; for example, a franchise card can provide an investment range while a business listing can provide cash flow. Examples in the table show the format, including values that may come from different records.

FieldDescriptionExample
sourceSource site identifierbizbuysell
listingCategoryBusiness or franchise recordbusiness
listingIdPublic business listing number2557755
siteSpecificIdSecondary site listing identifier2557755
titleListing headlineTwo-Unit Bubble Tea Franchise Package - Kern County, CA
urlCanonical public listing URLhttps://www.bizbuysell.com/business-opportunity/.../2557755/
summaryShort search-result descriptionTwo established locations...
descriptionFull business description where publishedTwo established locations of an international bubble tea franchise...
categoryFullComplete business category pathCoffee Shops and Cafes
categoryFinalFinal business categoryCoffee Shops and Cafes
locationDisplayed business locationKern County, CA
stateCodeState or region abbreviationCA
pricePublished asking price or franchise card price540000
cashFlowSeller discretionary earnings or cash flow115431
ebitdaPublished EBITDA3355000
grossRevenuePublished gross revenue923046
investmentMinimumLower published franchise investment199
investmentMaximumUpper published franchise investment499
currencyCurrency code for franchise investmentUSD
inventoryValuePublished inventory value28104
ffeValueFurniture, fixtures, and equipment value97220
yearEstablishedYear business was established2022
employeesFullTimeFull-time employee count1
employeesPartTimePart-time employee count14
leaseRatePerSquareFootPublished lease rate per square foot6932
leaseRateDurationPublished lease duration code40
realEstateIncludedInAskingPriceWhether real estate is marked as includedfalse
inventoryIncludedInAskingPriceWhether inventory is stated as includedtrue
imageUrlPrimary listing image URLhttps://images.bizbuysell.com/shared/listings/...webp
imageUrlsBusiness listing image URLs["https://images.bizbuysell.com/...webp"]
brokerNamePublic contact or broker namePublic contact name
brokerCompanyBroker companyBroker office
brokerProfileUrlPublic broker profile URLhttps://www.bizbuysell.com/brokers/...
contactPhonePublic contact phone(000) 000-0000
businessHighlightsDetail page subheadingSeller Financing Available
facilitiesFacilities descriptionTwo leased storefronts
competitionCompetition descriptionLimited local competition
growthGrowth and expansion descriptionExpand catering
financingOptionsPublished financing detailsSeller financing available
supportSupport and training detailsFour weeks of training
reasonForSellingStated reason for saleOwner pursuing another venture
leaseTermsPublished lease termsTerms available on request
listingPriceReducedListing price reduction markerfalse
recentlyAddedRecently added markertrue
recentlyUpdatedRecently updated markerfalse
hotPropertyHot-property markerfalse
fetchedAtUTC time the result page was fetched2026-09-26T14:29:22Z
searchUrlPublic search result page usedhttps://www.bizbuysell.com/california-businesses-for-sale/
cashRequiredMinimum published cash requirement199
franchiseFeePublished minimum franchise fee25000
totalNumberOfUnitsTotal franchise units120
franchisingSinceYear franchising began2010
corporateHeadquartersPublished headquarters locationNew York, NY
ceoNamePublished franchise executive namePublished executive name
netWorthRequiredPublished required net worth100000

How to scrape BizBuySell

  1. Paste one or more public search URLs into startUrls. A state or category URL is the clearest way to define the exact market. A broad business or franchise search URL also works.
  2. Set results_wanted to the number of unique listings you need. Set max_pages high enough to reach that number; a business result page usually contributes about 50 primary listings.
  3. Leave includeDetails enabled when you need full business descriptions, gross revenue, category paths, inventory, facilities, or training details. Disable it for a faster first pass through search cards.
  4. Run the scraper and download the default dataset. Sort or filter the exported rows using listingCategory, stateCode, price, and other fields.

Each search URL is processed in the order supplied. The scraper stops when it reaches the requested result count, exhausts the configured page count, or reaches the run's event budget. A listing that appears twice is saved once. If you use several overlapping state and category searches, this prevents duplicate URLs from consuming your result cap.

Input

ParameterTypeDefaultDescription
startUrlsURL listEmptyPublic business, location, category, or franchise result pages.
keywordTextEmptyKeep items whose title or short summary contains the phrase. This is applied to collected cards.
locationTextEmptyState slug when no start URL is supplied, such as california. For cities or combined filters, use a full search URL.
results_wantedInteger100Maximum unique dataset items across all searches.
max_pagesInteger10Maximum pages inspected for each search.
includeDetailsBooleantrueVisit detail pages to enrich business and franchise records.
proxyConfigurationObjectEnabledProxy settings for requests during the run.

A realistic input for a state-level business search is:

{
"startUrls": [
{"url": "https://www.bizbuysell.com/california-businesses-for-sale/"}
],
"results_wanted": 100,
"max_pages": 3,
"includeDetails": true
}

For a restaurant category, supply the category search URL shown in your browser. A combined state and category URL can be used directly. For franchises, use a broad or filtered franchise search URL. The keyword setting filters visible card text after each page has been fetched; it does not change the site's search query. If the keyword is narrow, raise max_pages so enough candidate cards are inspected.

Output example

This trimmed item comes from a live California business search. Long description text, image URLs, and public contact details are omitted here for readability; they remain in the dataset when published.

{
"source": "bizbuysell",
"listingCategory": "business",
"listingId": 2557755,
"title": "Two-Unit Bubble Tea Franchise Package - Kern County, CA",
"url": "https://www.bizbuysell.com/business-opportunity/two-unit-bubble-tea-franchise-package-kern-county-ca/2557755/",
"location": "Kern County, CA",
"stateCode": "CA",
"price": 540000,
"cashFlow": 115431,
"grossRevenue": 923046,
"categoryFull": "Coffee Shops and Cafes",
"yearEstablished": 2022,
"inventoryValue": 28104,
"ffeValue": 97220,
"inventoryIncludedInAskingPrice": true,
"searchUrl": "https://www.bizbuysell.com/california-businesses-for-sale/"
}

The title describes a business resale that happens to involve a franchise. Its listingCategory is therefore business. Records from the franchise opportunity search use listingCategory: "franchise" and can include investmentMinimum, investmentMaximum, cashRequired, and other franchise-specific fields.

Use cases

  • Acquisition research: Compare asking prices and cash flow across a defined state or industry. Keep the canonical URL so an analyst can open the source listing before contacting a seller.
  • Market mapping: Build a list of active opportunities by category and location, then see which segments have more listings and which financial fields are frequently published.
  • Broker review: Group listings by public broker or office information, inspect the advertised inventory, and route promising opportunities into a review queue.
  • Franchise comparison: Compare published investment ranges and cash requirements across opportunity cards. Use the detail fields when the franchisor provides more context.
  • Recurring watchlists: Run the same search regularly and compare listing IDs between snapshots. The fetchedAt timestamp shows when a row was collected; it is not the original posting date.
  • Data cleanup: Normalize public listing cards into one flat structure before importing them into a spreadsheet, database, or internal reporting workflow.

These records are starting points for review. A published asking price, cash flow figure, or investment range is an advertisement supplied on the listing, not an audited valuation. Confirm any decision-critical number from the original listing and underlying documents.

How much does it cost to scrape BizBuySell?

The current event price is $0.0012 per saved result, or $1.20 per 1,000 results. The result count is the number of dataset items delivered, not the number of pages requested. A 30-result run costs $0.036 in result events; 1,000 results cost $1.20; 5,000 results cost $6.00. The platform usage covered by the actor price is included in these examples. Your actual total depends on the number of results delivered and any account-level billing terms.

Use results_wanted to set a hard upper bound on delivered rows. A larger max_pages lets a narrow keyword search inspect more cards, but it does not force extra paid results beyond the requested cap. Enabling detail pages adds requests and can take longer, while the result event price remains tied to saved items. A small initial run is useful for checking whether a URL contains the market you intended.

Tips for best results

Start from the exact public search URL for your geography and category. A state name in location builds a simple state business search, but a full URL supports city paths and combined filters more precisely. Public search links are also easier to audit later because searchUrl records the page used for each item.

Set the result cap and page cap together. For example, a request for 150 business listings should allow at least three pages when the search has enough inventory. Search pages can contain sponsored or related cards in addition to primary results; the scraper selects primary business opportunity URLs and deduplicates them. Franchise result pages generally expose 50 card records per page. Site inventory changes, so exact counts can vary.

Turn off includeDetails if you only need title, location, asking price, cash flow where shown, image, and public contact information from business search cards. Keep it on for long descriptions and the detail sections. Not every advertiser completes every section. Empty financial and operational fields are omitted rather than invented.

For keyword filtering, use distinctive words. The match is case-insensitive and checks the title plus short card summary. A keyword that appears only deep in a detail description will not match. If a keyword yields fewer results than requested, increase max_pages or start from a more targeted category URL. For a stable category query, the category URL is usually more reliable than a broad search plus post-filtering.

Limits

BizBuySell can challenge requests to its main search host. This scraper reads the publicly rendered search data through the site's static-content host for business pages and uses the public franchise search pages for franchise cards. The data route has been tested for business page pagination, state and category paths, franchise pagination, and detail pages. Access can still change. If a page is blocked or its structure changes, the run may stop with an error instead of returning fabricated records.

The business result state is capped at about 50 primary cards per page, so larger exports require pagination. The site has a practical search-result depth cap; very broad searches may not expose every listing through a single path. To cover more of the market, run separate state, city, or category searches. Overlapping searches are deduplicated within one run.

The source does not consistently publish an original posting date on the public listing pages used here. fetchedAt is the collection timestamp and should not be interpreted as the listing's age. Financial numbers, photos, broker details, and operational descriptions vary by advertiser. Some business detail pages may fail independently; when that happens, the search-card record can still be saved with fewer fields. Franchise cards have a different source structure, so business-only fields such as cash flow may be absent.

The scraper collects public listing and public business-contact information. It does not open private messages, access accounts, submit lead forms, or retrieve information hidden behind an agreement. Treat public contact fields responsibly and use them only for legitimate research and outreach.

Automation examples

A recurring acquisition workflow can request: “Collect 100 California business listings from this search URL, then show those with an asking price below 750,000 and published cash flow above 100,000.” The dataset fields support that filter after the run.

A franchise comparison workflow can request: “Collect the first 50 franchise opportunities from this search URL and sort by minimum published investment.” If a field is missing, the listing did not expose it in the public pages collected by the scraper.

FAQ

Can I export the data to CSV or a spreadsheet?

Yes. Download the default dataset in CSV or JSON, or connect the dataset to a spreadsheet workflow. Each item is flat, so columns map directly to fields such as price, location, and categoryFinal.

Can I search one state, city, or category?

Yes. Paste the corresponding public result URL into startUrls. The location shortcut is best for a simple state path. Use a full URL for city and combined category searches.

Do I need to configure a proxy?

The default proxy setting is ready for ordinary runs. The scraper can escalate when a request is blocked. A site challenge can still prevent access, so review the run log if a page repeatedly fails.

How fast is a run?

A search-card-only run makes roughly one request per result page. Detail enrichment visits each selected listing and takes longer. In live validation, 30 enriched business listings completed in about half a minute, but response time and blocking vary.

Can I schedule a search and monitor changes?

Yes. Schedule repeated runs with the same input, then compare listingId or url across datasets. Keep fetchedAt for snapshot timing. A missing item in one snapshot should be checked against the live search before treating it as sold.

Why is a field empty or absent?

The listing may not publish it, the card may use a different format, or a detail request may have failed. Missing data is omitted so an empty field is not mistaken for zero. Check the original URL for decision-critical information.

Public data collection depends on applicable law, site terms, and how the results are used. Review those requirements for your jurisdiction, respect privacy rules, and avoid misuse of public contact information.

Integrations

The default dataset can feed an API consumer, webhook, scheduled import, spreadsheet, or database. For recurring research, save the input search URLs with each run and compare stable listing IDs over time. Downstream filters can separate business resales from franchise opportunities using listingCategory without parsing page content again.

Support

Open an issue on the Issues tab with the search URL, run ID, and expected field. We reply within 24 hours and add fields on request when the public page provides them.