BizBuySell Franchises for Sale Scraper avatar

BizBuySell Franchises for Sale Scraper

Pricing

from $0.99 / 1,000 franchises

Go to Apify Store
BizBuySell Franchises for Sale Scraper

BizBuySell Franchises for Sale Scraper

Scrape franchise opportunities from BizBuySell. Filter by category, investment range and state, and get franchises with fees, royalties, unit counts and territories.

Pricing

from $0.99 / 1,000 franchises

Rating

0.0

(0)

Developer

DataCach

DataCach

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Scrape the entire BizBuySell franchise directory and export every franchise opportunity to JSON, CSV, or Excel — with the numbers franchise buyers actually compare: cash required, total investment range, franchise fee, royalty and ad-fund percentages, unit counts by year, and the states each brand is granting territories in.

What is BizBuySell Franchises for Sale Scraper?

This Actor is a BizBuySell franchise scraper that turns the BizBuySell franchise directory — roughly 900 active franchise brands — into a structured dataset you can sort, filter, and analyze. The site lets you browse brands one page at a time but gives you no export, no sorting by royalty percentage, and no way to compare unit growth across brands. This Actor does all three.

For every franchise it collects the full profile page, not just the summary card: financial requirements, the fee structure broken out by type, up to five years of franchised-versus-company-owned unit history, corporate details, and the complete list of states where the brand is granting territories. Every input is optional — click Start with no configuration and you get the whole directory.

What can this BizBuySell franchise data scraper do?

  • 🏪 Scrape every franchise brand listed on BizBuySell, or a filtered slice of it
  • 🔍 Filter by 28 franchise categories — Restaurant and Food, Home Services, Child Related, Low Cost Franchises, Veteran's Franchises, and more
  • 📍 Filter by US state — matched on where the brand grants territories, not where its head office sits
  • 💰 Filter by total investment range in USD, so you only get brands your capital supports
  • 🔤 Filter by brand name with a case-insensitive keyword match
  • 📊 Export 31 fields per franchise to JSON, CSV, Excel, XML, or HTML
  • 🕒 Stamp every record with extraction_datetime (ISO-8601 UTC) and extraction_date (mm-dd-yyyy) so you can diff runs over time
  • 🔁 Resume safely — the run persists its progress, so a platform migration does not re-emit franchises you already have
  • Fast and light — the Actor talks directly to BizBuySell's listing API instead of driving a browser, so a full directory scrape finishes in about five minutes on 512 MB

Because it runs on the Apify platform, you also get REST API access, scheduled runs, run monitoring and alerts, automatic proxy rotation, and one-click integrations with Make, Zapier, Google Sheets, Slack, and webhooks.

Free vs. paid plans: what are the limits?

This is the only difference between plans. Every filter, every output field, the API, scheduling, and integrations are identical on both. The single thing a paid Apify plan unlocks is how many franchises one run may collect.

Input🆓 Free plan⭐ Paid plan
maxResultsHard cap of 25 franchises — applied even when set to 0Full range. 0 = every match (~900 with the default filters)
categoriesNo limitNo limit
statesNo limitNo limit
keywordNo limitNo limit
investmentMin / investmentMaxNo limitNo limit
includeInactiveNo limitNo limit
All 31 output fields✅ Included✅ Included
API, scheduling, monitoring, integrations✅ Included✅ Included

How the free cap behaves in practice:

  • The cap is enforced at runtime, before the first request. When it kicks in, the run log records a warning such as Free plan detected — limiting the run to 25 franchises and, if your maxResults was higher, Maximum results lowered from 100 to 25 by the free plan limit.
  • Setting maxResults to 0 ("collect everything") does not bypass the cap — on the free plan it still stops at 25.
  • The cap is 25 franchises per key-value store, not 25 per fresh run. The Actor persists how many results it has already pushed so that a resumed or restarted run does not re-emit (or re-charge for) items you already received. Running again against the same key-value store therefore continues from where it stopped rather than granting another 25; use a new key-value store for a clean count.
  • If the plan cannot be verified for any reason, the Actor fails safe and assumes free. Any paid Apify plan removes the cap entirely.

