ScrapeSelect

Apify vs Browserless

  • 500,000 pages/mo
  • 20% JS
  • medium anti-bot
  • United States
  • 40 concurrent
  • monthly billing
  • Example workload — edit it below

Pricing checked Nov 13, 2026 · engine 0.1.0 · cheapest plan that fits, per product

ProductApify · Apify Platform

Scraping platform · Compute units

Browserless · Browserless Cloud (BaaS, BrowserQL, REST APIs)

Browser infrastructure · Browser time

Expected monthly costFor this workload
$739LowestOver budget

$523 – $999 range · $1.48 per 1K pages

Plan Scale

pricingusage-docs

$2,298Over budget

$1,637 – $3,364 range · $4.60 per 1K pages

Plan Scale

pricingpricing-bundle

Capabilities
JavaScript renderingYesusage-docsYespricing
Residential proxyYesresidential-docsYespricing
Country targetingYesresidential-docsYesproxies-docs
Sticky sessionYesresidential-docsYesproxies-docs
Self managed codeYespricingNot documented
City targetingNot documentedYesproxies-docs
Cookie persistenceNot documentedYespersist-docs
CAPTCHA handlingNot documentedYespricing
Limits
Max concurrent runsNot documented
Things to know
  • The subscription price is prepaid platform usage; compute, proxy and storage are drawn from it and extra usage is billed as overage on paid plans.
  • Compute is billed by RAM-time whether or not a page succeeds, so failed attempts cost money.
  • Pages per compute unit are not published as a price. Apify's own Website Content Crawler README reports roughly 0.8 CU per 1,000 pages over raw HTTP and 2-20 CU per 1,000 pages with a headless browser; the cost engine uses these as labelled assumptions.
  • Annual billing is 10% off; exact annual prices were not verifiable in the static page.
  • Store Actors can instead be priced per event/result by their developers; not modelled here.
  • Free-plan concurrency conflicts between the pricing page (5) and the limits doc (25).
  • Every page runs in a real browser, so even static pages cost at least one 30-second unit; there is no cheaper HTTP tier.
  • Browser time is billed whether or not the page succeeds; a successful CAPTCHA solve is billed even if the site then rejects the token.
  • Annual billing is 30% cheaper and adds concurrency (monthly concurrency is stored here).
  • Proxy traffic through a browser includes page subresources, so proxy units usually dominate cost for heavy pages.
EvidenceSources and check dates →Sources and check dates →

“Not documented” means the provider's pages don't say — not that the capability is missing. Estimates use list prices and exclude promotions and taxes; the provider's checkout is authoritative.

Products and workload

Defaults you don't set are listed as assumptions — never applied silently.

Products to compare (up to three)
Advanced (otherwise defaults are used)
JSON and API request

The same comparison from the API:

