BizQuest Scraper with Contacts & Financials avatar

BizQuest Scraper with Contacts & Financials

Pricing

from $0.70 / 1,000 business listings

Go to Apify Store
BizQuest Scraper with Contacts & Financials

BizQuest Scraper with Contacts & Financials

Extract BizQuest business-for-sale listings with clean JSON, rich details, contacts, pricing, financials, locations, media, and flexible filters. Built for acquisition research, lead generation, market monitoring, BI, ETL, and agent workflows.

Pricing

from $0.70 / 1,000 business listings

Rating

0.0

(0)

Developer

Fatih Tahta

Fatih Tahta

Maintained by Community

Actor stats

1

Bookmarked

3

Total users

2

Monthly active users

6 days ago

Last modified

Share

BizQuest Business Scraper

Slug: fatihtahta/bizquest-business-scraper-apify

Overview

BizQuest Business Scraper collects structured business listing records from BizQuest, including businesses for sale, asset-sale opportunities, franchise-related listings, and business real-estate listings when they match the selected search criteria. Each result is organized around the listing identity, public listing URL, location, asking price, financial signals, business attributes, broker/contact fields, media, and source context when those values are available. BizQuest is a public marketplace for business acquisition opportunities, making its listings useful for buyer research, market mapping, broker analysis, acquisition screening, and recurring monitoring. The actor turns search criteria such as keyword, location, category, listing type, price, revenue, EBITDA or cash-flow ranges, recency, and ownership filters into repeatable collection runs. Results are delivered as structured dataset records suitable for review, export, ETL pipelines, BI dashboards, AI-agent workflows, CRM enrichment, and downstream processing. The actor is designed for recurring operational data acquisition with consistent JSON records and run-level artifacts, without making assumptions about complete marketplace coverage or fixed source availability.

What Makes This Actor Different

  • Business-acquisition-specific inputs: The public form supports acquisition filters that matter for BizQuest workflows, including category, listing family, asking price, revenue, EBITDA or cash-flow range, seller financing, franchise resale, absentee-owner signals, recency, and minimum established year.
  • Pipeline-ready listing records: Results use a grouped JSON contract with stable top-level objects such as source_context, entity, location, pricing, financials, business, listing, broker, contact_details, media, metrics, relationships, and attributes.
  • Deduplication-friendly identifiers: record_id, entity.url, and entity.external_ids give downstream systems practical keys for upserts, change tracking, warehouse syncs, and repeated scheduled runs.
  • Optional enriched records: enrich_data lets users choose between lighter search-result records and richer listing records when additional listing details are needed for review, CRM enrichment, or analysis.
  • Run receipts for operators: The actor writes RUN-SUMMARY and RUN-SUMMARY.html artifacts with saved counts, normalized input context, enrichment state, coverage breakdowns, representative records, and review-ready signals.
  • Agentic usability: The input fields, record examples, field reference, and run artifacts are designed to be understandable by workflow systems, internal copilots, AI agents, and data pipelines without private context.
  • Field-preserving structure: Related values are grouped instead of flattened into unrelated columns, which helps JSON-first systems retain optional source details while still allowing deliberate flattening for CSV or spreadsheet exports.

Who Should Use This Actor

  • Acquisition search teams: Build repeatable lists of business opportunities by industry, location, budget range, revenue, cash flow, seller financing, or operating characteristics.
  • Market research and analytics teams: Monitor public supply, price bands, geographic distribution, category movement, and listing availability across selected BizQuest segments.
  • Business brokers and deal origination teams: Track broker-listed opportunities, contact fields, asking prices, listing recency, and acquisition filters for outreach review and pipeline building.
  • Developers and data engineers: Ingest normalized listing records into warehouses, CRMs, search indexes, internal APIs, or enrichment workflows using stable identifiers and documented nested fields.
  • AI agents and workflow automations: Run scoped collection jobs, read the run summary, inspect representative records, and hand off structured listing data to analysis, alerting, or review steps.
  • Operations and monitoring teams: Schedule the same input configuration over time to compare new, removed, or updated public listings within a defined market segment.

