BizQuest Business-for-Sale Scraper avatar

BizQuest Business-for-Sale Scraper

Pricing

Pay per event

Go to Apify Store
BizQuest Business-for-Sale Scraper

BizQuest Business-for-Sale Scraper

Scrape BizQuest businesses for sale across the US: title, asking price, city, state, teaser, financing, real-estate and SBA tags, photo and listing URL for the nationwide feed or any state or city, deduplicated.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Devil Scrapes mark

BizQuest Business-for-Sale Scraper

💰 $6.00 / 1 000 results  ·  pay only for results  ·  no credit card to try

The devil's in the data. 😈

Pull businesses for sale from BizQuest, the US small-business marketplace, as clean, deduplicated rows: title, asking price, city and state, the seller's teaser, financing, real-estate and SBA tags, photo, and the listing URL. Scrape the nationwide feed, a whole state, or a single city.

🎯 What this scrapes

BizQuest shows about fifty businesses a page and offers no export. This Actor walks the listing pages for every route you choose (nationwide, a state, a city, or a BizQuest URL you paste) and returns one row per business: listing id, URL, headline, teaser, asking price in USD, city or county, state code and name, lead photo, and the Financing Available, Includes Real Estate and SBA Loan Eligible tags. Franchise advertisements and broker promo cards that BizQuest mixes into its result list are left out, so every row is a real business for sale.

🔥 Features

  • 🛡️ We rotate browser fingerprints (curl-cffi Chrome, Firefox and Safari impersonation) so the site sees a real browser's TLS handshake, not a Python script.
  • 🔁 We retry with exponential backoff on rate limits and server errors, honouring Retry-After. Up to 5 attempts per page.
  • 🌐 We rotate residential US proxies through Apify Proxy on every block, with a fresh session and exit IP each time.
  • 🧊 Run-wide deduplication. The same listing id never appears twice in your dataset, across pages or across routes in one run.
  • 🗺️ State and city routing. Type Texas, TX or Houston, TX and we build the right BizQuest route for you.
  • 🧱 Fault isolation. One route that gets blocked doesn't end the others; we log it and keep going.
  • 💰 You pay only for results that land. No data, no charge (only the small actor-start warm-up fee).

💡 Use cases

  • Business brokers and M&A advisors: track new listings and asking prices by state or metro.
  • Search funds and acquisition entrepreneurs: build a deal-flow pipeline of small businesses with financing or real estate included.
  • Investors and lenders: watch SBA-eligible listings and asking-price trends by region.
  • Market researchers: measure how many businesses are for sale per state and what they ask.

⚙️ How to use it

  1. Leave includeNationwide on for the national feed, add states or cities to locations (for example Texas or Houston, TX), or paste BizQuest listing URLs into startUrls.
  2. Set maxPages and maxItems to bound how much you pull.
  3. Run it, then export to JSON, CSV, or Excel, or pull the dataset straight from the Apify API.

📥 Input

FieldTypeRequiredDefaultNotes
includeNationwidebooleannotrueScrape the nationwide feed.
locationsarray<string>noemptyUS states (Texas, TX) or cities (Houston, TX).
startUrlsarray<string>noemptyBizQuest listing-page URLs. A trailing page-N/ and any query string are ignored.
maxPagesintegerno3Cap on pages per route, about 50 listings per page (1-200).
maxItemsintegerno150Hard cap on total rows across the run (1-10000).
proxyConfigurationobjectyesResidential, USApify Proxy configuration.

Example input

{
"includeNationwide": true,
"locations": ["Texas"],
"maxPages": 2,
"maxItems": 200,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US" }
}

📤 Output

One row per deduplicated business listing.

FieldTypeNotes
listingIdstringBizQuest listing id (BW number), dedupe key.
urlstringAbsolute listing URL.
titlestringListing headline.
descriptionstring | nullTeaser shown on the card.
askingPriceinteger | nullAsking price in whole USD, when disclosed.
currencystringPrice currency, USD.
localitystring | nullCity or county.
state / stateNamestring | nullState code and name.
financialsGatedbooleanBizQuest hides cash flow and EBITDA behind a sign-in.
financingAvailablebooleanCard carries the Financing Available tag.
includesRealEstatebooleanCard carries the Includes Real Estate tag.
sbaEligiblebooleanCard carries the SBA Loan Eligible tag.
imageUrlstring | nullLead photo URL.
searchRoutestringRoute the row was found on.
pageNumber / positioninteger1-based page and position within the page.
scrapedAtstringUTC ISO-8601 run timestamp.

Example output record

{
"listingId": "2540957",
"url": "https://www.bizquest.com/business-for-sale/private-gym/BW2540957/",
"title": "Private gym",
"description": "Members-only fitness club offering 24-hour gym access.",
"askingPrice": 400000,
"currency": "USD",
"locality": "Monument",
"state": "CO",
"stateName": "Colorado",
"financialsGated": true,
"financingAvailable": false,
"includesRealEstate": false,
"sbaEligible": false,
"imageUrl": "https://images.bizquest.com/shared/listings/254/2540957/117faeb8-bcf4-4de3-aafb-8c8cf5f8c2fe-W336.webp",
"searchRoute": "/businesses-for-sale/",
"pageNumber": 1,
"position": 1,
"scrapedAt": "2026-10-12T08:00:00Z"
}

💰 Pricing

Pay-Per-Event: you pay only when these events fire.

EventUSDWhat it is
actor-start$0.20One-off warm-up charge per run
result-emitted$0.006Per deduplicated business listing written to the dataset

Example: 1 000 rows = $6.20 per run ($0.20 start + 1000 x $0.006). No subscription, no minimum, no card required to try it.

🚧 Limitations

  • Search-card fields only. This returns what the listing results publish. Full listing detail pages, broker contact details and the confidential financials are out of scope.
  • Cash flow, EBITDA and revenue are not returned. BizQuest shows them only to signed-in visitors, so the Actor flags those listings with financialsGated instead of guessing.
  • Asking price can be empty. Listings that do not disclose a price come back with askingPrice set to null.
  • Result depth. BizQuest serves up to about 200 pages for the nationwide feed; set maxPages high enough for the depth you need.
  • URL filters are not applied. Paste the route you want (nationwide, state or city); query-string filters on a pasted URL are dropped.
  • A route with no listings is a success. It finishes with zero rows and a status message naming what was scraped.

❓ FAQ

Do I need a BizQuest account or API key? No. This reads BizQuest's public listing pages.

How do I scrape one state or city? Add it to locations: Texas, TX, or Houston, TX. Turn off includeNationwide if you want only those routes.

Why did my run return fewer rows than maxItems? Either the route has fewer listings than your cap, or maxPages stopped the run first. The status message tells you which.

Why are franchise results missing? BizQuest mixes franchise advertisements into its listing pages. Those are not businesses for sale, so we leave them out.

What happens if a page is blocked? We retry up to 5 times with a fresh browser fingerprint and proxy session each time. If a route still can't be read, the others carry on and the status message says so. The run ends as failed only when a route was blocked and nothing at all could be collected.

Can I run this on a schedule? Yes. Use Apify Schedules to re-run your routes daily or weekly and catch newly listed businesses.

💬 Your feedback

Found a bug, or need a field we don't return yet? Open an issue on the Actor's Issues tab. We read every one.