# Online Businesses for Sale: Listings, Price, Profit, Multiple (`datagleaner/online-business-listings`) Actor

Public listings of websites, ecommerce stores, SaaS and apps for sale from Empire Flippers' public Marketplace API: asking price, monthly revenue and profit, multiple, niche, age. Filters and a new-listings-only mode. $0.003 per listing.

- **URL**: https://apify.com/datagleaner/online-business-listings.md
- **Developed by:** [Data Gleaner](https://apify.com/datagleaner) (community)
- **Categories:** Lead generation, Other
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.00 / 1,000 business listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Online Businesses for Sale: Listings, Price, Profit, Multiple

Pull public listings of online businesses for sale (content sites, ecommerce stores, SaaS, apps, newsletters, agencies) from Empire Flippers into a clean table: asking price, monthly revenue, monthly profit, multiple, niche, business model, age, listing date and the listing link. Filter by budget and multiple, and switch on new-only mode to get just the listings you have not seen before.

It reads only Empire Flippers' public Marketplace API, which Empire Flippers documents for anyone to pull its listings. No login, no private data rooms, no seller contact details, and no copied listing descriptions: each row holds the numbers and categories, a short headline and the link to the full listing.

### What you get

- **Clean deal data.** Price, revenue, profit, multiple, niche, business model, age and listing date in one table you can sort and filter.
- **Deal filters.** Minimum and maximum price, minimum monthly revenue or profit, maximum multiple, minimum age, and niche or business-model keywords.
- **New-listings mode.** Schedule the Actor daily with `onlyNewSinceLastRun` and each run returns only listings earlier runs did not return, so you are billed for new deals only.
- **No-input demo.** Run it with an empty input and it returns 5 current listings so you can see the output.

### Use cases

- Acquisition entrepreneurs and search funds who want a daily shortlist of under-priced online businesses.
- Brokers and advisers tracking asking multiples by niche.
- Researchers measuring what online businesses sell for (price to profit by category and age).
- Newsletter and deal-alert builders who need a feed of fresh listings.

### Input

| Field | Meaning |
|---|---|
| `sources` | `Empire Flippers` or `all` (the same thing today). Empty input with no filters runs a 5-listing example. |
| `minPrice`, `maxPrice` | Asking price range in USD. |
| `minMonthlyRevenue`, `minMonthlyProfit` | Floors on average monthly revenue and net profit. |
| `maxMultiple` | Ceiling on asking price divided by annual profit, for example `3.5`. |
| `minAgeYears` | Minimum business age. |
| `niches` | Keywords matched against niche, business model and title, for example `saas`, `affiliate`. |
| `onlyNewSinceLastRun` | Return only listings not returned by earlier runs with the same `watchName`. |
| `watchName` | Keeps separate watchers apart. |
| `maxItems` | Stop after this many listings (each one is billed). Default 100. |

```json
{
  "sources": ["Empire Flippers"],
  "maxPrice": 250000,
  "maxMultiple": 3.5,
  "minAgeYears": 2,
  "niches": ["saas", "affiliate", "newsletter"],
  "onlyNewSinceLastRun": true,
  "maxItems": 50
}
```

### Output

```json
{
  "title": "$18.7K Per Month Affiliate Site in the Information Niche",
  "askingPrice": 227668,
  "monthlyRevenue": 18717,
  "monthlyProfit": 14594,
  "multiple": 1.3,
  "niche": "Information, Lifestyle, Finance",
  "monetization": "Affiliate, Digital Product, YouTube, Info Product, Newsletter",
  "ageYears": 6.0,
  "url": "https://empireflippers.com/listing/97415/",
  "source": "Empire Flippers",
  "listedAt": "2026-10-29T16:00:00.912Z",
  "scrapedAt": "2026-11-01T15:24:26Z"
}
```

Field notes: amounts are USD as published. `multiple` is the marketplace's own asking multiple (annual profit basis). `ageYears` is computed from the date the business first made money. A field the listing does not show is `null`, never a guess. The full listing text stays on the listing page behind `url`.

### Pricing

Pay per event: **$0.003 per listing returned** (about $3 per 1,000). Starting the Actor, runs that find nothing and listings you filter out cost nothing.

Worked examples:

- Daily new-only deal alert, about 10 new listings a day: 10 x $0.003 = $0.03 a day, about $0.90 a month.
- One snapshot of 150 listings: 150 x $0.003 = $0.45.
- The no-input demo: 5 listings = $0.015.

Set a maximum total charge on the run to cap spend.

### Limits

- Reads at a polite pace: one request every 1.5 seconds (the API asks for no more than one a second), 100 listings per request.
- If the API answers with an access error, the Actor stops, keeps what it has and says so in the run's status message. It does not retry past a block.
- Asking prices and metrics are the seller's claims as published, not verified by this Actor.

### FAQ

**Is this allowed?** The Actor uses the public Marketplace API that Empire Flippers documents for pulling its listings, within its stated rate limit, and checks robots.txt on every run. It copies no listing descriptions.

**Can I get other marketplaces?** Not today. Marketplaces whose terms do not allow automated collection are not read, and a run that names one skips it and says so in the status message.

**Does it return seller names or contact details?** No. Listings are anonymous and the Actor does not look for the sellers.

**Why is a listing missing a price or a multiple?** The marketplace shows none (for example unpriced listings), so the field is `null`. If you set a price or multiple filter, such listings are skipped.

**Can I get alerts?** Schedule the Actor and connect the dataset to a webhook, Slack, email or a sheet through Apify integrations. New-only mode keeps each run to fresh listings.

### Responsible use

This Actor collects public listing data only. You are responsible for how you use it and for complying with the marketplace's terms and with any laws that apply to you. Do not use listing data to contact sellers outside the marketplace's own process.

# Actor input Schema

## `sources` (type: `array`):

Which marketplace to read: `Empire Flippers` (the only one offered) or `all`. Leave everything empty to run a 5-listing example.

## `minPrice` (type: `integer`):

Skip listings priced below this.

## `maxPrice` (type: `integer`):

Skip listings priced above this. Listings with no public price are left out when a price filter is set.

## `minMonthlyRevenue` (type: `integer`):

Skip listings with lower average monthly revenue.

## `minMonthlyProfit` (type: `integer`):

Skip listings with lower average monthly net profit.

## `maxMultiple` (type: `number`):

Skip listings whose asking price is more than this many times annual profit, for example 3.5.

## `minAgeYears` (type: `number`):

Skip businesses younger than this.

## `niches` (type: `array`):

Keep a listing when any word appears in its niche, monetization or title, for example `saas`, `amazon`, `affiliate`, `newsletter`.

## `onlyNewSinceLastRun` (type: `boolean`):

Return only listings that earlier runs with the same watch name did not already return. The seen list is kept in a named key-value store on your account. Schedule the Actor daily for a deal alert feed.

## `watchName` (type: `string`):

Label that keeps separate watchers apart. Letters, digits, `-` and `_`.

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

Stop after this many listings (each one is billed).

## Actor input object example

```json
{
  "sources": [
    "Empire Flippers"
  ],
  "niches": [
    "saas",
    "newsletter"
  ],
  "onlyNewSinceLastRun": false,
  "watchName": "default",
  "maxItems": 10
}
```

# Actor output Schema

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

No description

# 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 = {
    "sources": [
        "Empire Flippers"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("datagleaner/online-business-listings").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 = {
    "sources": ["Empire Flippers"],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("datagleaner/online-business-listings").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 '{
  "sources": [
    "Empire Flippers"
  ],
  "maxItems": 10
}' |
apify call datagleaner/online-business-listings --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,datagleaner/online-business-listings"
        }
    }
}
```

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/CMmiUzcOMplD9HH0b/builds/noQgGLru5DsaAbDfh/openapi.json