Common Use Cases

  • Market intelligence: Monitor business-for-sale supply, asking prices, category concentration, broker activity, and geographic distribution for a selected market.
  • Lead generation: Build targeted prospect lists of public business opportunities that match a buyer profile, price band, category, or operating signal.
  • Acquisition screening: Filter listings by price, revenue, EBITDA or cash flow, franchise resale, seller financing, absentee-owner signal, or established-year requirements.
  • Broker and contact review: Extract public broker names, companies, profile URLs, phone labels, and related contact information when available.
  • Recurring reporting: Schedule consistent runs to refresh dashboards, stakeholder reports, watchlists, or acquisition sourcing queues.
  • Data enrichment: Add current public listing attributes to existing CRM, BI, or research datasets using stable listing identifiers and public URLs.
  • Agentic research workflows: Let an internal agent collect a scoped dataset, summarize representative records, compare results to a previous run, and route promising listings to a human review queue.

Real-World Questions This Data Can Answer

  • Which BizQuest listings match a specific market, category, buyer thesis, or budget range?
  • Which opportunities show public revenue, cash-flow, EBITDA, seller-financing, franchise, or absentee-owner signals?
  • Which listings are new or recently updated within a selected date window?
  • Which brokers, listing families, categories, or geographies appear most often in a saved segment?
  • Which records are strong candidates for CRM enrichment, buyer review, or broker outreach?
  • Which records changed between this run and a previous scheduled run?
  • Which optional fields are available often enough to support dashboards, alerts, or review queues?

Quick Start

  1. Open the actor in Apify Console.
  2. Enter a keyword, location, category, listing type, or financial filter that matches your BizQuest search goal.
  3. Set a small limit for the first validation run, such as 25 or 50 records.
  4. Run the actor and inspect the first dataset records to confirm the output shape and field availability.
  5. Enable enrich_data or add more filters once the initial record shape matches your workflow.
  6. Export the dataset, schedule recurring runs, or route the run summary to an authorized MCP connector when needed.

Input Parameters

Configure a BizQuest search with optional acquisition, financial, recency, enrichment, limit, and connector-delivery settings.

ParameterTypeDescriptionDefault
keywordstringSearch words or acquisition theme, such as coffee shop, laundromat, manufacturing, dental practice, or absentee owner.-
locationstringCity, state, county, ZIP code, or market phrase supported by BizQuest, such as New York, Austin, TX, Florida, or 10001.-
categoryarray of stringsOne or more BizQuest categories. Examples include Food & Beverage, Health & Medical, Manufacturing, Retail Stores, Real Estate, and many specific subcategories.-
listing_typestringListing family. Allowed values: established_business, asset_sale, real_estate, startup. Leave empty for the normal mixed marketplace search.-
min_priceintegerMinimum asking price in USD. Use with max_price to define a buyer budget band.-
max_priceintegerMaximum asking price in USD. Useful for bounded buyer searches and valuation screens.-
offer_seller_financingbooleanWhen true, focuses on listings where seller financing is part of the selected criteria.-
min_ebitdaintegerMinimum reported EBITDA or cash-flow value in USD, depending on what the source publishes for the listing.-
max_ebitdaintegerMaximum reported EBITDA or cash-flow value in USD.-
min_revenueintegerMinimum reported gross revenue in USD.-
max_revenueintegerMaximum reported gross revenue in USD.-
publication_dateintegerRecent-listing window in days, such as 7, 30, or 90.-
min_established_yearintegerMinimum business established year. Use this to focus on newer operations or consistent cohorts.-
franchise_resalebooleanWhen true, focuses on franchise resale opportunities.-
absentee_ownerbooleanWhen true, focuses on listings matching an absentee-owner operating profile.-
enrich_databooleanWhen true, saves richer listing details where available. When false, output is oriented around standard search-result fields.-
limitintegerMaximum number of BizQuest listing records to save for the run. Start small for validation, then increase for larger market scans.-
mcpConnectorsarrayOptional Apify-authorized MCP connectors for post-run summary delivery. The actor sends a concise run summary after dataset records and artifacts are saved.[]

Choosing Inputs

Use keyword when your workflow starts with a buyer thesis, industry phrase, concept, or operating signal. Use location when the region matters; for recurring analysis, keep one city, state, county, or market segment per run so comparisons stay clean. Use category when you need industry-specific output and want the saved records to stay aligned with BizQuest category families.

Use listing_type when the difference between operating businesses, asset sales, real estate, and startup opportunities matters to the downstream workflow. Use price, revenue, and EBITDA or cash-flow filters to define buyer fit before records are saved. Use publication_date for fresh-listing alerts and scheduled monitoring.

Leave optional filters empty when discovery matters more than precision. Add filters gradually when you need a narrower dataset for CRM import, BI dashboards, or recurring monitoring. Start with a small limit, inspect the dataset and run summary, then increase the limit once the output shape and scope are validated.

