ActorStack.dev

How to scrape Empire Flippers listings and sold deals

The whole Empire Flippers catalogue — For Sale, Pending Sold and Sold — in fifteen requests, which filters actually narrow the result, and how much of each row is filled depending on its status.

By Oswaldo Carabano8 min read

Short answer

Empire Flippers serves its whole listing catalogue to anonymous visitors through a public JSON endpoint, 200 listings per request, so the 2,877 listings measured on 23 September 2026 — 180 For Sale, 23 Pending Sold and 2,674 Sold — take fifteen requests and no login. The run is shaped by three choices: which statuses to read, since Sold deals are the comparables; which filters to apply, of which only those verified to narrow the result are offered; and whether to take one row per business or one per business-month. Fill rates depend on status: risks were filled on 97.2% of For Sale listings and 59.3% of Sold ones. Pricing is $4.50 per 1,000 listings.

Key points

  • Empire Flippers caps a page at 200 listings and silently trims larger requests, so the 2,877-listing catalogue measured on 23 September 2026 is fifteen requests.
  • Requesting two Empire Flippers statuses in one comma-separated parameter returns 0 listings, so statuses have to be requested one by one.
  • Six Empire Flippers parameters that look like filters, including `country` and `price_min`, return the full 2,877 listings and were left out of the Actor's input.
  • Empire Flippers fill rates depend on status: business registration country was filled on 100% of 180 For Sale listings and 15.0% of 2,674 Sold listings.
  • The empireflippers.com robots.txt disallows only `/wp-admin/`, and the API host's robots.txt was an empty file when fetched on 10 October 2026.
On this page7 sections

Empire Flippers is unusual among the sites in this catalogue: the whole thing fits in fifteen requests. What takes care is not getting the data but knowing which parts of it say what.

What Empire Flippers shows an anonymous visitor

The marketplace serves its listings as JSON to any visitor, 200 per request, with no account, cookie or token. Each listing carries 81 source fields: price, multiples, average monthly profit, revenue and expenses, a 12-month P&L series, a traffic series where the seller connected analytics, niches, monetization models, sites with their SEMrush authority, and the due-diligence text Empire Flippers writes — summary, opportunities, risks, work required, reason for sale.

What it does not show is anything behind its Unlock and NDA step: the business URL, the detailed P&L, access to the seller. Reaching those needs an account and an accepted agreement, so they are out of scope by construction rather than by policy. A listing's HTML page, at 19 times the bytes of its JSON, adds nothing the JSON lacks.

The source has a few habits worth knowing before reading its output. Thirteen numeric fields, including the annual multiple and each month's profit, revenue and expenses, are served as strings; the monthly series arrive unsorted; traffic channels come as an object keyed by channel name. The Actor types the numbers, sorts the series by month and turns the channels into a table, so the row you receive is not the raw response.

Step 1 — choose the statuses

listingStatuses takes For Sale, Pending Sold and Sold. On 23 September 2026 those were 180, 23 and 2,674 listings, a partition with no overlap. For sourcing, For Sale is the market. For valuation, Sold is the history — though the price on it is the final asking price, a distinction worked through in asking price versus price realized.

One source quirk shaped this input: asking for two statuses in one comma-separated parameter returns 0 listings rather than both. The Actor requests each status separately and shares the maxItems budget fairly between them.

Step 2 — filters that narrow, and six that do not

Every filter in the input was tested against the live source with a negative control. A parameter that does not exist at all returned the full 2,877 listings; so did six that look real, among them country=US, platform, price_min and keyword. Those six are not offered, because a filter that silently returns everything produces a run that looks correct and is not.

Filter testedListings returnedRows matching
Asking price ≥ $100,0001,426100%
Monthly profit ≥ $5,0001,040100%
Monetization SaaS64100%
Platform Shopify341100%
A parameter that does not exist2,877Ignored

Sorting works the same way: newest, price high or low and monthly profit high were verified to change the order; other spellings of a sort parameter were silently ignored and are not offered.

Step 3 — one row per business, or per month

The default outputType, listings, gives one row per business with the monthly series nested inside it. monthlyMetrics flattens them into one row per business-month — net profit, revenue, expenses, page views, users and traffic channels — which is the shape a spreadsheet or a time-series query wants.

The monthly rows inherit the listing's gaps. Over 400 business-month rows from 32 businesses, net profit, revenue and expenses were filled on 95.3%, page views and users on 30.0% and traffic channels on 18.0%. A business has about twelve months, so maxItems counts months in this mode: 100 rows is roughly eight businesses, not a hundred.