Twenty-five franchises is enough to see every financial field populated with real data and decide whether the output fits your workflow before scaling up.

What data does the BizBuySell franchise scraper extract?

Each franchise becomes one dataset record with 31 fields:

FieldDescription
franchiseIdBizBuySell's internal franchise ID
nameFranchise brand name
urlBizBuySell profile URL
urlStubURL slug of the profile
websiteThe brand's own franchising site
descriptionBrand overview / positioning line
cashRequiredLiquid cash the franchisor requires
netWorthRequiredMinimum net worth required
franchiseFeeUpfront franchise fee
totalInvestmentMin / totalInvestmentMaxTotal cost to open one location
feesFee breakdown by type — franchiseFee, royaltyFee, advertisingFee, other — each with flat value, percent, and the base it applies to
averageUnitRevenueAverage annual revenue per unit
totalUnitsCurrent total system size
franchisedUnitsFranchisee-owned units
companyOwnedUnitsCorporate-owned units
newUnitsOpenedUnits opened in the latest reported year
unitHistoryFranchised and company-owned units per year, up to five years
franchisingSinceYear the brand started franchising
dataYearYear the unit and revenue figures refer to
categoriesEvery BizBuySell category the brand is listed under
availableStatesState and province codes where the brand grants territories
availableInCanadaWhether the brand franchises in Canada
classificationsTags such as Training and Support or Financing Available
trainingProvidedWhether the franchisor provides training
headquartersCorporate HQ city and state
ceoNamePublicly listed CEO
stockTickerTicker symbol, if the parent is public
imageUrlBrand logo image URL
extraction_datetimeUTC timestamp when the item was extracted (ISO-8601)
extraction_dateExtraction date in mm-dd-yyyy format

⚠️ Financial fields are self-reported by the franchisor and may be missing. In a measured sample of 40 brands, brand name, investment range, franchise fee, categories, and territories were present for all of them, while net worth and average unit revenue were present for roughly three quarters. The Actor reports exactly what BizBuySell publishes and never guesses a value — a missing figure comes back as null.

How do I scrape franchise opportunities from BizBuySell?

  1. Click Try for free to open the Actor in Apify Console.
  2. Under 🔍 Search filters, pick your franchise categories — or leave it empty to scrape all 28.
  3. Optionally narrow by state (where the brand offers territories) and by brand name.
  4. Under 💰 Investment range, set a minimum and/or maximum total investment in USD. Leave both at 0 for any investment level.
  5. Under ⚙️ Limits, set Maximum results (default 50). Start small to preview the data, then raise it. On the free plan this is capped at 25.
  6. Click Start and watch the results fill in.
  7. Download the dataset as JSON, CSV, Excel, XML, or HTML, or pull it straight from the Apify API.

Input

All seven inputs are optional and none are required. There is no startUrls field and no proxyConfiguration field — the Actor posts your search criteria directly to BizBuySell's internal listing API, so there are no URLs to assemble and no proxy to configure.

FieldTypeDefaultDescription
categoriesarray (multi-select)[]Franchise categories to include, from 28 options such as Restaurant and Food, Home Services, or Child Related. Multiple categories are combined with OR, so picking several widens the search.
statesarray (multi-select)[]Two-letter US state codes. Returns brands granting territories in at least one of them — a brand headquartered in Florida still matches Texas if it sells Texas territories.
keywordstring""Only brands whose name contains this text, e.g. pizza matches "Pizza Hut" and "Marco's Pizza". Case-insensitive, matched against the brand name only, not the description.
includeInactivebooleanfalseTurn on to also collect franchises whose advertiser is no longer active. Roughly doubles the results, but those listings often have incomplete financials.
investmentMininteger (USD)0Minimum total investment. 0 = no lower limit. Must not exceed investmentMax.
investmentMaxinteger (USD)0Maximum total investment. 0 = no upper limit.
maxResultsinteger50Stop after this many franchises. 0 collects everything matching your filters (~900 with the default filters). Free plan is capped at 25, including when set to 0.