Turn on enrich_data when review queues, CRM enrichment, or financial analysis need richer listing details. Leave it off for fast exploratory checks or when standard search-result fields are enough.

Input Recipes

  • Validation run: Use a simple keyword, one location, enrich_data set to false, and a small limit so you can inspect the output shape quickly.
  • Targeted acquisition screen: Combine category, location, min_price, max_price, min_revenue, and listing_type to produce a focused buyer-fit dataset.
  • Fresh-listing monitor: Use publication_date, a stable location, a stable category, and a recurring schedule to watch recently added or updated opportunities.
  • Franchise resale watchlist: Set franchise_resale to true, choose a relevant category or location, and repeat the same input over time for comparison.
  • Owner-operator screening: Combine absentee_owner, price or revenue bands, and enrich_data when the workflow needs deeper review of operating characteristics.
  • Segmented market analysis: Run separate inputs for each geography, category, or price band so dashboards can compare segments without mixing scopes.

Example Inputs

Example: quick validation run

{
"keyword": "coffee shop",
"location": "New York",
"listing_type": "established_business",
"enrich_data": false,
"limit": 25
}

Example: targeted acquisition screen

{
"category": [
"food-and-beverage-businesses-for-sale"
],
"location": "Texas",
"min_price": 250000,
"max_price": 1000000,
"min_revenue": 750000,
"enrich_data": true,
"limit": 100
}

Example: fresh franchise resale monitor

{
"keyword": "restaurant",
"location": "Florida",
"publication_date": 30,
"franchise_resale": true,
"offer_seller_financing": true,
"enrich_data": true,
"limit": 75
}

Output

Output destination

The actor writes results to an Apify dataset as JSON records. The dataset is designed for direct consumption by analytics tools, ETL pipelines, AI agents, and downstream APIs with minimal post-processing.

The current dataset contract contains one primary record family: BizQuest business listing records with record_type set to business_listing. Run-level summaries are saved as key-value-store artifacts, not as replacement dataset rows.

Record envelope and stable identifiers

Recommended idempotency key: use record_id when present, with entity.url or entity.external_ids.listing_id as a fallback. For warehouse upserts, CRM syncs, and repeated scheduled runs, store the actor run ID and input segment alongside the record so the same listing can be compared across time.

source_context provides public provenance, including the source name, domain, source URL, result page, result position, enrichment status, and detail URL when available. Stable identifiers make records easier to merge, deduplicate, sync, compare, and route into downstream systems without relying on display text alone.

Example: business listing record

{
"record_type": "business_listing",
"record_id": "2501001",
"source_context": {
"source_id": "bizquest_business_scraper",
"source_name": "BizQuest",
"source_domain": "www.bizquest.com",
"source_url": "https://www.bizquest.com/businesses-for-sale/",
"source_section": "search_api",
"page_number": 1,
"position": 1,
"enrichment_status": "enriched",
"detail_url": "https://www.bizquest.com/business-for-sale/sample-neighborhood-cafe/BW2501001/"
},
"entity": {
"title": "Sample Neighborhood Cafe",
"description": "Established cafe with recurring local customer traffic and documented seller training.",
"url": "https://www.bizquest.com/business-for-sale/sample-neighborhood-cafe/BW2501001/",
"external_ids": {
"bizquest_record_id": "2501001",
"listing_id": 2501001,
"listing_number": 2501001,
"site_specific_id": 2501001
}
},
"location": {
"display_location": "Austin, TX",
"city": "Austin",
"county": "Travis County",
"state_code": "TX",
"postal_code": "78701",
"country": "US",
"location_crumbs": [
{
"title": "Find other Austin, TX Businesses for Sale",
"title_short": "Austin",
"link": "/businesses-for-sale-in-austin-tx/",
"link_count": 0
}
]
},
"pricing": {
"asking_price": 425000,
"price_reduced": false,
"inventory_included": true,
"seller_financing_terms": "Seller financing considered for qualified buyers"
},
"financials": {
"cash_flow": 145000,
"gross_income": 820000,
"revenue": 820000,
"ebitda": 125000
},
"business": {
"category": "Food & Beverage",
"business_name": "Sample Neighborhood Cafe",
"year_established": 2014,
"employees": 12,
"facilities": "Leased cafe space with kitchen, seating area, and transferable equipment.",
"support_training": "Seller training available after closing.",
"competition": "Competes with local cafes and quick-service restaurants.",
"growth_expansion": "Potential catering and delivery expansion.",
"real_estate_included": false,
"franchise_resale": false
},
"listing": {
"listing_id": 2501001,
"listing_number": 2501001,
"listing_type_id": 40,
"recently_added": true,
"recently_updated": false,
"is_hot_property": false,
"date_updated": "2026-06-30"
},
"deal": {
"confidential": false,
"nda_required": false,
"lender_prequalified": true,
"co_brokering": false,
"selling_reason": "Owner retirement"
},
"broker": {
"broker_company": "Sample Business Brokerage",
"broker_profile_url": "https://www.bizquest.com/business-broker/sample-business-brokerage/sample-broker/BW12345/",
"contact_person_id": 12345,
"contact_name": "Sample Broker",
"contact_phone": "(555) 010-1234"
},
"contact_details": {
"contacts": [
{
"name": "Sample Broker",
"person_id": 12345,
"phone": "(555) 010-1234"
}
],
"phones": [
"(555) 010-1234"
]
},
"media": {
"main_image_url": "https://images.bizquest.com/shared/listings/250/2501001/sample-W336.webp",
"image_urls": [
"https://images.bizquest.com/shared/listings/250/2501001/sample-W336.webp"
],
"contact_photo_url": "https://images.bizquest.com/shared/brokerdirectory/images/12345/sample.jpg"
},
"metrics": {
"view_count": 581
},
"relationships": {
"related_records": [
{
"header": "Related food and beverage listing",
"location": "Travis County, TX",
"price": 375000,
"url": "https://www.bizquest.com/business-for-sale/sample-related-listing/BW2501002/"
}
]
},
"attributes": {
"source_ids": {
"listing_status_id": 1
},
"categories": {
"bizquest_primary_business_type_name": "Food & Beverage"
},
"contact_requirements": {
"request_contact_available_funds": true,
"request_contact_zip": false,
"request_contact_time_frame": true
},
"auction": {}
}
}