curl -X POST https://scrapeselect.com/api/v1/compare \
  -H 'content-type: application/json' \
  -d '{"products":["apify/platform","browserless/browser-cloud"],"workload":{"successful_pages_per_month":500000,"javascript_ratio":0.2,"anti_bot_level":"medium","target_country":"US","country_required":true,"peak_concurrency":40,"monthly_billing_only":true,"expected_success_rate":null,"average_page_size_kb":null,"average_browser_seconds":null}}'
{
  "products": [
    {
      "estimate": {
        "provider": "apify",
        "provider_name": "Apify",
        "product": "platform",
        "product_name": "Apify Platform",
        "category": "scraping_platform",
        "billing_model": "compute_unit",
        "architecture": "self_managed",
        "feasible": true,
        "low": {
          "plan_key": "scale",
          "plan_name": "Scale",
          "monthly_cost_usd": 522.89,
          "cost_per_1k_pages_usd": 1.0458
        },
        "expected": {
          "plan_key": "scale",
          "plan_name": "Scale",
          "monthly_cost_usd": 738.92,
          "cost_per_1k_pages_usd": 1.4778
        },
        "high": {
          "plan_key": "business",
          "plan_name": "Business",
          "monthly_cost_usd": 999,
          "cost_per_1k_pages_usd": 1.998
        },
        "rejected_plans": {
          "enterprise": "price not public",
          "free": "needs 812 more usd than the plan allows"
        },
        "sources": [
          {
            "key": "pricing",
            "url": "https://apify.com/pricing",
            "title": "Apify pricing",
            "observed_at": "2026-11-13T06:10:04.664359Z",
            "excerpts": [
              "Starter $19 / month + pay as you go $19 to spend in Apify Store or on your own Actors $0.2 per compute unit",
              "Compute units (CU) 1 GB of RAM/hour $0.2 / CU $0.2 / CU $0.16 / CU $0.13 / CU Custom Actor RAM 16 GB 64 GB 256 GB 512 GB Custom Max concurrent runs 5 32 128 256 Custom",
              "Residential proxies $8 / GB $8 / GB $7.5 / GB $7 / GB Custom",
              "Unblocker $1.5 / 1,000 requests $1.5 / 1,000 requests $1.25 / 1,000 requests $1 / 1,000 requests",
              "Bill monthly -10% Bill annually",
              "If you're a paying user, you can continue using the platform and will be charged for overage until you reach the usage limit configured in the billing. If you're on the free plan, you'll be blocked until the next billing cycle.",
              "If you don't consume all your prepaid usage, it disappears at the end of the billing cycle."
            ],
            "fact_type": "official_claim",
            "freshness": "fresh"
          },
          {
            "key": "usage-docs",
            "url": "https://docs.apify.com/platform/actors/running/usage-and-resources",
            "title": "Usage and resources",
            "observed_at": "2026-11-13T06:10:04.664359Z",
            "excerpts": [
              "running an Actor with 1024MB of allocated memory for 1 hour will consume 1 CU",
              "The minimum granularity is a second."
            ],
            "fact_type": "official_claim",
            "freshness": "fresh"
          }
        ]
      },
      "features": [
        {
          "key": "javascript-rendering",
          "label": "JavaScript rendering",
          "value": true,
          "notes": "Via browser-based Actors.",
          "source": "usage-docs"
        },
        {
          "key": "residential-proxy",
          "label": "Residential proxy",
          "value": true,
          "notes": null,
          "source": "residential-docs"
        },
        {
          "key": "country-targeting",
          "label": "Country targeting",
          "value": true,
          "notes": null,
          "source": "residential-docs"
        },
        {
          "key": "sticky-session",
          "label": "Sticky session",
          "value": true,
          "notes": null,
          "source": "residential-docs"
        },
        {
          "key": "self-managed-code",
          "label": "Self managed code",
          "value": true,
          "notes": "You build or pick an Actor; anti-bot handling is your responsibility.",
          "source": "pricing"
        }
      ],
      "limits": [
        {
          "key": "max-concurrent-runs",
          "value": 5,
          "unit": null,
          "plan": "free",
          "notes": "Concurrent Actor runs; one run can crawl many pages in parallel.",
          "source": "pricing"
        },
        {
          "key": "max-concurrent-runs",
          "value": 32,
          "unit": null,
          "plan": "starter",
          "notes": null,
          "source": "pricing"
        },
        {
          "key": "max-concurrent-runs",
          "value": 128,
          "unit": null,
          "plan": "scale",
          "notes": null,
          "source": "pricing"
        },
        {
          "key": "max-concurrent-runs",
          "value": 256,
          "unit": null,
          "plan": "business",
          "notes": null,
          "source": "pricing"
        }
      ],
      "notes": [
        "The subscription price is prepaid platform usage; compute, proxy and storage are drawn from it and extra usage is billed as overage on paid plans.",
        "Compute is billed by RAM-time whether or not a page succeeds, so failed attempts cost money.",
        "Pages per compute unit are not published as a price. Apify's own Website Content Crawler README reports roughly 0.8 CU per 1,000 pages over raw HTTP and 2-20 CU per 1,000 pages with a headless browser; the cost engine uses these as labelled assumptions.",
        "Annual billing is 10% off; exact annual prices were not verifiable in the static page.",
        "Store Actors can instead be priced per event/result by their developers; not modelled here.",
        "Free-plan concurrency conflicts between the pricing page (5) and the limits doc (25)."
      ],
      "url": "/products/apify/platform"
    },
    {
      "estimate": {
        "provider": "browserless",
        "provider_name": "Browserless",
        "product": "browser-cloud",
        "product_name": "Browserless Cloud (BaaS, BrowserQL, REST APIs)",
        "category": "browser_api",
        "billing_model": "browser_time",
        "architecture": "self_managed",
        "feasible": true,
        "low": {
          "plan_key": "scale",
          "plan_name": "Scale",
          "monthly_cost_usd": 1636.6,
          "cost_per_1k_pages_usd": 3.2732
        },
        "expected": {
          "plan_key": "scale",
          "plan_name": "Scale",
          "monthly_cost_usd": 2298.39,
          "cost_per_1k_pages_usd": 4.5968
        },
        "high": {
          "plan_key": "scale",
          "plan_name": "Scale",
          "monthly_cost_usd": 3363.64,
          "cost_per_1k_pages_usd": 6.7273
        },
        "rejected_plans": {
          "free": "concurrency 2 < 40",
          "prototyping": "concurrency 5 < 40",
          "starter": "concurrency 30 < 40",
          "enterprise": "price not public"
        },
        "sources": [
          {
            "key": "pricing",
            "url": "https://www.browserless.io/pricing",
            "title": "Browserless pricing",
            "observed_at": "2026-11-13T06:10:04.664359Z",
            "excerpts": [
              "Prototyping $25 /month billed annually 10 max concurrent browsers + 5 … 20k units per month 15 min. max session time $0.0020 per unit overages",
              "Starter $140 /month billed annually 40 max concurrent browsers + 10 … 180k units per month 30 min. max session time $0.0017 per unit overages",
              "Scale $350 /month billed annually 100 max concurrent browsers + 20 … 500k units per month 60 min. max session time $0.0015 per unit overages",
              "A 'Unit' is a block of browser time of up to 30 seconds per browser connection… Session-reconnects count as new browser connections and incur a fresh Unit charge.",
              "6 Units per MB for Residential Proxy 2 Units per MB for Datacenter Proxy 10 Units per successful Captcha solve",
              "Annual billing saves 30% and includes additional concurrency on the Prototyping, Starter, and Scale plans."
            ],
            "fact_type": "official_claim",
            "freshness": "fresh"
          },
          {
            "key": "pricing-bundle",
            "url": "https://www.browserless.io/_next/static/chunks/pages/pricing-b79c19ab9507c815.js",
            "title": "Browserless pricing page data (monthly toggle)",
            "observed_at": "2026-11-13T06:10:04.664359Z",
            "excerpts": [
              "prototyping:{name:\"Prototyping\",calls:2e4,monthlyConcurrency:5,yearlyConcurrency:10,monthlyPrice:35,yearlyPrice:25",
              "starter:{name:\"Starter\",calls:18e4,monthlyConcurrency:30,yearlyConcurrency:40,monthlyPrice:200,yearlyPrice:140",
              "scale:{name:\"Scale\",calls:5e5,monthlyConcurrency:80,yearlyConcurrency:100,monthlyPrice:500,yearlyPrice:350"
            ],
            "fact_type": "official_claim",
            "freshness": "fresh"
          }
        ]
      },
      "features": [
        {
          "key": "javascript-rendering",
          "label": "JavaScript rendering",
          "value": true,
          "notes": null,
          "source": "pricing"
        },
        {
          "key": "residential-proxy",
          "label": "Residential proxy",
          "value": true,
          "notes": null,
          "source": "pricing"
        },
        {
          "key": "country-targeting",
          "label": "Country targeting",
          "value": true,
          "notes": null,
          "source": "proxies-docs"
        },
        {
          "key": "city-targeting",
          "label": "City targeting",
          "value": true,
          "notes": "Scale plan and above.",
          "source": "proxies-docs"
        },
        {
          "key": "sticky-session",
          "label": "Sticky session",
          "value": true,
          "notes": null,
          "source": "proxies-docs"
        },
        {
          "key": "cookie-persistence",
          "label": "Cookie persistence",
          "value": true,
          "notes": null,
          "source": "persist-docs"
        },
        {
          "key": "captcha-handling",
          "label": "CAPTCHA handling",
          "value": true,
          "notes": null,
          "source": "pricing"
        }
      ],
      "limits": [],
      "notes": [
        "Every page runs in a real browser, so even static pages cost at least one 30-second unit; there is no cheaper HTTP tier.",
        "Browser time is billed whether or not the page succeeds; a successful CAPTCHA solve is billed even if the site then rejects the token.",
        "Annual billing is 30% cheaper and adds concurrency (monthly concurrency is stored here).",
        "Proxy traffic through a browser includes page subresources, so proxy units usually dominate cost for heavy pages."
      ],
      "url": "/products/browserless/browser-cloud"
    }
  ],
  "assumptions": [
    {
      "key": "success_rate",
      "label": "Success rate",
      "value": "97% / 93% / 88%",
      "origin": "default",
      "note": "Low / expected / high scenario for medium anti-bot targets. Only changes cost where failed attempts are billed."
    },
    {
      "key": "protected_share",
      "label": "Pages needing premium proxies",
      "value": "20% / 30% / 45%",
      "origin": "editorial",
      "note": "Share of pages behind anti-bot protection for medium targets."
    },
    {
      "key": "difficulty_tier",
      "label": "Website difficulty tier",
      "value": "2 / 3 / 4",
      "origin": "editorial",
      "note": "Only used by providers that price by site tier (e.g. Zyte); their own estimator gives the real tier."
    },
    {
      "key": "page_size_kb",
      "label": "Average page size",
      "value": "300 KB",
      "origin": "default",
      "note": "Drives cost for traffic-billed products and proxy traffic."
    },
    {
      "key": "browser_traffic_multiplier",
      "label": "Browser page traffic",
      "value": "4x the HTML size",
      "origin": "editorial",
      "note": "Rendered pages also load scripts, styles and images."
    },
    {
      "key": "browser_seconds",
      "label": "Browser time per rendered page",
      "value": "10 s",
      "origin": "default",
      "note": null
    },
    {
      "key": "compute_units",
      "label": "Compute per 1,000 pages",
      "value": "0.8 CU (HTTP), 6 CU (browser)",
      "origin": "public_observation",
      "note": "From Apify's Website Content Crawler README (0.8 CU HTTP, 2-20 CU browser)."
    },
    {
      "key": "geotargeting",
      "label": "Country targeting",
      "value": "US (required)",
      "origin": "user",
      "note": "Some providers only allow country targeting with premium proxies."
    }
  ],
  "engine_version": "0.1.0",
  "meta": {
    "data_checked_at": "2026-11-13T06:10:04.664359Z",
    "freshness": "fresh",
    "schema_version": "1.0"
  }
}