Flippa Marketplace Scraper avatar

Flippa Marketplace Scraper

Pricing

$0.01 / listing scraped

Go to Apify Store
Flippa Marketplace Scraper

Flippa Marketplace Scraper

Scrape Flippa.com listings — price, revenue, profit, multiples, traffic, monetization, niche, and more. Perfect for deal sourcing and market research.

Pricing

$0.01 / listing scraped

Rating

0.0

(0)

Developer

Kevin

Kevin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

The Flippa deal-finding and market monitoring API — not just a scraper.

Scrape Flippa.com listings with ROI scoring, undervaluation detection, price-drop tracking, sold-listing research, direct URL enrichment, and automatic export to Slack, Airtable, Notion, Google Sheets, and any webhook.

Built for acquisition investors, deal teams, brokers, and anyone who wants Flippa's data piped into their own workflow.


Why this actor vs. the alternatives

FeatureThis actor
ROI score (0–100) with transparent formula
Undervaluation flagging with per-type benchmarks
Price-drop tracking across runs
Sold listings research
Direct URL enrichment (enrich specific listings)
Mixed inputs: search filters + individual URLs in one run
Confidence score (how complete is each listing's data)
Flagged reasons per listing (why it was flagged)
Normalized enums for type, sale method, monetization
Output modes: Full / ETL / Alerts-only
Native Slack, Airtable, Notion, Google Sheets, webhook
Summary stats record per run
Trust/badge indicators (verified, editor's choice, managed)
Auction/offer state fields
Traffic, domain age, seller rating✅ (with detail pages)

What data is extracted

Core fields (every listing)

FieldDescription
urlDirect link to the listing
titleListing headline
descriptionBusiness description excerpt
askingPriceAsking price (e.g. "USD $118,000")
monthlyProfitNet monthly profit (e.g. "USD $3,956 p/mo")
monthlyRevenueMonthly revenue when disclosed
profitMultipleValuation multiple (e.g. "3.4x Profit")
revenueMultipleRevenue multiple (e.g. "1.2x Revenue")
propertyTypeNormalized enum: SaaS, Ecommerce, Amazon FBA, Content / Blog, Affiliate, Newsletter, Domain, App, Marketplace, Directory, Services, Forum / Community
monetizationTypeHow the business makes money
categoryIndustry/niche
listingAgeAge of the business
saleMethodNormalized enum: Auction, Buy It Now, Classified
isVerifiedVerified listing badge
isEditorChoiceEditor's Choice badge
isManagedByFlippaManaged by Flippa badge
isSoldtrue if from Flippa's sold listings section
scrapedAtISO timestamp

ROI & analysis fields (when roiScoring is enabled)

FieldDescription
roiScore0–100. Higher = faster payback. 100 = under 0yr payback, 0 = 5yr+ payback
paybackYearsAsking price ÷ annual profit. Years to recoup investment
isUndervaluedtrue if payback is below the threshold for this business type
roiBenchmarkUsedThe payback threshold that determined isUndervalued
roiExplanationHuman-readable reason: e.g. "Payback 2.1yr vs 3.5yr benchmark for SaaS"
confidenceScore0–100. How many of the 8 key fields (price, profit, type, category, etc.) are populated
flaggedReasonsArray of reasons this listing was flagged: undervalued, price_drop, new_listing, sold, low_confidence

Price tracking fields (when trackPriceDrops is enabled)

FieldDescription
priceDroppedtrue if price is lower than when last seen
priceDropDollar amount of the reduction
priceHistoryFull price history array: [{ price, priceNum, date }] — one entry per price change
firstSeenAtISO timestamp of when this listing was first scraped
lastSeenAtISO timestamp of when this listing was last seen in a run
relistedtrue if this listing was previously marked as removed and has reappeared

Removal detection records (when trackPriceDrops is enabled)

At the end of each run, listings that were previously tracked but not seen in the current run are flagged. A record is pushed to the dataset with:

FieldDescription
_isRemovaltrue — use this to identify removal event records
likelyRemovedtrue
removedAtISO timestamp of when removal was detected
lastSeenAtWhen it was last seen before disappearing
firstSeenAtWhen it was first seen
askingPriceLast known asking price
priceHistoryFull price history up to removal
flaggedReasons["likely_removed"]

Detail page fields (when scrapeDetailPages is enabled)

FieldDescription
yearEstablishedYear the business was founded
sellerRatingSeller reputation score
monthlyVisitorsMonthly traffic when disclosed
annualOrganicTrafficAnnual organic visits when disclosed
domainAgeAge of the domain (e.g. "7 years")
offersCountNumber of active offers
bidsCountNumber of bids (auction listings)
daysRemainingDays left in auction or listing window
annualRevenueAnnual revenue figure when disclosed

Summary record (end of every run)

FieldDescription
_isSummarytrue — use this to filter out summary records
totalScrapedTotal listings saved this run
undervaluedCountUndervalued listings count
priceDropCountPrice-drop listings count
likelyRemovedCountListings not seen this run, newly flagged as likely removed
avgAskingPriceAverage asking price across saved listings
avgPaybackYearsAverage payback period
avgConfidenceScoreAverage data completeness score
typeBreakdownCount by normalized property type
flagBreakdownCount by each flag reason
outputModeWhich output mode was used
runCompletedAtISO timestamp

ROI score explained

roiScore = max(0, min(100, round(100 - (paybackYears / 5) * 100)))
  • 100 = 0 years payback (extremely underpriced)
  • 60 = 2 years payback (strong deal)
  • 30 = 3.5 years payback (fair market for SaaS)
  • 0 = 5+ years payback (expensive)

The roiBenchmarkUsed field shows the exact threshold used for isUndervalued, and roiExplanation gives a plain-English explanation for every listing.

Per-type defaults:

TypeDefault benchmark
SaaS3.5 years
Ecommerce / FBA2.5 years
Content / Blog / Affiliate / Newsletter3.0 years
Other3.0 years

All thresholds are configurable in the actor input.


Example output

{
"url": "https://flippa.com/12283554",
"title": "GovTech SaaS — 96% margins, $29.9K revenue, evergreen webinar funnel",
"description": "$29.9K revenue, 96% margins, custom GovTech SaaS with 1M+ B2G contact database",
"askingPrice": "USD $114,999",
"monthlyProfit": "USD $2,396 p/mo",
"monthlyRevenue": null,
"profitMultiple": "3.4x Profit",
"revenueMultiple": "3.3x Revenue",
"propertyType": "SaaS",
"monetizationType": "Services & Subscriptions",
"category": "Business",
"listingAge": "5 years",
"saleMethod": "Buy It Now",
"isVerified": true,
"isEditorChoice": false,
"isManagedByFlippa": false,
"isSold": false,
"roiScore": 20,
"paybackYears": 4.0,
"isUndervalued": false,
"roiBenchmarkUsed": 3.5,
"roiExplanation": "Payback 4.0yr vs 3.5yr benchmark for SaaS",
"confidenceScore": 87,
"flaggedReasons": [],
"priceDropped": false,
"priceDrop": null,
"firstSeenAt": "2026-03-20T09:00:00.000Z",
"scrapedAt": "2026-04-02T04:00:00.000Z"
}

Input options

Inputs & Filters

ParameterTypeDefaultDescription
listingUrlsArray[]Individual Flippa listing URLs or IDs to enrich directly. Can be mixed with category filters in the same run
outputModeEnumfullfull = all fields, etl = nulls stripped, alerts = only flagged listings
propertyTypeArray[]Filter by: website, fba, ios_app, android_app, domain, business, newsletter
siteTypeArray[]Filter by: saas, ecommerce, content, blog, dropship, affiliate, etc.
minPriceIntegerMinimum asking price (USD)
maxPriceIntegerMaximum asking price (USD)
minMonthlyProfitIntegerMinimum monthly profit (USD)
maxMonthlyProfitIntegerMaximum monthly profit (USD)
minRoiScoreIntegerMinimum ROI score 0–100
titleKeywordsArray[]Only return listings whose title contains any of these keywords
descriptionKeywordsArray[]Only return listings whose description contains any of these keywords
maxResultsInteger50Maximum total listings to save (up to 1,000)

ROI & Alerts

ParameterTypeDefaultDescription
roiScoringBooleantrueAdd ROI fields to every listing
onlyUndervaluedBooleanfalseOnly save undervalued listings
undervaluedMultipleThresholdNumberGlobal payback override — overrides all per-type thresholds
saasBenchmarkYearsNumber3.5Payback threshold for SaaS
ecommerceBenchmarkYearsNumber2.5Payback threshold for Ecommerce / FBA
contentBenchmarkYearsNumber3.0Payback threshold for content, blog, affiliate, newsletter
defaultBenchmarkYearsNumber3.0Fallback for all other types
onlyNewListingsBooleanfalseSkip listings seen in previous runs
includeSoldListingsBooleanfalseAlso scrape sold listings (tagged isSold: true)
trackPriceDropsBooleanfalseDetect and flag price reductions across runs
scrapeDetailPagesBooleanfalseVisit each listing page for traffic, domain age, seller rating, auction state

Integrations

ParameterTypeDescription
webhookUrlStringPOST to this URL at end of run (Zapier, Make, n8n)
slackWebhookUrlStringSend formatted Block Kit report to Slack
airtableApiKeyString (secret)Airtable Personal Access Token
airtableBaseIdStringAirtable Base ID
airtableTableNameStringTable name (default: Flippa Listings)
notionApiKeyString (secret)Notion Internal Integration Token
notionDatabaseIdStringNotion database ID
googleServiceAccountJsonString (secret)Google service account JSON key
googleSheetsIdStringGoogle Sheets spreadsheet ID
googleSheetNameStringSheet tab name (default: Flippa Listings)

Use cases

Deal sourcing Find undervalued businesses matching your acquisition criteria. Set siteType: ["saas"], maxPrice: 200000, onlyUndervalued: true.

Keyword targeting Use titleKeywords: ["AI", "recurring", "MRR"] to surface only businesses matching your thesis.

Undervalued alerts Schedule daily runs with onlyUndervalued: true + onlyNewListings: true + slackWebhookUrl. Get notified only when a new undervalued listing appears.

Price drop alerts Enable trackPriceDrops: true. Combine with outputMode: "alerts" to save only listings where something changed.

Enrich a shortlist Paste 10 listing URLs into listingUrls. Get a full structured dataset back in seconds — without manual browsing.

Sold listings research Enable includeSoldListings: true to see what actually transacted and at what prices. Useful for benchmarking current asks.

ETL pipeline Set outputMode: "etl" — every listing has null fields stripped, giving clean rows ready for Postgres, BigQuery, or Airtable without empty columns.

Acquisition watchlist Run on a schedule with onlyNewListings: true + trackPriceDrops: true. Build a persistent history of listings you're monitoring. Each listing accumulates a full priceHistory array across runs. Listings that disappear from Flippa are automatically flagged as likelyRemoved and pushed as removal-event records. Listings that reappear after removal are flagged as relisted — a strong signal of a motivated seller.


Output modes

ModeWhat gets savedBest for
fullEvery listing, all fields including nullsDefault, maximum data
etlEvery listing, null/empty fields removedDatabases, spreadsheets, Airtable
alertsOnly listings with at least one flaggedReasonScheduled alert runs, Slack notifications

flaggedReasons values: undervalued, price_drop, relisted, new_listing, sold, low_confidence, likely_removed


Direct listing URL mode

Instead of (or in addition to) category scraping, you can pass individual listing URLs:

{
"listingUrls": [
"https://flippa.com/12345678",
"https://flippa.com/12283554",
"11223344"
]
}

Bare IDs (numbers) are automatically expanded to full Flippa URLs. Each listing is fully extracted from its detail page and returns the same schema as a search-scraped listing — including ROI fields, confidence score, flagged reasons, and all trust/traffic indicators.

Mix with search filters in the same run: if you also set siteType: ["saas"], the actor will scrape the SaaS category AND enrich your direct URLs in one run.


Setting up the deal alert workflow

  1. Set these inputs:
    • onlyUndervalued: true
    • onlyNewListings: true
    • trackPriceDrops: true
    • outputMode: "alerts"
    • slackWebhookUrl or webhookUrl
  2. Tune your benchmarks (e.g. saasBenchmarkYears: 3.0 for stricter SaaS deals)
  3. Optionally add titleKeywords: ["recurring", "MRR", "B2B"] to narrow the niche
  4. Go to Actors → Schedules in the Apify console and set it to run daily
  5. You'll receive a Slack message only when a new undervalued or price-dropped listing appears

Integrations

Webhook (n8n / Zapier / Make / custom)

Posts this payload at end of run:

{
"source": "flippa-marketplace-scraper",
"runId": "abc123",
"timestamp": "2026-04-01T00:00:00.000Z",
"totalScraped": 50,
"count": 50,
"listings": [ ... ]
}
  • Zapier → "Webhooks by Zapier" → "Catch Hook"
  • Make → "Webhooks" → "Custom webhook"
  • n8n → "Webhook" trigger node

Slack

Get an Incoming Webhook URL at api.slack.com/messaging/webhooks. Each run sends a Block Kit formatted card with run stats and the top 5 deals by ROI score.

Airtable

  1. Create a Personal Access Token at airtable.com/account with data.records:write scope
  2. Create a table named Flippa Listings with these columns:
ColumnType
TitleSingle line text
URLURL
Asking PriceSingle line text
Monthly ProfitSingle line text
Monthly RevenueSingle line text
Profit MultipleSingle line text
Revenue MultipleSingle line text
TypeSingle line text
MonetizationSingle line text
CategorySingle line text
Listing AgeSingle line text
Sale MethodSingle line text
DescriptionLong text
Scraped AtSingle line text
ROI ScoreNumber
Payback (yrs)Number
UndervaluedCheckbox
Confidence ScoreNumber
Price DroppedCheckbox
Price Drop ($)Number
SoldCheckbox
  1. Find your Base ID at airtable.com/developers/web/api/introduction

Notion

  1. Go to notion.so/my-integrations → New integration → copy the Internal Integration Token
  2. Create a database with matching properties (see Airtable table above for field names/types; use Select for Type, Monetization, Category, Sale Method)
  3. Share the database with your integration (··· → Connections)
  4. Copy the database ID from the URL

Google Sheets

  1. Enable the Sheets API at console.cloud.google.com → create a Service Account → download JSON key
  2. Share your sheet with the service account email (Editor access)
  3. Paste the full JSON into googleServiceAccountJson
  4. Copy the spreadsheet ID from the URL

The actor writes a header row on the first run, then appends rows on subsequent runs.


Pricing

$0.01 per listing — flat rate, all features included.

  • 50 listings = $0.50
  • 500 listings = $5.00
  • 1,000 listings = $10.00

Apify platform usage (compute + residential proxy bandwidth) is billed separately. Most runs of 50–200 listings cost under $0.50 in platform fees.


Tips

  • Leave all filters empty + set maxResults: 200 for a broad market sweep
  • Combine siteType: ["saas"] + maxPrice: 100000 + minRoiScore: 50 to instantly surface fast-payback SaaS under $100K
  • outputMode: "etl" is the cleanest option for piping data into databases — no empty columns
  • Use listingUrls to enrich a specific shortlist without running a full category scrape
  • Enable scrapeDetailPages only when you need traffic/domain/seller data — it roughly doubles run time
  • trackPriceDrops is most useful on a recurring schedule — the first run just stores baseline prices
  • Use confidenceScore to filter out listings where Flippa hides key data behind NDA: minConfidenceScore isn't an input filter yet, but you can post-filter in your downstream tool

Notes

  • Revenue and profit figures marked "Confidential" by sellers on Flippa are not accessible and are not scraped
  • Residential proxies are required — Flippa blocks datacenter IPs on its listing routes
  • Sold listing prices populate the askingPrice field (Flippa shows sale price in the same position)
  • Flippa's site structure may change; if fields stop populating, leave a review and we'll update selectors
  • The _isSummary: true record at the end of each dataset is a run-level stats row — filter it out in downstream tools if needed