Run Summary And Artifacts

The actor saves run-level artifacts in the run key-value store:

  • RUN-SUMMARY: Machine-readable JSON summary with generated, started, and finished timestamps; approximate duration; public input summary; saved record totals; requested limit; source-reported totals when available; enrichment status; coverage breakdowns; representative records; warnings when present; and artifact links.
  • RUN-SUMMARY.html: Human-readable report for reviewing the same run in Apify Console without opening every dataset item.
  • RUN-SUMMARY-ERROR: Best-effort diagnostic only when summary generation fails after dataset records have been saved.
  • ARTIFACT-*: Additional user-facing run artifacts when provided for a specific run.
  • DEBUG-*: Compact support metadata for failed or unusual runs. Normal business listing records remain in the dataset.

Use the run summary as a receipt for operations: verify completion, compare scheduled runs, review saved counts, confirm enrichment behavior, inspect representative records, decide whether a rerun or narrower input is needed, and attach a concise summary to downstream tickets or reports. The run summary is not a substitute for the dataset; it is a review and automation artifact.

Field Reference

Record envelope

  • record_type (string, required): Record family. BizQuest listing rows use business_listing.
  • record_id (string or null, optional): Stable BizQuest listing identifier when available.

source_context

  • source_context (object, required): Public provenance and run context.
  • source_context.source_id (string, optional): Stable source identifier.
  • source_context.source_name (string, optional): Human-readable source name.
  • source_context.source_domain (string, optional): Public source domain.
  • source_context.source_url (string, optional): Search or listing URL that produced the record.
  • source_context.canonical_url (string, optional): Canonical listing URL when available.
  • source_context.source_section (string, optional): Source area that produced the record, such as search results.
  • source_context.page_number (integer or number, optional): Search results page where the listing was discovered.
  • source_context.position (integer or number, optional): Position within the discovered page.
  • source_context.enrichment_status (string, optional): Enrichment state when richer listing details were added.
  • source_context.detail_url (string, optional): Listing detail URL used for enriched records.

entity

  • entity (object, required): Primary listing identity and public URL group.
  • entity.title (string, optional): Listing title.
  • entity.description (string, optional): Listing description or summary.
  • entity.url (string, optional): Public BizQuest listing URL.
  • entity.external_ids (object, optional): Source identifiers grouped for joins and upserts.
  • entity.external_ids.bizquest_record_id (string, optional): BizQuest record ID.
  • entity.external_ids.listing_id (integer, number, or string, optional): Listing ID.
  • entity.external_ids.listing_number (integer, number, or string, optional): Listing number.
  • entity.external_ids.site_specific_id (integer, number, or string, optional): Additional source-specific identifier when present.