input.json — sold SaaS businesses under $200,000, newest first
{
  "listingStatuses": ["Sold"],
  "monetization": "SaaS",
  "maxPrice": 200000,
  "sortBy": "newest",
  "maxItems": 100
}

What is filled, by status

Measured on the whole catalogue, the median listing filled 71 of 91 data fields — 77 for For Sale, 70 for Sold. The averages hide the useful part, which is where the two statuses differ:

FieldFor Sale (180)Sold (2,674)
Asking price100%99.9%
Monthly P&L series100%99.7%
Profit trend100%53.6%
Risks97.2%59.3%
Business registration country100%15.0%
Monthly traffic series36.7%77.9%
Traffic channels36.7%2.5%
Verified data providers94.4%21.1%

Model-specific fields behave as expected: MRR is filled on 34.4% of the 64 SaaS listings and on almost nothing else; Amazon SKU counts on 47.2% of For Sale listings. They arrive as null rather than being dropped, so the column set is stable. Why this site publishes rates by segment rather than one average is argued in measured fill rates, not promises.

What a run costs

$0.0045 per listing, $0.0005 per business-month row, $0.001 for a tech stack when one is found, and the platform's start event. The whole 2,877-listing catalogue comes to about $12.95; the default run returned all 180 For Sale listings for about $0.81. Error rows and duplicates are never charged, under the model described in pay-per-event pricing.

A maximum cost per run is respected rather than overshot. A platform test with a $0.50 cap and monthlyMetrics stopped cleanly at 999 rows, charged $0.4996 including the start event, and said in its status message why it stopped. A row is never delivered unless it can be charged.

includeTechStack is the only switch that adds requests — one per listing — and it found a stack on 16.7% of 30 For Sale listings sampled and none of 20 Sold ones. For Sold comparables it is cost with nothing to show for it.

robots.txt and the terms

Fetched on 10 October 2026, empireflippers.com/robots.txt has one group for all agents, disallowing /wp-admin/ and nothing else, and the API host's robots.txt was an empty file. The Actor does not filter by robots.txt, but on this site there is nothing it would exclude. The general argument is in robots.txt-compliant scraping.

Frequently asked questions

Does Empire Flippers have a public API?
Empire Flippers serves its listing data as JSON to any anonymous visitor, which is the source the Empire Flippers Scraper reads. Nothing on this page claims it is a documented or supported API, so a change on their side can break it without notice.
How long does the whole Empire Flippers catalogue take?
All 2,877 listings took 76 seconds in a local run on 23 September 2026, in fifteen requests of 200. The default input returned 180 For Sale listings in 23 seconds on Apify.
Why do Sold listings have fewer fields filled?
Empire Flippers publishes less for closed deals. The median Sold listing filled 70 of 91 data fields against 77 for For Sale, over 2,674 and 180 listings respectively, with trends, registration country and risks the main gaps.

Sources

Every URL below was requested and returned a page on the date shown.

  1. Operator claimchecked 10 Oct 2026
    Empire Flippers Scraper — Actor README and input schemaActorStack / Apify Store
  2. Site declarationchecked 10 Oct 2026
    empireflippers.com/robots.txtEmpire Flippers
  3. Site declarationchecked 10 Oct 2026
    api.empireflippers.com/robots.txtEmpire Flippers
  4. Operator claimchecked 10 Oct 2026
    Empire Flippers Terms of Use AgreementEmpire Flippers
  5. Platform docschecked 18 Aug 2026
    Actor pricing modelsApify
A laptop screen showing a plain text-mode terminal with a command prompt.
DealsGuide

Asking price vs price realized

Two marketplaces, two kinds of price. Empire Flippers publishes what sellers asked, Invaluable publishes what auctions realized — and a comparables dataset that mixes the two up measures the wrong thing.

7 min
A laptop screen showing a plain text-mode terminal with a command prompt.
DealsGuide

Invaluable auction results data

Prices realized, estimates and live bids from Invaluable, with the coverage measured on 2,040 lots — and the Terms of Use and robots.txt that prohibit automated access, stated plainly.

9 min
A white shuttered window on a peach-coloured building with a for-sale notice beside it.
DomainsGuide

Bulk availability without WHOIS

Screening a naming shortlist against zone files instead of querying WHOIS per name: what it costs, what the verdicts mean, and where the method stops being enough.

7 min