Example input:

{
"categories": ["Restaurant and Food"],
"states": ["TX", "FL"],
"investmentMax": 500000,
"maxResults": 50
}

Output example

Each franchise becomes one dataset record. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel, or fetch it from the API.

{
"franchiseId": 3417,
"name": "Take 5 Oil Change",
"url": "https://www.bizbuysell.com/franchise-for-sale/take-5-oil-change/",
"urlStub": "take-5-oil-change",
"website": "https://www.take5franchise.com/what-it-takes/",
"description": "Simple Model with Superior Unit Level Economics",
"cashRequired": 2300000,
"netWorthRequired": 5750000,
"franchiseFee": 35000,
"totalInvestmentMin": 2300000,
"totalInvestmentMax": 3500000,
"fees": [
{ "type": "franchiseFee", "value": "$45,000", "percent": null, "base": null },
{ "type": "royaltyFee", "value": null, "percent": "5.0%", "base": "Gross Sales" },
{ "type": "advertisingFee", "value": null, "percent": "7.0%", "base": "Gross Sales" }
],
"averageUnitRevenue": 1235518,
"totalUnits": 1142,
"franchisedUnits": 500,
"companyOwnedUnits": 710,
"newUnitsOpened": 179,
"unitHistory": [
{ "year": 2023, "franchisedUnits": 325, "companyOwnedUnits": 643 },
{ "year": 2024, "franchisedUnits": 432, "companyOwnedUnits": 710 }
],
"franchisingSince": 2017,
"dataYear": 2024,
"categories": ["Automotive", "Business Services", "High Capital Franchises"],
"availableStates": ["AZ", "FL", "IL", "IN", "IA", "KS", "MI", "MO", "NE", "PA", "TN", "VA"],
"availableInCanada": false,
"classifications": ["Training and Support", "Financing Available"],
"trainingProvided": true,
"headquarters": "Charlotte, NC",
"ceoName": "Jonathan Fitzpatrick",
"stockTicker": null,
"imageUrl": "https://www.bizbuysell.com/fnw/images/362/362/75692b1b-6cea-4fba-a54e-253b9b2c21c7.gif",
"extraction_datetime": "2026-08-07T22:44:37.698225+00:00",
"extraction_date": "08-07-2026"
}

How much does it cost to scrape BizBuySell franchises?

This Actor uses pay per event (PPE) pricing. You are billed only for two events — starting the Actor, and each franchise it actually delivers to the dataset. There are no compute-unit charges, no proxy surcharge, and no charge for time spent running: a run that finds nothing costs only the start event.

EventWhen it is chargedPrice
Actor start (apify-actor-start)Once per run$0.00005
Franchise scraped (apify-default-dataset-item)Once per franchise pushed to the datasetSee the table below

The price of the franchise scraped event depends on your Apify plan:

Apify planPrice per 1,000 franchisesPrice per event
🆓 Free$3.00$0.0030
⭐ Starter$2.00$0.0020
🚀 Scale$1.50$0.0015
🏢 Business$0.99$0.00099

What a typical run costs

RunResults🆓 Free⭐ Starter🚀 Scale🏢 Business
Free-plan run (hard cap)25$0.08$0.05$0.04$0.03
Quick preview50$0.10$0.08$0.05
One category100$0.20$0.15$0.10
Large filtered slice500$1.00$0.75$0.50
Full directory~900$1.80$1.35$0.89
Full directory + includeInactive~1,800$3.60$2.70$1.78

Every total includes the $0.00005 Actor start event, which is too small to change any figure above.

Every Apify plan includes monthly platform credits — the free plan comes with $5 per month, which covers the 25-franchise cap many times over. See Apify pricing for current plan details.