location

  • location (object, optional): Public location fields for regional analysis and review.
  • location.display_location (string, optional): Source display location.
  • location.city (string, optional): City.
  • location.county (string, optional): County.
  • location.state_code (string, optional): State abbreviation.
  • location.postal_code (string, optional): Postal code.
  • location.country (string, optional): Country code or country value.
  • location.latitude (number, optional): Latitude when available.
  • location.longitude (number, optional): Longitude when available.
  • location.location_crumbs (array of objects, optional): Source location breadcrumb objects.

pricing

  • pricing (object, optional): Asking price, inventory, lease, real-estate, FFE, and financing fields.
  • pricing.asking_price (number, optional): Numeric asking price when published.
  • pricing.price_reduced (boolean, optional): Whether the listing is marked as price-reduced.
  • pricing.lease_rate_per_square_foot (number, optional): Published lease rate per square foot when available.
  • pricing.inventory_included (boolean, optional): Whether inventory is included.
  • pricing.ffe_value (number, optional): Furniture, fixtures, and equipment value.
  • pricing.seller_financing_terms (string, optional): Seller-financing terms or notes when published.

financials

  • financials (object, optional): Public business performance values.
  • financials.cash_flow (number, optional): Published cash flow.
  • financials.gross_income (number, optional): Published gross income.
  • financials.revenue (number, optional): Published revenue.
  • financials.ebitda (number, optional): Published EBITDA.
  • financials.sde (number, optional): Published seller discretionary earnings.

business

  • business (object, optional): Operating details, category, and acquisition context.
  • business.category (string, optional): Business category.
  • business.business_name (string, optional): Business name when published.
  • business.year_established (integer or number, optional): Year established.
  • business.employees (integer, number, or string, optional): Employee count or source label.
  • business.facilities (string, optional): Facilities description.
  • business.support_training (string, optional): Support and training notes.
  • business.competition (string, optional): Competition notes.
  • business.growth_expansion (string, optional): Growth or expansion notes.
  • business.real_estate_included (boolean, optional): Whether real estate is included.
  • business.franchise_resale (boolean, integer, or number, optional): Franchise-resale signal when published.

listing

  • listing (object, optional): Listing lifecycle, placement, and source flags.
  • listing.listing_id (integer, number, or string, optional): Listing ID.
  • listing.listing_number (integer, number, or string, optional): Listing number.
  • listing.listing_type_id (integer or number, optional): Listing-family identifier useful for segmentation.
  • listing.recently_added (boolean, optional): Whether the listing is marked recently added.
  • listing.recently_updated (boolean, optional): Whether the listing is marked recently updated.
  • listing.is_hot_property (boolean, optional): Whether the listing is marked as a hot property.
  • listing.date_updated (string, optional): Source update timestamp when available.

deal

  • deal (object, optional): Deal flags and acquisition terms.
  • deal.confidential (boolean, optional): Whether the listing is confidential.
  • deal.nda_required (boolean, optional): Whether an NDA is required.
  • deal.lender_prequalified (boolean, optional): Whether lender prequalification is indicated.
  • deal.co_brokering (boolean, optional): Whether co-brokering is enabled.
  • deal.selling_reason (string, optional): Published selling reason.

broker and contact_details

  • broker (object, optional): Public broker and contact fields.
  • broker.broker_company (string, optional): Broker company.
  • broker.broker_profile_url (string, optional): Public broker profile URL.
  • broker.contact_person_id (integer, number, or string, optional): Contact person ID.
  • broker.contact_name (string, optional): Contact name.
  • broker.contact_phone (string, optional): Contact phone label.
  • contact_details (object, optional): Normalized contact group.
  • contact_details.contacts (array of objects, optional): Normalized contact records derived from public listing contact fields.
  • contact_details.phones (array of strings, optional): Deduplicated public phone labels.

media, metrics, and relationships

  • media (object, optional): Listing and contact image URLs.
  • media.main_image_url (string, optional): Main listing image URL.
  • media.image_urls (array of strings, optional): Listing image URLs.
  • media.contact_photo_url (string, optional): Contact photo URL.
  • metrics (object, optional): Public source metrics.
  • metrics.view_count (integer or number, optional): Listing view count when available.
  • relationships (object, optional): Related source records.
  • relationships.related_records (array of objects, optional): Related listing summaries from enriched details. Treat these as related summaries, not as primary dataset rows.

