Acquire.com Startup Marketplace Scraper avatar

Acquire.com Startup Marketplace Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Acquire.com Startup Marketplace Scraper

Acquire.com Startup Marketplace Scraper

Scrape public startup acquisition listings from Acquire.com with titles, asking price, annual revenue/profit, category, and descriptions. HTTP-only via the public sitemap + SSR listing pages; no login required.

Pricing

from $1.00 / 1,000 results

Rating

5.0

(6)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

8

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

Scrape public startup acquisition listings from Acquire.com — headline, category, asking price, annual revenue, annual profit, description, derived revenue / profit multiples, and canonical URL. HTTP-only; no login, no cookies, no browser.

What this scrapes

Acquire's marketplace has two surfaces:

SurfaceURL shapeAuthScrapable?
Public SEO listing page/startup/<slug>NoYes
Internal SPA marketplace (SPA with filters)/startups/<id> / /startups?categories=...Yes (login required)No

This actor targets the public listing pages — the same URLs Acquire exposes to Google via robots.txt and sitemap.xml. The auth-gated SPA variant (asking-price history, customers, churn, GA analytics, tech stack, etc.) is not accessible without an authenticated Acquire account and is intentionally out of scope.

Output (per listing)

FieldAlways present?Description
typeYes"acquire_listing"
urlYesCanonical /startup/<slug> URL
idYes10-character short ID from the slug
scrapedAtYesISO-8601 UTC timestamp
listingHeadlineYesListing title (e.g. "Turnkey Calendly Alternative — 500+ Users …")
listingTypeWhen category knownAlways "startup_acquisition"
categoryWhen presentSaaS, Ecommerce, Content, Services, Mobile Apps, etc.
askingPriceWhen presentUSD integer
priceCurrencyWhen presentISO currency from JSON-LD offers.priceCurrency (e.g. "USD")
revenueAnnualWhen presentUSD integer
profitAnnualWhen presentUSD integer
revenueMultipleWhen derivableaskingPrice / revenueAnnual
profitMultipleWhen derivableaskingPrice / profitAnnual
aboutWhen presentFull description (long form, with bullet points)
statusWhen known"available" or "sold"
imageWhen presentPreview image URL from JSON-LD image / og:image
brandWhen presentBrand name from JSON-LD brand.name (typically "Acquire.com")
sourceWhen presentSite name from og:site_name (typically "Acquire.com")
canonicalUrlWhen presentCanonical URL from JSON-LD url / <link rel="canonical"> / og:url
pageTypeWhen presentOpen Graph og:type (typically "website")

Fields are omitted rather than emitted as null — if you see a key, the value is real.

If zero listings match your filters, a single acquire_blocked sentinel row is emitted so runs always exit 0.

Input

FieldTypeDescription
urlsstring[]Direct /startup/<slug> URLs. Overrides sitemap / filter search.
categoriesstring[]Filter by category (e.g. SaaS, Ecommerce).
minPriceintegerMinimum asking price (USD).
maxPriceintegerMaximum asking price (USD).
minAnnualRecurringRevenueintegerMinimum annual revenue (USD).
locationsstring[]Location substring filter (case-insensitive).
verifiedBusinessbooleanOnly return listings whose copy mentions "verified". Default false.
sortByenumnewest (default), oldest, price-low, price-high. Based on sitemap lastmod.
maxItemsinteger1 – 500. Default 3.
proxyConfigurationobjectApify proxy. Default Residential US.

How it works

  1. Fetch the public sitemap at https://app.acquire.com/sitemap.xml (≈1,300 listing URLs with <lastmod>).
  2. Sort entries by lastmod (newest / oldest) or over-fetch + sort by price (for price-low / price-high).
  3. For each /startup/<slug> URL, fetch the server-rendered page via curl_cffi with Chrome-131 TLS impersonation. Proxy rotates per retry.
  4. Parse the application/ld+json Product schema + the hidden #ssr-content block (<h1>, <p>, <dl> with Category / Asking Price / Annual Revenue / Annual Profit) + meta tags (article:section, og:description).
  5. Apply post-filters (category, price bounds, annual revenue, locations, verified).
  6. Emit up to maxItems; emit a sentinel on zero matches.

FAQ

Do I need to log into Acquire? No — we only scrape the public pages exposed to search engines.

Can you scrape churn, customer count, tech stack, GA analytics, team size? No — those live behind the authenticated SPA (/startups/<id>) and are not part of the public SSR payload. We only emit fields we can populate.

Why does /startups/<id> not work? The app's internal route is JS-rendered and redirects unauthenticated visitors to /signin. The public /startup/<slug> route (note the singular) is the one Acquire ships for crawlers.

What counts as "verified"? The public SSR pages don't expose a structured verified flag. When verifiedBusiness = true we keep listings whose headline or description literally mentions "verified".

Why does sortBy use lastmod? The sitemap is the only cross-category public index we have — lastmod is the closest proxy to listing freshness. Price sorts over-fetch and re-sort in-process.

Reliability notes

  • Residential US proxy is the default — Acquire's origin is polite to datacenter IPs too, but residential keeps long-running daily tests consistent.
  • Per-retry proxy rotation (fresh session_id each attempt) to shake off any transient 403 / rate limit.
  • Sentinel emitted on zero pushes so daily Apify test runs always exit 0.