How to keep the cost down

  • Filter before you scale. categories, states, keyword, and the investment range all cut the result count before anything is billed, so a targeted run of 100 brands costs a fraction of the full directory.
  • Set maxResults on the first run. Try 10–25 to confirm the fields you need are populated, then raise it — the event only fires for franchises actually delivered.
  • Leave includeInactive off. It roughly doubles both the result count and the bill, with records whose financials are often blank.
  • Schedule monthly, not daily. Franchise fees, royalties, and unit counts move slowly — a monthly run is enough to track changes via extraction_date.
  • Reuse the key-value store when resuming. The Actor remembers how many results it already pushed, so a restarted run does not re-emit — or re-charge for — franchises you already have.

Use cases

  • 🧾 Franchise buyers — build a shortlist you can actually sort. Filter to what your capital supports, then rank by royalty percentage or unit growth instead of clicking through profiles one at a time.
  • 🤝 Franchise brokers and consultants — keep a current database of brands, investment levels, and available territories to match against client budgets.
  • 📈 Franchisors and their agencies — benchmark your franchise fee, royalty percentage, investment range, and unit growth against every competitor in your category.
  • 💼 Private equity and M&A teams — screen franchise systems by unit count, growth trajectory, and average unit revenue to source acquisition targets.
  • 📊 Market researchers — schedule recurring runs and use extraction_date to track how investment requirements and franchise fees move across categories over time.
  • 🎯 Lead-gen and ad agencies — segment the franchise market by category, capital tier, and expansion state to target the right brands.

Tips for better BizBuySell scraping runs

  • Preview before you commit. Set maxResults to 10 on the first run, check the columns, then raise it.
  • Filter by state on the brand's terms. states matches where a franchise is granting territories, so a national brand shows up under every state it is expanding into — not just its home state.
  • Leave includeInactive off unless you specifically want lapsed advertisers. It roughly doubles the result count with records whose financials are often blank.
  • Categories are OR, not AND. Selecting more categories widens the result set rather than narrowing it.
  • Schedule a monthly run and diff on extraction_date to track fee changes and unit growth across a category.
  • Keep memory at 512 MB. The Actor is pinned to 512 MB and does not benefit from more — it makes API calls, not browser renders.

Other BizBuySell Actors you might like

ActorWhat it scrapes
BizBuySell Businesses for Sale ScraperIndividual businesses and franchise resales listed for sale — a different dataset from the franchisor directory this Actor collects

FAQ

This Actor collects only publicly available information — the same franchise profiles any visitor can view without logging in. It extracts no personal contact details: no phone numbers, no email addresses. ceoName is a publicly listed corporate officer, not a lead. Scraping public data is generally legal, but you are responsible for how you use the output. If you plan to process it commercially or at scale, get your own legal advice and review BizBuySell's Terms of Service.

How many franchises can I scrape from BizBuySell?

Around 900 — the full active directory — on a paid plan with maxResults set to 0. Turning on includeInactive roughly doubles that with lapsed advertisers. On the free plan the run stops at 25 (see Free vs. paid plans).

Why are some financial fields empty or null?

Because the franchisor did not publish them. Fees, royalties, net worth, average unit revenue, and unit counts are all self-reported. The Actor reports exactly what BizBuySell shows and never guesses a value.

Does this Actor scrape individual businesses for sale?

No. This Actor covers the franchisor directory — brands granting new franchises. For businesses and franchise resales listed for sale, use the BizBuySell Businesses for Sale Scraper.

Can I export BizBuySell franchise data to CSV or Excel?

Yes. Every run's dataset can be downloaded as JSON, CSV, Excel, XML, or HTML from the Output tab, or pulled programmatically from the Apify API.

Can I run this scraper on a schedule or via API?

Yes. Apify gives you scheduled runs, webhooks, a full REST API, and integrations with Make, Zapier, Google Sheets, and Slack, plus run monitoring and failure alerts.

Do I need to configure a proxy or start URLs?

No. There is no startUrls input and no proxyConfiguration input. The Actor posts your search criteria straight to BizBuySell's internal listing API and handles networking itself.

Can I get more data fields or a custom version?

Yes. Open an issue on the Issues tab describing what you need. Custom scraping solutions are available on request.

Support

Found a bug, or a field that stopped populating? Report it on the Issues tab of this Actor and it will be looked at. Feature requests and custom-solution enquiries are welcome there too.