attributes

  • attributes (object, optional): Grouped BizQuest-specific values that do not fit the canonical public groups.
  • attributes.source_ids (object, optional): Numeric or source-specific IDs useful for QA and source-aware joins.
  • attributes.categories (object, optional): Category names, IDs, and category-detail payloads.
  • attributes.contact_requirements (object, optional): Public contact-form requirement flags, such as available funds, ZIP code, or timeframe prompts.
  • attributes.auction (object, optional): Auction dates and highlights for auction-style listings.

Data Model Notes

  • Identity fields: Prefer record_id for upserts. Use entity.url or entity.external_ids.listing_id as a fallback when record_id is absent.
  • Source provenance: Use source_context.source_url, source_context.detail_url, source_context.page_number, and source_context.position to trace how a record entered the dataset.
  • Business attributes: The main review value usually lives in entity, location, pricing, financials, business, listing, deal, broker, and contact_details.
  • Nested objects: Nested groups keep related attributes together for JSON-first systems, while still allowing deliberate flattening for CSV, Excel, or warehouse tables.
  • Optional fields: Values such as financials, coordinates, contact fields, broker profile, deal flags, media, and related records depend on what BizQuest exposes for a specific listing.
  • Repeated runs: Compare records across runs by stable identifier plus saved run metadata from Apify, such as run ID, schedule, input configuration, and export timestamp.

Data Quality, Guarantees, And Handling

  • Structured records: Results are normalized into predictable JSON objects for downstream use.
  • Field preservation: Meaningful schema-supported values should be kept in stable public fields or grouped objects instead of being silently discarded; optional source values may still be absent when the target does not expose them for a specific record.
  • Best-effort extraction: Fields may vary by region, availability, account visibility, UI experiments, or source-side changes.
  • Optional fields: Null-check optional fields in downstream code, dashboards, and AI prompts.
  • Deduplication: Use record_id when present, with entity.url or entity.external_ids.listing_id as practical fallback keys.
  • Freshness: Results reflect the publicly available data at run time.
  • Repeated runs: Use the recommended idempotency key when syncing data into warehouses, CRMs, search indexes, vector stores, or monitoring systems.
  • Schema awareness: Downstream systems should rely on documented fields and handle newly missing optional fields gracefully.
  • Run receipts: Use run summary artifacts to audit record counts, enrichment status, skipped or warning outcomes, coverage breakdowns, and export readiness without treating summaries as replacement dataset records.

Tips For Best Results

  • Start with a small limit to validate the output shape before scaling up.
  • Use one geography, category, listing type, or price band per run when you need cleaner comparisons.
  • Leave optional filters empty when the goal is broad discovery.
  • Add filters gradually to understand how each field changes the saved result set.
  • Use enrich_data when the workflow needs richer listing details, broker fields, deal notes, media, or related-record context.
  • Schedule recurring runs for monitoring workflows instead of relying on manual one-off collection.
  • Use stable identifiers for deduplication when storing results over time.
  • Review RUN-SUMMARY before importing results into production dashboards, CRMs, or enrichment pipelines.

How to Run on Apify

  1. Open the actor in Apify Console.
  2. Configure the search fields for your target scope, such as keyword, location, category, listing type, or financial filters.
  3. Set limit to the maximum number of listing records you want to save.
  4. Click Start and wait for the run to finish.
  5. Open the dataset and inspect the first records.
  6. Download results in JSON, CSV, Excel, or another supported Apify dataset format.

Agentic And API-First Usage

This actor can be used as a structured data acquisition step inside larger automated workflows. It is useful when an agent, pipeline, or internal tool needs a bounded BizQuest collection run, a documented JSON record shape, stable identifiers, and a concise run receipt before routing records into analysis, enrichment, alerting, or review.

Agent workflow pattern:

  1. Generate or select a scoped input from the supported schema.
  2. Run the actor manually, on a schedule, or through Apify platform automation.
  3. Wait for completion and read the dataset records.
  4. Validate records against the Field Reference.
  5. Read RUN-SUMMARY when present to verify counts, enrichment state, warning outcomes, representative records, and export readiness.
  6. Upsert records into the downstream system using record_id, with entity.url or entity.external_ids.listing_id as fallback keys.
  7. Trigger analysis, enrichment, alerts, BI refreshes, vector or search indexing, or human review.

Practical notes for agentic use:

  • Keep prompts and automations grounded in the documented input parameters.
  • Start with small validation runs before allowing broad automated collection.
  • Feed the Field Reference and one representative output sample to downstream AI steps.
  • Feed run summary artifacts to downstream agents so they can reason about completion, record counts, enrichment state, and follow-up actions.
  • Treat optional fields as nullable instead of asking agents to infer missing values.
  • Store run ID, input configuration, schedule name, and dataset export metadata outside or alongside the record when building audit trails.
  • For Claude, Codex, internal copilots, or workflow agents, pass the input schema, Field Reference, idempotency key, and one representative output example rather than the full README when context is limited.

