BizBuySell APIbizbuysell.com ↗
Search businesses for sale, retrieve detailed financials, and browse category hierarchies from BizBuySell.com via a structured JSON API.
What is the BizBuySell API?
The BizBuySell API covers 3 endpoints for accessing the BizBuySell marketplace, returning structured data on business-for-sale listings including asking price, cash flow, EBITDA, and revenue. The search_listings endpoint accepts filters like state, category, price range, and minimum cash flow to return paginated results, while get_listing_detail retrieves full financial and location data for a specific listing by URL.
curl -X POST 'https://api.parse.bot/scraper/a16d5faf-5b3b-424d-92c9-0efcfacde11f/search_listings' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"page": "1",
"query": "car wash",
"state": "california",
"category": "automotive-and-boat-businesses"
}'Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace bizbuysell-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""
BizBuySell Business Listings SDK Example
Search and explore businesses for sale, get detailed listing info, and browse categories.
"""
from parse_apis.bizbuysell_api import BizBuySell, Listing, ListingDetail, Category
client = BizBuySell()
# Browse available business categories
for category in client.categories.list():
print(category.name, category.url_stub)
for child in category.children:
print(f" - {child.name} ({child.url_stub})")
# Search for automotive businesses in California
for listing in client.listings.search(state="california", category="automotive-and-boat-businesses", limit=5):
print(listing.title, listing.location, listing.asking_price)
# Get full details for this listing
detail = listing.detail.get()
print(detail.city, detail.state, detail.established, detail.revenue)
Search for businesses for sale on BizBuySell with optional filters for location, category, price, and cash flow. Excludes franchises and restaurants by default. Returns paginated results with listing summaries including financials. Each result includes a URL suitable for get_listing_detail.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| query | string | Search keyword (e.g. 'laundromat', 'car wash') |
| state | string | US state name to filter by (e.g. 'florida', 'california'). Use lowercase. |
| category | string | Business category URL stub to filter by (e.g. 'automotive-and-boat-businesses'). Values available from get_categories endpoint url_stub field. The '-businesses' suffix is handled automatically. |
| max_price | integer | Maximum asking price filter |
| min_price | integer | Minimum asking price filter |
| min_cash_flow | integer | Minimum cash flow filter |
| exclude_franchises | boolean | Exclude franchise listings from results |
| exclude_restaurants | boolean | Exclude restaurant/bar listings from results |
{
"type": "object",
"fields": {
"listings": "array of listing objects with listing_id, title, location, asking_price, cash_flow, ebitda, revenue, description, url, image_url, is_franchise",
"current_page": "integer current page number",
"total_results": "integer total number of matching results"
},
"sample": {
"data": {
"listings": [
{
"url": "https://www.bizbuysell.com/business-opportunity/subscription-based-household-essentials-amazon-fba-store/2515880/",
"title": "Subscription Based Household Essentials Amazon FBA Store",
"ebitda": 115643,
"revenue": null,
"location": "Tampa, FL",
"cash_flow": 116643,
"image_url": [
"https://images.bizbuysell.com/shared/listings/251/2515880/eb6ff4b6-878c-465d-9f8c-2d049e8c6867-W336.webp"
],
"listing_id": 2515880,
"description": "I have built a highly profitable Amazon FBA store...",
"asking_price": 134500,
"is_franchise": false
}
],
"current_page": 1,
"total_results": 5710
},
"status": "success"
}
}About the BizBuySell API
Search and Filter Business Listings
The search_listings endpoint accepts a query keyword alongside filters for state, category, min_price, max_price, and min_cash_flow. Results are paginated and each listing object includes listing_id, title, location, asking_price, cash_flow, ebitda, revenue, description, url, and image_url. The exclude_franchises boolean defaults to true, so franchise listings are omitted unless you explicitly pass false. The total_results field in each response indicates how many matches exist across all pages.
Listing Detail and Financials
The get_listing_detail endpoint takes a full listing URL or a relative path stub such as /Business-Opportunity/listing-title/1234567/ and returns a listingDetail object with structured fields: title, subtitle, description, category, listing_id, asking_price, currency, city, state, and image_url, among others. This is the right endpoint when you need granular financial context on a specific business rather than summary fields from search results.
Category Hierarchy
The get_categories endpoint requires no inputs and returns the full category tree used on BizBuySell. Each object in the categories array carries a category_id, name, url_stub, seo_plural, and a children array of subcategories. The url_stub values from this endpoint feed directly into the category parameter of search_listings, making it straightforward to iterate over defined industry segments programmatically.
The BizBuySell API is a managed, monitored endpoint for bizbuysell.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bizbuysell.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official bizbuysell.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Screen acquisition targets by filtering
search_listingsformin_cash_flowandmax_pricewithin a specific US state - Aggregate asking price and EBITDA data across a business category to benchmark valuations in a given market
- Monitor new listings in a niche (e.g. 'laundromat' or 'car wash') by polling
search_listingswith a keyword query - Build an investment pipeline tool that stores
listing_idreferences and fetches full financials viaget_listing_detail - Populate a deal-flow dashboard with
cash_flow,revenue, andasking_pricefields from paginated search results - Enumerate the complete BizBuySell category taxonomy via
get_categoriesto build industry-level filtering UIs
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does BizBuySell have an official developer API?+
What financial fields does `get_listing_detail` return compared to `search_listings`?+
search_listings returns summary-level fields: asking_price, cash_flow, ebitda, and revenue per listing. get_listing_detail returns the same core financials alongside additional structured fields like subtitle, currency, city, and state — scoped to a single listing. Use get_listing_detail when you need the full structured record for a specific business.Does `search_listings` return franchise or restaurant listings?+
exclude_franchises parameter, which defaults to true. Restaurants are excluded by default as well. You can pass exclude_franchises: false to include franchise listings. There is no current parameter to re-include restaurant listings in the same endpoint. You can fork this API on Parse and revise it to add a dedicated restaurant or franchise search endpoint.Are international business listings covered?+
state parameter, and the coverage reflects the US-focused inventory on BizBuySell. International listings are not currently addressable through the available filters. You can fork this API on Parse and revise it to add support for international location parameters if BizBuySell surfaces that data.How does pagination work in `search_listings`?+
current_page integer and a total_results count. Pass the page integer parameter to step through result sets. There is no explicit field for total page count, so divide total_results by the number of results per page to determine how many pages exist for a given query.