# Franchise Resale Scraper (`parseforge/franchise-resale-scraper`) Actor

Scrapes franchise resale listings from FranchiseResale.com. Returns each listing as a flat row with asking price, revenue, cash flow, location, and full description. Filter by keyword or category.

- **URL**: https://apify.com/parseforge/franchise-resale-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Automation, Developer tools, Real estate
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $23.99 / 1,000 result items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### Franchise Resale Scraper

**Scrape franchise resale listings from FranchiseResale.com, filtered by keyword or category, up to a million per run.** Every listing includes the asking price, revenue, cash flow, location, and full business description. No login required. Export to CSV, JSON, Excel, or XML.

Finding a franchise to buy means sifting through hundreds of scattered listings with inconsistent data. This Actor reads the public listing feeds on FranchiseResale.com directly, letting you pull every available resale opportunity into one clean dataset. Filter by keyword or choose from over 100 built-in categories, from fast food and fitness to automotive and senior care, and get the exact slice of the market you need.

| Who uses it | What they scrape Franchise Resale for |
|---|---|
| Business brokers | Build a live inventory feed of available franchises for client newsletters and websites. |
| Franchise investors | Compare asking prices and cash flow multiples across brands to spot undervalued deals. |
| Market analysts | Track listing volume and average asking prices by category to gauge market health. |
| Lead generation services | Collect fresh seller leads daily and enrich a CRM with structured deal data. |

### What it does

This Actor collects franchise resale listings from FranchiseResale.com by search query or category and returns each one as a flat row with price, financials, and description.

- 🔍 **Keyword search:** enter any term like 'subway', 'pizza', or 'fitness' to pull matching listings across all categories.
- 📂 **Category filter:** pick from over 100 predefined categories such as Automotive, Senior Care, or Retail to narrow results.
- ⚡ **Parallel detail scraping:** each listing card is followed to its full detail page so you get the complete financials and description.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with Franchise Resale data

**📊 Build a deal pipeline.**

An investor scrapes all listings in the Food and Restaurant category weekly, filters for cash flow above $150,000, and reviews only the top opportunities.

**📍 Find local opportunities.**

A broker scrapes every listing with the keyword 'Texas' to populate a regional newsletter with fresh franchise resales each Monday.

**🏷️ Monitor a specific brand.**

A franchise consultant searches for 'Subway' resales daily, tracking how asking prices trend over time to advise clients on fair market value.

**📈 Analyze category trends.**

A market researcher scrapes the entire site monthly, grouping listings by category to report on which franchise segments are seeing the most churn.

### Why choose this scraper

|  | What you get |
|---|---|
| **Asking price** | The listed sale price for the franchise resale opportunity. |
| **Revenue and cash flow** | Reported gross revenue and seller's discretionary earnings for each listing. |
| **Location data** | City and state where the business operates. |
| **Full description** | The complete text the seller wrote about the business and its operations. |

### How it compares

No other Store actor targets Franchise Resale the same way, so the honest comparison is with the alternatives teams actually weigh.

| | Franchise Resale Scraper | Build it in-house | By hand |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When Franchise Resale changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |

### Configure the run

Drive the Actor with a search keyword, a category slug, or leave both blank to scrape every listing on the site, and filters run as each listing is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

A larger pull:

```json
{
  "maxItems": 200,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

### Pricing

Pay-per-result: **$0.03199 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $3.20 |
| 1,000 results | $31.99 |
| 10,000 results | $319.90 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Franchise Resale Scraper](https://apify.com/parseforge/franchise-resale-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to Franchise Resale through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/franchise-resale-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting zero results?**

Check that your Search Query or Category filter is not too narrow. Try leaving both blank to confirm the scraper can reach the site. Also verify that residential proxies are enabled in the Proxy Configuration.

**The run fails with a timeout or proxy error.**

FranchiseResale.com blocks datacenter IPs aggressively. Make sure the Proxy Configuration is set to use Apify residential proxies. If the problem persists, lower the Max Concurrency to 3 and retry.

**Some listings are missing financial data.**

Not every seller publishes revenue or cash flow figures. The scraper returns whatever the seller provided. If a field is empty in the output, the information was not present on the detail page.

**The scraper is running very slowly.**

This is usually caused by a low Max Concurrency setting. Increase it to 10 or 15 if you are not being rate-limited. If you are seeing blocks, keep it low and accept the longer runtime.

**I only got 10 results but I set Max Items higher.**

Free Apify accounts are limited to 10 items per run as a preview. Upgrade to a paid plan to remove this limit and scrape up to 1,000,000 listings.

### FAQ

| Question | Answer |
|---|---|
| Do I need a login or API key to scrape FranchiseResale.com? | No. This Actor reads the public listing pages directly. You only need an Apify account and residential proxies, which are preconfigured in the input. |
| What data fields does the scraper return? | Each row includes the listing title, asking price, revenue, cash flow, location, category, and the full text description. The exact field list is shown in the sample output on the Dataset tab after a test run. |
| Can I scrape only listings from a specific category? | Yes. Use the Category dropdown in the input to pick from over 100 categories like Automotive, Fitness, or Senior Care. Leave it blank to scrape all categories. |
| How do I search for a specific franchise brand? | Enter the brand name in the Search Query field, for example 'pizza' or 'subway'. The scraper will return every listing whose title or description matches that keyword. |
| What is the maximum number of listings I can scrape? | Free users are limited to 10 items for preview. Paid users can set the Max Items field up to 1,000,000 to pull the entire available inventory. |
| Why do I need residential proxies? | FranchiseResale.com blocks requests from datacenter IP addresses. The input is preconfigured to use Apify's residential proxies, which route traffic through real consumer IPs to avoid blocks. |
| Can I run this scraper on a schedule? | Yes. After publishing the Actor, you can set a schedule in Apify Console to run it daily, weekly, or at any custom interval to keep your dataset fresh. |
| Does the scraper follow links to individual listing detail pages? | Yes. It first collects listing cards from search or category pages, then visits each detail page in parallel to extract the full financials and description. |
| What export formats are supported? | You can export your results to CSV, JSON, Excel, or XML directly from the Apify Dataset tab after the run completes. |
| How do I avoid getting rate-limited? | Lower the Max Concurrency setting in Advanced Options. The default is 10 parallel requests. Reducing this to 3 or 5 will slow the scrape but reduce the chance of being blocked. |

### Related actors

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Franchise Resale. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `search` (type: `string`):

Keyword to search for franchise listings (e.g. 'subway', 'pizza', 'fitness').

## `category` (type: `string`):

Filter listings by franchise category. Leave blank to scrape all categories.

## `maxConcurrency` (type: `integer`):

Maximum number of parallel detail page requests. Lower this if you get rate-limited.

## `proxyConfiguration` (type: `object`):

Proxy settings. Residential proxies are required since the site blocks datacenter IPs.

## Actor input object example

```json
{
  "maxItems": 10,
  "maxConcurrency": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset with all scraped items

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/franchise-resale-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "maxItems": 10,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/franchise-resale-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call parseforge/franchise-resale-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/franchise-resale-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/dP5J9boWt4zZFCTuV/builds/eg7GrGmVZ82v6sz5e/openapi.json