Scheduling & Automation

Scheduling

Automated Data Collection

Schedule runs to keep a BizQuest segment fresh for dashboards, acquisition sourcing, broker monitoring, or review queues. Use the same input configuration over time when you need comparable results across runs.

  • Navigate to Schedules in Apify Console.
  • Create a new schedule, such as daily, weekly, or a custom cron cadence.
  • Configure input parameters for the segment you want to monitor.
  • Enable notifications for run completion.
  • Add webhooks for automated processing.

Integration Options

  • CRM enrichment: Sync public listing, broker, contact, price, location, and business attributes into lead or opportunity records.
  • BI dashboards: Monitor asking prices, category mix, location coverage, financial field availability, and listing counts over time.
  • Warehouses and ETL pipelines: Store JSON records for historical analysis, segmentation, deduplication, and repeatable reporting.
  • Google Sheets or Airtable: Review smaller validation runs, sourcing lists, and human-curated acquisition shortlists.
  • Webhooks: Trigger validation, notification, import, or enrichment workflows after each completed run.
  • MCP connectors: Authorize a supported connector in Apify, select it in the actor input, and receive a concise run summary after dataset records and run artifacts are saved.
  • Search or vector indexes: Index titles, descriptions, locations, categories, broker fields, and business attributes for retrieval workflows or agent context.

Export Formats And Downstream Use

  • JSON: Best for APIs, applications, AI agents, JSON-first warehouses, and data pipelines that need nested objects preserved.
  • CSV or Excel: Useful for spreadsheet review, stakeholder analysis, and lightweight lead lists. Flatten nested objects deliberately.
  • API access: Suitable for automated ingestion into internal tools, dashboards, enrichment systems, and monitoring workflows.
  • BI and warehouses: Use for reporting, dashboards, historical analysis, segment comparison, and recurring market monitoring.
  • Search or vector indexes: Use listing titles, descriptions, categories, locations, and broker fields for discovery, semantic search, retrieval workflows, or agent context.

Downstream Pipeline Guide

  • Idempotency: Use record_id as the primary upsert key, with entity.url or entity.external_ids.listing_id as fallback keys.
  • Null handling: Treat optional fields as nullable, especially financials, contact details, broker profile URL, media, coordinates, deal flags, and related records.
  • Type handling: Preserve numbers, booleans, arrays, and nested objects when exporting to JSON-first destinations.
  • Flattening: If exporting to CSV or Excel, flatten nested groups deliberately and keep the original JSON export for full fidelity.
  • Partitioning: Store run date, run ID, input segment, geography, category, workflow name, and schedule name outside or alongside records for easier analysis.
  • Change detection: Compare repeated runs by stable key and selected fields such as price, location, financials, listing flags, broker fields, and update date.
  • Quality checks: Monitor saved record count, duplicate rate, required envelope fields, price coverage, financial field fill rates, and contact field availability.
  • Human review: Route records with missing critical fields, unusual values, changed status, or high-value financial signals into a review queue.
  • Retention: Decide how long to keep raw exports, run summaries, and normalized warehouse tables based on audit, reporting, and enrichment needs.

Performance And Coverage Expectations

Recent local validation artifacts show the following example runs. These are example run metrics from saved artifacts, not guarantees for every input, account, schedule, or source condition.

Run typeExample scopeOutputsDurationCoverage notes
Local validation smokeDefault BizQuest listing collection50 recordsAbout 2 secondsDataset and run summary artifacts were saved.
Local validation smokeDefault BizQuest listing collection50 recordsAbout 3 secondsDataset and run summary artifacts were saved.
Local no-connector smokeDataset plus run summary, no MCP connector selected50 recordsAbout 2 secondsDataset and run summary artifacts were saved; connector delivery was not requested.

Execution time varies based on filters, result volume, target availability, target response size, and how much information is returned per record. Highly filtered runs can finish faster when fewer matching records are available, while broad discovery or detail-rich records may take longer. Use small validation runs first, then increase limit and enable enrich_data when the output has been verified.

