FLIPPA.com $0.8๐Ÿ’ฐ URL | Filters | Enriched Output avatar

FLIPPA.com $0.8๐Ÿ’ฐ URL | Filters | Enriched Output

Pricing

from $0.80 / 1,000 results

Go to Apify Store
FLIPPA.com $0.8๐Ÿ’ฐ URL | Filters | Enriched Output

FLIPPA.com $0.8๐Ÿ’ฐ URL | Filters | Enriched Output

From $0.8/1K. Scrape FLIPPA.com with full enrichment. Extract profit, revenue, multiples, traffic, age, location, monetization, badges, and more. Combines search JSON and listing API data. Supports filters or URL input, concurrent enrichment, and fast, low-resource runs.

Pricing

from $0.80 / 1,000 results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Flippa Scraper

Pull every public field from flippa.com listings, fast and cheap. Search by filters or paste any URL. Each record carries 80+ structured fields plus the raw upstream payload, so you never lose data the platform exposes.

Why This Scraper?

  • Complete output: monthly profit, monthly revenue, profit and revenue multiples, page views, uniques, site age, seller location, monetization, sale method, verifications, badges, integrations, all preserved.
  • Two sources merged per record: the search-results JSON island for badges, multiples, key data, and price text; the public listings JSON:API for hostname, external URL, model, industry, and revenue sources.
  • Search and URL mode: filter by 25 dimensions, or paste search URLs and listing URLs straight from your browser.
  • Concurrent enrichment: detail data fetched in parallel and pushed per record, so an aborted run still keeps everything that finished.
  • Free-tier friendly: the default Apify proxy works, no residential needed.
  • Lean and fast: ~50 MB peak memory, sub-second cold start, low compute usage.
  • Daily/recurring change monitoring: turn on Incremental mode to get only NEW, UPDATED, and REAPPEARED listings on every scheduled run, or resume one specific interrupted crawl with resumeFromRunId.

Data You Get

Sample shape, values are illustrative placeholders, not from a live listing.

FieldExample
id"00000000"
url"https://flippa.com/00000000-sample-slug"
title"Sample listing title"
summary"Brief seller pitch text shown on the search card."
propertyName"example.com"
hostname"example.com"
externalUrl"https://www.example.com/"
propertyType"saas"
siteType"AiAppsAndTools"
category"Internet"
monetization"Ads"
primaryPlatform"Open AI"
industry"internet"
businessModelnull
saleMethod"classified"
saleMethodTitle"Asking Price"
status"open"
endAt"2026-01-01T00:00:00+00:00"
price0
originalPrice0
priceText"USD $0"
priceDroppedfalse
priceDroppedPercent0
currency"USD"
monthlyRevenue0
monthlyProfit0
annualRevenue0
annualProfit0
revenuePerMonth0
profitPerMonth0
profitMultiple0.0
revenueMultiple0.0
uniquesPerMonth0
pageViewsPerMonth0
annualOrganicTraffic0
authorityScore0
siteAge"1 year"
ageInYears"1 year"
ageInMonths12
businessLocation"WY, United States"
sellerLocation"United States"
revenueSources[]
isVerifiedRevenuefalse
isVerifiedTraffictrue
isManuallyVettedtrue
isEditorsChoicefalse
isSuperSellerfalse
isSponsoredfalse
bidCount0
thumbnailUrl"https://static.flippa.com/assets/sample-placeholder.svg"
keyData[{ "label": "Type", "value": "Sample" }]
badges[]
allVerifications[]
integrations["google_analytics"]
rawfull search-card object preserved verbatim
apiRawfull listings JSON:API record preserved verbatim
changeType"NEW" (incremental mode only โ€” see "Resume & recurring updates" below)
changedFields["price", "status"] (incremental mode, UPDATED rows only)
firstSeenAt"2026-08-01T00:00:00Z" (incremental mode only)
lastSeenAt"2026-08-05T00:00:00Z" (incremental mode only)

How to Use

Search by filters

{
"mode": "search",
"status": ["open"],
"propertyTypes": ["saas", "ai_apps_and_tools"],
"saleMethods": ["classified"],
"sortBy": "most_recent",
"minPrice": 1000,
"maxPrice": 50000,
"minMonthlyProfit": 100,
"fetchDetails": true,
"maxListings": 50,
"maxPages": 5
}

Verified-revenue ecommerce, US sellers

{
"mode": "search",
"propertyTypes": ["ecommerce_store"],
"verifiedRevenueOnly": true,
"sellerLocation": "us",
"fetchDetails": true,
"maxListings": 100
}

Paste any flippa.com URLs

