Sunbelt Network APIsunbeltnetwork.com ↗
Search and retrieve business-for-sale listings from Sunbelt Network. Filter by state, cash flow, revenue, and industry. Access broker contacts and office locations.
What is the Sunbelt Network API?
The Sunbelt Network API exposes 7 endpoints for querying business-for-sale listings, broker details, and office locations across the Sunbelt franchise network. search_listings accepts financial filters like cf_min, cf_max, gr_min, and gr_max alongside state and keyword parameters, returning asking price, gross revenue, and cash flow per result. get_listing_details then delivers the full record — descriptions, financials, and broker contact — for any single listing URL.
curl -X GET 'https://api.parse.bot/scraper/48e3871a-6136-4dde-9468-cd7c2b1a5f23/search_listings?page=1&limit=5&query=restaurant&state=Florida&cf_max=5000000&cf_min=50000&gr_max=10000000&gr_min=100000&country=United+States&industry=Agriculture&price_max=5000000&price_min=100000&relocatable=true' \ -H 'X-API-Key: $PARSE_API_KEY'
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 sunbeltnetwork-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.
"""Walkthrough: Sunbelt Network Business Listings API — search, drill-down, offices."""
from parse_apis.sunbelt_network_business_listings_api import (
Sunbelt, Industry, ListingNotFound
)
client = Sunbelt()
# Search for restaurant businesses in Florida, capped at 5 results.
for listing in client.listingsummaries.search(query="restaurant", state="Florida", limit=5):
print(listing.title, listing.asking_price, listing.location)
# Drill into a specific listing by URL for full financial details.
try:
detail = client.listings.get(url="https://www.sunbeltnetwork.com/business-search/business-details/100-turnkey-waterfront-restaurant-54562/")
print(detail.title, detail.listing_id)
print(detail.broker.company, detail.broker.phone)
except ListingNotFound as exc:
print(f"Listing gone: {exc}")
# Browse all industry categories available for filtering.
for cat in client.categories.list(limit=5):
print(cat.id, cat.name)
# List office locations and drill into the first one for contact info.
office_summary = client.officesummaries.list(limit=1).first()
if office_summary:
office = office_summary.details()
print(office.address, office.phone)
# Filter by industry enum — construction businesses only.
for item in client.listingsummaries.list_construction(limit=3):
print(item.title, item.gross_revenue)
print("exercised: listingsummaries.search / listings.get / categories.list / officesummaries.list / officesummary.details / listingsummaries.list_construction")
Full-text search over business-for-sale listings with financial and geographic filters. Paginates server-side; returns up to `limit` results starting from `page`. Each result carries a title, asking price, location, gross revenue, and cash flow. Results whose URL is present can be passed to get_listing_details for the full record.
| Param | Type | Description |
|---|---|---|
| page | integer | Starting page number. |
| limit | integer | Maximum number of listings to return. |
| query | string | Keyword, city, or listing ID to search for. |
| state | string | US state name to filter by (e.g. 'Florida', 'California'). |
| cf_max | number | Maximum cash flow. |
| cf_min | number | Minimum cash flow. |
| gr_max | number | Maximum gross revenue. |
| gr_min | number | Minimum gross revenue. |
| country | string | Country name to filter by. |
| industry | string | Industry name or numeric ID (1-19). Use get_all_categories to retrieve the full list. |
| price_max | number | Maximum asking price. |
| price_min | number | Minimum asking price. |
| relocatable | boolean | When true, filters to relocatable businesses only. |
{
"type": "object",
"fields": {
"end_page": "integer, the last page fetched",
"listings": "array of listing summary objects with title, url, listing_id, asking_price, location, gross_revenue, cash_flow",
"start_page": "integer, the starting page number used",
"total_returned": "integer, count of listings returned"
},
"sample": {
"data": {
"end_page": 1,
"listings": [
{
"url": "https://www.sunbeltnetwork.com/business-search/business-details/100-turnkey-waterfront-restaurant-54562/",
"title": "100% Turnkey Waterfront Restaurant",
"location": "Gulf Coast , Florida",
"cash_flow": "N/A",
"listing_id": "54562",
"asking_price": "$4.500m",
"gross_revenue": "$3.400m"
}
],
"start_page": 1,
"total_returned": 1
},
"status": "success"
}
}About the Sunbelt Network API
Searching and Filtering Listings
search_listings is the primary discovery endpoint. It accepts a free-text query (keyword, city, or listing ID), a state filter (e.g. 'Florida', 'Texas'), and numeric range filters for cash flow (cf_min / cf_max) and gross revenue (gr_min / gr_max). Results paginate server-side via page and limit parameters. Each result in the listings array includes title, url, listing_id, asking_price, location, gross_revenue, and cash_flow. The total_returned field tells you how many records came back in that response.
Listing Details and Financials
get_listing_details accepts the url from any listing summary and returns the complete record. The financials object contains keys like Asking Price, Cash Flow, Gross Revenue, and Down Payment. The summary object holds operational metadata — Year Established, Relocatable, Franchise status, and similar fields. The descriptions object maps section headers to their full text content, covering the seller's narrative and business overview. The broker object returns company, office, email, and phone.
Industry Category Endpoints
get_all_categories returns the 19 industry categories available on Sunbelt Network, each with a numeric id and name. Two pre-filtered convenience endpoints — get_healthcare_listings and get_construction_listings — return up to 100 listing summaries for the Health Care & Fitness and Building & Construction industries respectively, with the same response shape as search_listings.
Office Locations
get_locations returns the full network of Sunbelt office locations, each with state, office_name, and a url. Passing that URL to get_office_details resolves the street address and phone number for that specific office. This is useful for matching a listing's broker office to a physical location.
The Sunbelt Network API is a managed, monitored endpoint for sunbeltnetwork.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when sunbeltnetwork.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 sunbeltnetwork.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 listings with
cf_minandgr_minto find businesses meeting minimum financial thresholds - Build a deal-sourcing dashboard that aggregates Sunbelt listings by state using the
stateparameter insearch_listings - Enrich a CRM with broker contact details by calling
get_listing_detailsfor each listing and extracting thebrokerobject - Compare healthcare business-for-sale inventory using
get_healthcare_listingsto monitor listing volume and asking prices over time - Map Sunbelt franchise office coverage by combining
get_locationsandget_office_detailsto resolve addresses for every office - Track construction-sector deal flow by polling
get_construction_listingsand monitoring changes inasking_priceandcash_flow - Build a category-filtered search tool using the numeric IDs from
get_all_categoriesto scope queries to specific industries
| 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 Sunbelt Network have an official developer API?+
What financial fields does `get_listing_details` return, and are they always populated?+
financials object returns keys including Asking Price, Cash Flow, Gross Revenue, and Down Payment. Not every listing populates all fields — sellers may withhold certain figures, in which case those keys may be absent or empty in the response.Does `search_listings` support filtering by industry category?+
search_listings endpoint filters by state, query, and numeric financial ranges, but does not currently expose a direct industry parameter in its inputs. The get_all_categories endpoint returns the 19 available categories with numeric IDs. You can fork this API on Parse and revise it to add an industry filter parameter wired to those IDs.Is there an endpoint for listing history, price changes, or sold/off-market status?+
How does pagination work in `search_listings`, and what does `total_returned` represent?+
page sets the starting page and limit controls how many results to fetch per request. The response includes start_page, end_page, and total_returned, where total_returned reflects the count of listings actually included in that response — not the total number of matching listings across all pages.