Limitations

  • Availability depends on what BizQuest publicly exposes at run time.
  • Some optional fields may be missing on sparse, confidential, regional, or search-result-only records.
  • Very broad searches may take longer or require a higher limit to collect enough records for analysis.
  • Detail-rich records can take longer than standard search-result records.
  • Target-side changes can affect field availability, naming, or whether a field appears for a specific listing.
  • Regional, account, visibility, or availability differences may change visible results.
  • The actor provides structured public listing data, not business advice, legal advice, valuation advice, financing advice, or guaranteed complete market coverage.

Troubleshooting

  • No results returned: Check keyword, location, category spelling, listing type, and whether BizQuest has matching public records for the selected criteria.
  • Fewer results than expected: Broaden filters, raise limit, or verify that the target segment contains enough public listings.
  • Some fields are empty: Optional fields depend on what each listing publicly provides and whether richer details are available.
  • Duplicate-looking records: Compare record_id, entity.url, and entity.external_ids.listing_id to decide whether records represent the same listing, related variants, or updates.
  • Run takes longer than expected: Reduce scope, lower limit for validation, or split broad collection into smaller market segments.
  • Output changed: Compare the current output with the Field Reference and include a small sample when reporting the issue.
  • Downstream import failed: Check JSON validity, nullable fields, nested objects, arrays, and whether your destination expects flattened columns.
  • MCP connector did not receive a summary: Confirm that the connector was authorized in Apify and selected in the actor input. The dataset and run artifacts remain the primary outputs.

FAQ

What data does this actor collect?

It collects structured public BizQuest business listing records, including listing identity, URL, location, pricing, financial signals, business attributes, listing flags, broker/contact fields, media, related records, and source context when available.

Can I filter by location, category, date, price, keyword, or listing type?

Yes. The input schema supports keyword, location, category, listing_type, price ranges, revenue ranges, EBITDA or cash-flow ranges, recent-publication windows, seller-financing, franchise-resale, absentee-owner, and established-year filters.

Why did I receive fewer results than my limit?

The selected BizQuest segment may contain fewer matching public records than the requested limit, or the active filters may be narrow. Optional source availability can also affect how many records are returned.

How should I choose a limit for my first run?

Start with a small limit, such as 25 or 50 records, inspect the dataset and run summary, then increase the limit once the record shape and scope match your workflow.

What does enrich_data do?

enrich_data requests richer listing records when available. It is useful for review queues, CRM enrichment, and analysis that needs more than standard search-result fields.

Where can I find the run summary?

Open the run key-value store and look for RUN-SUMMARY for machine-readable JSON or RUN-SUMMARY.html for a human-readable report.

Can I schedule recurring runs?

Yes. Use Apify Schedules to run the same input daily, weekly, or on a custom cadence for monitoring and reporting workflows.

How do I avoid duplicates across runs?

Use record_id as the primary idempotency key when present. Use entity.url or entity.external_ids.listing_id as fallback keys, and store run metadata separately for audit and comparison.

Can I use the output with AI agents or automated workflows?

Yes. The dataset uses stable JSON field groups, and the run summary gives agents and automations a compact receipt for record counts, enrichment state, representative records, and follow-up decisions.

Can I export the data to CSV, Excel, or JSON?

Yes. Apify datasets can be exported in JSON, CSV, Excel, and other supported formats. JSON preserves nested objects best; CSV and Excel may require flattening.

Does this actor collect private data?

The actor is intended for publicly available BizQuest listing information. Users are responsible for using collected data lawfully and responsibly.

What should I include when reporting an issue?

Include the redacted input, run ID, expected behavior, actual behavior, a small output sample if relevant, and the downstream export format or destination if the issue is pipeline-related.

Compliance & Ethics

Responsible Data Collection

This actor collects publicly available business listing information from BizQuest for legitimate business purposes, including:

  • Business acquisition research and market analysis
  • Broker, listing, and opportunity monitoring
  • CRM, BI, ETL, and agentic workflow enrichment

This section is informational and not legal advice. Users are responsible for determining whether their use case complies with applicable laws, platform rules, and organizational policies.

Best Practices

  • Use collected data in accordance with applicable laws, regulations, and the target site's terms.
  • Respect individual privacy and personal information.
  • Use data responsibly and avoid disruptive or excessive collection.
  • Do not use this actor for spamming, harassment, discrimination, or other harmful purposes.
  • Follow relevant data protection requirements where applicable, such as GDPR, CCPA, or sector-specific rules.
  • Review your own retention, access control, and data-sharing policies before operationalizing the dataset.

Support

For help, use the actor page or Issues channel. Include the redacted input used, run ID, expected versus actual behavior, a small output sample when relevant, and the downstream destination or export format if the issue is related to a pipeline, dashboard, CRM, or automation workflow.