{
"mode": "url",
"urls": [
"https://flippa.com/search?search_template=most_relevant&filter%5Bstatus%5D=open&filter%5Bproperty_type%5D=saas",
"https://flippa.com/search?search_template=most_recent&filter%5Bsale_method%5D=auction&filter%5Bstatus%5D=open",
"https://flippa.com/12345678"
],
"fetchDetails": true,
"maxListings": 60
}

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch to filter, or url to paste URLs.
statusarray["open"]open for live, won for recently sold, both supported.
propertyTypesarray(any)website, fba, saas, ecommerce_store, ai_apps_and_tools, plugin_and_extension, youtube, ios_app, android_app, game, crypto_app, social_media, newsletter, service_and_agency, service, projects_and_concepts, domain, other.
siteTypesarray(any)Granular site type within an asset type.
saleMethodsarray(any)auction, classified.
sortBystringmost_relevantmost_relevant, most_recent, ending_soonest, most_active.
minPrice / maxPriceinteger(none)Asking price range in USD.
minMonthlyProfit / maxMonthlyProfitinteger(none)Monthly net profit range.
minMonthlyRevenue / maxMonthlyRevenueinteger(none)Monthly revenue range.
minUniquesPerMonthinteger(none)Minimum monthly uniques.
minAgeMonths / maxAgeMonthsinteger(none)Age range in months.
tldsarray(any)Domain extensions (com, org, io, ai, app, ...).
sellerLocationstring(any)ISO country code (us, gb, au) or region (afr, nam, sam, asi, eeu, weu, oce).
verifiedRevenueOnlybooleanfalseOnly verified-revenue listings.
verifiedTrafficOnlybooleanfalseOnly verified-traffic listings.
manuallyVettedOnlybooleanfalseOnly manually vetted listings.
editorsChoiceOnlybooleanfalseEditor's Choice only.
superSellerOnlybooleanfalseSuper Seller only.
brokerSellerOnlybooleanfalseBrokered listings only.
sponsoredOnlybooleanfalseSponsored listings only.
buyItNowOnlybooleanfalseBuy It Now auctions only.
reserveMetOnlybooleanfalseReserve met auctions only.
priceDroppedOnlybooleanfalsePrice reduced only.
managedByFlippaOnlybooleanfalseManaged by Flippa only.
earlyAccessOnlybooleanfalseFirst Access only.
revenueGeneratingstringanyyes, no, or any.
urlsarray(none)URL-mode input, supports search and listing URLs.
fetchDetailsbooleantrueAdds external_url, hostname, model, revenue sources, seller location, etc.
maxListingsinteger20Hard cap on dataset items โ€” this is the actor's only finite default limit. 0 means unlimited (bounded only by maxPages and Flippa's own ~10,000-listing ceiling).
maxPagesinteger0Pages to walk per search URL (25 listings/page). 0 walks the whole result set for that search โ€” see Pagination and the "walk the whole catalogue" default below. A positive number caps pages explicitly.
resumeFromRunIdstring(none)Continue one specific previous run/dataset: listings already collected there are skipped, so this run returns only new listings. For recurring monitoring of the same search, use incrementalMode instead โ€” see Resume & recurring updates below.
incrementalModebooleanfalseRecurring monitoring of this same search. First run returns everything as NEW; later runs return only NEW/UPDATED/REAPPEARED by default. See Resume & recurring updates below.
stateKeystring(none)Optional name for a monitoring campaign, so its incremental state stays stable or is deliberately shared. Auto-derived from your filters and fetchDetails setting when left empty.
emitUnchangedbooleanfalseIncremental mode only. Also return listings unchanged since the last run, marked UNCHANGED. Adds and bills extra rows you already have.
emitExpiredbooleanfalseIncremental mode only. Also return listings from a previous run no longer found, marked EXPIRED, once a run has fully scanned the search (not capped, not a resume). Adds and bills extra synthetic rows.
proxyobjectApify defaultDefault works fine, residential is optional.

Pagination and the "walk the whole catalogue" default

maxPages: 0 (the default) does not mean "no results" โ€” it means the actor walks pages until one of the run's real terminators is hit:

  • the result total Flippa's own API reports for that search (metadata.totalResults) โ€” a narrow filter naturally ends after a handful of pages;
  • Flippa's genuine site ceiling of 25 listings/page ร— 400 pages = ~10,000 results per search, which is a real limit of Flippa's /search API, not a limit the actor imposes;
  • an empty page or a page that returns only listings already seen.

maxListings (default 20) is the actor's sole finite soft cap โ€” it bounds how many listings a default run pushes without you having to think about pages at all. Set maxListings: 0 to opt into pulling the full result set (still bounded by the terminators above), or set maxPages to a positive number to cap pages explicitly instead.

Resume & recurring updates

There are two different things here โ€” pick the one that matches what you're doing:

