Flippa Scraper at a glance
Flippa Scraper is a ready-to-run Apify actor from abotapi for collecting ecommerce data. Its documented output includes id, url, title, property and category, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.70 per 1,000 results on the Apify Free plan and from $0.80 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Ecommerce, Lead Generation, Developer Tools
- Pricing
- $1.70 per 1,000 results (Free plan), from $0.80 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 44 options
From $0.80/1K. Scrape Flippa listings with full enrichment, including revenue, profit, valuation multiples, traffic, business age, location, monetization, badges and more. Search with filters or URLs, with concurrent enrichment for fast, low-resource runs.
What Flippa Scraper can do
- 80+ curated fields, plus the full payload. Asking price, monthly/annual profit and revenue, profit and revenue multiples, traffic (uniques, page views), site age, seller location, monetization and sale method, with the complete search-card and detail payloads preserved under raw and apiRaw so nothing the marketplace shows is left behind.
- Two ways to find listings. Filter by 25+ dimensions, from asset type and sale method to price/profit/revenue ranges, verified status, seller location and domain extension, or paste any flippa.com search-result or listing URL straight from your browser.
- Auctions and classifieds together. Track Buy It Now, reserve-met, price-dropped and First Access auctions alongside fixed Asking Price listings, open or recently sold.
- Trust signals on every search record. Verified revenue, verified traffic, manual vetting, Super Seller, Editor's Choice, broker and sponsored tags come through without extra clicks.
- Resilient to interruption. An aborted run keeps every record already collected, and an automatic same-run checkpoint survives a platform restart or migration without duplicate rows or double charges.
- Built for monitoring. Incremental mode returns only new, updated and reappeared listings on a recurring run, and expired ones once a run proves it covered the whole tracked search, or resume one specific interrupted crawl with a run id.
Choose what to collect
These inputs let you configure Flippa Scraper - Businesses, Revenue, Profit & Multiples. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | Pick how to find listings. Search builds URLs from filters. URL mode pastes ready-made flippa.com URLs. |
statusarray | Open auctions/classifieds, recently sold, or both. |
propertyTypesarray | Asset types. Leave empty to include all. Pick any of: website, fba, saas, ecommerce_store, plugin_and_extension, ai_apps_and_tools, youtube, ios_app, android_app, game, crypto_app, social_media, newsletter, service_and_agency, service, projects_and_concepts, domain, other. |
siteTypesarray | Granular site type within an asset type. Examples: BrowserExtension, ShopifyPlugin, WordpressPlugin, AiAppsAndTools, Newsletter, SocialMedia, Youtube, CryptoApp, MarketingAgency, SoftwareDevelopmentAgency, ContentAndMediaProject, MobileAppProject, SaasAndSoftwareProject, OtherProject. Leave empty for any. |
saleMethodsarray | Auction or Classified (asking price). Leave empty for both. |
sortBystring | Sort order for results. |
minPriceinteger | Minimum asking price. Leave empty for no minimum. |
Show 37 more inputs
| Input | What it controls |
|---|---|
maxPriceinteger | Maximum asking price. Leave empty for no maximum. |
minMonthlyProfitinteger | Minimum monthly net profit. Leave empty for no minimum. |
maxMonthlyProfitinteger | Maximum monthly net profit. Leave empty for no maximum. |
minMonthlyRevenueinteger | Minimum monthly revenue. Leave empty for no minimum. |
maxMonthlyRevenueinteger | Maximum monthly revenue. Leave empty for no maximum. |
minUniquesPerMonthinteger | Minimum monthly unique visitors. Leave empty for no minimum. |
maxUniquesPerMonthinteger | Maximum monthly unique visitors. Leave empty for no maximum. |
minAgeMonthsinteger | Minimum age in months. Leave empty for no minimum. |
maxAgeMonthsinteger | Maximum age in months. Leave empty for no maximum. |
tldsarray | Limit to specific domain extensions. Examples: com, org, net, io, co, ai, app. Leave empty for any. |
sellerLocationstring | ISO 2-letter country code (e.g. us, gb, au) or region code (afr, nam, sam, asi, eeu, weu, oce). Leave empty for any. |
verifiedRevenueOnlyboolean | Only listings with Flippa-verified revenue. |
verifiedTrafficOnlyboolean | Only listings with Flippa-verified traffic. |
manuallyVettedOnlyboolean | Only listings the Flippa team or broker has manually vetted. |
editorsChoiceOnlyboolean | Only Editor's Choice listings. |
superSellerOnlyboolean | Only listings from Super Sellers. |
brokerSellerOnlyboolean | Only brokered listings. |
sponsoredOnlyboolean | Only sponsored (premium) listings. |
buyItNowOnlyboolean | Auctions with Buy It Now option. |
reserveMetOnlyboolean | Auctions where the reserve has been met. |
priceDroppedOnlyboolean | Listings whose price has been reduced. |
managedByFlippaOnlyboolean | Only listings managed by the Flippa team. |
earlyAccessOnlyboolean | Only First-Access listings. |
revenueGeneratingstring | Filter by whether the listing is currently revenue generating. |
urlsarray | Paste any flippa.com URLs to scrape directly: search results (filtered, sorted, sold/won and localized /es/search), category and collection pages (/buy/saas, /buy/categories/), property-type landing pages (/websites) and listing pages (https://flippa.com/12345 or https://flippa.com/12345-some-slug, www or http hosts accepted). Every filter[...] and sort parameter in the URL is kept. Flippa ignores a free-text query= parameter on its search page and returns the unfiltered listing for it, and it only redirects some legacy /buy/sitetype/ links (for example /buy/sitetype/saas); for any other /buy/sitetype/ it also returns the unfiltered listing, so use /buy/ or filter parameters instead. Pagination starts at the page in the URL (page[number]=N or the site's own page=N&pagination=true) and walks forward. Unsupported URLs are logged with a warning and skipped. |
fetchDetailsboolean | When ON, also fetches the per-listing /v3/listings/{id} record. Adds external_url, hostname, business_model, industry, revenue_per_month, profit_per_month, app_downloads_per_month, revenue_sources, and seller_location. Costs one extra HTTP call per listing. |
maxListingsinteger | Hard cap on listings pushed to the dataset. This is the actor's sole finite default limit. 0 means unlimited (bounded only by Max Pages and Flippa's own ~10,000-listing / 400-page ceiling). |
maxPagesinteger | Maximum pages to walk per search URL. Leave at 0 to walk the whole result set for that search: the run still stops at Flippa's own real ~10,000-listing / 400-page ceiling, at the result total the server reports for a narrower search, or on an empty/all-duplicate page, never an artificial cap. Set a positive number to limit pages explicitly. |
resumeFromRunIdstring | Optional. ID of a previous run of this actor (or a dataset ID). Listings already in that dataset are skipped, so this run returns only NEW listings (a delta). Combine both runs' datasets for the full set. Cannot be combined with Incremental mode unless this is the very first incremental run for the chosen state key (see below), otherwise turn Incremental mode on for later scheduled runs instead. |
incrementalModeboolean | For scheduled/repeated runs of the SAME search or URLs. The actor remembers what it saw last time and marks each listing NEW, UPDATED, UNCHANGED, REAPPEARED, or EXPIRED. A listing counts as UPDATED when any output field changed (price, bid count, end time, status, financials, badges and so on), compared field by field against the saved copy. Excluded from the comparison, because they change with the viewer or the clock rather than the listing: the watching/watched and early-access viewer flags and the early-access days-remaining and percentage counters (also inside the raw and apiRaw copies), plus anything you list in Ignore fields below. Unlike Resume above (which continues one specific interrupted run from a pasted id), this remembers state itself between runs, no id to paste. Off by default so a normal run's output is unchanged. |
stateKeystring | Optional name for this monitoring campaign, used with Incremental mode above. Leave empty to key the saved state automatically off the search filters (or URLs) and Fetch Detail Data setting, so two different searches never share a baseline. Set an explicit name to track the same campaign even if you later tweak filters, or to run several separate campaigns against the same filters. |
emitUnchangedboolean | When Incremental mode is on, UNCHANGED listings are normally skipped so you only see what's new or different. Turn this on to also return them, tagged changeType: UNCHANGED. These rows are returned AND billed like any other row. Off by default. |
emitExpiredboolean | When Incremental mode is on and this run scans the full tracked search to its natural end, listings previously seen but no longer found are returned as tombstone rows tagged changeType: EXPIRED. These rows are returned AND billed like any other row. Skipped whenever this run does not prove a complete scan (e.g. Resume is set, Max Listings capped the run, or pagination stopped early), the previous state for those listings is kept as-is. Off by default. |
ignoreFieldsForChangesarray | Optional. Top-level output field names to leave out when deciding whether a listing is UPDATED, in addition to the built-in handling (viewer watch and early-access flags and counters never trigger UPDATED). Use this if a field in your setup turns out to be noisy, for example bidCount or endAt if you only care about price changes. Changing this list does not reset your saved state. |
mcpConnectorsarray | Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON, the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com). |
notionParentPageUrlstring | URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on items written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
idID (text)urlURL (link)titleTitle (text)propertyNameProperty (text)categoryCategory (text)propertyTypeType (text)siteTypeSite Type (text)monetizationMonetization (text)saleMethodSale Method (text)statusStatus (text)pricePrice (number)originalPriceOriginal Price (number)Show 49 more fields
priceDroppedPrice Dropped (boolean)currencyCurrency (text)monthlyRevenueRevenue p/mo (number)monthlyProfitProfit p/mo (number)annualRevenueRevenue p/yr (number)annualProfitProfit p/yr (number)profitMultipleProfit Multiple (number)revenueMultipleRevenue Multiple (number)uniquesPerMonthUniques p/mo (number)pageViewsPerMonthPage Views p/mo (number)siteAgeSite Age (text)ageInYearsAge (yrs) (text)businessLocationLocation (text)countryNameCountry (text)formattedAgeInYearsAge (text) (text)listingUrlListing URL (link)isVerifiedRevenueVerified Revenue (boolean)isVerifiedTrafficVerified Traffic (boolean)isManuallyVettedVetted (boolean)isEditorsChoiceEditor's Choice (boolean)isSuperSellerSuper Seller (boolean)isSponsoredSponsored (boolean)thumbnailUrlThumbnail (link)changeTypeChange Type (text)changedFieldsChanged Fields (array)firstSeenAtFirst Seen At (date)lastSeenAtLast Seen At (date)externalUrlWebsite (link)hostnameHostname (text)industryIndustry (text)businessModelBusiness Model (text)revenueSourcesRevenue Sources (array)appDownloadsPerMonthApp Downloads / Month (number)sellerLocationSeller Location (text)establishedAtEstablished At (date)startsAtStarts At (date)endsAtEnds At (date)buyItNowPriceBuy It Now Price (number)currentPriceCurrent Price (number)reserveMetReserve Met (boolean)postAuctionNegotiablePost-Auction Negotiable (boolean)turnkeyListingTurnkey (boolean)bidCountBids (number)timeLeftTime left (text)isBrokerSellerBroker seller (boolean)saleMethodTitleSale Method Title (text)summarySummary (text)descriptionDescription (text)badgesBadges (array)Example output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"id": "10000001",
"url": "https://flippa.com/10000001-sample-listing",
"title": "Established SaaS tool with recurring subscribers",
"summary": "Brief seller pitch text shown on the search card.",
"propertyName": "sample-saas-app.test",
"propertyType": "saas",
"siteType": "AiAppsAndTools",
"category": "Internet",
"monetization": "Subscription",
"primaryPlatform": null,
"saleMethod": "classified",
"saleMethodTitle": "Asking Price",
"status": "open",
"endAt": null,
"price": 42000,
"originalPrice": 48000,
"priceText": "USD $42,000",
"priceDropped": true,
"priceDroppedPercent": 12.5,
"currency": "USD",
"monthlyProfit": 2100,
"monthlyRevenue": 3400,
"annualProfit": 25200,
"annualRevenue": 40800,
"profitMultiple": 3.1,
"revenueMultiple": 1.9,
"uniquesPerMonth": 12400,
"pageViewsPerMonth": 45000,
"authorityScore": 28,
"siteAge": "4 years",
"ageInYears": "4 years",
"ageInMonths": 4,
"businessLocation": "ON, Canada",
"isVerifiedRevenue": true,
"isVerifiedTraffic": false,
"isManuallyVetted": false,
"isEditorsChoice": false,
"isSuperSeller": true,
"isBrokerSeller": false,
"isSponsored": false,
"bidCount": null,
"timeLeft": null,
"thumbnailUrl": "https://static.flippa.com/assets/sample-placeholder.svg",
"keyData": [
{
"label": "Type",
"value": "SaaS"
},
{
"label": "Site Age",
"value": "4 years"
}
],
"badges": [],
"allVerifications": [],
"verifications": [],
"countryName": "Canada",
"formattedAgeInYears": "4 years",
"listingUrl": "https://flippa.com/10000001-sample-listing",
"propertyTypeLabel": "SaaS",
"listedBy": "Marketplace · Listed by Owner",
"brokerName": null,
"brokerAvatarUrl": null,
"priceDetails": "Asking Price",
"integrations": [
"stripe"
],
"raw": {
"/* full search-card object */": "..."
}
}Ways to use this data
- Buyers and brokers: screen new listings against your own thresholds (multiples, verified revenue, minimum traffic) as soon as they list.
- Market and pricing research: build a historical dataset of asking prices, multiples and time-on-market across asset types to spot trends.
- Deal-flow monitoring: track a saved search on a schedule and get only what changed, so a pipeline stays current without re-reading the whole marketplace.
- Due diligence: pull the detail record for a shortlist of listing URLs into your own workflow or spreadsheet before making an offer.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Flippa Scraper return?
The documented output for Flippa Scraper includes id, url, title, property, category, type, site type and monetization. Availability of each field depends on the source page and the selected mode.
How much does Flippa Scraper cost?
It costs $1.70 per 1,000 results on the Apify Free plan and from $0.80 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
Can I monitor a search over time and only get new or changed listings?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated and reappeared listings, and unchanged ones are not billed. Turn on emitExpired if you also want listings that disappeared from the tracked search returned as tombstone rows, once a run proves it scanned the whole search.
Why are some fields null on a listing I scraped?
Two separate reasons. First, flippa.com's anonymous per-listing detail feed is not currently answering, so a handful of detail-only fields (externalUrl, hostname, businessModel, industry, revenueSources, appDownloadsPerMonth) come back empty everywhere until that changes. Second, if you pasted one listing's URL directly rather than finding it through a search, several search-card-only fields (status, verification and badge flags, bidCount, uniquesPerMonth) are not available on that page and also come back null; see "What a pasted single-listing URL returns" above.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.
