# Empire Flippers Scraper: Listings, Sold Comps & Deal Alerts (`dead00/empire-flippers-scraper-listings-sold-comps-deal-alerts`) Actor

Scrape online businesses for sale on Empire Flippers with full 12-month P\&L, multiples and a value score versus real sold deals. Get alerts for new listings, price drops, offers and sales. Official public API, no login needed.

- **URL**: https://apify.com/dead00/empire-flippers-scraper-listings-sold-comps-deal-alerts.md
- **Developed by:** [Dead](https://apify.com/dead00) (community)
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 listing scrapeds

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

## Empire Flippers Scraper: Listings, Sold Comps & Deal Alerts

Get every online business for sale on Empire Flippers, with its full 12-month P\&L, and see which ones are good deals. Each listing gets a **value score** comparing its asking multiple with what similar businesses **actually sold for** on Empire Flippers. Schedule it for alerts on new listings, price drops, offers and sales.

Uses Empire Flippers' **official public Marketplace API**, which Empire Flippers documents for third-party applications. No login, no API key.

### What makes it different

| | Typical Empire Flippers scrapers | This actor |
|---|---|---|
| Listings with price, profit, revenue, multiple | ✅ | ✅ |
| 12-month P\&L, trends, hours, risks, opportunities | Some | ✅ |
| **Value score vs real sale multiples** | ❌ | ✅ |
| **Readable text for every number** (`USD $1.39M`, `3.2x annual profit`) | ❌ | ✅ |
| **Alerts:** new, price change, under offer, sold, removed | Some | ✅ all |
| Saved instantly, nothing lost if a run stops | ❌ | ✅ |

### Modes

| Mode | What you get |
|---|---|
| **For sale, scored against real sales** (default) | Listings for sale plus comps: typical sale multiples per monetization over the last 12 months |
| **For sale only** | Listings for sale without comps (fastest) |
| **Sold deals** | Recently sold businesses with sale multiples, for valuation research |
| **Under offer** | Listings currently pending sale |

### What you get per listing

- **Money:** asking price, annual and monthly net profit, revenue and expenses, annual multiple (SDE), revenue multiple, payback, profit margin.
- **History:** a **12-month P\&L** (profit, revenue and expenses per month), profit, revenue and traffic trends, and the age of the business.
- **The deal:** days on market, new-listing flag, buy-now availability, private-lender approval, seller interview, seller accepting calls, co-broker deal.
- **The business:** monetizations, niches, countries, B2B or B2C, hours per week, summary, opportunities, risks, work required, reason for sale, seller support and assets included.
- **Signals:** trademark, PBN, patents, automated sales; Amazon SKUs, brand registry, TACoS and COGS; SaaS MRR, churn and LTV; per-site traffic, SEMrush authority, referring domains and YouTube views; and which data sources verified the numbers.
- **Valuation:** comps group, typical sale multiple, `vsCompsPercent`, and a value score rated "Great deal", "Good", "Fair" or "Expensive".

Sold deals add the **sale multiple**, the sale date and an **estimated sale price** (sale multiple × annual profit).

### Output

Every number comes **twice**: a plain number for sorting and spreadsheets, and readable text.

```json
{
  "listingNumber": 97790,
  "url": "https://empireflippers.com/listing/97790/",
  "status": "For Sale",
  "title": "$14.7K Per Month Info Product Business in the Hobbies Niche",
  "monetizations": ["Info Product", "YouTube"],
  "askingPrice": 127820,
  "askingPriceText": "USD $128K",
  "annualNetProfitText": "USD $71K",
  "annualMultipleText": "1.8x annual profit (SDE)",
  "paybackText": "22 months (1.8 years)",
  "profitMarginText": "40%",
  "profitTrendText": "-10% over 12 months",
  "hoursPerWeekText": "1 hours/week",
  "vsCompsText": "42% below what similar businesses sold for",
  "valueScore": 94,
  "valueRating": "Great deal",
  "semrushAuthorityScore": 33,
  "missingFields": [],
  "dataNote": null
}
```

**Values Empire Flippers doesn't publish** are never silent blanks. Unpriced listings show `"askingPriceText": "Not disclosed"`, with `missingFields` and a `dataNote` explaining why.

A comps row per monetization (free): `"150 Amazon FBA sale(s) in 12 months: typically 3.0x annual profit"`, with the median sale multiple, range and typical sale price.

### Filters

**Sent to Empire Flippers** (fast): search, monetizations, niches, countries, price range, annual profit range, annual multiple range, listed within N days, trademark, PBN, private-lender approved, seller interview, search penalties, sold-date range, specific listing numbers.

**Applied by the actor:** minimum monthly revenue, profit margin, max owner hours per week, minimum business age, minimum profit trend, minimum visitors, B2B or B2C, automated sales only, exclude unpriced, new listings only, minimum value score, keywords.

Monetization and niche names are matched against Empire Flippers' current official lists, so capitalization doesn't matter ("amazon fba" works).

### Daily deal alerts

1. Set your filters, e.g. Amazon FBA under $500K, at most 3x, no PBN.
2. Turn on **Only output changes**.
3. Schedule the actor daily and connect Apify's email or Slack integration.

Each run returns only what changed: new listings, price changes, listings **now under offer**, **sold** (with the sale multiple) or removed. A listing that stays under offer is reported once, not every day.

### Nothing is lost if a run stops

Listings are **saved page by page as they're read** (100 at a time). If a run stops, everything found so far is already in your results, and the log says so. Deal alerts keep their progress too.

### Pricing

| Event | Price per 1,000 |
|---|---|
| Listing scraped | $3.00 |
| Actor start (per run) | $0.00005 |

Comps rows and the sales read for comparison are **free**. In "only changes" mode you pay only for changes.

### Good to know

- **Value scores compare asking multiples with real sale multiples** from Empire Flippers' own sold deals. They're a starting point; do your own due diligence.
- **Estimated sale prices** are calculated as sale multiple × annual profit, because Empire Flippers publishes the multiple.
- Requests follow Empire Flippers' documented limit of one per second; each request returns up to 100 listings.
- Independent tool, not affiliated with Empire Flippers.

# Actor input Schema

## `mode` (type: `string`):

Scoring compares each listing's multiple with what similar businesses actually sold for on Empire Flippers.

## `maxListings` (type: `integer`):

How many listings to return.

## `sortBy` (type: `string`):

'Best value' saves listings as found plus a sorted copy (RESULTS_SORTED).

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

Full-text search across listings, e.g. 'pet supplements' or 'newsletter'.

## `monetizations` (type: `array`):

e.g. Amazon FBA, SaaS, eCommerce, Display Advertising, Amazon Associates, Info Product, Affiliate, Lead Gen, DropShipping, YouTube. Capitalization doesn't matter.

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

e.g. Pet Care, Health and Fitness, Home, Technology, Finance, Hobbies.

## `countries` (type: `array`):

2-letter codes of the business's markets, e.g. US, GB, AU.

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

Only listings priced at least this much.

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

Only listings priced at most this much.

## `minAnnualProfit` (type: `integer`):

Only listings earning at least this much per year.

## `maxAnnualProfit` (type: `integer`):

Only listings earning at most this much per year.

## `minMultiple` (type: `number`):

Price ÷ annual profit, e.g. 2.

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

Price ÷ annual profit, e.g. 3.5 for deals at or below 3.5x.

## `listedWithinDays` (type: `integer`):

Only listings first listed recently, e.g. 7.

## `hasTrademark` (type: `string`):

Filter by registered trademark.

## `usesPbn` (type: `string`):

Private blog network (choose 'No' to exclude risky SEO).

## `privateLenderApproved` (type: `string`):

Eligible for Empire Flippers' private lender financing.

## `hasSellerInterview` (type: `string`):

A recorded seller interview is available.

## `hasPenalties` (type: `string`):

Choose 'No' to exclude sites with Google penalties.

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

Only listings with at least this monthly revenue.

## `minProfitMargin` (type: `number`):

e.g. 30.

## `maxHoursPerWeek` (type: `number`):

e.g. 5 for mostly passive businesses.

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

Years since the business first made money.

## `minProfitTrend` (type: `number`):

e.g. 0 for flat or growing profit (over Empire Flippers' trend period).

## `minMonthlyVisitors` (type: `integer`):

Across the business's websites (where shown).

## `customerType` (type: `string`):

Businesses selling to companies or consumers (both included).

## `automatedSalesOnly` (type: `boolean`):

Only businesses whose sales run automatically.

## `excludeUnpriced` (type: `boolean`):

Skip listings without a public price.

## `newListingsOnly` (type: `boolean`):

Only listings Empire Flippers marks as new.

## `minValueScore` (type: `integer`):

e.g. 60 for good deals or better versus real sales.

## `keywords` (type: `array`):

Only listings mentioning any of these words in the title, summary or niches.

## `listingNumbers` (type: `array`):

Listing numbers or links, e.g. 97464 or https://empireflippers.com/listing/97464/. Overrides the filters above.

## `soldFrom` (type: `string`):

Only deals sold on or after this date.

## `soldTo` (type: `string`):

Only deals sold on or before this date.

## `compsMonths` (type: `integer`):

How far back to look for sales used as comps.

## `compsSampleSize` (type: `integer`):

How many recent sales to use (not charged).

## `includePnl` (type: `boolean`):

Monthly net profit, revenue and expenses.

## `includeTraffic` (type: `boolean`):

Monthly visitors and traffic channels (where shown).

## `includeDetails` (type: `boolean`):

Summary, opportunities, risks, work required, reason for sale, seller support and assets included.

## `trackChanges` (type: `boolean`):

Marks new listings and price changes, and reports listings now under offer, sold (with the sale multiple) or removed.

## `onlyChanges` (type: `boolean`):

Return only new listings, price changes, and listings now under offer, sold or removed. Ideal for a daily schedule with email or Slack alerts.

## `memoryName` (type: `string`):

Use different names for different searches.

## `resetMemory` (type: `boolean`):

Forget previous runs and start fresh.

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

Not needed normally.

## Actor input object example

```json
{
  "mode": "for_sale_with_comps",
  "maxListings": 200,
  "sortBy": "newest",
  "hasTrademark": "any",
  "usesPbn": "any",
  "privateLenderApproved": "any",
  "hasSellerInterview": "any",
  "hasPenalties": "any",
  "customerType": "any",
  "automatedSalesOnly": false,
  "excludeUnpriced": false,
  "newListingsOnly": false,
  "compsMonths": 12,
  "compsSampleSize": 300,
  "includePnl": true,
  "includeTraffic": false,
  "includeDetails": true,
  "trackChanges": false,
  "onlyChanges": false,
  "memoryName": "empire-flippers-monitor",
  "resetMemory": false
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("dead00/empire-flippers-scraper-listings-sold-comps-deal-alerts").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("dead00/empire-flippers-scraper-listings-sold-comps-deal-alerts").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 '{}' |
apify call dead00/empire-flippers-scraper-listings-sold-comps-deal-alerts --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dead00/empire-flippers-scraper-listings-sold-comps-deal-alerts"
        }
    }
}
```

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/2fc1YwUfvXAqPRrRp/builds/5ZMeuQmH7yVZptphv/openapi.json