NeedUse
A crawl stopped and should continueresumeFromRunId / automatic checkpoint recovery
Run the same search on a schedule and receive only changesincrementalMode
Keep separate recurring campaigns for similar searchesdistinct stateKey values
Run a normal full snapshotleave both off

Resume (resumeFromRunId) continues one specific interrupted or previous large pull: paste a run ID or dataset ID and this run skips listings already collected there, returning only the remaining new ones. The actor reads the prior dataset's id field and fails fast before scraping if the ID doesn't resolve to a readable run or dataset. Combine both runs' datasets for the complete set. An automatic same-run checkpoint also protects against platform migrations/resurrects without any input needed โ€” a maxPages: 0 / maxListings: 0 full pull picks up where it left off after a migration or a manual Resurrect, same dataset, no duplicate listings, no double charges.

Incremental mode (incrementalMode) is for a schedule (for example, daily or weekly): the actor remembers the previous run of the same search by itself, so you never paste a run ID. The first run returns everything as NEW. Later runs return only NEW, UPDATED, and REAPPEARED listings by default โ€” duplicates and unchanged listings are suppressed (and not charged). Turn on emitUnchanged or emitExpired only when you also want those rows returned (and billed for). EXPIRED rows are only returned once a run proves it covered the whole tracked search โ€” a capped, resumed, or otherwise partial run keeps the previous state as-is instead of guessing. State is isolated per search filter and per fetchDetails setting automatically; set stateKey to name or deliberately share a monitoring campaign. Every field is returned on every row regardless of mode โ€” incremental mode only adds the four changeType/changedFields/firstSeenAt/lastSeenAt columns on top, nothing is held back.

Scheduled-run example โ€” same search, run daily:

Day 1 (first run ever for this search):

{ "mode": "search", "propertyTypes": ["saas"], "verifiedRevenueOnly": true, "incrementalMode": true }

โ†’ every listing comes back with "changeType": "NEW".

Day 2 (the schedule fires again, identical input):

{ "mode": "search", "propertyTypes": ["saas"], "verifiedRevenueOnly": true, "incrementalMode": true }

โ†’ listings that vanished or reappeared come back as "changeType": "REAPPEARED", listings whose price/status/etc. changed come back as "changeType": "UPDATED" with changedFields listing what changed, brand-new listings come back as "changeType": "NEW" โ€” and listings that are still there, unchanged, are not returned at all (suppressed, not charged) unless emitUnchanged is on.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape โ€” the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each record โ€” not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify โ†’ Settings โ†’ Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Output Example

Sample shape, placeholder values.

{
"id": "00000000",
"url": "https://flippa.com/00000000-sample-slug",
"title": "Sample SaaS listing with passive monthly revenue",
"summary": "Brief seller pitch text shown on the search card.",
"propertyName": "example.com",
"hostname": "example.com",
"externalUrl": "https://www.example.com/",
"propertyType": "saas",
"siteType": "AiAppsAndTools",
"category": "Internet",
"monetization": "Subscription",
"primaryPlatform": "Open AI",
"industry": "internet",
"businessModel": null,
"saleMethod": "classified",
"saleMethodTitle": "Asking Price",
"status": "open",
"endAt": "2026-01-01T00:00:00+00:00",
"price": 0,
"originalPrice": 0,
"priceText": "USD $0",
"priceDropped": false,
"currency": "USD",
"monthlyRevenue": 0,
"monthlyProfit": 0,
"annualRevenue": 0,
"annualProfit": 0,
"profitMultiple": 0,
"revenueMultiple": 0,
"uniquesPerMonth": 0,
"pageViewsPerMonth": 0,
"annualOrganicTraffic": 0,
"authorityScore": 0,
"siteAge": "1 year",
"ageInYears": "1 year",
"ageInMonths": 12,
"businessLocation": "WY, United States",
"sellerLocation": "United States",
"revenueSources": [],
"isVerifiedRevenue": false,
"isVerifiedTraffic": true,
"isManuallyVetted": true,
"isEditorsChoice": false,
"isSuperSeller": false,
"isSponsored": false,
"bidCount": 0,
"thumbnailUrl": "https://static.flippa.com/assets/sample-placeholder.svg",
"keyData": [
{ "label": "Type", "value": "Sample" },
{ "label": "Industry", "value": "Internet" }
],
"badges": [],
"allVerifications": [],
"integrations": ["google_analytics"],
"raw": { "/* full search-card object */": "..." },
"apiRaw": { "/* full listings JSON:API record */": "..." }
}

Plan Requirement

  • The default Apify proxy works for flippa.com, so the Free plan is enough to run this scraper.
  • Residential is supported but rarely needed. Use it only if you observe rotation pressure on very large jobs.
  • Detail enrichment makes one extra HTTP call per listing. Turn it off if you only need the search-card shape.