{
  "generatedAt": "2026-09-14",
  "license": "CC BY 4.0, attribute scrapeprices.com",
  "methodology": "https://scrapeprices.com/methodology",
  "volumesPerMonth": [
    1000,
    10000,
    100000,
    1000000
  ],
  "verticals": [
    "plain",
    "js",
    "residential",
    "antibot",
    "markdown"
  ],
  "providers": [
    {
      "slug": "anyapi",
      "name": "AnyAPI",
      "homepage": "https://getanyapi.com",
      "pricingUrl": "https://getanyapi.com/pricing",
      "docsUrl": "https://getanyapi.com/api/web/scrape",
      "logoDomain": "getanyapi.com",
      "hq": "US",
      "founded": 2025,
      "billing": {
        "model": "payg",
        "freeTier": {
          "calls": 150,
          "period": "once",
          "creditCardRequired": false,
          "note": "The Web Scraping API page says \"Get ~150 free requests\" and no card is needed to start. The grant is a small USD starting balance drawn down at each endpoint's printed rate, so at web.scrape's $0.70 per 1,000 it is about 142 pages."
        },
        "minimumMonthlyUsd": 0,
        "creditsExpire": false,
        "expiryNote": "Wallet balance is USD and does not expire; there are no subscriptions and no monthly minimum.",
        "annualDiscountPct": 0,
        "prepaidOnly": true,
        "payAsYouGoAvailable": true
      },
      "unitCost": {
        "basis": "request",
        "plain": 1,
        "js": 1,
        "residential": null,
        "antibot": null,
        "markdown": 1,
        "note": "One flat USD price per request, $0.0007 ($0.70 per 1,000), whatever the page turns out to need. There are no credits and no multiplier: the same call returns Markdown and HTML, waits up to 15 seconds for JavaScript to render, and can use a mobile viewport, all at the same price, so plain, rendered and Markdown are all 1. Residential and anti-bot are null because no residential pool and no anti-bot tier is published or sold as a separate mode."
      },
      "plans": [
        {
          "name": "Pay as you go",
          "monthlyUsd": 0,
          "includedUnits": 0,
          "overagePerUnitUsd": 0.0007,
          "hardCap": false,
          "delivery": "live",
          "note": "One USD wallet, topped up in dollars. No plan, no monthly fee, no seat, no expiry, and a failed request costs $0."
        }
      ],
      "payAsYouGoTiers": [
        {
          "minUnits": 0,
          "maxUnits": null,
          "perUnitUsd": 0.0007
        }
      ],
      "features": {
        "engines": [
          "api"
        ],
        "verticals": [
          "plain",
          "js",
          "markdown"
        ],
        "kind": "reseller",
        "jsRendering": true,
        "residentialProxy": null,
        "antiBotBypass": null,
        "markdownOutput": true,
        "failedRequestsFree": true,
        "structuredParsers": true,
        "proxyPortMode": false,
        "asyncBatch": false,
        "geoTargeting": false,
        "sla": false
      },
      "performance": {
        "claimedAvgLatencySeconds": 2.3,
        "claimedSuccessRatePct": 94.7,
        "source": "https://getanyapi.com/api/web"
      },
      "sources": [
        {
          "url": "https://getanyapi.com/api/web/scrape",
          "capturedAt": "2026-09-14",
          "note": "$0.70 /1k req flat on the cheapest source; the four sources behind the endpoint priced at $0.70, $1.00, $1.00 and $1.50 per 1,000; full input list including waitFor, mobile, onlyMainContent, includeTags and formats (markdown, html)"
        },
        {
          "url": "https://getanyapi.com/api/web",
          "capturedAt": "2026-09-14",
          "note": "\"from $0.70 per 1,000 requests, with no subscription and no monthly minimum\", \"a failed request costs $0\", \"Get ~150 free requests\", 4 endpoints and 5 sources, and the 30-day measurements: 94.7% of calls succeeded, 2.3s weighted median, explicitly \"not a published service-level target\""
        },
        {
          "url": "https://getanyapi.com/pricing",
          "capturedAt": "2026-09-14",
          "note": "catalog page: Web Scraping listed from $0.70 /1k req across 4 endpoints and 5 providers; \"Priced in dollars per request, no subscriptions\""
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "Runs this site. The only seller here with no multiplier at all: one flat $0.70 per 1,000 whatever the page needs, so a JavaScript-heavy page and a static one cost exactly the same, there is no plan floor, the balance never expires and a failed fetch costs nothing. The catch is the other half of the market it does not sell: no residential proxy mode, no stealth or anti-bot tier, no country targeting, no proxy port and no batch endpoint, so a page behind Cloudflare is not something it offers a priced route to. It is a normalizing reseller that routes each call across five upstream sources and fails over automatically, and it publishes measured uptime rather than promising an SLA.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 0.7,
            "per1kUsd": 0.7,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 7,
            "per1kUsd": 0.7,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 70,
            "per1kUsd": 0.7,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 700,
            "per1kUsd": 0.7,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 0.7,
            "per1kUsd": 0.7,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 7,
            "per1kUsd": 0.7,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 70,
            "per1kUsd": 0.7,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 700,
            "per1kUsd": 0.7,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 0.7,
            "per1kUsd": 0.7,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 7,
            "per1kUsd": 0.7,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 70,
            "per1kUsd": 0.7,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 700,
            "per1kUsd": 0.7,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ]
      }
    },
    {
      "slug": "apify-website-content-crawler",
      "name": "Apify Website Content Crawler",
      "homepage": "https://apify.com/apify/website-content-crawler",
      "pricingUrl": "https://apify.com/apify/website-content-crawler/pricing",
      "docsUrl": "https://apify.com/apify/website-content-crawler/api",
      "logoDomain": "apify.com",
      "hq": "CZ",
      "founded": 2015,
      "billing": {
        "model": "hybrid",
        "freeTier": {
          "calls": null,
          "period": "month",
          "creditCardRequired": false,
          "note": "The Apify Free plan gives $5 of platform usage a month with no credit card, and this Actor is free to use on top of it, so the $5 is the whole budget. That is not a page count: the Actor bills compute units and proxy traffic, not pages, so what $5 buys depends on how heavy the site is. Recorded as null rather than an invented figure."
        },
        "minimumMonthlyUsd": 0,
        "creditsExpire": true,
        "expiryNote": "\"Unused usage credits are not rolled over to the next billing cycle, and they expire at the end of the billing cycle.\"",
        "annualDiscountPct": 10,
        "prepaidOnly": false,
        "payAsYouGoAvailable": true
      },
      "unitCost": {
        "basis": "request",
        "plain": null,
        "js": null,
        "residential": null,
        "antibot": null,
        "markdown": null,
        "note": "Every vertical is null, and the reason is the more interesting half of this record. Unlike most Apify Store Actors, this one carries no per-result and no per-event price of its own: the store API reports its pricing model as FREE and the listing says only \"Pay per usage\". Its Pricing tab is therefore the Apify platform rate card, and none of those lines is a page. Compute is $0.20 per compute unit (1 CU = 1 GB of RAM for 1 hour), falling to $0.16 on Scale and $0.13 on Business. Residential proxy traffic is $8.00/GB, $7.50 on Scale, $7.00 on Business. Datacenter proxies come as included IP counts (5 Free, 30 Starter, 200 Scale, 500 Business) and then $1.00, $0.80 or $0.60 per extra IP. Two lines on that table are per request, but neither is this crawler: Google SERP proxies at $2.50 per 1,000 SERPs and the Unblocker at $1.50 per 1,000 requests ($1.25 Scale, $1.00 Business). Turning CPU hours and gigabytes into a per-page rate would mean inventing both an average page size and an average render time, so the cells stay blank. The crawler itself offers adaptive switching, a headless Firefox/Playwright browser and raw HTTP, and returns Markdown, plain text or full HTML, all at the same platform rates."
      },
      "plans": [
        {
          "name": "Free",
          "monthlyUsd": 0,
          "includedUnits": 0,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "queue",
          "note": "$5 of platform usage a month, no credit card. Compute $0.20/CU, Actor RAM up to 16 GB, 5 concurrent runs, residential proxy $8.00/GB, 5 datacenter IPs. includedUnits is 0 because Apify includes a dollar allowance, not a number of pages, and publishes no page figure for this Actor."
        },
        {
          "name": "Starter",
          "monthlyUsd": 19,
          "includedUnits": 0,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "queue",
          "note": "$19/month of included platform usage, $17/month billed annually. Bronze Store discount tier, but this Actor has no Store price to discount. Compute still $0.20/CU, RAM up to 64 GB, 32 concurrent runs, residential $8.00/GB, 30 datacenter IPs then $1.00 each. includedUnits is 0 for the same reason as Free."
        },
        {
          "name": "Scale",
          "monthlyUsd": 199,
          "includedUnits": 0,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "queue",
          "note": "$199/month of included platform usage, $179/month billed annually. Silver tier: compute drops to $0.16/CU, RAM to 256 GB, 128 concurrent runs, residential $7.50/GB, 200 datacenter IPs then $0.80 each, Unblocker $1.25 per 1,000 requests."
        },
        {
          "name": "Business",
          "monthlyUsd": 999,
          "includedUnits": 0,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "queue",
          "note": "$999/month of included platform usage, $899/month billed annually. Gold tier: compute $0.13/CU, RAM to 512 GB, 256 concurrent runs, residential $7.00/GB, 500 datacenter IPs then $0.60 each, Unblocker $1.00 per 1,000 requests."
        },
        {
          "name": "Enterprise",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "Apify lists no price above Business, and the Actor's own Pricing tab stops at the Gold column. No list price."
        }
      ],
      "features": {
        "engines": [
          "api"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "markdown"
        ],
        "kind": "marketplace",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": null,
        "markdownOutput": true,
        "failedRequestsFree": false,
        "structuredParsers": false,
        "proxyPortMode": false,
        "asyncBatch": true,
        "geoTargeting": true,
        "sla": null
      },
      "sources": [
        {
          "url": "https://apify.com/apify/website-content-crawler",
          "capturedAt": "2026-09-14",
          "note": "store listing: \"Pricing: Pay per usage\", Apify as developer and maintainer, 157K total users and 11K monthly active, 4.6 from 233 reviews, and the description \"supports rich formatting using Markdown, cleans the HTML, downloads files\""
        },
        {
          "url": "https://apify.com/apify/website-content-crawler/pricing",
          "capturedAt": "2026-09-14",
          "note": "the Actor's Pricing tab, which prints the platform rate card per plan column: compute units $0.20 / $0.20 / $0.16 / $0.13 per CU, Actor RAM 16 / 64 / 256 / 512 GB, max concurrent runs 5 / 32 / 128 / 256, residential proxies $8.00 / $8.00 / $7.50 / $7.00 per GB, datacenter proxies 5 / 30 / 200 / 500 IPs included then $1.00 / $0.80 / $0.60 per IP, Google SERP proxies $2.50 / $2.50 / $2.00 / $1.70 per 1,000 SERPs, Unblocker $1.50 / $1.50 / $1.25 / $1.00 per 1,000 requests. No per-result or per-event line for the Actor itself"
        },
        {
          "url": "https://api.apify.com/v2/store?search=website%20content%20crawler",
          "capturedAt": "2026-09-14",
          "note": "unauthenticated Apify store API. apify/website-content-crawler returns currentPricingInfo {\"pricingModel\": \"FREE\"}, confirming the Actor charges nothing of its own. Rival crawlers in the same search do carry prices, for example parseforge/website-content-crawler at $0.025 per result on the Free tier and 6sigmag/fast-website-content-crawler at $0.003 per result plus $0.0015 per Actor start"
        },
        {
          "url": "https://api.apify.com/v2/acts/apify~website-content-crawler",
          "capturedAt": "2026-09-14",
          "note": "pricingInfos is null; defaultRunOptions memoryMbytes 8192 and timeoutSecs 360000; input schema fields crawlerType (adaptive switching, headless browser Firefox+Playwright, raw HTTP) and proxyConfiguration (\"Enables loading the websites from IP addresses in specific geographies and to circumvent blocking\"); 30-day public run stats 3,099,133 succeeded of 3,207,115, with 72,997 timed out and 23,282 failed"
        },
        {
          "url": "https://apify.com/pricing",
          "capturedAt": "2026-09-14",
          "note": "platform plans Free $0 with $5 usage, Starter $19 ($17 annual), Scale $199 ($179), Business $999 ($899); \"Save 10% on paid plans when billed annually\"; \"Unused usage credits are not rolled over to the next billing cycle, and they expire at the end of the billing cycle\""
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "The most-used Markdown crawler on Apify, and a genuinely free Actor: the store API reports its pricing model as FREE, so unlike most Store listings there is no per-result or per-event fee at all. That does not make it free to run. Everything it costs comes from the platform underneath, and the platform does not sell pages: it sells compute units at $0.20 an hour-gigabyte and residential traffic at $8 a gigabyte, drawn down against a plan allowance that is a dollar figure, not a call count. So the floor is real even though the Actor is free: $0 buys you $5 of usage a month, and the next step up is $19, then $199, then $999, and each step mainly buys a cheaper compute rate ($0.16, then $0.13) plus more RAM and concurrency. Two lines on its own price table are quoted per request, the Unblocker at $1.50 per 1,000 and Google SERP proxies at $2.50 per 1,000, but neither is what this crawler charges for a page. Because nothing here is priced per page, the whole row is blank rather than guessed, and that is the honest answer for a marketplace Actor billed in CPU time. Nowhere does Apify promise that only successful responses are billed, which is what you would expect from a meter that counts CPU time rather than results. Worth knowing before you budget: in the last 30 days of public runs, 73,000 of 3.2 million ended TIMED-OUT and another 23,000 FAILED.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ]
      }
    },
    {
      "slug": "brightdata-web-unlocker",
      "name": "Bright Data Web Unlocker",
      "homepage": "https://brightdata.com",
      "pricingUrl": "https://brightdata.com/pricing/web-unlocker",
      "docsUrl": "https://docs.brightdata.com/products/web-unlocker/introduction",
      "logoDomain": "brightdata.com",
      "hq": "IL",
      "billing": {
        "model": "hybrid",
        "freeTier": {
          "calls": 5000,
          "period": "month",
          "creditCardRequired": false,
          "note": "The pricing card reads \"Free Tier - 5K requests\", \"5K requests per month\", \"No credit card required\". The billing docs say the 5,000 free credits are shared across Web Unlocker API, SERP API, Web Scraper API, Scraper Studio and Browser API, and that Web Unlocker \"cost[s] one credit per request\". The page also runs a deposit promotion: \"Sign-up now and we'll match your first deposit dollar for dollar, up to $500!\""
        },
        "minimumMonthlyUsd": 0,
        "creditsExpire": true,
        "expiryNote": "The monthly free credits expire: \"Do free credits roll over? No. Credits reset to 5,000 on the first of each month. Unused credits are forfeited.\" A deposited prepaid balance is treated differently - the billing docs say a balance is not lost during an inactive month, it is only topped back up to the minimum monthly commitment on the 1st.",
        "annualDiscountPct": null,
        "prepaidOnly": false,
        "payAsYouGoAvailable": true
      },
      "unitCost": {
        "basis": "request",
        "plain": 1,
        "js": 1,
        "residential": 1,
        "antibot": 1,
        "markdown": 1,
        "note": "One request is one credit, whatever the page needed. Bright Data's free-tier billing doc states Web Unlocker requests \"cost one credit per request\", and the product page sells the whole stack inside that one price: \"it rotates through 400M+ residential IPs, mimics real browser fingerprints, renders JavaScript, and solves the CAPTCHA, returning clean HTML, JSON, Markdown, or a screenshot\". So plain, rendered, residential, anti-bot and Markdown are all 1: there is no published multiplier for any of them. Two published exceptions, both outside the standard price: enabling the Custom Web Unlocker API features (custom headers and cookies) changes the billing rule rather than the rate - \"you'll be billed for 100% of the requests (both successful and failed)\" - and the old Premium Domains surcharge, which carried a higher unpublished rate, was \"Deprecated 20-May-2026\" and is not available to customers who signed up after that date."
      },
      "plans": [
        {
          "name": "Free Tier",
          "monthlyUsd": 0,
          "includedUnits": 5000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "5K requests per month, no credit card required, expert support."
        },
        {
          "name": "Pay as you go",
          "monthlyUsd": 0,
          "includedUnits": 0,
          "overagePerUnitUsd": 0.0015,
          "hardCap": false,
          "delivery": "live",
          "note": "$1.5 per 1,000 requests with no commitment. Card reads \"Pay only for success\", \"Set monthly spend limits\", \"Unlimited concurrency\"."
        },
        {
          "name": "Scale (383K)",
          "monthlyUsd": 499,
          "includedUnits": 383000,
          "overagePerUnitUsd": 0.0013,
          "hardCap": false,
          "delivery": "live",
          "note": "First position of the Scale slider: \"383K requests included\", \"$1.3/1K additional requests\", cancel anytime. The slider's three positions are carried in the pricing page's data-tiers attribute."
        },
        {
          "name": "Scale (908K)",
          "monthlyUsd": 999,
          "includedUnits": 908000,
          "overagePerUnitUsd": 0.0011,
          "hardCap": false,
          "delivery": "live",
          "note": "Second position of the Scale slider: 908K requests included, $1.1 per 1,000 additional requests."
        },
        {
          "name": "Scale (2M)",
          "monthlyUsd": 1999,
          "includedUnits": 2000000,
          "overagePerUnitUsd": 0.001,
          "hardCap": false,
          "delivery": "live",
          "note": "Third and highest published position of the Scale slider: 2M requests included, $1 per 1,000 additional requests. This matches the site menu's \"Unlocker API - FREE TIER - Starts from $1/1k req\"."
        },
        {
          "name": "Enterprise",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "\"Custom\" - \"Talk to sales\". Volume discounts, account manager, premium SLA, priority support, SSO. No list price is published."
        }
      ],
      "features": {
        "engines": [
          "api",
          "proxy"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot",
          "markdown"
        ],
        "kind": "network",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": true,
        "failedRequestsFree": true,
        "structuredParsers": false,
        "proxyPortMode": true,
        "asyncBatch": true,
        "geoTargeting": true,
        "sla": null
      },
      "performance": {
        "claimedAvgLatencySeconds": null,
        "claimedSuccessRatePct": 98,
        "source": "https://brightdata.com/products/web-unlocker"
      },
      "sources": [
        {
          "url": "https://brightdata.com/pricing/web-unlocker",
          "capturedAt": "2026-09-14",
          "note": "Free Tier (5K requests per month, no credit card required), Pay as you go ($1.5/1K requests, \"Pay only for success\"), Enterprise (\"Custom\", \"Talk to sales\", Premium SLA), and the three Scale slider positions carried in the page's data-tiers attribute: $499/383K/$1.3, $999/908K/$1.1, $1999/2M/$1.0. Also the currency footnote: \"Actual charges will be calculated and billed in USD\"."
        },
        {
          "url": "https://brightdata.com/products/web-unlocker",
          "capturedAt": "2026-09-14",
          "note": "\"Pay only for successful delivery\", \"Built-in JavaScript rendering\", \"With a 98% success rate\", \"it rotates through 400M+ residential IPs, mimics real browser fingerprints, renders JavaScript, and solves the CAPTCHA, returning clean HTML, JSON, Markdown, or a screenshot\", \"Worldwide Geo-Coverage\", \"Batch & scheduled collection\", \"Job management APIs\", \"Data parsing (JSON or CSV)\"."
        },
        {
          "url": "https://docs.brightdata.com/products/web-unlocker/introduction",
          "capturedAt": "2026-09-14",
          "note": "\"You pay only for successful requests\" to the target domain; CAPTCHA solving and proxy selection are part of the single API call; both a REST endpoint and proxy-style access through the super proxy are offered; the Unlocker API cannot drive a browser (that is the separate Browser API)."
        },
        {
          "url": "https://docs.brightdata.com/products/web-unlocker/features",
          "capturedAt": "2026-09-14",
          "note": "data_format markdown (\"Web Unlocker is able to live convert your pages from HTML to markdown\"), screenshots, country targeting, mobile user agent, the render parameter, and the Custom Web Unlocker API billing rule: \"when any of the above Custom Web Unlocker API features are enabled, you'll be billed for 100% of the requests (both successful and failed)\"."
        },
        {
          "url": "https://docs.brightdata.com/products/web-unlocker/configuration",
          "capturedAt": "2026-09-14",
          "note": "\"How to enable asynchronous requests\", usage limits, and \"Web Unlocker API Premium Domains Deprecated 20-May-2026 - customers signed up with Bright Data after 20-May-2026 will not have this configuration option\"."
        },
        {
          "url": "https://docs.brightdata.com/general/account/billing-and-pricing/free-tier",
          "capturedAt": "2026-09-14",
          "note": "5,000 free credits per month across Web Unlocker API, SERP API, Web Scraper API, Scraper Studio and Browser API; Web Unlocker requests \"cost one credit per request\"; \"Credits reset to 5,000 on the first of each month. Unused credits are forfeited.\""
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "The one seller here that charges the same for an easy page and a Cloudflare-walled one: $1.50 per 1,000 successful requests pay-as-you-go, with residential IPs, browser rendering, CAPTCHA solving, country targeting and Markdown output all inside that single price and no multiplier anywhere. Failures are not billed - \"You pay only for successful requests\" - which matters more on hard targets than the sticker price. The catches are at the edges: turning on custom headers or cookies switches you to the Custom Web Unlocker API, where \"you'll be billed for 100% of the requests (both successful and failed)\"; the rate only falls below $1.30/1k if you commit $499 a month; and the free 5,000 monthly credits are forfeited if unused. No uptime figure is published - an SLA appears only as \"Premium SLA\" on the quote-only Enterprise plan - and ready-made per-site parsers are a different Bright Data product (Web Scraper API), not this one.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 1.5,
            "per1kUsd": 1.5,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 15,
            "per1kUsd": 1.5,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 150,
            "per1kUsd": 1.5,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 1100.2,
            "per1kUsd": 1.1002,
            "via": "Scale (908K)",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 1.5,
            "per1kUsd": 1.5,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 15,
            "per1kUsd": 1.5,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 150,
            "per1kUsd": 1.5,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 1100.2,
            "per1kUsd": 1.1002,
            "via": "Scale (908K)",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 1.5,
            "per1kUsd": 1.5,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 15,
            "per1kUsd": 1.5,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 150,
            "per1kUsd": 1.5,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 1100.2,
            "per1kUsd": 1.1002,
            "via": "Scale (908K)",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 1.5,
            "per1kUsd": 1.5,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 15,
            "per1kUsd": 1.5,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 150,
            "per1kUsd": 1.5,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 1100.2,
            "per1kUsd": 1.1002,
            "via": "Scale (908K)",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 1.5,
            "per1kUsd": 1.5,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 15,
            "per1kUsd": 1.5,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 150,
            "per1kUsd": 1.5,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 1100.2,
            "per1kUsd": 1.1002,
            "via": "Scale (908K)",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ]
      }
    },
    {
      "slug": "crawlbase",
      "name": "Crawlbase",
      "homepage": "https://crawlbase.com",
      "pricingUrl": "https://crawlbase.com/pricing",
      "docsUrl": "https://crawlbase.com/docs/crawling-api/parameters/",
      "logoDomain": "crawlbase.com",
      "hq": "unknown",
      "founded": null,
      "billing": {
        "model": "hybrid",
        "freeTier": {
          "calls": 5000,
          "period": "once",
          "creditCardRequired": false,
          "note": "The pricing page prints two different free grants in two places: \"Up to 5,000 requests free. No credit card.\" in the pay-as-you-go block, and \"Every new account starts with 1,000 free credits and no card on file\" further down. Both were read on 2026-09-14 on the same URL. The larger figure is recorded here and the smaller one is flagged in notes; Crawlbase does not reconcile them anywhere public."
        },
        "minimumMonthlyUsd": 0,
        "creditsExpire": true,
        "expiryNote": "Pricing page: \"Pay as you go bills in arrears for what you actually used, so there is nothing to expire. A subscription's credit block resets with each monthly cycle.\" So a subscription's unused credits die each month; on pay as you go there is nothing to lose.",
        "annualDiscountPct": 8,
        "prepaidOnly": false,
        "payAsYouGoAvailable": true
      },
      "unitCost": {
        "basis": "credit",
        "plain": 1,
        "js": 2,
        "residential": 1,
        "antibot": null,
        "markdown": 1,
        "note": "\"One credit is one standard request.\" JavaScript rendering is a published x2. Residential is 1 because Crawlbase does not sell it as a tier at all: \"Rotating residential proxies, CAPTCHA and block handling are part of every request, never a separate bill\", and the Crawling API docs say \"The request is sent through a residential or datacenter exit node - automatically by default\", with no parameter to force one and no surcharge. Markdown is 1 for the same reason: the docs expose format=md (\"format=md converts the page to GitHub-Flavored Markdown\", pair with md_readability=true) and it appears nowhere in the published multiplier list, which otherwise itemises JavaScript x2, screenshots at 2 credits and cloud storage at 0.5. Anti-bot is null because its price is genuinely unpublished: challenges are solved server-side (\"Cloudflare, PerimeterX, DataDome, hCaptcha, and other common challenges are solved server-side\") but the bill is set by an automatically applied site-difficulty tier - Standard x1, Moderate x1.5, Complex x2, Complex I x3, Complex II x4.5, Extreme x9, Extreme I x13.5, Extreme II x20 - and Crawlbase never says which tier any named site falls into. You learn the tier after the fact, from the domain_complexity field and the X-Domain-Complexity header. Scroll requests are billed by time: \"first 8 seconds = 1 request; each additional 5 seconds adds 1 more\"."
      },
      "plans": [
        {
          "name": "Pay as you go",
          "monthlyUsd": 0,
          "includedUnits": 0,
          "overagePerUnitUsd": 0.003,
          "hardCap": false,
          "delivery": "live",
          "note": "No monthly fee and no minimum. Graduated ladder; the rate here is the first bracket, $3.00 per 1,000 standard credits. See payAsYouGoTiers for the whole card. It is a rate per credit, so the JavaScript and site-difficulty multipliers apply on top."
        },
        {
          "name": "Starter",
          "monthlyUsd": 99,
          "includedUnits": 200000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "Yearly billing is one month free plus 8% off. Overage continues on the graduated pay-as-you-go card at the bracket already reached, so there is no single published overage rate."
        },
        {
          "name": "Scale 500K",
          "monthlyUsd": 199,
          "includedUnits": 500000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "Overage continues on the graduated card."
        },
        {
          "name": "Scale 1M",
          "monthlyUsd": 349,
          "includedUnits": 1000000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "Marked \"Most popular\". Overage continues on the graduated card."
        },
        {
          "name": "Growth",
          "monthlyUsd": 599,
          "includedUnits": 2000000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "Overage continues on the graduated card."
        },
        {
          "name": "Enterprise",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "Contact-us tier: custom volume and invoicing, no public price."
        }
      ],
      "payAsYouGoTiers": [
        {
          "minUnits": 0,
          "maxUnits": 1000,
          "perUnitUsd": 0.003
        },
        {
          "minUnits": 1000,
          "maxUnits": 11000,
          "perUnitUsd": 0.002
        },
        {
          "minUnits": 11000,
          "maxUnits": 111000,
          "perUnitUsd": 0.0006
        },
        {
          "minUnits": 111000,
          "maxUnits": 1111000,
          "perUnitUsd": 0.0005
        },
        {
          "minUnits": 1111000,
          "maxUnits": 11111000,
          "perUnitUsd": 0.0001
        },
        {
          "minUnits": 11111000,
          "maxUnits": 111111000,
          "perUnitUsd": 0.00005
        },
        {
          "minUnits": 111111000,
          "maxUnits": 1111111000,
          "perUnitUsd": 0.00004
        },
        {
          "minUnits": 1111111000,
          "maxUnits": null,
          "perUnitUsd": 0.00002
        }
      ],
      "features": {
        "engines": [
          "api",
          "proxy"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot",
          "markdown"
        ],
        "kind": "direct",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": true,
        "failedRequestsFree": true,
        "structuredParsers": true,
        "proxyPortMode": true,
        "asyncBatch": true,
        "geoTargeting": true,
        "sla": null
      },
      "sources": [
        {
          "url": "https://crawlbase.com/pricing",
          "capturedAt": "2026-09-14",
          "note": "Plans $99/200K, $199/500K, $349/1M, $599/2M plus Enterprise contact-us; pay-as-you-go ladder $3.00, $2.00, $0.60, $0.50, $0.10, $0.05, $0.04, $0.02 per 1,000; \"One credit is one standard request\"; JavaScript x2, screenshot 2 credits, cloud storage 0.5 credits; difficulty ladder Standard x1 to Extreme II x20; yearly is one month free plus 8%. Verbatim: \"Only successful requests are billed. A request that fails or is blocked costs nothing, whatever the site or rendering mode.\" Verbatim: \"Rotating residential proxies, CAPTCHA and block handling are part of every request, never a separate bill.\" Verbatim on expiry: \"Pay as you go bills in arrears for what you actually used, so there is nothing to expire. A subscription's credit block resets with each monthly cycle.\" Also the two conflicting free grants, \"Up to 5,000 requests free. No credit card.\" and \"Every new account starts with 1,000 free credits and no card on file\", and a \"UPTIME 99.99%\" figure with no SLA document behind it. Markdown is not mentioned on this page at all."
        },
        {
          "url": "https://crawlbase.com/docs/crawling-api/parameters/",
          "capturedAt": "2026-09-14",
          "note": "format=md (\"converts the page to GitHub-Flavored Markdown\") with md_readability=true, X-Markdown-Flavor / X-Markdown-Features / X-Markdown-Base-URL response headers; country= two-letter ISO geo routing; tor_network=true; \"The request is sent through a residential or datacenter exit node - automatically by default\"; \"Cloudflare, PerimeterX, DataDome, hCaptcha, and other common challenges are solved server-side. You get the post-challenge HTML, not the challenge page\"; billing only on cb_status 200; scroll billed as first 8 seconds = 1 request, each further 5 seconds = 1 more. No credit cost is attached to format=md anywhere on the page."
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "The cheapest way in of any general scraper here and the hardest one to budget. Entry is $0 with no minimum, the pay-as-you-go card starts at $3.00 per 1,000 and falls to $0.02 per 1,000 at the top bracket, subscriptions start at $99 for 200,000 credits, and only successful requests are billed in Crawlbase's own words. Residential exit nodes, CAPTCHA solving and Cloudflare, PerimeterX and DataDome handling carry no surcharge at all, which is unusual in this market where those are the two big multipliers. The catch is the multiplier you cannot see: every domain is silently assigned a difficulty tier from Standard x1 up to Extreme II x20, and Crawlbase never publishes which tier any site is in, so the anti-bot price is unknowable before you send the request - you read it back afterwards from the domain_complexity field or the X-Domain-Complexity header. JavaScript rendering is a flat x2 on top of whatever that tier turns out to be. Two disagreements worth knowing: the pricing page offers \"up to 5,000 requests free\" in one block and \"1,000 free credits\" in another, and it advertises \"UPTIME 99.99%\" without publishing an SLA that would make the number a commitment.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 2,
            "per1kUsd": 2,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 20,
            "per1kUsd": 2,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 59.99999999999999,
            "per1kUsd": 0.6,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 349,
            "per1kUsd": 0.349,
            "via": "Scale 1M",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 4,
            "per1kUsd": 4,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 11.999999999999998,
            "per1kUsd": 1.2,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Starter",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 200,
            "per1kUsd": 0.2,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 2,
            "per1kUsd": 2,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 20,
            "per1kUsd": 2,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 59.99999999999999,
            "per1kUsd": 0.6,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 349,
            "per1kUsd": 0.349,
            "via": "Scale 1M",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 2,
            "per1kUsd": 2,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 20,
            "per1kUsd": 2,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 59.99999999999999,
            "per1kUsd": 0.6,
            "via": "pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 349,
            "per1kUsd": 0.349,
            "via": "Scale 1M",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ]
      }
    },
    {
      "slug": "decodo",
      "name": "Decodo",
      "homepage": "https://decodo.com",
      "pricingUrl": "https://decodo.com/scraping/web/pricing",
      "docsUrl": "https://help.decodo.com/docs/web-scraping-api-introduction",
      "logoDomain": "decodo.com",
      "hq": "LT",
      "founded": 2018,
      "billing": {
        "model": "subscription",
        "freeTier": {
          "calls": 2000,
          "period": "month",
          "creditCardRequired": false,
          "note": "The plan table's first column is $0 with \"2K req.\" at the standard-proxy rate and a 10 req/s limit; the product page sells it as a \"Free starter plan\" and repeats \"no credit card required\". Every other column in the same table is priced \"+VAT / Billed monthly\", so the free allowance is recorded as monthly. The free plan's own expiry terms are not spelled out."
        },
        "minimumMonthlyUsd": 0,
        "creditsExpire": true,
        "expiryNote": "Decodo's billing FAQ, read today: \"Renew - buying the same plan again while having an active subscription. All unused traffic is lost.\" Downgrading loses it too; only an upgrade carries it over. Decodo writes this rule in traffic terms and publishes no separate statement for the Web Scraping API's request allowances.",
        "annualDiscountPct": null,
        "prepaidOnly": false,
        "payAsYouGoAvailable": false
      },
      "unitCost": {
        "basis": "request",
        "plain": 1,
        "js": 1.5,
        "residential": 2,
        "antibot": 3,
        "markdown": 1,
        "note": "Decodo prices one request on two switches: which proxy pool (Standard or Premium) and whether JavaScript rendering is on. Its docs say \"The total request cost depends on the combination of proxy pool and rendering mode used\" and recommend \"Premium proxies with rendering enabled\" for \"protected or difficult targets\", which is the anti-bot row here. On the $19 Starter plan the four published rates per 1,000 are $0.50 standard, $0.75 standard + JS, $1.00 premium, $1.50 premium + JS, giving the 1 / 1.5 / 2 / 3 multipliers recorded here; the free plan prints the same four rates. Those multipliers are not constant as you scale, because the standard rate falls much faster than the rest: on the $49 plan the rates are $0.30 / $0.65 / $0.90 / $1.25 (1 / 2.2 / 3 / 4.2) and on the $99 plan $0.14 / $0.60 / $0.85 / $1.20 (1 / 4.3 / 6.1 / 8.6). So the rendered, residential and anti-bot columns are correct at the entry plan and materially cheap at the top plan. Markdown is one of the output formats (\"LLM-ready markdown format\", \"HTML, JSON, CSV, PNG, XHR, and Markdown formats\") with no rate of its own, so it rides on whichever request type you chose and is recorded as 1."
      },
      "plans": [
        {
          "name": "Free",
          "monthlyUsd": 0,
          "includedUnits": 2000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "2K standard-proxy requests at $0.50/1K (or 1K with JS, 1K premium, 667 premium + JS). 10 req/s. Overage behaviour is not published."
        },
        {
          "name": "Starter",
          "monthlyUsd": 19,
          "includedUnits": 38000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "$0.50/1K standard (38K req.), $0.75/1K standard + JS (25K), $1.00/1K premium (19K), $1.50/1K premium + JS (12K). 10 req/s. Prices exclude VAT. No overage rate is published."
        },
        {
          "name": "Professional",
          "monthlyUsd": 49,
          "includedUnits": 163000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "$0.30/1K standard (163K req.), $0.65/1K standard + JS (75K), $0.90/1K premium (54K), $1.25/1K premium + JS (39K). 25 req/s. No overage rate is published."
        },
        {
          "name": "Business",
          "monthlyUsd": 99,
          "includedUnits": 707000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "Marked most popular. $0.14/1K standard (707K req.), $0.60/1K standard + JS (165K), $0.85/1K premium (116K), $1.20/1K premium + JS (82K). 50 req/s. No overage rate is published."
        },
        {
          "name": "Enterprise",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "\"Need more? Custom\" on every row, including the rate limit. \"Contact sales\". No list price is published."
        }
      ],
      "features": {
        "engines": [
          "api"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot",
          "markdown"
        ],
        "kind": "network",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": true,
        "failedRequestsFree": true,
        "structuredParsers": true,
        "proxyPortMode": false,
        "asyncBatch": true,
        "geoTargeting": true,
        "sla": null
      },
      "sources": [
        {
          "url": "https://decodo.com/scraping/web/pricing",
          "capturedAt": "2026-09-14",
          "note": "The Web Scraping API plan table in full: $0 / $19 / $49 / $99 / Custom, each with its own per-1,000 rate and request count for standard proxies, standard + JS, premium proxies and premium + JS, plus the rate limit per plan. \"Plan prices +VAT / Billed monthly\". \"Standard proxies: For low-security sites and simple access. Premium proxies: For accessing guarded or sensitive pages.\" Included-feature list: \"99.99% success rate\", \"Results in HTML, JSON, CSV, XHR or PNG\", \"JavaScript rendering\", \"100+ pre-built templates\", \"LLM-ready markdown format\", \"14-day money-back\"."
        },
        {
          "url": "https://decodo.com/scraping/web",
          "capturedAt": "2026-09-14",
          "note": "Same plan table on the product page, plus \"You're only charged for successful responses\" in the FAQ answer on blocks, \"Only pay for successful scrapes\", \"HTML, JSON, CSV, PNG, XHR, and Markdown formats\", \"no credit card required\", \"Free starter plan\", \"125M+ IPs worldwide\", \"200 requests per second\", and the proxy-pool / country selector (8 or 193 countries) in the live request builder."
        },
        {
          "url": "https://help.decodo.com/docs/web-scraping-api-introduction",
          "capturedAt": "2026-09-14",
          "note": "\"Web Scraping API pricing depends on two main factors: The selected proxy pool... The JavaScript rendering mode... The total request cost depends on the combination of proxy pool and rendering mode used.\" Also \"the API returns extracted content in formats like HTML, JSON, CSV, screenshots, Markdown, etc.\", the recommended setup table (\"Protected or difficult targets: Premium proxies with rendering enabled\"), and that the API handles browser rendering, proxy rotation, location targeting, anti-bot bypassing and retries. The docs nav lists Real-time and Asynchronous Requests."
        },
        {
          "url": "https://decodo.com/faq/billing/can-i-upgrade-or-downgrade-my-subscription-plan",
          "capturedAt": "2026-09-14",
          "note": "\"Renew - buying the same plan again while having an active subscription. All unused traffic is lost.\" Downgrade: \"All unused traffic is lost.\" Upgrade: \"All unused traffic gets transferred to the new subscription period.\""
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "The cheapest headline rate among the proxy houses, $0.14 per 1,000 at $99 a month, but that number buys the easiest possible fetch: standard proxies, no browser. The four rates on every plan card are the whole story, and the gap between them widens as you scale - at $19 a month a premium, rendered request costs 3x a plain one; at $99 it costs 8.6x, because only the standard rate falls. Decodo says \"You're only charged for successful responses\", ships Markdown and 100+ ready-made site templates at no extra charge, and has a genuinely free 2,000-request tier with no card. The catches are subscription-shaped: there is no pay-as-you-go, no published overage rate at all, prices exclude VAT, and unused allowance is lost when you renew or downgrade. Site Unblocker, Decodo's proxy-port unblocker, is a separate product and is not what these rates buy.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Starter",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 19,
            "per1kUsd": 1.9,
            "via": "Starter",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 49,
            "per1kUsd": 0.49,
            "via": "Professional",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Starter",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 19,
            "per1kUsd": 1.9,
            "via": "Starter",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 49,
            "per1kUsd": 0.49,
            "via": "Professional",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Starter",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 19,
            "per1kUsd": 1.9,
            "via": "Starter",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Business",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Starter",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 19,
            "per1kUsd": 1.9,
            "via": "Starter",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Business",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Starter",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 19,
            "per1kUsd": 1.9,
            "via": "Starter",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 49,
            "per1kUsd": 0.49,
            "via": "Professional",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ]
      }
    },
    {
      "slug": "firecrawl",
      "name": "Firecrawl",
      "homepage": "https://www.firecrawl.dev",
      "pricingUrl": "https://www.firecrawl.dev/pricing",
      "docsUrl": "https://docs.firecrawl.dev/billing",
      "logoDomain": "firecrawl.dev",
      "hq": "US",
      "billing": {
        "model": "credits",
        "freeTier": {
          "calls": 1000,
          "period": "month",
          "creditCardRequired": false,
          "note": "1,000 credits every month, refreshed monthly, no credit card required. The pricing page words it as \"500 searches or 1,000 pages scraped\" because search and scrape draw on one balance. Scrape, search and interact also work with no API key at all through a keyless tier capped per IP per day."
        },
        "minimumMonthlyUsd": 0,
        "creditsExpire": true,
        "expiryNote": "\"Unused plan credits do not roll over by default: your monthly allotment resets each month.\" Annual Scale rolls unused plan credits over one month and annual Enterprise two months; every other plan, including Free, loses them. Separately purchased credits stay active until the subscription is cancelled, then expire.",
        "annualDiscountPct": null,
        "prepaidOnly": false,
        "payAsYouGoAvailable": true
      },
      "unitCost": {
        "basis": "credit",
        "plain": 1,
        "js": 1,
        "residential": null,
        "antibot": 1,
        "markdown": 1,
        "note": "Scrape and crawl are 1 credit per page, and that one credit already includes the browser render and the Markdown conversion, so plain, JS and Markdown are all 1. The surprise is the hardest tier: Firecrawl's proxy parameter takes basic, enhanced or auto, and the billing docs state \"Enhanced proxy requests cost the same as basic requests - 1 credit per request\", with an escalated retry from basic to enhanced inside the same request not charged separately. The 5-credit stealth multiplier that older write-ups quote is the deprecated v1 mode; the v1 doc now carries the note \"Enhanced proxy requests now cost the same as basic requests - 1 credit per request\". What does cost more is the LLM work layered on top of a page, not the fetch: JSON format, question, highlights, audio, video, PII redaction and a lockdown cache hit each add +4 credits per page, a prompt-injection check adds +4, PDF parsing adds +1 per PDF page and zero-data-retention adds +1, and the modifiers stack. Firecrawl publishes no residential or premium proxy pool, so residential is null."
      },
      "plans": [
        {
          "name": "Free",
          "monthlyUsd": 0,
          "includedUnits": 1000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "No card. 2 concurrent browsers, 10 requests a minute on scrape, map and search. Pay-as-you-go is not available on Free, so requests return HTTP 402 once the 1,000 credits are gone."
        },
        {
          "name": "Hobby",
          "monthlyUsd": 19,
          "includedUnits": 5000,
          "overagePerUnitUsd": 0.005,
          "hardCap": false,
          "delivery": "live",
          "note": "$19/month billed monthly, or $16/month billed annually ($190/year, save $38). Pay-as-you-go adds credits in $5 increments at 1,000 credits per $5, which is the $0.005 per credit recorded here."
        },
        {
          "name": "Standard",
          "monthlyUsd": 99,
          "includedUnits": 100000,
          "overagePerUnitUsd": 0.0025,
          "hardCap": false,
          "delivery": "live",
          "note": "$99/month billed monthly, or $83/month billed annually ($990/year, save $198). Pay-as-you-go is 2,000 credits per $5."
        },
        {
          "name": "Growth",
          "monthlyUsd": 399,
          "includedUnits": 500000,
          "overagePerUnitUsd": 0.002,
          "hardCap": false,
          "delivery": "live",
          "note": "$399/month billed monthly, or $333/month billed annually ($3,990/year, save $798). Pay-as-you-go is 2,500 credits per $5."
        },
        {
          "name": "Scale",
          "monthlyUsd": 749,
          "includedUnits": 1000000,
          "overagePerUnitUsd": 0.001,
          "hardCap": false,
          "delivery": "live",
          "note": "$749/month billed monthly, or $599/month billed annually ($7,190/year, save $1,798). Pay-as-you-go is 5,000 credits per $5. The only self-serve plan with credit rollover, and only on annual billing, and only for one month."
        },
        {
          "name": "Enterprise",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "\"Contact sales\". Custom credits and concurrency, dedicated support and SLA, bulk discounts, zero-data retention, SSO. No list price."
        }
      ],
      "features": {
        "engines": [
          "api"
        ],
        "verticals": [
          "plain",
          "js",
          "antibot",
          "markdown"
        ],
        "kind": "direct",
        "jsRendering": true,
        "residentialProxy": null,
        "antiBotBypass": true,
        "markdownOutput": true,
        "failedRequestsFree": false,
        "structuredParsers": false,
        "proxyPortMode": false,
        "asyncBatch": true,
        "geoTargeting": true,
        "sla": false
      },
      "sources": [
        {
          "url": "https://www.firecrawl.dev/pricing",
          "capturedAt": "2026-09-14",
          "note": "plan cards and the \"Pricing at a glance\" block, effective September 4, 2026; credit unit definition, free tier, entry plan, the failed-request rule, the per-endpoint credit table, the plan comparison table (concurrent browsers, rate limits, credit rollover, support SLA)"
        },
        {
          "url": "https://www.firecrawl.dev/pricing.md",
          "capturedAt": "2026-09-14",
          "note": "the site's own Markdown rendering of the pricing page, which is where the monthly-billed prices are printed rather than only the annual ones: Hobby $19/$16, Standard $99/$83, Growth $399/$333, Scale $749/$599, with the annual totals and dollar savings"
        },
        {
          "url": "https://docs.firecrawl.dev/billing",
          "capturedAt": "2026-09-14",
          "note": "credit costs per endpoint (scrape/crawl/map 1 per page, search 2 per 10 results, interact 2-7 per browser minute), the additional scrape-option table including \"Enhanced proxy (proxy: enhanced or auto escalation) +0\", the \"When credits are charged\" rules, plan credit allotments, rollover, and the pay-as-you-go credits-per-$5 table"
        },
        {
          "url": "https://docs.firecrawl.dev/features/enhanced-mode",
          "capturedAt": "2026-09-14",
          "note": "proxy types basic / enhanced / auto, escalation on 401, 403 and 429, and \"Enhanced proxy requests cost the same as basic requests - 1 credit per request. An escalated retry is not charged separately\""
        },
        {
          "url": "https://www.firecrawl.dev/terms-of-service",
          "capturedAt": "2026-09-14",
          "note": "\"SideGuide Technologies, Inc. d/b/a Firecrawl, a Delaware Corporation\", governed by California law with venue in San Francisco"
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "The best-known name in the Markdown-scraper market, and as of today the one with almost no multiplier on the fetch itself: one credit buys a page, browser render, enhanced proxy and Markdown conversion all included, so the harder the page the better the deal. That is a change worth knowing about, because the 5-credit stealth tier everyone still quotes is Firecrawl v1 and the v1 doc now says it costs the same as a basic request. The multiplier moved to the LLM layer instead: ask for JSON, a question, highlights, audio, video or PII redaction and the page becomes 5 credits, and those stack. Two real catches. First, failures are not free the way this market usually means it: Firecrawl bills 1 credit whenever it returns a document, and it counts a 403 bot wall or a 404 as a document, so exactly the pages you would want refunded are the ones you pay for. Only a scrape that returns nothing at all is free. Second, credits do not roll over on any self-serve plan except annual Scale, and the free plan cannot buy overage, so it hard-stops at 402. Firecrawl does not publish a residential or premium proxy pool at all, and its only SLA is on the unpriced Enterprise plan.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 44,
            "per1kUsd": 4.4,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Standard",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 749,
            "per1kUsd": 0.749,
            "via": "Scale",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 44,
            "per1kUsd": 4.4,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Standard",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 749,
            "per1kUsd": 0.749,
            "via": "Scale",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 44,
            "per1kUsd": 4.4,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Standard",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 749,
            "per1kUsd": 0.749,
            "via": "Scale",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 44,
            "per1kUsd": 4.4,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Standard",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 749,
            "per1kUsd": 0.749,
            "via": "Scale",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ]
      }
    },
    {
      "slug": "hasdata",
      "name": "HasData",
      "homepage": "https://hasdata.com",
      "pricingUrl": "https://hasdata.com/pricing",
      "docsUrl": "https://docs.hasdata.com/apis/web-scraping-api/request-cost",
      "logoDomain": "hasdata.com",
      "hq": "unknown",
      "billing": {
        "model": "credits",
        "freeTier": {
          "calls": 1000,
          "period": "month",
          "creditCardRequired": false,
          "note": "1,000 API credits a month with no credit card and 1 concurrent request. In pages that is 1,000 plain fetches, 200 through the residential pool, or 100 with JavaScript rendering, because the credit cost moves with the mode."
        },
        "minimumMonthlyUsd": 0,
        "creditsExpire": true,
        "expiryNote": "The request-cost doc says it outright: \"Unused credits do not roll over. Any remaining credits expire at the end of the current billing period.\" The pricing page lists credit rollover only in the Enterprise feature list.",
        "annualDiscountPct": null,
        "prepaidOnly": false,
        "payAsYouGoAvailable": false
      },
      "unitCost": {
        "basis": "credit",
        "plain": 1,
        "js": 10,
        "residential": 5,
        "antibot": 5,
        "markdown": 1,
        "note": "This is the cleanest published multiplier table in the set, and it is in the docs rather than on the pricing page. The Web Scraping API cost per request is set by jsRendering and proxyType together: false + datacenter is 1 credit, false + residential is 5, true + datacenter is 10, true + residential is 15. So the browser costs ten times a plain fetch, which is the steepest JS multiplier here, and it is dearer than the residential pool rather than cheaper. HasData sells one hard tier, not two: the docs page calls the parameter value residential, while the pricing doc labels the same line \"stealth proxy\" and prices it identically ($0.42 CPM against $0.08 for the basic proxy), so antibot carries the same 5 as residential rather than a separate number. Markdown is 1 because outputFormat is a format, not a mode: html, text, markdown and json all come back from the same request at the same price, and neither extractRules nor the LLM-based aiExtractRules is priced separately anywhere in the docs. The two multipliers stack, so a rendered page behind a bot wall is 15 credits, fifteen times the headline rate."
      },
      "plans": [
        {
          "name": "Free",
          "monthlyUsd": 0,
          "includedUnits": 1000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "1,000 credits a month, 1 concurrent request, no credit card. No overage rate is published for the free plan."
        },
        {
          "name": "Startup",
          "monthlyUsd": 49,
          "includedUnits": 200000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "200,000 credits and 5 concurrent requests. The pricing page prints the Web Scraping API at $0.25 per 1,000 requests on this plan, which is the 1-credit plain fetch; the same page through the residential pool is five of those credits and a rendered page is ten. No per-credit overage rate is published on the current pricing page."
        },
        {
          "name": "Basic",
          "monthlyUsd": 99,
          "includedUnits": 1000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "1,000,000 credits and 15 concurrent requests. Web Scraping API listed at $0.10 per 1,000 requests, which is $99 per million credits."
        },
        {
          "name": "Growth",
          "monthlyUsd": 208,
          "includedUnits": 3000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "3,000,000 credits and 50 concurrent requests. Web Scraping API listed at $0.07 per 1,000 requests."
        },
        {
          "name": "Enterprise",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "\"Custom\", 20M+ credits and 2000+ concurrency, and the only plan whose feature list includes credit rollover. No list price."
        }
      ],
      "features": {
        "engines": [
          "api"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot",
          "markdown"
        ],
        "kind": "direct",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": true,
        "failedRequestsFree": true,
        "structuredParsers": true,
        "proxyPortMode": false,
        "asyncBatch": true,
        "geoTargeting": true,
        "sla": null
      },
      "sources": [
        {
          "url": "https://hasdata.com/pricing",
          "capturedAt": "2026-09-14",
          "note": "plan table Free $0/mo / Startup $49/mo / Basic $99/mo / Growth $208/mo / Enterprise custom with monthly credits (1,000; 200,000; 1,000,000; 3,000,000; 20M+) and max concurrency (1, 5, 15, 50, 2000+); the per-API per-1,000-request rate table showing Web Scraping API at $0.00, $0.25, $0.10 and $0.07 labelled \"Minimum price. Actual cost depends on options like proxy type, JS rendering, AI extraction, and other features\"; the footnote \"Credits per call depend on the tool: 1 for a plain page fetch, 5 or 10 for the named APIs, up to 15 with JavaScript rendering and residential proxies\"; \"The free plan gives 1,000 credits every month with access to every tool. No credit card required\"; a \"Billed annually\" toggle offering \"2 months free\"; \"Credits rollover\" listed only in the Enterprise column; and the FAQ line \"If your scraping request fails, the credits used are automatically refunded\""
        },
        {
          "url": "https://docs.hasdata.com/apis/web-scraping-api/request-cost",
          "capturedAt": "2026-09-14",
          "note": "the multiplier table itself: jsRendering false + datacenter = 1 credit, false + residential = 5, true + datacenter = 10, true + residential = 15; \"Credits are deducted only for successful requests\"; \"Unused credits do not roll over. Any remaining credits expire at the end of the current billing period\"; credits are shared across every HasData API"
        },
        {
          "url": "https://docs.hasdata.com/basics/pricing",
          "capturedAt": "2026-09-14",
          "note": "the same four Web Scraping API rows labelled by proxy name rather than parameter: \"no js rendering / basic proxy\" $0.08 CPM at 1 credit, \"no js rendering / stealth proxy\" $0.42 at 5, \"js rendering / basic proxy\" $0.83 at 10, \"js rendering / stealth proxy\" $1.25 at 15; plus the credit cost of every other API and scraper job"
        },
        {
          "url": "https://docs.hasdata.com/credits-and-concurrency",
          "capturedAt": "2026-09-14",
          "note": "\"Only successful requests consume credits. Failed or invalid requests will not result in a charge\", repeated in the FAQ as \"Do I pay for failed requests? No. You're only charged for successful requests.\" Free accounts are limited to 1 concurrent request. The hard cap is stated in the same FAQ: \"What happens if I run out of credits? Your scraper jobs will be stopped ... You also won't be able to make any new requests\""
        },
        {
          "url": "https://docs.hasdata.com/apis/web-scraping-api/api-params",
          "capturedAt": "2026-09-14",
          "note": "parameters: proxyType (datacenter or residential, \"Required if you're targeting geo-restricted or bot-protected content\"), proxyCountry as an ISO country code, jsRendering, jsScenario, extractRules, aiExtractRules, screenshot, wait and waitFor. None carries its own price"
        },
        {
          "url": "https://docs.hasdata.com/apis/web-scraping-api/features/output-formats",
          "capturedAt": "2026-09-14",
          "note": "outputFormat accepts html, text, markdown and json in one request, with markdown described as \"converted Markdown output (good for LLMs and readability)\", at no stated extra cost"
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "HasData is the provider this whole site exists to expose. Its pricing page advertises the Web Scraping API at $0.10 per 1,000 requests on the $99 plan, and that number is true only for the cheapest possible fetch: no JavaScript, datacenter proxy. The real table is in the docs, and it is steep. A rendered page is 10 credits, so $1.00 per 1,000. The residential or \"stealth\" pool is 5, so $0.50. Both together are 15, so $1.50 per 1,000, fifteen times the headline. The JS multiplier being twice the residential one is unusual and matters, because a browser is the thing most people need. Against that, three things are genuinely good: failed requests are free and HasData says so twice in its own words, Markdown comes out of the same 1-credit request as HTML with no LLM surcharge, and the same credit balance works across every API it sells. The catch beyond the multipliers is the floor and the clock: the cheapest paid plan is $49 for 200,000 credits, which is only 20,000 rendered pages, credits expire at the end of every billing period on every self-serve plan, and there is no pay-as-you-go and no published overage rate, so going over means upgrading. Annual billing is offered as \"2 months free\" rather than a percentage, so annualDiscountPct is left blank rather than converted. No proxy port and no published uptime SLA.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 49,
            "per1kUsd": 49,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 49,
            "per1kUsd": 4.9,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 49,
            "per1kUsd": 0.49,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 99,
            "per1kUsd": 0.099,
            "via": "Basic",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 49,
            "per1kUsd": 49,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 49,
            "per1kUsd": 4.9,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Basic",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 49,
            "per1kUsd": 49,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 49,
            "per1kUsd": 4.9,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Basic",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 49,
            "per1kUsd": 49,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 49,
            "per1kUsd": 4.9,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Basic",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 49,
            "per1kUsd": 49,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 49,
            "per1kUsd": 4.9,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 49,
            "per1kUsd": 0.49,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 99,
            "per1kUsd": 0.099,
            "via": "Basic",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ]
      }
    },
    {
      "slug": "jina-reader",
      "name": "Jina Reader",
      "homepage": "https://jina.ai",
      "pricingUrl": "https://jina.ai/reader#pricing",
      "docsUrl": "https://jina.ai/reader",
      "logoDomain": "jina.ai",
      "hq": "DE",
      "founded": 2020,
      "billing": {
        "model": "payg",
        "freeTier": {
          "calls": null,
          "period": "once",
          "creditCardRequired": false,
          "note": "Two separate free routes, neither of them a call count. Without any API key, prepend r.jina.ai to a URL and read pages at 20 requests a minute with no charge at all. With a new free API key you get 10,000,000 tokens, which the pricing widget labels \"Toy Experiment\" and restricts to \"Non-commercial use only (CC-BY-NC)\". calls is null rather than an invented figure because Reader bills output tokens, so the number of pages 10M tokens buys depends entirely on how long the pages are."
        },
        "minimumMonthlyUsd": 0,
        "creditsExpire": false,
        "expiryNote": "\"Our API keys do not have an expiration date\", and a revoked key's remaining balance stays on the account rather than on the key. There is no subscription and nothing resets monthly; you top up tokens and spend them whenever. Paid tokens can be transferred off a premium key to another key.",
        "annualDiscountPct": 0,
        "prepaidOnly": true,
        "payAsYouGoAvailable": true
      },
      "unitCost": {
        "basis": "credit",
        "plain": null,
        "js": null,
        "residential": null,
        "antibot": null,
        "markdown": null,
        "note": "Every vertical is null because Jina does not sell a page. The plan's unit is an output token, not a credit and not a request: the rate-limit table says the Reader API at r.jina.ai will \"Count the number of tokens in the output response\". A token cannot be turned into a page without inventing an average page length, so under this site's no-conversion rule the native figures go here instead. They are $50 for 1,000,000,000 tokens ($0.050 per 1M) and $500 for 11,000,000,000 tokens ($0.045 per 1M). Two real multipliers exist inside that token meter and are worth knowing: setting X-Engine to readerlm-v2 for HTML-to-Markdown conversion \"Costs 3x tokens\", and the search endpoint s.jina.ai is not metered on output at all but on \"a fixed number of tokens, starting from 10000 tokens\" per request. X-Token-Budget caps the tokens a single request may spend, and the request fails rather than overspending. Jina sells the plain fetch (X-Engine: direct), the browser render (the default engine) and Markdown; it sells no residential pool and no anti-bot tier, so those two are null for a second reason and are absent from the vertical list."
      },
      "plans": [
        {
          "name": "Toy Experiment (free key)",
          "monthlyUsd": 0,
          "includedUnits": 10000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "oneTime": true,
          "validityMonths": null,
          "delivery": "live",
          "note": "10 million tokens on every new API key, one time, not monthly. \"Non-commercial use only (CC-BY-NC).\" 500 RPM on r.jina.ai. includedUnits is tokens, not pages."
        },
        {
          "name": "Prototype Development",
          "monthlyUsd": 50,
          "includedUnits": 1000000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "oneTime": true,
          "validityMonths": null,
          "delivery": "live",
          "note": "$50 buys 1 billion tokens, which the widget prints as \"0.050 / 1M tokens\". Standard key, 500 RPM on r.jina.ai. A top-up, not a subscription, and the widget shows no expiry. includedUnits is tokens, not pages."
        },
        {
          "name": "Production Deployment",
          "monthlyUsd": 500,
          "includedUnits": 11000000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "oneTime": true,
          "validityMonths": null,
          "delivery": "live",
          "note": "$500 buys 11 billion tokens, printed as \"0.045 / 1M tokens\". This is the premium key: 5,000 RPM and 50M TPM on r.jina.ai, advanced key management, 24-hour support, one hour of integration consultation. includedUnits is tokens, not pages."
        }
      ],
      "features": {
        "engines": [
          "api"
        ],
        "verticals": [
          "plain",
          "js",
          "markdown"
        ],
        "kind": "direct",
        "jsRendering": true,
        "residentialProxy": null,
        "antiBotBypass": null,
        "markdownOutput": true,
        "failedRequestsFree": true,
        "structuredParsers": false,
        "proxyPortMode": false,
        "asyncBatch": false,
        "geoTargeting": true,
        "sla": false
      },
      "performance": {
        "claimedAvgLatencySeconds": 7.9,
        "claimedSuccessRatePct": null,
        "source": "https://jina.ai/reader"
      },
      "sources": [
        {
          "url": "https://jina.ai/reader",
          "capturedAt": "2026-09-14",
          "note": "product and pricing page: the API Pricing widget, the rate-limit table (\"Count the number of tokens in the output response\", 20 RPM keyless, 500 RPM free and paid, 5000 RPM premium, 7.9s average latency), \"Don't panic! Every new API key comes with 10M free tokens!\", the FAQ answers on cost, on failed requests (\"No, tokens are not deducted for failed requests\"), on key expiry, and the X-Engine, X-Token-Budget, X-Proxy and X-Proxy-Url headers"
        },
        {
          "url": "https://jina.ai/reader#pricing",
          "capturedAt": "2026-09-14",
          "note": "the three published packages read out of the widget: 10 Million tokens Free, non-commercial use only; 1 Billion tokens $50 at 0.050 / 1M tokens; 11 Billion tokens $500 at 0.045 / 1M tokens. No separate Premium price is listed, Premium is what the $500 package includes"
        },
        {
          "url": "https://jina.ai/api-dashboard/",
          "capturedAt": "2026-09-14",
          "note": "parameter panel: X-Engine readerlm-v2 \"Uses ReaderLM-v2 for HTML-to-Markdown conversion ... Costs 3x tokens!\", and X-Token-Budget \"Limits the maximum number of tokens used for this request\""
        },
        {
          "url": "https://jina.ai/about-us",
          "capturedAt": "2026-09-14",
          "note": "\"Founded in 2020 by Han Xiao\"; \"On October 9, 2025, Jina AI was acquired by Elastic (NYSE: ESTC)\""
        },
        {
          "url": "https://jina.ai/legal",
          "capturedAt": "2026-09-14",
          "note": "operating company and address: \"Jina AI GmbH, Prinzessinnenstrasse 19-20, 10969 Berlin, Germany\", with the note that Elastic now handles privacy enquiries"
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "Jina Reader is the option that looks cheapest and cannot be compared. Prepending r.jina.ai to a URL is genuinely free with no key at 20 requests a minute, and paid tokens run $0.050 per million falling to $0.045, but the meter counts the tokens in the output, so a long page costs several times what a short one does and nobody can tell you what 1,000 pages will cost until they have scraped them. That is why every vertical here is blank: turning tokens into pages would mean inventing an average page size, and the whole point of this table is not doing that. Two things inside the meter change the bill materially: the readerlm-v2 engine, the one you would pick for messy HTML, costs 3x tokens, and the search endpoint charges a flat 10,000 tokens minimum per request whatever comes back. What Jina does do better than most of this list is the failure rule, stated plainly: \"tokens are not deducted for failed requests\". Balances never expire, there is no subscription and no monthly minimum, and a country-specific proxy is a header away. There is no residential pool and no anti-bot tier, and the 10M free tokens are licensed for non-commercial use only. Jina AI GmbH is Berlin-based and has been an Elastic company since October 2025.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ]
      }
    },
    {
      "slug": "netnut-scraper",
      "name": "NetNut Website Unblocker",
      "homepage": "https://netnut.io",
      "pricingUrl": "https://netnut.io/pricing/",
      "logoDomain": "netnut.io",
      "hq": "IL",
      "billing": {
        "model": "subscription",
        "freeTier": null,
        "minimumMonthlyUsd": null,
        "creditsExpire": null,
        "expiryNote": "Nothing is published today: every netnut.io URL returns a law-enforcement seizure page instead of the site.",
        "annualDiscountPct": null,
        "prepaidOnly": null,
        "payAsYouGoAvailable": null
      },
      "unitCost": {
        "basis": "request",
        "plain": null,
        "js": null,
        "residential": null,
        "antibot": null,
        "markdown": null,
        "note": "No price of any kind is published today. Every page of netnut.io, including the home page, /pricing/ and /website-unblocker/, returns HTTP 200 with a single page titled \"Seized by the Federal Bureau of Investigation\" and no other content. There is therefore no rate, no credit, no multiplier and no plan to read, and nothing here is carried over from an earlier capture or a third-party page."
      },
      "plans": [
        {
          "name": "Not published",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "NetNut publishes no plan today. This row exists only because a record must carry at least one plan; it is not a plan NetNut offers."
        }
      ],
      "features": {
        "engines": [
          "api"
        ],
        "verticals": [],
        "kind": "network",
        "jsRendering": null,
        "residentialProxy": null,
        "antiBotBypass": null,
        "markdownOutput": null,
        "failedRequestsFree": null,
        "structuredParsers": null,
        "proxyPortMode": null,
        "asyncBatch": null,
        "geoTargeting": null,
        "sla": null
      },
      "sources": [
        {
          "url": "https://netnut.io/pricing/",
          "capturedAt": "2026-09-14",
          "note": "Read today: HTTP 200 from Cloudflare, served from 104.21.50.198 / 172.67.210.11, body is a single page titled \"Seized by the Federal Bureau of Investigation\" consisting of one embedded seizure-notice image and nothing else. https://netnut.io/website-unblocker/ and https://netnut.io/ return the identical byte-for-byte page."
        },
        {
          "url": "https://krebsonsecurity.com/2026/07/fbi-seizes-netnut-proxy-platform-popa-botnet/",
          "capturedAt": "2026-09-14",
          "note": "Context for why there is no price to read: on 3 July 2026 the FBI, with Google, Lumen and Shadowserver, seized domains belonging to NetNut, the residential proxy service operated by Alarum Technologies, and disrupted the associated Popa botnet. Not a pricing source; no number in this record comes from it."
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "There is nothing to price. Every netnut.io page, including the pricing page and the Website Unblocker page, now returns a Federal Bureau of Investigation seizure notice and no product content, following the July 2026 seizure of NetNut domains from Alarum Technologies. Every field in this record is therefore blank rather than carried over from an earlier capture: no rate card, no plan, no free tier and no feature list can be verified from the seller's own pages today. The billing model shown is a placeholder, not a published fact. Re-check before this record is shown to a buyer as anything other than unavailable.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ]
      }
    },
    {
      "slug": "nimble",
      "name": "Nimble",
      "homepage": "https://www.nimbleway.com",
      "pricingUrl": "https://www.nimbleway.com/pricing",
      "docsUrl": "https://docs.nimbleway.com/nimble-sdk/web-tools/extract/quickstart",
      "logoDomain": "nimbleway.com",
      "hq": "US",
      "billing": {
        "model": "hybrid",
        "freeTier": {
          "calls": 5000,
          "period": "month",
          "creditCardRequired": false,
          "note": "The pricing page says \"Start searching for free - 5,000 free requests per month\" and the free card reads \"Free 5K requests - Try every API for free - Access to all APIs - No credit card required - Cancel anytime\". The docs describe the same grant as a trial: \"Get started with 5,000 free web pages. No credit card required.\""
        },
        "minimumMonthlyUsd": 0,
        "creditsExpire": true,
        "expiryNote": "Billing FAQ: \"Do unused credits roll over? Credits roll over within your billing cycle but expire at the end of each month.\" Pay-as-you-go usage is billed monthly by card; Data Services plans are billed annually.",
        "annualDiscountPct": null,
        "prepaidOnly": false,
        "payAsYouGoAvailable": true
      },
      "unitCost": {
        "basis": "request",
        "plain": 1,
        "js": 1,
        "residential": 1,
        "antibot": 1,
        "markdown": 1,
        "note": "One published rate covers the whole Extraction Tools line, Extract, Crawl and Map: \"$1.00 / 1K URLs\", with no surcharge printed for any mode. Rendering is a boolean (\"render\": true, or \"auto\" to let Nimble escalate through drivers) and the only cost language attached to it is the docs' aside that leaving it off is \"faster, cheaper\" - no rate is published for it, so it is recorded at the flat price. Geo targeting is described as a \"Built-in residential proxy allowing Geo-targeting options\" on the same Extract call, so the residential column is the same 1. So is anti-bot: Extract \"Bypasses anti-bot protections with stealth mode\", and the Unlocker Proxy doc states \"Unlocker Proxy usage is charged according to the API pricing per Requests and not per GB\" - though that product \"requires KYC verification and is not available for self-service accounts\". Markdown is one of the formats parameter's values alongside html, screenshot, headers and links, at no extra charge. Two neighbouring products are not this rate and are not converted here: Extraction Templates at $3.00 per 1,000 runs, and the per-gigabyte lines, Media at $2.00/GB and the Residential Proxy port at $5.30/GB. Search is priced separately again ($1.10 per 1,000 inputs lite, $5.00 standard, plus a $1.00 per 1,000 URLs surcharge for full_content)."
      },
      "plans": [
        {
          "name": "Pay as you go",
          "monthlyUsd": 0,
          "includedUnits": 0,
          "overagePerUnitUsd": 0.001,
          "hardCap": false,
          "delivery": "live",
          "note": "\"Use any Nimble API without a commitment. Only successful requests are charged.\" Extraction Tools $1.00 per 1,000 URLs, billed monthly by credit card."
        },
        {
          "name": "Startup",
          "monthlyUsd": 2500,
          "includedUnits": 350000,
          "overagePerUnitUsd": 0.001,
          "hardCap": false,
          "delivery": "live",
          "note": "A Data Services plan: $2,500/mo but \"Billed annually\", so the real commitment is $30,000 up front. 350,000 web page credits a month, 5 concurrent agents, 7 days data storage, custom agent ETL, MCP integration. \"Additional usage is billed at pay-as-you-go rates on your next invoice.\" At $7.14 per 1,000 pages it is far dearer per page than pay-as-you-go; it buys managed agents, not a discount."
        },
        {
          "name": "Scale",
          "monthlyUsd": 7000,
          "includedUnits": 1200000,
          "overagePerUnitUsd": 0.001,
          "hardCap": false,
          "delivery": "live",
          "note": "Billed annually. 1,200,000 web page credits a month, 10 concurrent agents, 30 days storage, localized agents."
        },
        {
          "name": "Professional",
          "monthlyUsd": 15000,
          "includedUnits": 3000000,
          "overagePerUnitUsd": 0.001,
          "hardCap": false,
          "delivery": "live",
          "note": "Billed annually. 3,000,000 web page credits a month, 20 concurrent agents, 90 days storage, custom workflow."
        },
        {
          "name": "Enterprise",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "\"Custom - Book a demo\". Unlimited concurrent agents, custom data storage, advanced security, advanced SLAs. Custom API rates are also quoted privately (volume discounts, multi-year price protection, bundling). No list price is published."
        }
      ],
      "features": {
        "engines": [
          "api",
          "proxy"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot",
          "markdown"
        ],
        "kind": "network",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": true,
        "failedRequestsFree": true,
        "structuredParsers": true,
        "proxyPortMode": true,
        "asyncBatch": true,
        "geoTargeting": true,
        "sla": null
      },
      "sources": [
        {
          "url": "https://www.nimbleway.com/pricing",
          "capturedAt": "2026-09-14",
          "note": "The public price cards: Free 5K requests per month with no credit card, Search API $1.1/1k requests, \"Extract, Crawl, Map API $1 /1k requests\", Extract Template API $3/1k, Media API $2/GB, Agent API priced per task by effort, Custom. The Data Services ladder: Startup $2,500/month, Scale $7,000/month, Professional $15,000/month, all marked \"*Billed annually\", with 350K / 1.2M / 3M monthly web page credits, and Enterprise \"Custom\". Also the platform table listing Extract outputs as \"Webpage contents in HTML, markdown\". Company address 104 West 27th Street, New York, NY."
        },
        {
          "url": "https://docs.nimbleway.com/nimble-sdk/admin/pricing",
          "capturedAt": "2026-09-14",
          "note": "\"Use any Nimble API without a commitment. Only successful requests are charged.\" Extraction Tools $1.00/1K URLs, Extraction Templates $3.00/1K runs, Media $2.00/GB, Search lite $1.10 and standard $5.00 per 1K inputs with a $1.00/1K URLs full_content surcharge, Web Search Agent $0.025 to $2.00 per task, Residential Proxy $5.30/GB. Data Services plans \"Billed annually\". Billing FAQ: \"Additional usage is billed at pay-as-you-go rates on your next invoice\" and \"Credits roll over within your billing cycle but expire at the end of each month.\""
        },
        {
          "url": "https://docs.nimbleway.com/nimble-sdk/web-tools/extract/quickstart",
          "capturedAt": "2026-09-14",
          "note": "\"Point it at a webpage... with full JavaScript rendering and anti-bot protection\", \"Bypasses anti-bot protections with stealth mode\", and the render parameter in every SDK example."
        },
        {
          "url": "https://docs.nimbleway.com/nimble-sdk/web-tools/extract/features/formats",
          "capturedAt": "2026-09-14",
          "note": "formats parameter: html (default), markdown (\"Clean, readable markdown version of the page\"), screenshot, headers, links, combinable in one request with no separate charge stated."
        },
        {
          "url": "https://docs.nimbleway.com/nimble-sdk/web-tools/extract/features/geo-targeting",
          "capturedAt": "2026-09-14",
          "note": "\"Built-in residential proxy allowing Geo-targeting options\" with country, state, city and locale parameters, and \"Fewer blocks: look like a real local user with residential exits\"."
        },
        {
          "url": "https://docs.nimbleway.com/nimble-sdk/web-tools/proxy/unlocker-proxy",
          "capturedAt": "2026-09-14",
          "note": "\"Unlocker Proxy usage is charged according to the API pricing per Requests and not per GB\", and \"Proxy service requires KYC verification and is not available for self-service accounts.\""
        },
        {
          "url": "https://docs.nimbleway.com/nimble-sdk/web-tools/extract/features/async",
          "capturedAt": "2026-09-14",
          "note": "\"Run extraction tasks asynchronously or submit multiple URLs in a single batch request\"."
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "A flat dollar a thousand for any URL, with rendering, stealth and a residential exit all inside that price and only successful requests charged - one of the few price lists here with no mode multiplier at all. Markdown, screenshots and link extraction are formats on the same call. The catches are in what is not that rate: pre-built site templates cost triple ($3 per 1,000 runs), Search is a separate meter, media downloads and the proxy port are billed per gigabyte ($2/GB and $5.30/GB) rather than per page, the proxy port needs KYC and is closed to self-service accounts, and unused credits expire at the end of each month. The Data Services plans on the same page are not volume discounts: $2,500 a month is billed annually and works out at $7.14 per 1,000 pages, seven times the pay-as-you-go rate, because it buys managed agents and storage rather than cheaper fetches.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 1,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 10,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 100,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 1000,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 1,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 10,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 100,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 1000,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 1,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 10,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 100,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 1000,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 1,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 10,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 100,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 1000,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 1,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 10,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 100,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 1000,
            "per1kUsd": 1,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ]
      }
    },
    {
      "slug": "olostep",
      "name": "Olostep",
      "homepage": "https://www.olostep.com",
      "pricingUrl": "https://www.olostep.com/pricing",
      "docsUrl": "https://docs.olostep.com/features/scrapes",
      "logoDomain": "olostep.com",
      "hq": "US",
      "billing": {
        "model": "subscription",
        "freeTier": {
          "calls": 500,
          "period": "once",
          "creditCardRequired": false,
          "note": "The Trial plan is $0 and gives \"500 successful requests\" with \"No credit card required\", at low rate limits. The pricing FAQ words it as \"a free plan with 500 requests to help you test the API before upgrading\", with no monthly refresh stated, so the period is recorded as once rather than an invented monthly reset."
        },
        "minimumMonthlyUsd": 0,
        "creditsExpire": true,
        "expiryNote": "Credit packs are the only expiry Olostep states a number for: \"You can buy credit packs. They are valid for 6 months.\" Subscription credits are a monthly allowance (\"Paid plans start from $9/month and include 5,000 credits per month\") and the credits API returns an expiry_date on each lot including Subscription lots, but Olostep publishes no rollover statement for subscription credits anywhere on the pricing page or its FAQ.",
        "annualDiscountPct": 0,
        "prepaidOnly": false,
        "payAsYouGoAvailable": true
      },
      "unitCost": {
        "basis": "request",
        "plain": 1,
        "js": 1,
        "residential": 1,
        "antibot": 1,
        "markdown": 1,
        "note": "Olostep publishes no multiplier table, because it does not have one. A plan's unit is one successful request, and the pricing page states of the free plan that \"All requests are JS rendered + utilizing residential IP addresses\", which makes the browser render and the residential pool the default rather than a dearer tier. The docs add that Olostep \"handles JavaScript, anti-bot, and proxies under the hood\", and Markdown is simply one of the formats a scrape can ask for alongside html, text, json, raw_pdf and screenshot. Nothing in the pricing page, the scrape docs or the API reference charges extra for a format, a country, a parser or an LLM extraction, so all five verticals are 1. If you want the arithmetic checked: $9 for 5,000 requests is the $1.80/1K the page prints, $99 for 200,000 is $0.495/1K, and $399 for 1,000,000 is $0.399/1K."
      },
      "plans": [
        {
          "name": "Trial",
          "monthlyUsd": 0,
          "includedUnits": 500,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "500 successful requests, no credit card, low rate limits. JS rendering and residential IPs included like every other plan."
        },
        {
          "name": "Starter",
          "monthlyUsd": 9,
          "includedUnits": 5000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "5,000 successful requests and 150 concurrent requests. The card prints COST/1K as $1.800. No overage rate is published for any subscription plan."
        },
        {
          "name": "Standard",
          "monthlyUsd": 99,
          "includedUnits": 200000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "200,000 successful requests and 500 concurrent requests. The card prints COST/1K as $0.495."
        },
        {
          "name": "Scale",
          "monthlyUsd": 399,
          "includedUnits": 1000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "1,000,000 successful requests, and the card prints COST/1K as $0.399. Adds AI-powered browser automations."
        },
        {
          "name": "Credit pack 10K",
          "monthlyUsd": 20,
          "includedUnits": 10000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "oneTime": true,
          "validityMonths": 6,
          "delivery": "live",
          "note": "A one-off top-up for spiky usage, not a subscription. $20 for 10,000 credits, valid for 6 months."
        },
        {
          "name": "Credit pack 250K",
          "monthlyUsd": 200,
          "includedUnits": 250000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "oneTime": true,
          "validityMonths": 6,
          "delivery": "live",
          "note": "$200 for 250,000 credits, valid for 6 months."
        },
        {
          "name": "Credit pack 2M",
          "monthlyUsd": 1000,
          "includedUnits": 2000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "oneTime": true,
          "validityMonths": 6,
          "delivery": "live",
          "note": "$1,000 for 2,000,000 credits, valid for 6 months."
        },
        {
          "name": "Pay-per-use (x402)",
          "monthlyUsd": 0,
          "includedUnits": 0,
          "overagePerUnitUsd": 0.01,
          "hardCap": false,
          "delivery": "live",
          "note": "A separate stablecoin rail, not a plan: POST /x402/v1/scrapes is published at \"$0.01 per request\" on Base USDC with no subscription, and /v1/maps is the same price. That is $10 per 1,000 pages, five to twenty-five times the subscription rate, which is the price of not committing to a plan."
        },
        {
          "name": "Enterprise",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "\"Hundreds of millions of credits with enterprise-grade reliability. We offer custom discounts.\" No list price."
        }
      ],
      "features": {
        "engines": [
          "api"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot",
          "markdown"
        ],
        "kind": "direct",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": true,
        "failedRequestsFree": true,
        "structuredParsers": true,
        "proxyPortMode": false,
        "asyncBatch": true,
        "geoTargeting": true,
        "sla": false
      },
      "sources": [
        {
          "url": "https://www.olostep.com/pricing",
          "capturedAt": "2026-09-14",
          "note": "plan cards Trial $0 / Starter $9 / Standard $99 / Scale $399 / Enterprise custom with their request allowances, concurrency and printed COST/1K figures ($1.800, $0.495, $0.399); \"No credit card required\"; \"500 successful requests\"; \"All requests are JS rendered + utilizing residential IP addresses\"; the three credit packs ($20 / 10k, $200 / 250k, $1000 / 2M) and \"They are valid for 6 months\"; the FAQ line \"Paid plans start from $9/month and include 5,000 credits per month\""
        },
        {
          "url": "https://docs.olostep.com/features/scrapes",
          "capturedAt": "2026-09-14",
          "note": "\"Turn any URL into LLM-ready Markdown, HTML, screenshots, PDFs, or structured JSON\"; formats enum html, markdown, text, json, raw_pdf, screenshot; the country and wait_before_scraping parameters; no credit cost or multiplier is attached to any of them"
        },
        {
          "url": "https://docs.olostep.com/get-started/welcome",
          "capturedAt": "2026-09-14",
          "note": "\"handles JavaScript, anti-bot, and proxies under the hood\"; \"up to 10,000 URLs in a single batch in 5-7 minutes\""
        },
        {
          "url": "https://docs.olostep.com/x402.md",
          "capturedAt": "2026-09-14",
          "note": "pay-per-use endpoints: POST /v1/scrapes \"Price: $0.01 per request\", POST /v1/maps \"$0.01 per request\", network base (USDC), \"No subscription required\""
        },
        {
          "url": "https://docs.olostep.com/balance-billing/balance-and-billing",
          "capturedAt": "2026-09-14",
          "note": "credit lots carry purchase_kind Subscription / Top-up / Manual / Setup / Pending and an expiry_date; programmatic top-ups are sold in 10,000, 20,000, 80,000 and 100,000 credit sizes"
        },
        {
          "url": "https://docs.olostep.com/llms.txt",
          "capturedAt": "2026-09-14",
          "note": "documentation index: Parsers and LLM Extraction under Structured Data, the Batch Endpoint \"for large-scale, async data aggregation\", and the geo example, \"Call /v1/batches with dedicated parsers to extract structured answers, citations, ads, and shopping data from Google AI Mode, ChatGPT, Perplexity, Gemini, Copilot, and Google AI Overview\". No page in the index prices any of them separately"
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "The simplest price list in this set and, at volume, the cheapest that still quotes a page: one successful request is one credit whatever the page needed, and the pricing page says every request is already JS-rendered through residential IPs, so there is no browser surcharge and no premium-proxy surcharge to find. $399 for a million requests is $0.399 per 1,000 pages. The catches are at the two ends. At the bottom, the entry plan is $9 for 5,000 requests, which is $1.80 per 1,000 and nearly five times the Scale rate, and every plan is a hard allowance with no published overage rate, so running over means upgrading rather than paying a little more. At the top, credit packs are the only way to buy without a subscription and they die after six months, and the stablecoin pay-per-use route is $0.01 a request, ten dollars per 1,000, which makes not committing very expensive. Failures are free in the sense that matters: every allowance on the page is counted in successful requests. No proxy port, and no published uptime SLA. The footer names Olostep Technologies, Inc. and says \"Made in Italy | United States\".",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 3.3333333333333335,
            "per1kUsd": 3.333333,
            "via": "Credit pack 10K (expires unused)",
            "prepaidUsd": 20,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 20,
            "per1kUsd": 2,
            "via": "Credit pack 10K",
            "prepaidUsd": 20,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Standard",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 399,
            "per1kUsd": 0.399,
            "via": "Scale",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 3.3333333333333335,
            "per1kUsd": 3.333333,
            "via": "Credit pack 10K (expires unused)",
            "prepaidUsd": 20,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 20,
            "per1kUsd": 2,
            "via": "Credit pack 10K",
            "prepaidUsd": 20,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Standard",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 399,
            "per1kUsd": 0.399,
            "via": "Scale",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 3.3333333333333335,
            "per1kUsd": 3.333333,
            "via": "Credit pack 10K (expires unused)",
            "prepaidUsd": 20,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 20,
            "per1kUsd": 2,
            "via": "Credit pack 10K",
            "prepaidUsd": 20,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Standard",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 399,
            "per1kUsd": 0.399,
            "via": "Scale",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 3.3333333333333335,
            "per1kUsd": 3.333333,
            "via": "Credit pack 10K (expires unused)",
            "prepaidUsd": 20,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 20,
            "per1kUsd": 2,
            "via": "Credit pack 10K",
            "prepaidUsd": 20,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Standard",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 399,
            "per1kUsd": 0.399,
            "via": "Scale",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 3.3333333333333335,
            "per1kUsd": 3.333333,
            "via": "Credit pack 10K (expires unused)",
            "prepaidUsd": 20,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 20,
            "per1kUsd": 2,
            "via": "Credit pack 10K",
            "prepaidUsd": 20,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Standard",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 399,
            "per1kUsd": 0.399,
            "via": "Scale",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ]
      }
    },
    {
      "slug": "oxylabs-web-scraper",
      "name": "Oxylabs Web Scraper API",
      "homepage": "https://oxylabs.io",
      "pricingUrl": "https://oxylabs.io/products/scraper-api/web/pricing",
      "docsUrl": "https://developers.oxylabs.io/products/web-scraper-api",
      "logoDomain": "oxylabs.io",
      "hq": "LT",
      "billing": {
        "model": "subscription",
        "freeTier": {
          "calls": 909,
          "period": "once",
          "creditCardRequired": false,
          "note": "The pricing card headlines \"Free Trial - Up to 2,000 results - FREE - No credit card required\", but 2,000 is the Amazon-rate maximum. The billing help centre's results table gives 909 results on the free trial for \"Other (no JS rendering)\" targets, which is the row a general web page falls into and the figure recorded here. The trial's length in days is not published."
        },
        "minimumMonthlyUsd": 49,
        "creditsExpire": true,
        "expiryNote": "Oxylabs Terms of Service clause 2.3, read today: \"Oxylabs will provide the Customer with an amount of Services (specified in the SoW) each calendar month. Such amount shall remain valid for 1 (one) calendar month (or other term if established in the SoW) and will not be transferred to the following month should the Customer fail to use the amount within this term.\"",
        "annualDiscountPct": null,
        "prepaidOnly": false,
        "payAsYouGoAvailable": false
      },
      "unitCost": {
        "basis": "result",
        "plain": 1,
        "js": 1.17,
        "residential": null,
        "antibot": null,
        "markdown": 1,
        "note": "Oxylabs bills per successful result in dollars, not in credits, and prints three no-JS rates per plan (Amazon, Google, Other) plus one JavaScript-rendering rate. A general web page is the \"Other\" row, so plain is 1 and every plan figure below uses the Other rate. The JavaScript multiplier is not constant: on Micro it is $1.35 against $1.15 (1.17x, the figure recorded here), on Starter $1.30 against $1.10 (1.18x), on Advanced $1.25 against $0.95 (1.32x), on Venture $1.15 against $0.85 (1.35x), on Business $1.00 against $0.75 (1.33x) and on Corporate $0.95 against $0.70 (1.36x), so the rendered column is right at the entry plan and understates the dearer ones by up to 16%. Markdown is a payload flag (\"markdown\": true) with no separate rate, so it is 1. Residential and anti-bot are null because the Web Scraper API does not sell either as a priced mode: Oxylabs routes it through \"reliable premium proxies\" it chooses, and the residential, anti-bot product is the separate Web Unblocker, which is billed per gigabyte (see notes)."
      },
      "plans": [
        {
          "name": "Free Trial",
          "monthlyUsd": 0,
          "includedUnits": 909,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "909 \"Other (no JS rendering)\" results per the help-centre table; the card's \"Up to 2,000 results\" is the Amazon rate. No credit card required. Rate limit 10 requests/s."
        },
        {
          "name": "Micro",
          "monthlyUsd": 49,
          "includedUnits": 42608,
          "overagePerUnitUsd": 0.00115,
          "hardCap": false,
          "delivery": "live",
          "note": "$1.15 per 1,000 Other results, so $49 buys 42,608 of them; the card's \"Up to 98,000 results\" is the Amazon rate. Top up to $249 at the same rate. Rate limit 50 requests/s. The help centre's own table still shows 44,545 here, which is the older $1.10 rate; the live pricing page rate is used."
        },
        {
          "name": "Starter",
          "monthlyUsd": 99,
          "includedUnits": 90000,
          "overagePerUnitUsd": 0.0011,
          "hardCap": false,
          "delivery": "live",
          "note": "$1.10 per 1,000 Other results ($0.45 Amazon, $0.90 Google, $1.30 with JS). Card headline \"Up to 220,000 results\" is the Amazon rate. Top up to $499. Rate limit 50 requests/s."
        },
        {
          "name": "Advanced",
          "monthlyUsd": 249,
          "includedUnits": 262105,
          "overagePerUnitUsd": 0.00095,
          "hardCap": false,
          "delivery": "live",
          "note": "$0.95 per 1,000 Other results ($0.40 Amazon, $0.80 Google, $1.25 with JS). Card headline \"Up to 622,500 results\" is the Amazon rate. Top up to $499. Rate limit 50 requests/s."
        },
        {
          "name": "Venture",
          "monthlyUsd": 499,
          "includedUnits": 587058,
          "overagePerUnitUsd": 0.00085,
          "hardCap": false,
          "delivery": "live",
          "note": "On the pricing page's Enterprise tab. $0.85 per 1,000 Other results ($0.37 Amazon, $0.70 Google, $1.15 with JS). Card headline \"Up to 1,350,000 results\" is the Amazon rate. Top up to $499. Rate limit 50 requests/s."
        },
        {
          "name": "Business",
          "monthlyUsd": 999,
          "includedUnits": 1332000,
          "overagePerUnitUsd": 0.00075,
          "hardCap": false,
          "delivery": "live",
          "note": "Enterprise tab, marked most popular. $0.75 per 1,000 Other results ($0.30 Amazon, $0.60 Google, $1.00 with JS). Card headline \"Up to 3,330,000 results\" is the Amazon rate. Top up to $499. Rate limit 100 requests/s."
        },
        {
          "name": "Corporate",
          "monthlyUsd": 2000,
          "includedUnits": 2857142,
          "overagePerUnitUsd": 0.0007,
          "hardCap": false,
          "delivery": "live",
          "note": "Enterprise tab, \"Get an offer\" but with a published price. $0.70 per 1,000 Other results ($0.25 Amazon, $0.50 Google, $0.95 with JS). Card headline \"Up to 8,000,000 results\" is the Amazon rate; the help centre's Other row agrees with the 2,857,143 recorded here. Top up to $2,000. Rate limit 100 requests/s."
        },
        {
          "name": "Custom +",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "\"Tailored solutions for high-volume needs\", \"Custom price\" per result, per run and per GB. No list price is published."
        }
      ],
      "features": {
        "engines": [
          "api"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot",
          "markdown"
        ],
        "kind": "network",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": true,
        "failedRequestsFree": false,
        "structuredParsers": true,
        "proxyPortMode": false,
        "asyncBatch": true,
        "geoTargeting": true,
        "sla": null
      },
      "sources": [
        {
          "url": "https://oxylabs.io/products/scraper-api/web/pricing",
          "capturedAt": "2026-09-14",
          "note": "The live plan cards on both tabs, read from the page's own plan JSON: Regular - Free Trial (2,000 results), Micro $49 (98K), Starter $99 (220K), Advanced $249 (622.5K); Enterprise - Venture $499 (1.35M), Business $999 (3.33M), Corporate $2,000 (8M), Custom +. Per-1,000 Amazon/Google/Other no-JS rates, the with-JS rate, the media-download per-GB rate, top-up caps and rate limits for each. Also the success-pricing FAQ and \"Are all of Web Scraper API features included in the price? Yes... Cloud integration, Batch queries, Headless Browser, Custom Parser, OxyCopilot, Scheduler\"."
        },
        {
          "url": "https://oxylabs.io/products/scraper-api/web",
          "capturedAt": "2026-09-14",
          "note": "\"Free trial includes up to 2K results. Pay only for successful results. No credit card required.\" Target library with 38+ dedicated sources (universal, Amazon, Google and others), \"Parsing available with Oxy Parser\", per-target parsed JSON data points, and customizable location, language and custom headers with automatic proxy rotation."
        },
        {
          "url": "https://developers.oxylabs.io/help-center/billing-and-payments/how-does-web-scraper-api-pricing-work",
          "capturedAt": "2026-09-14",
          "note": "\"All results from the target site with 2xx or 4xx status codes are counted as successful\" and \"Failed scraping attempts due to our system errors (5xx and 6xx status codes) don't count, and you won't be billed for them.\" Also the results-per-plan table including the \"Other (no JS rendering)\" row (909 / 44,545 / 90,000 / 276,667 / 623,750 / 1,427,143 / 2,857,143) and the \"With JS rendering\" row; some rows are stale against the live pricing page."
        },
        {
          "url": "https://developers.oxylabs.io/products/web-scraper-api/features/result-processing-and-storage/output-types/markdown-output",
          "capturedAt": "2026-09-14",
          "note": "\"Request markdown-formatted output from the Oxylabs Web Scraper API by setting \\\"markdown\\\": true in your payload - ideal for AI workflows and lightweight content.\" No separate rate is attached to it."
        },
        {
          "url": "https://oxylabs.io/products/web-unblocker/pricing",
          "capturedAt": "2026-09-14",
          "note": "The separate residential unblocker, priced per gigabyte, not per page: Free Trial 1GB (\"up to 10k results\"), Micro 8GB at $9.40/GB for $75/month, Starter 38GB at $8.60/GB for $325/month, Advanced 88GB at $7.50/GB for $660/month, all currently shown with a WU40 coupon at 40% off ($5.64, $5.16 and $4.50 per GB). The site pricing menu lists it as \"Web Unblocker - Starts from $5 $3/GB\"."
        },
        {
          "url": "https://oxylabs.io/legal/oxylabs-terms-of-service",
          "capturedAt": "2026-09-14",
          "note": "Clause 2.3: a calendar month's amount of Services \"will not be transferred to the following month should the Customer fail to use the amount within this term\"."
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "A subscription, not a meter: the door is $49 a month and there is no pay-as-you-go, so 1,000 pages a month costs $49 whatever the rate card says. Every plan quotes three different no-JS rates, and the big headline on each card (\"Up to 98,000 results\") is the cheapest Amazon rate - a general web page falls in the dearer \"Other\" row, $1.15 per 1,000 at the entry plan down to $0.70 at $2,000 a month. The flag worth reading twice is failed requests: Oxylabs advertises \"Pay only for successfully delivered results\", but its own billing page defines success as \"2xx or 4xx status codes\", so a 403 block from the target is billed and only Oxylabs' own 5xx and 6xx errors are free, which is why this record marks failed fetches as not free. Markdown output is a payload flag at no extra charge, JavaScript rendering costs 17% to 36% more depending on plan, and the residential, anti-bot route is a different product - Web Unblocker, billed per gigabyte ($9.40/GB list at its entry plan, currently 40% off), which is why the residential and anti-bot columns here are blank rather than priced. Unused monthly results do not roll over.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 49,
            "per1kUsd": 49,
            "via": "Micro",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 49,
            "per1kUsd": 4.9,
            "via": "Micro",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 110,
            "per1kUsd": 1.1,
            "via": "Starter",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 850.0007,
            "per1kUsd": 0.850001,
            "via": "Venture",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 49,
            "per1kUsd": 49,
            "via": "Micro",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 49,
            "per1kUsd": 4.9,
            "via": "Micro",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 128.7,
            "per1kUsd": 1.287,
            "via": "Starter",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 994.5007,
            "per1kUsd": 0.994501,
            "via": "Venture",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 49,
            "per1kUsd": 49,
            "via": "Micro",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 49,
            "per1kUsd": 4.9,
            "via": "Micro",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 110,
            "per1kUsd": 1.1,
            "via": "Starter",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 850.0007,
            "per1kUsd": 0.850001,
            "via": "Venture",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ]
      }
    },
    {
      "slug": "scrape-do",
      "name": "Scrape.do",
      "homepage": "https://scrape.do",
      "pricingUrl": "https://scrape.do/pricing/",
      "docsUrl": "https://scrape.do/documentation/request-costs/",
      "logoDomain": "scrape.do",
      "hq": "US",
      "founded": 2020,
      "billing": {
        "model": "subscription",
        "freeTier": {
          "calls": 1000,
          "period": "month",
          "creditCardRequired": false,
          "note": "Pricing-page FAQ, verbatim: \"The free plan includes 1,000 successful API calls per month with full access to residential and mobile proxies, geo-targeting, CAPTCHA handling, JavaScript rendering, and more - no credit card required.\" The plan card reads \"Free $0 /month ... 1,000 Successful API Credits, 5 Concurrent Requests, Includes EVERY Scrape.do feature\". Note it is 1,000 credits, not 1,000 pages: a residential rendered fetch spends 25 of them, so the free month is 40 hard pages."
        },
        "minimumMonthlyUsd": 0,
        "creditsExpire": true,
        "expiryNote": "Credits are a monthly allowance and stop the account when spent. FAQ, verbatim: \"once you hit your monthly limit, requests will stop unless you upgrade your plan or purchase additional credits.\" No published rate for those extra credits.",
        "annualDiscountPct": 20,
        "prepaidOnly": false,
        "payAsYouGoAvailable": false
      },
      "unitCost": {
        "basis": "credit",
        "plain": 1,
        "js": 5,
        "residential": 10,
        "antibot": 25,
        "markdown": 1,
        "note": "The published base table: \"Normal request (datacenter proxy) 1\", \"Datacenter + headless browser (render=true) 5\", \"Residential / mobile (super=true) 10\", \"Residential / mobile + headless browser 25\". Anti-bot is recorded as 25 because Scrape.do sells no separate stealth or unblocker product: its documentation says \"Some websites require advanced bypass methods (residential proxies, headless browser rendering, or custom anti-detection solutions), which consume more credits per request. For example, a basic datacenter request costs 1 credit, while a residential proxy request with JS rendering costs 25\", so super+render at 25 is the hardest configuration on the general rate card. That is a floor, not a ceiling: a separate per-domain table overrides the base cost for named sites, and those run from 10 to 200 credits (google.* 10 with super=true by default, linkedin.com 30, chewy.com 50, shopee.* 100, sainsburys.co.uk 200). Markdown is 1 because output=markdown is a response format, not a cost dimension - it does not appear in the request-costs table, which prices only proxy type and rendering. The authoritative figure for any single call comes back in the Scrape.do-Request-Cost response header."
      },
      "plans": [
        {
          "name": "Free",
          "monthlyUsd": 0,
          "includedUnits": 1000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "1,000 successful API credits a month, 5 concurrent requests, no card. \"Includes EVERY Scrape.do feature\" - residential and mobile proxies, geo-targeting, JS rendering, sticky sessions, unlimited bandwidth."
        },
        {
          "name": "Hobby",
          "monthlyUsd": 29,
          "includedUnits": 250000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "Advertised as $0.11 / 1K credits. 10 concurrent requests. $290/year annually. Requests stop at the limit unless you upgrade or buy extra credits, and the extra-credit rate is not published."
        },
        {
          "name": "Pro",
          "monthlyUsd": 99,
          "includedUnits": 1250000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "Advertised as $0.08 / 1K credits. 50 concurrent requests. $990/year annually."
        },
        {
          "name": "Business",
          "monthlyUsd": 249,
          "includedUnits": 3500000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "Advertised as $0.07 / 1K credits, marked Most Popular. 100 concurrent requests, dedicated support with an account manager. $2,490/year annually."
        },
        {
          "name": "Advanced",
          "monthlyUsd": 699,
          "includedUnits": 10000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "Advertised as $0.06 / 1K credits. Dedicated Slack channel. $6,990/year annually."
        },
        {
          "name": "Enterprise",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "Contact sales. Custom SLA and dedicated infrastructure; no public price, and the annual discount does not apply to it."
        }
      ],
      "features": {
        "engines": [
          "api",
          "proxy"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot",
          "markdown"
        ],
        "kind": "direct",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": true,
        "failedRequestsFree": true,
        "structuredParsers": true,
        "proxyPortMode": true,
        "asyncBatch": true,
        "geoTargeting": true,
        "sla": null
      },
      "sources": [
        {
          "url": "https://scrape.do/pricing/",
          "capturedAt": "2026-09-14",
          "note": "Plan cards Free $0/1,000, Hobby $29/250,000, Pro $99/1,250,000, Business $249/3,500,000, Advanced $699/10,000,000, Enterprise contact sales, all labelled \"Successful API Credits\"; \"Full Power. Every Plan. No feature gates.\" listing datacenter proxies, residential and mobile proxies, JavaScript rendering, geo-targeting (160+ countries), sticky sessions, unlimited bandwidth on every tier. FAQ verbatim: \"You're only charged when a request returns a successful response with valid content. You won't lose credits on timeouts, blocks, or errors.\" FAQ verbatim on annual: \"Annual billing gives you up to 20% off - pay for 10 months and get 12 - on every plan except Enterprise. Hobby is $290/year instead of $29/month, Pro is $990/year instead of $99/month, Business is $2,490/year instead of $249/month, and Advanced is $6,990/year instead of $699/month.\" FAQ verbatim on the cap: \"once you hit your monthly limit, requests will stop unless you upgrade your plan or purchase additional credits.\" Footer: \"Copyright (c) 2020 - 2026 Scrape.do | PACKEND, LLC\"."
        },
        {
          "url": "https://scrape.do/documentation/request-costs/",
          "capturedAt": "2026-09-14",
          "note": "Base cost table 1 / 5 / 10 / 25 for datacenter, datacenter+render, residential-mobile (super=true), residential-mobile+render. \"Scrape.do charges credits only for successful results\", with 2XX, 400, 404 and 410 counted as successful. Per-domain override table from 10 to 200 credits: amazon.* 1 via the Amazon Scraper API, google.* 10 with super=true by default, linkedin.com 30, chewy.com 50, shopee.* 100, sainsburys.co.uk 200. Scrape.do-Request-Cost response header is the authoritative per-call cost. No cost row for output=markdown, geoCode or regionalGeoCode."
        },
        {
          "url": "https://scrape.do/documentation/",
          "capturedAt": "2026-09-14",
          "note": "Proxy Mode (use it as an outbound proxy, not only as an API); geoCode \"Choose the right country for your target web page\" and regionalGeoCode for continent-level targeting; output parameter for \"raw or markdown format\"; Asynchronous API with webhooks (the old callback parameter is marked Deprecated); dedicated Amazon, Google, Walmart, YouTube and ChatGPT scraper endpoints. No uptime SLA is published outside the Enterprise tier."
        },
        {
          "url": "https://scrape.do/privacy-policy/",
          "capturedAt": "2026-09-14",
          "note": "\"Welcome to PACKEND, LLC. PACKEND, LLC operates Scrape.do\", and the data-transfer clause names the United States as the place of processing. Used for the operating company and country only."
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "The clearest rate card in this tier and one of the few that prints the whole multiplier ladder in one table: 1 credit plain, 5 rendered, 10 residential, 25 residential and rendered, with a monthly allowance rather than a per-call price. Nothing is feature-gated by plan, the free tier is 1,000 credits a month with no card, and credits are only spent on a successful result - Scrape.do counts 2XX, 400, 404 and 410 as success and charges nothing for a timeout or a block. Two things to read before budgeting. First, the plan is a hard cap: at the limit requests stop until you upgrade or buy more credits, and the price of those extra credits is not published anywhere. Second, the base table is a floor, not the bill. A separate per-domain override charges 10 to 200 credits on named sites - google.* 10, linkedin.com 30, chewy.com 50, shopee.* 100, sainsburys.co.uk 200 - so the sites people actually buy a scraping API for are often several times the headline rate, and only the Scrape.do-Request-Cost response header tells you what a given call really cost.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 29,
            "per1kUsd": 29,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 29,
            "per1kUsd": 2.9,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 29,
            "per1kUsd": 0.29,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 99,
            "per1kUsd": 0.099,
            "via": "Pro",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 29,
            "per1kUsd": 29,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 29,
            "per1kUsd": 2.9,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Pro",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 699,
            "per1kUsd": 0.699,
            "via": "Advanced",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 29,
            "per1kUsd": 29,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 29,
            "per1kUsd": 2.9,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Pro",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 699,
            "per1kUsd": 0.699,
            "via": "Advanced",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 29,
            "per1kUsd": 29,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 29,
            "per1kUsd": 2.9,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 249,
            "per1kUsd": 2.49,
            "via": "Business",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 29,
            "per1kUsd": 29,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 29,
            "per1kUsd": 2.9,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 29,
            "per1kUsd": 0.29,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 99,
            "per1kUsd": 0.099,
            "via": "Pro",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ]
      }
    },
    {
      "slug": "scrapeowl",
      "name": "ScrapeOwl",
      "homepage": "https://scrapeowl.com",
      "pricingUrl": "https://scrapeowl.com/pricing",
      "docsUrl": "https://scrapeowl.com/docs",
      "logoDomain": "scrapeowl.com",
      "hq": "unknown",
      "founded": null,
      "billing": {
        "model": "subscription",
        "freeTier": {
          "calls": 1000,
          "period": "once",
          "creditCardRequired": false,
          "note": "Pricing page header, verbatim: \"Get 1000 credits for free, no credit card required.\" FAQ: \"Do you have a free plan? Yes, Sign up and you get 1000 credits for free!\" The sign-up page repeats \"1,000 free credits, no card required\". It is a one-off grant on registration, not a monthly allowance, and it is 1,000 credits rather than 1,000 pages, so 40 premium rendered fetches exhaust it."
        },
        "minimumMonthlyUsd": 29,
        "creditsExpire": true,
        "expiryNote": "Credits are a monthly plan allowance. Nothing on the pricing page or in the docs offers rollover, and no expiry statement is published either way.",
        "annualDiscountPct": 0,
        "prepaidOnly": false,
        "payAsYouGoAvailable": false
      },
      "unitCost": {
        "basis": "credit",
        "plain": 1,
        "js": 5,
        "residential": 10,
        "antibot": null,
        "markdown": null,
        "note": "From the docs' \"API Request Cost Calculation\" table, verbatim: \"A request using rotating proxies without render_js 1 credit\", \"A request using rotating proxies with render_js 5 credits\", \"A request using premium proxies without render_js 10 credits\", \"A request using premium proxies with render_js 25 credits\". Premium is the residential tier - the docs describe premium proxies as using \"residential IP addresses so they evade detection as data center addresses\" - and country targeting is bundled into it at no extra credit. None of this appears on the pricing page, which prints only credits, threads and support. Anti-bot is null because ScrapeOwl sells no anti-bot, stealth or unblocker tier at all and never claims to get past Cloudflare or DataDome; premium proxies are the top of the ladder. Markdown is null for the same reason: no markdown or output-format parameter exists."
      },
      "plans": [
        {
          "name": "Bootstrap",
          "monthlyUsd": 29,
          "includedUnits": 250000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "250k credits, 10 threads, \"Best Effort SLA\", \"Basic support (response within 24 hours)\". No overage rate is published on any tier."
        },
        {
          "name": "Startup",
          "monthlyUsd": 99,
          "includedUnits": 1000000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "1M credits, 25 threads, \"Guaranteed SLA\", \"Priority Support (response within 8 hours including weekends)\". The SLA is named but its uptime target is never stated."
        },
        {
          "name": "Business",
          "monthlyUsd": 249,
          "includedUnits": 3000000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "3M credits, 50 threads, \"Guaranteed SLA\", priority support."
        },
        {
          "name": "More threads or credits",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "The pricing page's only route above Business, verbatim: \"You Need more threads or credits? Email us\". No public price and no named plan."
        }
      ],
      "features": {
        "engines": [
          "api",
          "proxy"
        ],
        "verticals": [
          "plain",
          "js",
          "residential"
        ],
        "kind": "direct",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": null,
        "markdownOutput": false,
        "failedRequestsFree": null,
        "structuredParsers": false,
        "proxyPortMode": true,
        "asyncBatch": null,
        "geoTargeting": true,
        "sla": true
      },
      "sources": [
        {
          "url": "https://scrapeowl.com/pricing",
          "capturedAt": "2026-09-14",
          "note": "The whole page, verbatim: \"Get 1000 credits for free, no credit card required.\", \"All features available on all plans.\", Bootstrap $29/month 250k credits 10 threads Best Effort SLA basic support; Startup $99/month 1M credits 25 threads Guaranteed SLA priority support; Business $249/month 3M credits 50 threads Guaranteed SLA priority support; \"You Need more threads or credits? Email us\". Searched the full page for \"js rendering\", \"premium proxy\", \"premium proxies\", \"per credit\" and \"credit cost\": no matches. The credit multipliers are nowhere on the page a buyer reads."
        },
        {
          "url": "https://scrapeowl.com/docs",
          "capturedAt": "2026-09-14",
          "note": "The multipliers the pricing page omits. \"API Request Cost Calculation\", verbatim: \"Because ScrapeOwl has multiple features, the credit consumption per request depends on the specifics of your request and which attributes you're sending along\", then 1 / 5 / 10 / 25 credits for rotating without render_js, rotating with render_js, premium without render_js, premium with render_js. \"Using Premium Proxies\": \"If you use premium proxies, then each request costs 10 credits\", \"If you use premium proxies with render_js, then each request costs 25 credits\". Premium proxies use \"residential IP addresses so they evade detection as data center addresses\". Proxy port mode: \"http://scrapeowl:YOUR_API_KEY@proxy.scrapeowl.com:9000\". Country targeting via the country parameter, included in premium. On failures the page never says they are free: it shows an is_billed attribute, a request_cost attribute, and a status table in which only 200 and 404 are marked \"billed\". No markdown output, no async or batch endpoint, no site-specific parsers, no uptime number behind the SLA."
        },
        {
          "url": "https://scrapeowl.com/blog/",
          "capturedAt": "2026-09-14",
          "note": "Dormancy evidence. Eight posts, newest dated June 13, 2022, and nothing since. Cited because the product is still selling but has published nothing for four years."
        },
        {
          "url": "https://app.scrapeowl.com/register",
          "capturedAt": "2026-09-14",
          "note": "Proof the product still works: the sign-up page loads, \"Start scraping in minutes\", \"No credit card. Cancel anytime.\", \"1,000 free credits, no card required\", with Google and GitHub sign-in. No account was created. Note that scrapeowl.com/register on the marketing domain is a 404; registration lives on app.scrapeowl.com."
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "Cheap, simple and quietly stale. $29 buys 250,000 credits and the multiplier ladder is the market-standard 1 plain, 5 rendered, 10 premium, 25 premium and rendered, which makes a residential rendered page $2.90 per 1,000 on the entry plan against $0.116 for a plain one - the same 25x spread the big sellers charge, on a much smaller price list. The catch is where that ladder is written: the pricing page never mentions it, so a buyer sizing a plan from the pricing page alone will be out by up to 25x, and the FAQ does not mention it either. Two other things a buyer should know. ScrapeOwl sells no anti-bot or stealth tier and never claims to beat Cloudflare, so premium residential IPs are as hard as it goes, and it never states that failed requests are free - the docs only mark 200 and 404 as billed and expose an is_billed field, which is not the same promise. The Startup and Business plans advertise a \"Guaranteed SLA\" with no published uptime target behind it, and the company blog has not been updated since June 2022, though sign-up and the dashboard are live today.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 29,
            "per1kUsd": 29,
            "via": "Bootstrap",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 29,
            "per1kUsd": 2.9,
            "via": "Bootstrap",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 29,
            "per1kUsd": 0.29,
            "via": "Bootstrap",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 99,
            "per1kUsd": 0.099,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 29,
            "per1kUsd": 29,
            "via": "Bootstrap",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 29,
            "per1kUsd": 2.9,
            "via": "Bootstrap",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 29,
            "per1kUsd": 29,
            "via": "Bootstrap",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 29,
            "per1kUsd": 2.9,
            "via": "Bootstrap",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ]
      }
    },
    {
      "slug": "scraperapi",
      "name": "ScraperAPI",
      "homepage": "https://www.scraperapi.com",
      "pricingUrl": "https://www.scraperapi.com/pricing/",
      "docsUrl": "https://docs.scraperapi.com/getting-started/quick-start/credits-and-requests-costs",
      "logoDomain": "scraperapi.com",
      "hq": "unknown",
      "founded": 2018,
      "billing": {
        "model": "subscription",
        "freeTier": {
          "calls": 5000,
          "period": "once",
          "creditCardRequired": false,
          "note": "\"Start collecting data with our 7-day trial and 5,000 API credits. No credit card required.\" The 5,000 figure is API credits, so it is 5,000 plain pages, 500 rendered pages or 166 ultra premium pages. There is no permanent free plan."
        },
        "minimumMonthlyUsd": 49,
        "creditsExpire": true,
        "expiryNote": "Credits are a monthly plan allowance that resets at renewal; unused credits do not roll over.",
        "annualDiscountPct": 10,
        "prepaidOnly": false,
        "payAsYouGoAvailable": false
      },
      "unitCost": {
        "basis": "credit",
        "plain": 1,
        "js": 10,
        "residential": 10,
        "antibot": 30,
        "markdown": 1,
        "note": "Credits-and-costs doc: a \"Normal (flat)\" request is 1 credit, and the parameter table prints the cost of each mode as \"Extra Cost: premium=true - 10 API Credits/req, render=true - 10 API Credits/req, screenshot=true - 10, ultra_premium=true - 30, premium=true + render=true - 25, ultra_premium=true + render=true - 75\". Those are totals, not additions on top of the 1: the DataPipeline credit matrix, which the docs say \"now match our standard scraping rates\", prints the same Normal column as 1 flat, 10 JS rendering, 10 premium, 20 premium + JS, 30 ultra_premium, 75 ultra_premium + JS. The one disagreement between the two pages is premium + JS, 25 on the parameter list and 20 in the matrix. premium=true is the residential and mobile pool, ultra_premium=true is the anti-bot tier, and ultra_premium is paid-plans-only. Markdown is 1 because output_format is on the doc's explicit \"No Extra Cost\" list, alongside wait_for_selector, country_code, session_number, device_type, keep_headers and autoparse, so a plain fetch returned as Markdown costs the same 1 credit as HTML. Two other multipliers that are not one of this site's five: a domain ScraperAPI has built custom logic for costs more whatever the parameters (e-commerce 5, Google and Bing 25, LinkedIn 30), and a domain behind Cloudflare, Cloudflare Turnstile, DataDome or PerimeterX is listed at 10 credits per scrape. Discounted custom deals are repriced upward to hold a floor of \"$3 per one thousand requests without rendering and $7 with rendered pages\" on ultra premium domains."
      },
      "plans": [
        {
          "name": "Hobby",
          "monthlyUsd": 49,
          "includedUnits": 100000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "$44.10/month billed annually. 20 concurrent threads, geotargeting US and EU only, full crawler access, Ultra Premium included. No pay-as-you-go on this tier, so the plan stops at 100,000 credits."
        },
        {
          "name": "Startup",
          "monthlyUsd": 149,
          "includedUnits": 1000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "$134.10/month billed annually. 50 concurrent threads, geotargeting US and EU only. No pay-as-you-go."
        },
        {
          "name": "Business",
          "monthlyUsd": 299,
          "includedUnits": 3000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "$269.10/month billed annually. 100 concurrent threads, global geotargeting, unlimited analytics history. No pay-as-you-go."
        },
        {
          "name": "Scaling",
          "monthlyUsd": 475,
          "includedUnits": 5000000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "Marked \"Most popular\". $427.50/month billed annually. 200 concurrent threads. First tier whose feature list includes \"Pay as you go\" overflow; no dollars-per-credit overage rate is published, so overagePerUnitUsd is null."
        },
        {
          "name": "Professional",
          "monthlyUsd": 975,
          "includedUnits": 10500000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "$877.50/month billed annually. 300 concurrent threads, priority support. The card also shows a \"LIMITED OFFER - +250K BONUS CREDITS\" banner, not counted in includedUnits. Pay-as-you-go overflow at an unpublished rate."
        },
        {
          "name": "Advanced",
          "monthlyUsd": 1975,
          "includedUnits": 21500000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "$1,777.50/month billed annually. 500 concurrent threads, priority routing. The card also shows a \"LIMITED OFFER - +500K BONUS CREDITS\" banner, not counted in includedUnits. Pay-as-you-go overflow at an unpublished rate."
        },
        {
          "name": "Enterprise",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "\"Custom /month\", Contact Sales. Listed as 22,000,000+ API credits, 500+ concurrent threads, dedicated support team and Slack support."
        }
      ],
      "features": {
        "engines": [
          "api",
          "proxy"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot",
          "markdown"
        ],
        "kind": "direct",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": true,
        "failedRequestsFree": true,
        "structuredParsers": true,
        "proxyPortMode": true,
        "asyncBatch": true,
        "geoTargeting": true,
        "sla": true
      },
      "performance": {
        "claimedAvgLatencySeconds": null,
        "claimedSuccessRatePct": null,
        "source": "https://www.scraperapi.com/pricing/"
      },
      "sources": [
        {
          "url": "https://www.scraperapi.com/pricing/",
          "capturedAt": "2026-09-14",
          "note": "seven plan cards with monthly and annual USD, credits, concurrency, geotargeting scope and which tiers carry \"Pay as you go\"; \"Start collecting data with our 7-day trial and 5,000 API credits. No credit card required.\"; \"Monthly / Yearly 10% off\" toggle; core-feature list including \"Premium residential & mobile IPs\", \"Advanced bypassing\", \"Unlimited Bandwidth\" and \"99.9% Uptime Guarantee\""
        },
        {
          "url": "https://docs.scraperapi.com/getting-started/quick-start/credits-and-requests-costs",
          "capturedAt": "2026-09-14",
          "note": "the credit table: Normal (flat) 1, E-Commerce 5, SERP 25, Social Media 30; bot-protected domains (Cloudflare, Turnstile, DataDome, PerimeterX/Human) 10 per scrape; the parameter costs 10 / 10 / 30 / 25 / 75; the no-extra-cost list including output_format and country_code; \"We only charge for successful requests (200 and 404 status codes) and for requests that have been cancelled from your side before giving us enough time to finish them (70 seconds).\"; the sa-credit-cost response header and the /account/urlcost endpoint that price a URL before you fetch it"
        },
        {
          "url": "https://docs.scraperapi.com/data-pipeline/jobs-and-costs-management/credit-costs",
          "capturedAt": "2026-09-14",
          "note": "\"Price drop: DataPipeline credit costs now match our standard scraping rates.\" Current Normal column: flat 1, JS rendering 10, premium 10, premium + JS 20, ultra_premium 30, ultra_premium + JS 75"
        },
        {
          "url": "https://docs.scraperapi.com/responses-and-formats/output-formats",
          "capturedAt": "2026-09-14",
          "note": "\"Get response in LLM friendly structure with the output formats markdown or text for every URL on the web\", plus output_format=json/csv for the parsed domains"
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "The plain page is cheap and everything else is a tenfold step: 1 credit flat, 10 for a browser, 10 for the residential pool, 30 for the ultra premium anti-bot tier and 75 for anti-bot plus a browser. At the $49 Hobby plan's 100,000 credits that is $0.49 per 1,000 plain pages and $14.70 per 1,000 through ultra premium with rendering. Markdown is the bargain here: output_format sits on the no-extra-cost list, so LLM-ready Markdown costs the same single credit as raw HTML. Two things to watch. The first four tiers hard-cap with no overflow, and the pay-as-you-go the top tiers advertise has no published dollars-per-credit rate. And the domain you fetch reprices the call on its own: Google or Bing is 25 credits before any parameter, LinkedIn 30, and a page behind Cloudflare or DataDome 10, so the flat rate describes a quiet site only. Billing is on 200 and 404 only, plus requests you cancel after 70 seconds. Left null: the operating company's country and any published latency or success-rate figure.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 49,
            "per1kUsd": 49,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 49,
            "per1kUsd": 4.9,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 49,
            "per1kUsd": 0.49,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 149,
            "per1kUsd": 0.149,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 49,
            "per1kUsd": 49,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 49,
            "per1kUsd": 4.9,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 149,
            "per1kUsd": 1.49,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 975,
            "per1kUsd": 0.975,
            "via": "Professional",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 49,
            "per1kUsd": 49,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 49,
            "per1kUsd": 4.9,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 149,
            "per1kUsd": 1.49,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 975,
            "per1kUsd": 0.975,
            "via": "Professional",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 49,
            "per1kUsd": 49,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 149,
            "per1kUsd": 14.9,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 299,
            "per1kUsd": 2.99,
            "via": "Business",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 49,
            "per1kUsd": 49,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 49,
            "per1kUsd": 4.9,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 49,
            "per1kUsd": 0.49,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 149,
            "per1kUsd": 0.149,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ]
      }
    },
    {
      "slug": "scraperbox",
      "name": "ScraperBox",
      "homepage": "https://scraperbox.com",
      "pricingUrl": "https://scraperbox.com/pricing",
      "logoDomain": "scraperbox.com",
      "hq": "unknown",
      "founded": null,
      "billing": {
        "model": "subscription",
        "freeTier": null,
        "minimumMonthlyUsd": null,
        "creditsExpire": null,
        "expiryNote": "Nothing is published. The domain no longer hosts the product.",
        "annualDiscountPct": 0,
        "prepaidOnly": null,
        "payAsYouGoAvailable": null
      },
      "unitCost": {
        "basis": "request",
        "plain": null,
        "js": null,
        "residential": null,
        "antibot": null,
        "markdown": null,
        "note": "Every vertical is null because ScraperBox publishes no price for anything today: scraperbox.com no longer serves the scraping product, scraperbox.com/pricing returns HTTP 404, and the api.scraperbox.com hostname the API was called on no longer resolves in DNS. The basis is recorded as \"request\" only because the record shape requires one of four values; it is not a claim about how ScraperBox billed. No historical rate is carried over from third-party write-ups, because a price nobody can buy at is not a price."
      },
      "plans": [
        {
          "name": "No published plan",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "There is no price list to record. scraperbox.com/pricing and scraperbox.com/docs both return HTTP 404, and the root domain now serves an unrelated site. This entry exists so the table can show the provider as gone rather than silently omitting it."
        }
      ],
      "features": {
        "engines": [
          "api"
        ],
        "verticals": [],
        "kind": "direct",
        "jsRendering": null,
        "residentialProxy": null,
        "antiBotBypass": null,
        "markdownOutput": null,
        "failedRequestsFree": null,
        "structuredParsers": null,
        "proxyPortMode": null,
        "asyncBatch": null,
        "geoTargeting": null,
        "sla": null
      },
      "sources": [
        {
          "url": "https://scraperbox.com/",
          "capturedAt": "2026-09-14",
          "note": "The proof the product is gone. The root domain returns HTTP 200 but serves an Indonesian online-gambling site, not a scraping API: the document is <html amp lang=\"id-ID\"> with the title \"JOTUNTOTO - Nikmati Kemenangan Maximal Dengan Situs Toto Slot QRIS Terbaik Berlisensi Resmi\", advertising \"98.7% WIN RATE\" and \"2min WITHDRAW\", with its login and registration buttons pointing at an unrelated third-party domain. www.scraperbox.com serves the identical page. There is no scraping product, no pricing, no sign-up and no notice of what happened to it."
        },
        {
          "url": "https://scraperbox.com/pricing",
          "capturedAt": "2026-09-14",
          "note": "HTTP 404 Not Found. scraperbox.com/docs is also HTTP 404. Neither redirects to a successor product."
        },
        {
          "url": "https://api.scraperbox.com/scrape",
          "capturedAt": "2026-09-14",
          "note": "The API endpoint hostname does not resolve: DNS lookup for api.scraperbox.com fails outright (\"Could not resolve host\"). An existing integration would fail at connection, not at authentication."
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "ScraperBox is gone. It sold itself as an undetectable scraping API, and the domain still ranks for the name, but as of today scraperbox.com serves an Indonesian online-gambling site rather than the product, /pricing and /docs both 404, and the api.scraperbox.com hostname the API was called on no longer exists in DNS. That last one matters most: this is not a company that let its marketing site lapse while the API kept running, it is a service whose endpoint cannot be reached at all. No price is recorded, because there is no page left to read one off, and third-party roundups still quoting ScraperBox rates are quoting a product you cannot buy. It is listed here so that a reader searching for it learns that, instead of finding nothing and assuming the comparison is incomplete.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ]
      }
    },
    {
      "slug": "scrapestack",
      "name": "scrapestack",
      "homepage": "https://scrapestack.com",
      "pricingUrl": "https://scrapestack.com/product",
      "docsUrl": "https://docs.apilayer.com/scrapestack/docs/api-features",
      "logoDomain": "scrapestack.com",
      "hq": "US",
      "founded": null,
      "billing": {
        "model": "subscription",
        "freeTier": {
          "calls": 100,
          "period": "month",
          "creditCardRequired": null,
          "note": "The Free plan is $0 for 100 requests a month, and it is standard proxies only - no JavaScript rendering, no geolocations, no premium proxies. 100 requests is the smallest free tier of any provider on this site by a wide margin."
        },
        "minimumMonthlyUsd": 19.99,
        "creditsExpire": true,
        "expiryNote": "Plan requests are a monthly volume; overage is charged per request rather than rolled over. No rollover is offered.",
        "annualDiscountPct": 15,
        "prepaidOnly": false,
        "payAsYouGoAvailable": false
      },
      "unitCost": {
        "basis": "request",
        "plain": 1,
        "js": 1,
        "residential": 25,
        "antibot": 25,
        "markdown": null,
        "note": "Standard proxies are 1: \"single requests using standard proxies are charged as only 1 API request.\" Premium (residential) proxies are 25: \"Please note that a single premium proxy API request is counted as 25 API requests\" and \"a single request using premium proxies will be charged as 25 API requests\". Anti-bot carries the same 25 because it is the same purchase - the API reference describes premium_proxy as \"premium (residential) proxies (recommended when scraping anti-bot sites)\" and scrapestack sells no separate stealth or unblocker tier. JavaScript rendering is 1 because no multiplier is published for render_js anywhere in the docs; the catch is a plan gate rather than a price, and a bigger one than a multiplier: the API features page says twice that render_js \"must be used together with premium_proxy\", so in practice a rendered page is charged at the premium 25 and is only available from the $79.99 Professional plan up. Markdown is null: no markdown or output-format parameter exists."
      },
      "plans": [
        {
          "name": "Free",
          "monthlyUsd": 0,
          "includedUnits": 100,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "100 requests a month. Standard proxies only: no JavaScript rendering, no 100+ geolocations, no premium proxies."
        },
        {
          "name": "Basic",
          "monthlyUsd": 19.99,
          "includedUnits": 200000,
          "overagePerUnitUsd": 0.0003998,
          "hardCap": false,
          "delivery": "live",
          "note": "200,000 requests. Includes JavaScript rendering and 100+ geolocations but NOT premium proxies, and the docs say render_js must be used with premium_proxy, so the rendering on this tier is not usable as documented. $17.99/month billed yearly."
        },
        {
          "name": "Professional",
          "monthlyUsd": 79.99,
          "includedUnits": 1000000,
          "overagePerUnitUsd": 0.00031996,
          "hardCap": false,
          "delivery": "live",
          "note": "1,000,000 requests. Marked Most Popular. First tier with premium (residential) proxies: \"For customers subscribed to the Professional Plan or higher, the scrapestack API allows access to premium (residential) proxies.\" $69.99/month billed yearly."
        },
        {
          "name": "Business",
          "monthlyUsd": 199.99,
          "includedUnits": 3000000,
          "overagePerUnitUsd": 0.0002666533,
          "hardCap": false,
          "delivery": "live",
          "note": "3,000,000 requests, premium proxies, optional Platinum Support. $169.99/month billed yearly, the full 15%."
        },
        {
          "name": "Enterprise",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "Custom volume and pricing, contact sales. Includes JavaScript rendering, geolocations and premium proxies. No public price."
        }
      ],
      "features": {
        "engines": [
          "api"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot"
        ],
        "kind": "direct",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": false,
        "failedRequestsFree": true,
        "structuredParsers": false,
        "proxyPortMode": false,
        "asyncBatch": null,
        "geoTargeting": true,
        "sla": null
      },
      "sources": [
        {
          "url": "https://scrapestack.com/product",
          "capturedAt": "2026-09-14",
          "note": "Plan table: Free $0 / 100 requests; Basic $19.99 monthly, $17.99 yearly / 200,000; Professional $79.99 monthly, $69.99 yearly / 1,000,000; Business $199.99 monthly, $169.99 yearly / 3,000,000; Enterprise custom. Yearly is \"up to 15% lower\" - it works out at 10% on Basic, 12.5% on Professional and 15% on Business. Feature grid: JavaScript rendering and 100+ geolocations from Basic up, premium (residential) proxies on Professional and above only, nothing but standard proxies on Free. Published overage rates per request past the quota: Basic $0.0003998, Professional $0.00031996, Business $0.0002666533."
        },
        {
          "url": "https://scrapestack.com/faq",
          "capturedAt": "2026-09-14",
          "note": "The failure policy, verbatim under \"What is an API Request?\": \"Pricing is based on the number of monthly API requests allowed. Each time the scrapestack service is used to process a URL, one API request is made. In the event that an error should occur, your request does not count towards the monthly volume.\" The same text appears in the FAQ block at the bottom of the pricing page."
        },
        {
          "url": "https://docs.apilayer.com/scrapestack/docs/api-features",
          "capturedAt": "2026-09-14",
          "note": "The multiplier, which appears nowhere on the pricing page. Request-parameter table, premium_proxy row: \"Please note that a single premium proxy API request is counted as 25 API requests.\" Premium Proxies section: \"Please note that a single request using premium proxies will be charged as 25 API requests, while single requests using standard proxies are charged as only 1 API request\", and \"For customers subscribed to the Professional Plan or higher, the scrapestack API allows access to premium (residential) proxies, which are associated with real residential addresses.\" The render_js row and the JavaScript Rendering section both say \"This option must be used together with premium_proxy which is available on the Premium plan\" - a plan name that does not exist on the pricing page, where the tiers are Free, Basic, Professional, Business and Enterprise. No multiplier is published for render_js or for proxy_location."
        },
        {
          "url": "https://docs.apilayer.com/scrapestack/docs/scrapestack-api-v-1-0-0",
          "capturedAt": "2026-09-14",
          "note": "API reference. premium_proxy: \"Set to 1 to enable premium (residential) proxies (recommended when scraping anti-bot sites). Premium proxy usage is subject to plan restrictions and each premium proxy request counts as 25 API requests for billing.\" render_js: \"Set to 1 to enable JavaScript rendering (headless Chrome). Default 0 (off). Available on Basic plan and higher.\" That sentence contradicts the api-features page, which says render_js must be paired with premium_proxy and therefore needs Professional."
        },
        {
          "url": "https://scrapestack.com/",
          "capturedAt": "2026-09-14",
          "note": "\"35+ million datacenter and residential IP addresses\", \"CAPTCHA solving, browser support and JS rendering\", \"premium pricing plans start at $19.99 per month\". Footer: \"(c) 2026 Scrapestack API, an APILayer product\", with the Imprint / Legal link resolving to ideracorp.com/legal/APILayer - the same Idera entity that owns Zenscrape."
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "The steepest residential multiplier in this tier and the one buried furthest from the price. The pricing page sells flat monthly request allowances - $19.99 for 200,000, $79.99 for 1,000,000 - and says nothing about multipliers at all; the docs then charge a premium (residential) request as 25 API requests, which turns a $0.10 per 1,000 plan into $2.50 per 1,000 the moment you touch a site that needs a residential IP. It also gates that mode to the $79.99 Professional plan and above. Then the documentation disagrees with itself about JavaScript: the API features page says twice that render_js \"must be used together with premium_proxy\", which would make every rendered page cost 25 and need Professional, while the API reference says render_js is \"Available on Basic plan and higher\". The pricing page's own feature grid takes the second view and marks JavaScript rendering as included from Basic. Both were read today; neither is corrected by the other. The docs also refer to a \"Premium plan\" that does not exist on the price list. What is unambiguous and good: errors are free, in scrapestack's own words, and the per-request overage rate is published for every paid tier, which is rare here. The free tier is 100 requests a month on standard proxies, effectively a smoke test.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19.99,
            "per1kUsd": 19.99,
            "via": "Basic",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 19.99,
            "per1kUsd": 1.999,
            "via": "Basic",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 19.99,
            "per1kUsd": 0.1999,
            "via": "Basic",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 79.99,
            "per1kUsd": 0.07999,
            "via": "Professional",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19.99,
            "per1kUsd": 19.99,
            "via": "Basic",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 19.99,
            "per1kUsd": 1.999,
            "via": "Basic",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 19.99,
            "per1kUsd": 0.1999,
            "via": "Basic",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 79.99,
            "per1kUsd": 0.07999,
            "via": "Professional",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19.99,
            "per1kUsd": 19.99,
            "via": "Basic",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 39.980000000000004,
            "per1kUsd": 3.998,
            "via": "Basic",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 199.99,
            "per1kUsd": 1.9999,
            "via": "Business",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 6066.3625999999995,
            "per1kUsd": 6.066363,
            "via": "Business",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19.99,
            "per1kUsd": 19.99,
            "via": "Basic",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 39.980000000000004,
            "per1kUsd": 3.998,
            "via": "Basic",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 199.99,
            "per1kUsd": 1.9999,
            "via": "Business",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 6066.3625999999995,
            "per1kUsd": 6.066363,
            "via": "Business",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ]
      }
    },
    {
      "slug": "scrapfly",
      "name": "Scrapfly",
      "homepage": "https://scrapfly.io",
      "pricingUrl": "https://scrapfly.io/pricing",
      "docsUrl": "https://scrapfly.io/docs/scrape-api/billing",
      "logoDomain": "scrapfly.io",
      "hq": "unknown",
      "billing": {
        "model": "hybrid",
        "freeTier": {
          "calls": 1000,
          "period": "once",
          "creditCardRequired": false,
          "note": "\"1,000 credits on signup. Every product, no credit card, no time limit. Use it forever for prototypes and smoke tests.\" These are credits, so 1,000 plain pages, 166 rendered ones or 40 through the residential pool."
        },
        "minimumMonthlyUsd": 30,
        "creditsExpire": true,
        "expiryNote": "FAQ: \"Do unused credits roll over? No. Quotas reset at renewal.\"",
        "annualDiscountPct": null,
        "prepaidOnly": true,
        "payAsYouGoAvailable": true
      },
      "unitCost": {
        "basis": "credit",
        "plain": 1,
        "js": 6,
        "residential": 25,
        "antibot": null,
        "markdown": 1,
        "note": "Billing docs: the base request is 1 credit on datacenter proxies or 25 on residential (proxy_pool=public_residential_pool), the two being mutually exclusive, and browser rendering (render_js=true) adds +5 on top of whichever base you chose. The docs' own worked examples make the totals explicit: plain datacenter 1, datacenter with rendering \"1 + 5 = 6 credits\", residential alone 25, residential with rendering \"25 + 5 = 30 credits\". The pricing page's summary card rounds this to \"5 credits + JS rendering or Unblocker\" and \"25 credits + residential proxies\", which disagrees with the docs by one credit on the rendered case; the docs' arithmetic is used here. Markdown is 1 because format=markdown (and text, clean_html and json, with options like markdown:only_content) is an output parameter on the ordinary scrape and carries no stated surcharge. antibot is null because Scrapfly sells the tier but refuses to price it: the Unblocker (formerly ASP) \"may dynamically upgrade the proxy pool to bypass anti-bot protection, which can affect the final cost\", it is \"totally free on non-blocked scrape\", and the docs say outright that \"specific target/shield have fees and are not publicly documented\". The pricing page implies 5 or 6 credits, the docs' own sample response shows an asp_cost of 30, and the real figure is only known afterwards from the X-Scrapfly-Api-Cost header or context.cost, so no single multiplier is recorded. Prices that are not per page, and so left out of the verticals: binary downloads bill 3 credits per 100KB on datacenter and 10 on residential with the first 1MB free, an HTML or data response over 1MB bills the excess at those bandwidth rates, browser rendering includes 3MB free, and a full-page screenshot is 60 credits."
      },
      "plans": [
        {
          "name": "Free",
          "monthlyUsd": 0,
          "includedUnits": 1000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "oneTime": true,
          "validityMonths": null,
          "note": "A one-off 1,000-credit signup grant rather than a monthly allowance: no card, no time limit, every product usable. Recorded as a one-time pack that never expires."
        },
        {
          "name": "Discovery",
          "monthlyUsd": 30,
          "includedUnits": 200000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "$0.15 per 1k credits, prepaid. 5 concurrent requests, 1 week log retention, solo account, basic support. The card says \"No pay-as-you-go\" and the page adds \"Discovery caps on quota, your bill is fixed.\""
        },
        {
          "name": "Pro",
          "monthlyUsd": 100,
          "includedUnits": 1000000,
          "overagePerUnitUsd": 0.00035,
          "hardCap": false,
          "delivery": "live",
          "note": "$0.10 per 1k credits, prepaid. 20 concurrent requests, 2 weeks log retention. Overage printed as \"Extra at $3.50 / 10k\" credits, recorded per credit. Pay-as-you-go auto-activates on quota exhaustion and is capped at 50% of the monthly quota."
        },
        {
          "name": "Startup",
          "monthlyUsd": 250,
          "includedUnits": 2500000,
          "overagePerUnitUsd": 0.0002,
          "hardCap": false,
          "delivery": "live",
          "note": "Marked \"MOST POPULAR\". $0.10 per 1k credits, prepaid. 50 concurrent requests, 3 weeks log retention, team management. Overage printed as \"Extra at $2.00 / 10k\" credits."
        },
        {
          "name": "Enterprise",
          "monthlyUsd": 500,
          "includedUnits": 5500000,
          "overagePerUnitUsd": 0.00012,
          "hardCap": false,
          "delivery": "live",
          "note": "$0.09 per 1k credits, prepaid. 100 concurrent requests, 4 weeks log retention, premium support. Overage printed as \"Extra at $1.20 / 10k\" credits. A self-serve list price, not a quote."
        },
        {
          "name": "Custom",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "\"Talk to Sales\", for 6M+ credits a month. The page says custom contracts \"start at $1.2k/mo and scale to $30k+/mo\" with committed concurrency, dedicated residential pools, MSA, DPA, BAA and HIPAA. No list price, so monthlyUsd is null."
        }
      ],
      "features": {
        "engines": [
          "api",
          "proxy"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot",
          "markdown"
        ],
        "kind": "direct",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": true,
        "failedRequestsFree": true,
        "structuredParsers": true,
        "proxyPortMode": true,
        "asyncBatch": true,
        "geoTargeting": true,
        "sla": false
      },
      "sources": [
        {
          "url": "https://scrapfly.io/pricing",
          "capturedAt": "2026-09-14",
          "note": "plan cards Free, Discovery $30/200,000, Pro $100/1,000,000, Startup $250/2,500,000, Enterprise $500/5,500,000 and Custom, each with per-1k-credit rate, concurrency, log retention and the per-10k overage; the credit summary \"1 credit HTTP scrape on datacenter IP, 5 credits + JS rendering or Unblocker, 25 credits + residential proxies, 60 credits screenshot capture (full-page), Failed request $0, never charged on error\"; \"Do unused credits roll over? No. Quotas reset at renewal.\"; no annual billing option anywhere on the page"
        },
        {
          "url": "https://scrapfly.io/docs/scrape-api/billing",
          "capturedAt": "2026-09-14",
          "note": "the authoritative table (datacenter 1, residential 25, render_js +5) with worked examples giving 1, 6, 25 and 30; the note that proxy pools are mutually exclusive and that \"the Unblocker may dynamically upgrade the proxy pool to bypass anti-bot protection, which can affect the final cost\"; binary billing at 3 and 10 credits per 100KB with the first 1MB free; \"Scrapfly's Scrape Failed Protection ensures that failed scrapes are not billed to our customers\", with the fairness policy that bills usage once more than 30% of traffic in an hour fails on eligible status codes; the pay-as-you-go cap at 50% of monthly quota; cost_budget, project limits and throttlers"
        },
        {
          "url": "https://scrapfly.io/docs/scrape-api/unblocker",
          "capturedAt": "2026-09-14",
          "note": "\"The API Credit cost may fluctuate, if a website introduce new protection(s) or migrate to another anti bot server\"; \"Specific target/shield have fees and are not publicly documented\"; \"It's totally free on non-blocked scrape ... no extra cost is applied on non-protected traffic\""
        },
        {
          "url": "https://scrapfly.io/docs/scrape-api/getting-started",
          "capturedAt": "2026-09-14",
          "note": "the format parameter: \"Output format: raw, clean_html, json, markdown, text. Markdown/text support :no_links,no_images,only_content options\", plus the X-Scrapfly-Api-Cost response header"
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "The cheapest plain page in this group by rate card: Discovery is $0.15 per 1,000 credits, so $0.15 per 1,000 datacenter fetches, and Markdown output costs nothing extra. The step up is steep and unusually shaped, because residential is a base cost rather than an add-on: 25 credits for the address, 25x the plain page, and 30 once a browser is involved. The anti-bot tier is the one number Scrapfly will not print. Turning the Unblocker on is free on a page that was not blocked, but on a page that is it can silently move you onto the residential pool and add undocumented per-target fees, so the cost of the call is something you read afterwards from the X-Scrapfly-Api-Cost header rather than something you can budget from the price list. cost_budget, project limits and throttlers exist precisely because of that. Failed scrapes are not billed unless more than 30% of an hour's traffic is failing. Credits never roll over, and Discovery hard-caps; pay-as-you-go starts at Pro and is capped at half the monthly quota. Left null: the anti-bot multiplier, the annual discount (there is no annual option), and the operating company's country.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 30,
            "per1kUsd": 30,
            "via": "Discovery",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 30,
            "per1kUsd": 3,
            "via": "Discovery",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 30,
            "per1kUsd": 0.3,
            "via": "Discovery",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 100,
            "per1kUsd": 0.1,
            "via": "Pro",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 30,
            "per1kUsd": 30,
            "via": "Discovery",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 30,
            "per1kUsd": 3,
            "via": "Discovery",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 100,
            "per1kUsd": 1,
            "via": "Pro",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 560,
            "per1kUsd": 0.56,
            "via": "Enterprise",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 30,
            "per1kUsd": 30,
            "via": "Discovery",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 100,
            "per1kUsd": 10,
            "via": "Pro",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 250,
            "per1kUsd": 2.5,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 2840,
            "per1kUsd": 2.84,
            "via": "Enterprise",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 30,
            "per1kUsd": 30,
            "via": "Discovery",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 30,
            "per1kUsd": 3,
            "via": "Discovery",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 30,
            "per1kUsd": 0.3,
            "via": "Discovery",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 100,
            "per1kUsd": 0.1,
            "via": "Pro",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ]
      }
    },
    {
      "slug": "scrapingant",
      "name": "ScrapingAnt",
      "homepage": "https://scrapingant.com",
      "pricingUrl": "https://scrapingant.com/#pricing",
      "docsUrl": "https://docs.scrapingant.com/credits-cost",
      "logoDomain": "scrapingant.com",
      "hq": "PL",
      "billing": {
        "model": "subscription",
        "freeTier": {
          "calls": 10000,
          "period": "month",
          "creditCardRequired": false,
          "note": "\"10,000 free credits every month. No credit card.\" These are credits, so 10,000 plain fetches, 1,000 default browser-rendered ones or 80 through a browser on residential IPs. The FAQ repeats it: \"The free plan includes 10,000 API credits every month with no credit card required. You only enter payment details if you upgrade.\""
        },
        "minimumMonthlyUsd": 19,
        "creditsExpire": true,
        "expiryNote": "Credits doc: \"Unused API credits are not transferred to the next subscription period.\" The pricing section adds that you can restart a plan mid-month to refresh credits early rather than waiting for the billing date.",
        "annualDiscountPct": null,
        "prepaidOnly": false,
        "payAsYouGoAvailable": false
      },
      "unitCost": {
        "basis": "credit",
        "plain": 1,
        "js": 10,
        "residential": 25,
        "antibot": 125,
        "markdown": 1,
        "note": "The credit-cost doc prints one table for the whole API: \"Simple request (no browser usage) + standard (datacenter) proxy 1; Headless browser (no JS rendering, return_page_source parameter is true) + standard (datacenter) proxy 2; Headless browser (JS rendering) + standard (datacenter) proxy 10; Simple request (no browser usage) + premium (residential) proxy 25; Headless browser (no JS rendering, return_page_source parameter is false) + standard (datacenter) proxy 50; Headless browser (JS rendering) + premium (residential) proxy 125; Any request to Google domain + standard (datacenter) proxy 10.\" The 50-credit row contradicts the 10-credit row on its face, since both describe a datacenter browser request, and no page reconciles them. Note the default: the browser parameter defaults to true, so the FAQ's \"default request - Chrome rendering with standard proxies - costs 10 credits\", and the 1-credit rate only applies when you pass browser=false. antibot is 125 because that is the dearest configuration ScrapingAnt publishes, a rendering browser on the residential pool; there is no separately named stealth, unblocker or ultra tier, and the CAPTCHA and Cloudflare page describes anti-bot avoidance (real latest-version browsers, fingerprinting, country selection, cookie chaining) as something included in every request rather than as a priced mode. Markdown is 1 because the /v2/markdown endpoint \"accepts the same request structure as the general endpoint\" and bills off the same table, so with browser=false a page of Markdown is the same single credit as HTML; left at the default it is 10. The AI extractor is priced differently again, by characters: one credit per 30 characters of the Markdown plus the output text, added to the underlying scrape cost, which is not a per-page figure and is left out of the verticals. Every response carries an Ant-credits-cost header with what the call actually cost."
      },
      "plans": [
        {
          "name": "Free",
          "monthlyUsd": 0,
          "includedUnits": 10000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "10,000 credits every month, no credit card. Documentation-only support."
        },
        {
          "name": "Enthusiast",
          "monthlyUsd": 19,
          "includedUnits": 100000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "100,000 credits a month, email support, docs-only integration help. No expert assistance, custom proxy pools or custom anti-bot tuning."
        },
        {
          "name": "Startup",
          "monthlyUsd": 49,
          "includedUnits": 500000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "Marked \"Most Popular\". 500,000 credits, priority email support, custom code snippets, expert assistance."
        },
        {
          "name": "Business",
          "monthlyUsd": 249,
          "includedUnits": 3000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "3,000,000 credits, priority email support, debug sessions, custom proxy pools, custom anti-bot avoidances, dedicated account manager."
        },
        {
          "name": "Business Pro",
          "monthlyUsd": 599,
          "includedUnits": 8000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "8,000,000 credits, priority debug sessions, same custom proxy and anti-bot options as Business."
        },
        {
          "name": "Custom",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "\"Talk to Sales\" tier for 10M+ credits a month with priority and dedicated support and full enterprise onboarding. The card prints \"$699+/mo\", which is a starting point rather than a price for a stated number of credits, so monthlyUsd is null."
        }
      ],
      "features": {
        "engines": [
          "api",
          "proxy"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot",
          "markdown"
        ],
        "kind": "direct",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": true,
        "failedRequestsFree": true,
        "structuredParsers": false,
        "proxyPortMode": true,
        "asyncBatch": false,
        "geoTargeting": true,
        "sla": false
      },
      "sources": [
        {
          "url": "https://scrapingant.com/#pricing",
          "capturedAt": "2026-09-14",
          "note": "the five-column plan grid: Enthusiast $19 for 100K credits, Startup $49 for 500K, Business $249 for 3M, Business Pro $599 for 8M and Custom at $699+ for 10M+, with the support, integration-help, custom-proxy-pool, custom-anti-bot and account-manager rows; \"10,000 free credits every month\", \"No credit card required\", \"Pay only for successful scrapes - failed requests cost 0\", the mid-month plan restart, and the FAQ line \"The default request - Chrome rendering with standard proxies - costs 10 credits\". No annual billing option is offered."
        },
        {
          "url": "https://docs.scrapingant.com/credits-cost",
          "capturedAt": "2026-09-14",
          "note": "the full credit table quoted in unitCost.note, \"Unused API credits are not transferred to the next subscription period\", the AI extractor formula of one credit per 30 characters of Markdown plus output added to the scrape cost, and the Ant-credits-cost response header"
        },
        {
          "url": "https://docs.scrapingant.com/request-response-format",
          "capturedAt": "2026-09-14",
          "note": "the /v2/general endpoint and its parameters: browser (default true), return_page_source, proxy_type, proxy_country, js_snippet, wait_for_selector, cookies, timeout"
        },
        {
          "url": "https://docs.scrapingant.com/proxy-settings",
          "capturedAt": "2026-09-14",
          "note": "proxy_type=datacenter (50,000+ IPs, the default) versus residential (2,000,000+ IPs), the 24 selectable proxy countries, per-request IP rotation, and mobile proxies available only on request"
        },
        {
          "url": "https://docs.scrapingant.com/llm-markdown",
          "capturedAt": "2026-09-14",
          "note": "the /v2/markdown endpoint, which \"accepts the same request structure as the general endpoint\" and whose \"cost of using this endpoint is based on the number of API credits consumed per request\", pointing back at the same credit table"
        },
        {
          "url": "https://docs.scrapingant.com/proxy-mode",
          "capturedAt": "2026-09-14",
          "note": "proxy port at proxy.scrapingant.com:8080 and :443 with parameters passed in the username; \"Request cost is calculated in the same way as for the scraping endpoint\""
        },
        {
          "url": "https://scrapingant.com/legal/terms-of-use",
          "capturedAt": "2026-09-14",
          "note": "operating company DATAANT SP. Z O.O., \"registered and acting under the laws of the Republic of Poland under the business registration number (KRS) 0000848755\""
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "The steepest ladder of the six: 1 credit plain, 10 rendered, 25 residential and 125 for a browser on a residential IP, so the same URL can cost 125 times more depending on how it has to be fetched. On the $19 Enthusiast plan that is $0.19 per 1,000 plain pages and $23.75 per 1,000 at the top. The default matters more here than anywhere else, because browser is on unless you turn it off, so the naive request costs ten credits and the cheap rate is something you have to ask for. There is a dedicated Markdown endpoint that bills off the same table, which makes LLM-ready text as cheap as HTML if you disable the browser. A genuinely free 10,000 credits arrive every month with no card, failed requests cost nothing, and there is a proxy port that prices identically to the API. Two caveats in the price table itself: one row prices a datacenter browser request at 50 credits while another prices what reads as the same thing at 10, and nothing reconciles them, and Google domains are billed at 10 credits even without a browser. There is no anti-bot tier with a name and no published SLA, and plans hard-cap with no metered overage; the offered fix is restarting your plan early. Left null: the annual discount, since no annual option exists.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Enthusiast",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 19,
            "per1kUsd": 1.9,
            "via": "Enthusiast",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 19,
            "per1kUsd": 0.19,
            "via": "Enthusiast",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 249,
            "per1kUsd": 0.249,
            "via": "Business",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Enthusiast",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 19,
            "per1kUsd": 1.9,
            "via": "Enthusiast",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 249,
            "per1kUsd": 2.49,
            "via": "Business",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Enthusiast",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 49,
            "per1kUsd": 4.9,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 249,
            "per1kUsd": 2.49,
            "via": "Business",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 49,
            "per1kUsd": 49,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 249,
            "per1kUsd": 24.9,
            "via": "Business",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Enthusiast",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 19,
            "per1kUsd": 1.9,
            "via": "Enthusiast",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 19,
            "per1kUsd": 0.19,
            "via": "Enthusiast",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 249,
            "per1kUsd": 0.249,
            "via": "Business",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ]
      }
    },
    {
      "slug": "scrapingbee",
      "name": "ScrapingBee",
      "homepage": "https://www.scrapingbee.com",
      "pricingUrl": "https://www.scrapingbee.com/pricing/",
      "docsUrl": "https://www.scrapingbee.com/documentation/",
      "logoDomain": "scrapingbee.com",
      "hq": "FR",
      "billing": {
        "model": "subscription",
        "freeTier": {
          "calls": 1000,
          "period": "once",
          "creditCardRequired": false,
          "note": "\"Get access to 1,000 free scraper API credits, no credit card required!\" These are credits, not pages: 1,000 plain fetches, 200 rendered ones, or 13 through the stealth pool. The page does not say they refresh, so it is recorded as a one-off signup grant."
        },
        "minimumMonthlyUsd": 19,
        "creditsExpire": true,
        "expiryNote": "Knowledge base, \"What will happen to my unused credits?\": \"When your subscription expires or is renewed, any unused credits will not roll over.\" Only a plan change carries them: \"Upgrading or downgrading the subscription would transfer any unused credits to the new subscription.\"",
        "annualDiscountPct": null,
        "prepaidOnly": false,
        "payAsYouGoAvailable": false
      },
      "unitCost": {
        "basis": "credit",
        "plain": 1,
        "js": 5,
        "residential": 10,
        "antibot": 75,
        "markdown": 1,
        "note": "Knowledge-base article \"Credit system explained\", the full HTML API list: \"Classic proxies without JS rendering: 1 credit. Classic proxies with JS rendering: 5 credits. Premium proxies without JS rendering: 10 credits. Premium proxies with JS rendering: 25 credits. Stealth proxies (no option to disable JS rendering at the moment): 75 credits.\" Premium is the residential tier the country_code parameter rides on, and stealth is the anti-bot tier, which cannot be bought without rendering, so 75 is both the stealth and the stealth-plus-browser price. Markdown is 1 because return_page_markdown and return_page_text are ordinary HTML API parameters and the credit article charges nothing for them, so a plain fetch returned as Markdown is the same 1 credit; ask for Markdown on a rendered page and it is 5. Watch the default: render_js defaults to true in the HTML API, so a call made with no parameters at all bills 5, not 1. Adding an AI query costs 5 more on top of whichever tier you are on (classic 10, premium 20, stealth 80). Two multipliers outside this site's five: a Google URL through the generic HTML API is 15 credits on classic or premium and 75 on stealth whether or not JS is disabled, and the dedicated scraper APIs have their own flat prices (Google and Walmart 10 light / 15 normal, Amazon 5 light / 15 normal, ChatGPT 15, Gemini 15, YouTube 5, Fast Search 10, Agentic Search 3,750). A mode=auto parameter lets ScrapingBee pick the cheapest configuration that succeeds, with max_cost capping the credits it may spend."
      },
      "plans": [
        {
          "name": "Hobby",
          "monthlyUsd": 19,
          "includedUnits": 75000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "25 concurrent requests. JS rendering, rotating and premium proxies and geotargeting are included; screenshots, extraction rules and the Google Search API are not. All prices exclusive of VAT."
        },
        {
          "name": "Freelance",
          "monthlyUsd": 49,
          "includedUnits": 250000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "50 concurrent requests. Same feature set as Hobby on the grid. Exclusive of VAT."
        },
        {
          "name": "Startup",
          "monthlyUsd": 99,
          "includedUnits": 1000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "100 concurrent requests. Marked \"Recommended\". Exclusive of VAT."
        },
        {
          "name": "Business",
          "monthlyUsd": 249,
          "includedUnits": 3000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "200 concurrent requests. Adds the dedicated scraper APIs, priority email support and team management. Exclusive of VAT."
        },
        {
          "name": "Business +",
          "monthlyUsd": 599,
          "includedUnits": 8000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "400 concurrent requests. Adds a dedicated account manager. Exclusive of VAT."
        },
        {
          "name": "Custom",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "\"Need more monthly credits or higher concurrency? Talk to Product Expert\" - no published price."
        }
      ],
      "features": {
        "engines": [
          "api",
          "proxy"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot",
          "markdown"
        ],
        "kind": "direct",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": true,
        "failedRequestsFree": true,
        "structuredParsers": true,
        "proxyPortMode": true,
        "asyncBatch": false,
        "geoTargeting": true,
        "sla": false
      },
      "sources": [
        {
          "url": "https://www.scrapingbee.com/pricing/",
          "capturedAt": "2026-09-14",
          "note": "five plan cards with monthly USD, API credits and concurrency (19/75,000/25, 49/250,000/50, 99/1,000,000/100, 249/3,000,000/200, 599/8,000,000/400), the feature grid, \"Talk to Product Expert\" for anything larger, \"All prices are exclusive of VAT\", \"Try ScrapingBee with 1,000 free API credits\" with \"No credit card required\", no annual billing toggle, and the header claim \"Pay only for successful requests, cancel anytime, no questions asked!\""
        },
        {
          "url": "https://help.scrapingbee.com/en/article/credit-system-explained-1h2ackp/",
          "capturedAt": "2026-09-14",
          "note": "the full credit list: HTML API 1 / 5 / 10 / 25 / 75, the AI query surcharge of 5, the Google-URL prices of 15 and 75, and the flat prices of every dedicated scraper API. Updated 07/08/2026"
        },
        {
          "url": "https://www.scrapingbee.com/documentation/",
          "capturedAt": "2026-09-14",
          "note": "HTML API parameter list: render_js default true, premium_proxy, stealth_proxy, country_code (\"Premium proxy geolocation\"), return_page_markdown, return_page_text, extract_rules, ai_extract_rules, own_proxy, session_id, mode=auto and max_cost; the docs nav also carries Proxy Mode and the dedicated Scraper APIs"
        },
        {
          "url": "https://www.scrapingbee.com/features/markdown-scraper/",
          "capturedAt": "2026-09-14",
          "note": "\"ScrapingBee's return_page_markdown and return_page_text parameters automatically convert web pages into structured, LLM-ready formats\"; the FAQ confirms only the AI extraction surcharge: \"AI web scraping requests cost an additional five credits on top of the regular API cost\""
        },
        {
          "url": "https://help.scrapingbee.com/en/article/what-will-happen-to-my-unused-credits-11zt09p/",
          "capturedAt": "2026-09-14",
          "note": "credit expiry, quoted above; an upgrade or downgrade does carry unused credits across"
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "The clearest multiplier ladder in this market, and the widest: 1 credit plain, 5 rendered, 10 premium, 25 premium rendered, 75 stealth. On the $19 Hobby plan's 75,000 credits that is $0.25 per 1,000 plain pages and $19 per 1,000 through the stealth pool, a 75x spread on the same URL. Two traps. render_js defaults to true, so the naive call bills five credits rather than one and the headline rate is not what a first-time user pays. And stealth has no option to turn rendering off, so there is no cheaper way to get past an anti-bot wall. Markdown and plain-text output are free parameters rather than a priced product, which makes it one of the cheapest LLM-ready fetches here. Plans hard-cap with no overage and credits do not roll over, but ScrapingBee bills successful requests only, and mode=auto with max_cost will hunt for the cheapest configuration that works instead of leaving you to guess. Left null: annual discount (the page offers no annual option), any published uptime SLA, and the founding year.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 19,
            "per1kUsd": 1.9,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 49,
            "per1kUsd": 0.49,
            "via": "Freelance",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 99,
            "per1kUsd": 0.099,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 19,
            "per1kUsd": 1.9,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 599,
            "per1kUsd": 0.599,
            "via": "Business +",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 49,
            "per1kUsd": 4.9,
            "via": "Freelance",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 99,
            "per1kUsd": 9.9,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 599,
            "per1kUsd": 5.99,
            "via": "Business +",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 19,
            "per1kUsd": 1.9,
            "via": "Hobby",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 49,
            "per1kUsd": 0.49,
            "via": "Freelance",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 99,
            "per1kUsd": 0.099,
            "via": "Startup",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ]
      }
    },
    {
      "slug": "scrapingdog",
      "name": "Scrapingdog",
      "homepage": "https://www.scrapingdog.com",
      "pricingUrl": "https://www.scrapingdog.com/pricing/",
      "docsUrl": "https://www.scrapingdog.com/documentation/web-scraping-api/",
      "logoDomain": "scrapingdog.com",
      "hq": "IN",
      "billing": {
        "model": "subscription",
        "freeTier": {
          "calls": 200,
          "period": "month",
          "creditCardRequired": false,
          "note": "\"Every account starts with 200 free credits and full access to all APIs, no credit card required.\" The FREE plan card reads \"$0 forever, 200 Requests Credits, 1 Concurrency\". 200 credits is 200 plain pages, 40 rendered ones or 8 through JS plus premium proxy. The period comes from the FAQ line \"Your monthly credits reset on your billing date\"; the free card itself does not name a refresh period."
        },
        "minimumMonthlyUsd": 40,
        "creditsExpire": true,
        "expiryNote": "FAQ: \"Your monthly credits reset on your billing date.\" There is no rollover, and running out returns an over-limit response until the reset.",
        "annualDiscountPct": 16.67,
        "prepaidOnly": false,
        "payAsYouGoAvailable": false
      },
      "unitCost": {
        "basis": "credit",
        "plain": 1,
        "js": 5,
        "residential": 10,
        "antibot": 25,
        "markdown": null,
        "note": "The pricing page's own comparison grid prints a credits-per-request figure for every mode against one shared balance: \"Rotating proxy 1 credit / req\", \"JavaScript rendering 5 credits / req\", \"Premium proxy 10 credits / req\", \"With country / geo 10 credits / req\", \"JS + premium proxy 25 credits / req\", and \"AI Parser 5 credits / req\" with a note that it rises to 10 from Jun 2026. Premium proxy is the residential pool (the docs call the feature Premium Residential Proxies) and geotargeting costs the same 10 even without it, so asking for a country is as dear as asking for a residential address. antibot is 25 because JS plus premium proxy is the hardest and dearest configuration Scrapingdog sells on the general scraping endpoint: there is no stealth or unblocker tier above it, and CAPTCHA bypass is documented as automatic on every scrape rather than as a priced mode. markdown is null because Scrapingdog does not sell it: the Web Scraping API takes url, dynamic, premium, country and session and returns HTML, with no markdown or text output parameter anywhere in its documentation, and the \"Url To Markdown Converter\" in the footer is a free web tool rather than an API mode. The AI Parser returns structured JSON, not Markdown. Every dedicated API prices separately off the same balance, from 1 credit (YouTube Transcript, Amazon Search and Product, Yelp, Indeed) through 5 (Google SERP Light, Maps, News, Bing, Twitter, TikTok, Walmart, Screenshot), 10 (Google SERP Advance, AI Mode, Images, Shopping), 20 (Universal Search) and 25 (LinkedIn Post) to 50 for the Profile Scraper API."
      },
      "plans": [
        {
          "name": "FREE",
          "monthlyUsd": 0,
          "includedUnits": 200,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "1 concurrency, access to all APIs, community support, no credit card required."
        },
        {
          "name": "LITE",
          "monthlyUsd": 40,
          "includedUnits": 200000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "5 concurrency, geotargeting, email support. The comparison grid prints this tier as $0.2 per 1,000 rotating-proxy requests."
        },
        {
          "name": "STANDARD",
          "monthlyUsd": 90,
          "includedUnits": 1000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "50 concurrency, priority email support. $0.09 per 1,000 rotating-proxy requests."
        },
        {
          "name": "PRO",
          "monthlyUsd": 200,
          "includedUnits": 3000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "Marked \"Popular\". 100 concurrency, team support. $0.067 per 1,000 rotating-proxy requests."
        },
        {
          "name": "PREMIUM",
          "monthlyUsd": 350,
          "includedUnits": 6000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "150 concurrency, team support. $0.058 per 1,000 rotating-proxy requests."
        },
        {
          "name": "BUSINESS",
          "monthlyUsd": 500,
          "includedUnits": 9000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "200 concurrency. $0.056 per 1,000 rotating-proxy requests."
        },
        {
          "name": "BUSINESS PLUS",
          "monthlyUsd": 1000,
          "includedUnits": 19000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "250 concurrency. $0.053 per 1,000."
        },
        {
          "name": "BUSINESS PRO",
          "monthlyUsd": 1500,
          "includedUnits": 29000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "300 concurrency. $0.052 per 1,000."
        },
        {
          "name": "CORPORATE",
          "monthlyUsd": 2000,
          "includedUnits": 42000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "350 concurrency. $0.048 per 1,000."
        },
        {
          "name": "CORPORATE PLUS",
          "monthlyUsd": 2500,
          "includedUnits": 55000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "400 concurrency. $0.045 per 1,000."
        },
        {
          "name": "CORPORATE PRO",
          "monthlyUsd": 3000,
          "includedUnits": 65000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "450 concurrency. $0.046 per 1,000."
        },
        {
          "name": "ENTERPRISE STARTER",
          "monthlyUsd": 4000,
          "includedUnits": 90000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "500 concurrency. $0.044 per 1,000."
        },
        {
          "name": "ENTERPRISE PLUS",
          "monthlyUsd": 5000,
          "includedUnits": 120000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "600 concurrency, dedicated support. $0.042 per 1,000."
        },
        {
          "name": "ENTERPRISE PRO",
          "monthlyUsd": 6000,
          "includedUnits": 150000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "650 concurrency, dedicated support. $0.04 per 1,000."
        },
        {
          "name": "GLOBAL STARTER",
          "monthlyUsd": 7000,
          "includedUnits": 185000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "700 concurrency. $0.038 per 1,000."
        },
        {
          "name": "GLOBAL PLUS",
          "monthlyUsd": 8000,
          "includedUnits": 220000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "800 concurrency. $0.036 per 1,000."
        },
        {
          "name": "GLOBAL PRO",
          "monthlyUsd": 9000,
          "includedUnits": 255000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "850 concurrency. $0.035 per 1,000."
        },
        {
          "name": "GLOBAL ELITE",
          "monthlyUsd": 10000,
          "includedUnits": 295000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "900 concurrency. $0.034 per 1,000."
        },
        {
          "name": "ULTRA STARTER",
          "monthlyUsd": 12000,
          "includedUnits": 360000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "1,000 concurrency, dedicated account manager. $0.033 per 1,000."
        },
        {
          "name": "ULTRA PLUS",
          "monthlyUsd": 14000,
          "includedUnits": 430000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "1,200 concurrency. $0.033 per 1,000."
        },
        {
          "name": "ULTRA PRO",
          "monthlyUsd": 16000,
          "includedUnits": 500000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "1,300 concurrency. $0.032 per 1,000."
        },
        {
          "name": "TITAN STARTER",
          "monthlyUsd": 18000,
          "includedUnits": 580000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "1,400 concurrency. $0.031 per 1,000."
        },
        {
          "name": "TITAN PLUS",
          "monthlyUsd": 20000,
          "includedUnits": 660000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "1,500 concurrency. $0.03 per 1,000."
        },
        {
          "name": "TITAN PRO",
          "monthlyUsd": 22000,
          "includedUnits": 740000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "1,700 concurrency. $0.03 per 1,000."
        },
        {
          "name": "TITAN ELITE",
          "monthlyUsd": 24000,
          "includedUnits": 830000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "1,800 concurrency. $0.029 per 1,000."
        },
        {
          "name": "NOVA STARTER",
          "monthlyUsd": 26000,
          "includedUnits": 920000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "1,900 concurrency. $0.028 per 1,000."
        },
        {
          "name": "NOVA PLUS",
          "monthlyUsd": 28000,
          "includedUnits": 1010000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "2,000 concurrency. $0.028 per 1,000."
        },
        {
          "name": "NOVA PRO",
          "monthlyUsd": 30000,
          "includedUnits": 1100000000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "Largest self-serve tier, 2,200 concurrency. $0.027 per 1,000. Above this the page says custom plans are built on request."
        }
      ],
      "features": {
        "engines": [
          "api",
          "proxy"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot"
        ],
        "kind": "direct",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": false,
        "failedRequestsFree": true,
        "structuredParsers": true,
        "proxyPortMode": true,
        "asyncBatch": null,
        "geoTargeting": true,
        "sla": true
      },
      "performance": {
        "claimedAvgLatencySeconds": null,
        "claimedSuccessRatePct": null,
        "source": "https://www.scrapingdog.com/sla/"
      },
      "sources": [
        {
          "url": "https://www.scrapingdog.com/pricing/",
          "capturedAt": "2026-09-14",
          "note": "28 plan cards (FREE plus 27 paid) with monthly USD, request credits and concurrency; the \"Compare every API across all plans\" grid with credits per request for every mode and every dedicated API, and the per-tier dollars per 1,000 for each; the \"Monthly Billing / Annual Billing 2 months Extra\" toggle; and the FAQ: \"Credits are shared across every API on your plan\", \"Your monthly credits reset on your billing date\", \"Once your credits are used up, API requests return an over-limit response until they reset\", \"Failed, blocked and timed-out requests are automatically credited back to your balance. You only ever pay for data you successfully receive\", \"Every account starts with 200 free credits\", and \"Annual billing is priced at ten months for twelve\""
        },
        {
          "url": "https://www.scrapingdog.com/documentation/web-scraping-api/",
          "capturedAt": "2026-09-14",
          "note": "the scrape endpoint https://api.scrapingdog.com/scrape and its parameters (api_key, url, dynamic), with the sibling pages Javascript Rendering, Custom Headers, Premium Residential Proxies, Geotargeting, Sessions, Bypass Captcha, POST Request and Screenshot API; no markdown or text output parameter exists"
        },
        {
          "url": "https://www.scrapingdog.com/documentation/",
          "capturedAt": "2026-09-14",
          "note": "full API index, including Rotating Proxies (the proxy-port product), Webhook Integration and the Account API"
        },
        {
          "url": "https://www.scrapingdog.com/sla/",
          "capturedAt": "2026-09-14",
          "note": "\"We aim for a monthly uptime of 99% of our service\", with a service credit policy paying compensation in credits rather than money"
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "The cheapest plain page of the six by a wide margin: LITE is $40 for 200,000 credits, which the page itself prints as $0.20 per 1,000 rotating-proxy requests, and the ladder above it is gentle by this market's standards, 5 for a browser, 10 for a residential address and 25 for both, so even the hardest fetch is $5 per 1,000 on that plan. Two things to know. Geotargeting costs 10 credits whether or not you asked for the premium pool, so any country-specific work is priced as residential. And there is no Markdown: the scrape endpoint returns HTML and nothing else, so an LLM pipeline has to convert the page itself. Every plan unlocks all 40-odd dedicated APIs from the same balance, failed, blocked and timed-out requests are refunded, and a published SLA aims at 99% monthly uptime with compensation in credits. Plans hard-cap with no overage: out of credits means an over-limit response until the reset date, and annual billing is ten months for twelve. Left null: whether an async or batch endpoint exists (only a webhook integration is documented), and any published latency or success-rate figure.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 40,
            "per1kUsd": 40,
            "via": "LITE",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 40,
            "per1kUsd": 4,
            "via": "LITE",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 40,
            "per1kUsd": 0.4,
            "via": "LITE",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 90,
            "per1kUsd": 0.09,
            "via": "STANDARD",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 40,
            "per1kUsd": 40,
            "via": "LITE",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 40,
            "per1kUsd": 4,
            "via": "LITE",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 90,
            "per1kUsd": 0.9,
            "via": "STANDARD",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 350,
            "per1kUsd": 0.35,
            "via": "PREMIUM",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 40,
            "per1kUsd": 40,
            "via": "LITE",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 40,
            "per1kUsd": 4,
            "via": "LITE",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 90,
            "per1kUsd": 0.9,
            "via": "STANDARD",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 1000,
            "per1kUsd": 1,
            "via": "BUSINESS PLUS",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 40,
            "per1kUsd": 40,
            "via": "LITE",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 90,
            "per1kUsd": 9,
            "via": "STANDARD",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 200,
            "per1kUsd": 2,
            "via": "PRO",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 1500,
            "per1kUsd": 1.5,
            "via": "BUSINESS PRO",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ]
      }
    },
    {
      "slug": "spider-cloud",
      "name": "Spider",
      "homepage": "https://spider.cloud",
      "pricingUrl": "https://spider.cloud/pricing",
      "docsUrl": "https://spider.cloud/docs/api/proxy",
      "logoDomain": "spider.cloud",
      "hq": "US",
      "billing": {
        "model": "hybrid",
        "freeTier": null,
        "minimumMonthlyUsd": 0,
        "creditsExpire": false,
        "expiryNote": "\"No. Pay as you go has no subscription. Top up once and use the balance whenever you need it. Nothing resets monthly.\" The Unlimited concurrency plan is a separate monthly subscription and is not a credit balance at all.",
        "annualDiscountPct": 0,
        "prepaidOnly": true,
        "payAsYouGoAvailable": true
      },
      "unitCost": {
        "basis": "request",
        "plain": null,
        "js": null,
        "residential": null,
        "antibot": null,
        "markdown": null,
        "note": "Every vertical is null because Spider does not price a page at all. Its own FAQ answers the multiplier question directly: \"Are there multipliers for JS rendering or proxies? No. JS rendering bills as compute.\" What it bills instead is \"Two line items per request: bandwidth ($1 per GB of pre-transformation content) and compute ($0.001 per minute of CPU)\", and a gigabyte is not a page, so converting it would mean inventing an average page size. The proxy pools are priced the same way and the docs print their own multiplier against that base: residential is $2.00/GB at \"x2-x4\" and ISP is $1.00/GB at \"x1\". Standard proxy rotation, the Unblocker with stealth proxies, automatic retries and Markdown output are all included in a request rather than sold as a dearer tier. Spider clearly sells all five kinds of fetch on this site's list; it simply meters them in gigabytes and CPU minutes, so the cells stay blank rather than guess."
      },
      "plans": [
        {
          "name": "Pay as you go",
          "monthlyUsd": 0,
          "includedUnits": 0,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "No subscription and no monthly minimum. You top up a balance, and each request bills $1 per GB of pre-transformation content plus $0.001 per minute of CPU. Residential proxy traffic is $2.00/GB and ISP is $1.00/GB. Failed requests cost $0. Top-ups of $500 or more earn an automatic bonus whose percentage the top-up form shows ($500 shows +5%, $2K shows +12%). No per-page rate exists, so overagePerUnitUsd is null rather than a converted figure."
        },
        {
          "name": "Unlimited (2 concurrent)",
          "monthlyUsd": 40,
          "includedUnits": null,
          "overagePerUnitUsd": 0,
          "hardCap": true,
          "delivery": "live",
          "note": "The entry point of the Unlimited tab: you buy concurrency instead of requests, at $20 per unit for 2 units. Everything you run through that concurrency is covered by the flat monthly price, so a request costs $0 extra, which is what overagePerUnitUsd 0 records. Requests beyond your concurrency get an immediate 429 with Retry-After and are not queued or billed. Geo-targeting is not available on Unlimited yet."
        },
        {
          "name": "Unlimited (25 concurrent)",
          "monthlyUsd": 350,
          "includedUnits": null,
          "overagePerUnitUsd": 0,
          "hardCap": true,
          "delivery": "live",
          "note": "The plan the pricing page shows by default: $350/mo for 25 concurrent at $14/unit. Any whole number of units works, not only the listed tiers, and the per-unit cost falls from $20 to $13 as concurrency rises. Each price band is billed on its own invoice line."
        },
        {
          "name": "Unlimited (1,538 concurrent, self-serve maximum)",
          "monthlyUsd": 19994,
          "includedUnits": null,
          "overagePerUnitUsd": 0,
          "hardCap": true,
          "delivery": "live",
          "note": "The top of the self-serve Unlimited slider: 1,538 units for $19,994/mo, which is the $13 per unit floor. Above this, \"talk to sales for a per-unit rate\"."
        },
        {
          "name": "Enterprise / custom",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "\"Need volume pricing or custom scraping? Talk to sales\", and the same for more than 1,500 concurrent units. No list price."
        }
      ],
      "features": {
        "engines": [
          "api",
          "proxy"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot",
          "markdown"
        ],
        "kind": "direct",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": true,
        "failedRequestsFree": true,
        "structuredParsers": true,
        "proxyPortMode": true,
        "asyncBatch": true,
        "geoTargeting": true,
        "sla": false
      },
      "sources": [
        {
          "url": "https://spider.cloud/pricing",
          "capturedAt": "2026-09-14",
          "note": "\"Starting at $1/GB. Failed requests cost $0.\"; the pay-as-you-go top-up amounts ($5, $25, $100, $500 +5%, $2K +12%); the Unlimited slider ($350/mo at 25 concurrent, $14/unit, 2 units at $40/mo up to 1,538 at $19,994/mo, per-unit cost $20 down to $13); the FAQ answers on billing (\"bandwidth ($1 per GB of pre-transformation content) and compute ($0.001 per minute of CPU)\"), on balance expiry, on multipliers (\"No. JS rendering bills as compute\"), on blocking (\"Spider includes an Unblocker with stealth, rotating proxies, and automatic retries\"), on the 429 behaviour, and on formats (\"HTML, raw, plain text, and multiple markdown formats\"); AI Studio \"from $6/mo\"; footer \"BAGELMEN LLC\""
        },
        {
          "url": "https://spider.cloud/docs/api/proxy",
          "capturedAt": "2026-09-14",
          "note": "the \"Pools and pricing\" table: residential $2.00/GB at multiplier x2-x4, ISP $1.00/GB at x1; proxy.spider.cloud as an HTTP, HTTPS and SOCKS5 proxy port with the API key in the username; country_code for per-request geo-routing across 199+ countries"
        },
        {
          "url": "https://spider.cloud/docs/overview",
          "capturedAt": "2026-09-14",
          "note": "endpoint list (/crawl, /scrape, /search, /screenshot, /unlimited/*, /ai/*, /fetch/{domain}/{path}, proxy.spider.cloud, browser.spider.cloud); request modes smart, http and browser; the AI Studio plan ladder ($6, $30, $125, $600, $2,000 a month) whose credits are billed on top and are not covered by Unlimited; the scraper directory of per-website configs"
        },
        {
          "url": "https://spider.cloud/docs/api/unblocker",
          "capturedAt": "2026-09-14",
          "note": "the /unblocker endpoint: browser fingerprinting, cookie sessions and challenge solving, with no separate price published for it"
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "Spider is the one seller here that refuses the credit game entirely, and pays for it by being impossible to put in a per-page table. Its FAQ says outright there are no multipliers for JS rendering or proxies; instead every request bills bandwidth at $1 per gigabyte plus compute at $0.001 per CPU minute, with residential traffic at $2/GB and ISP at $1/GB. For a light page that is genuinely a fraction of a cent, and failed requests cost $0, but you cannot know your bill per 1,000 pages until you have measured your own pages, which is exactly why every cell above is blank. The second model is stranger and more interesting: Unlimited sells concurrency rather than requests, from $40/mo for two simultaneous requests to $19,994/mo for 1,538, with unlimited volume through whatever you buy and an immediate 429 when every slot is busy. At high volume on cheap pages that flat rate can beat any per-page price on this site; at low volume it is a $40 floor for two requests at a time, and geo-targeting does not work on it yet. Spider also sells a real proxy port, not just an API, has per-website scraper configs, and the balance never expires. The AI extraction routes are a separate subscription from $6/mo with credits billed on top. The operating company is BAGELMEN LLC.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ]
      }
    },
    {
      "slug": "webscrapingapi",
      "name": "WebScrapingAPI",
      "homepage": "https://www.webscrapingapi.com",
      "pricingUrl": "https://www.webscrapingapi.com/pricing/scraper-api",
      "docsUrl": "https://docs.webscrapingapi.com/webscrapingapi/getting-started/api-parameters",
      "logoDomain": "webscrapingapi.com",
      "hq": "RO",
      "founded": null,
      "billing": {
        "model": "subscription",
        "freeTier": {
          "calls": 5000,
          "period": "once",
          "creditCardRequired": null,
          "note": "\"Trial $0 to start, 5,000 requests\". FAQ verbatim: \"Yes. The Trial plan starts at $0 and includes 5,000 requests for evaluating the API with representative targets.\" The page does not say whether the 5,000 recur monthly or whether a card is needed, so both are left unstated."
        },
        "minimumMonthlyUsd": 0,
        "creditsExpire": true,
        "expiryNote": "Plans are a \"monthly request allowance\" in the FAQ's own words. Nothing on the pricing page says unused requests roll over, and no rollover is offered.",
        "annualDiscountPct": 0,
        "prepaidOnly": false,
        "payAsYouGoAvailable": false
      },
      "unitCost": {
        "basis": "request",
        "plain": 1,
        "js": 1,
        "residential": null,
        "antibot": null,
        "markdown": null,
        "note": "The current pricing page counts plain requests, not credits: the allowance is labelled \"requests\" and \"API calls\" and the word credit does not appear on it at all. JavaScript rendering is 1 because the plan comparison table marks \"JavaScript rendering: Included\" on all seven tiers with no surcharge printed, and the docs' full-JSON example returns \"cost\": 1. Residential and anti-bot are null, not zero: the table sells \"Proxy rotation and anti-bot handling: Included\" on every tier but publishes no multiplier for it, the Scraper API has no premium, residential or stealth parameter (only render_js, country, state, city and asn), and the two docs pages that used to carry those multipliers - advanced-api-features/proxies and advanced-api-features/stealth-mode - now return 404. Residential IPs are sold instead as a separate product priced per gigabyte, from $8.50/GB with monthly plans from $52, which is not a per-page rate and is not converted here. Markdown is null because there is no markdown or output-format parameter in the API reference at all. A caveat: the still-live quick-start guide contradicts the pricing page, describing the allowance as \"API credits\" on plan names that no longer exist."
      },
      "plans": [
        {
          "name": "Trial",
          "monthlyUsd": 0,
          "includedUnits": 5000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "$0 to start, 5,000 requests, 5 concurrent. Includes JavaScript rendering, all geographies, proxy rotation and anti-bot handling, auto parsing."
        },
        {
          "name": "Starter",
          "monthlyUsd": 19,
          "includedUnits": 7000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "7,000 requests, 20 concurrent. No overage rate is published on any tier."
        },
        {
          "name": "Basic",
          "monthlyUsd": 49,
          "includedUnits": 20000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "20,000 requests, 20 concurrent."
        },
        {
          "name": "Standard",
          "monthlyUsd": 99,
          "includedUnits": 45000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "45,000 requests, 50 concurrent. First tier with premium support."
        },
        {
          "name": "Advanced",
          "monthlyUsd": 149,
          "includedUnits": 100000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "100,000 requests, 100 concurrent."
        },
        {
          "name": "Premium",
          "monthlyUsd": 249,
          "includedUnits": 180000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "180,000 requests, 200 concurrent."
        },
        {
          "name": "Pro",
          "monthlyUsd": 599,
          "includedUnits": 450000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "450,000 requests, 500 concurrent, account manager."
        },
        {
          "name": "Production review",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "Contact-us tier. FAQ verbatim: \"Bring the target mix, volume, concurrency, rendering profile, and support needs to a production review for a plan aligned with that workload.\" No public price."
        }
      ],
      "features": {
        "engines": [
          "api",
          "proxy"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot"
        ],
        "kind": "direct",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": false,
        "failedRequestsFree": true,
        "structuredParsers": true,
        "proxyPortMode": true,
        "asyncBatch": true,
        "geoTargeting": true,
        "sla": null
      },
      "sources": [
        {
          "url": "https://www.webscrapingapi.com/pricing/scraper-api",
          "capturedAt": "2026-09-14",
          "note": "Plan cards Trial $0/5,000, Starter $19/7,000, Basic $49/20,000, Standard $99/45,000, Advanced $149/100,000, Premium $249/180,000, Pro $599/450,000, all labelled \"requests\". Comparison table rows: API calls 5,000 / 7,000 / 20,000 / 45,000 / 100,000 / 180,000 / 450,000; concurrent requests 5 / 20 / 20 / 50 / 100 / 200 / 500; \"JavaScript rendering: Included\", \"Country-level targeting: All geographies\", \"Proxy rotation and anti-bot handling: Included\" and \"Auto parsing: Included\" on every tier. Searched the full page body: the words credit, annual, yearly, discount, SLA, uptime, failed and stealth do not appear. Footer of the site: \"(c) 2026 Everything Data Solutions SRL. WebScrapingAPI is a commercial brand.\""
        },
        {
          "url": "https://www.webscrapingapi.com/pricing",
          "capturedAt": "2026-09-14",
          "note": "Product overview: \"Scraper API: Start free with 5,000 requests, Paid plans start at $19 per month\"; SERP API from $28/month; Amazon Data API from $59/month; \"Residential Proxies: From $8.50 per GB, Monthly plans start at $52\"; Managed Data from $299/month. The residential figure is per gigabyte of traffic, not per page, and is deliberately not converted into a per-page rate."
        },
        {
          "url": "https://www.webscrapingapi.com/web-scraping-api-quick-start-guide",
          "capturedAt": "2026-09-14",
          "note": "The contradiction. This page is still live and still says the allowance is credits, on plan names that no longer exist: \"Starter plan, with up to 100,000 API credits\", \"Grow plan, with up to 1,000,000 API credits\". It is also the only page that states the failure policy, verbatim: \"One of the most important aspects that you have to know about response codes is that we only charge for successful responses. So if your request results in anything other than status code 200, you won't be charged\", and \"By default, we terminate a request (and not charge if failed) after 10s.\" Neither the pricing page nor the current docs repeat any of this."
        },
        {
          "url": "https://docs.webscrapingapi.com/webscrapingapi/getting-started/api-parameters",
          "capturedAt": "2026-09-14",
          "note": "Full parameter list: api_key, url, method, body, render_js, country, state, city, asn, timeout, extract_rules, json_response, json_dom, async, snapshot_id. There is no proxy_type, premium, residential, stealth_mode, device or markdown parameter. async \"Set to true to queue the scrape and retrieve the finished result later\" is the batch route; extract_rules is the parser."
        },
        {
          "url": "https://docs.webscrapingapi.com/introduction/custom-response-headers",
          "capturedAt": "2026-09-14",
          "note": "Credits exist as a concept but are never priced: \"[PREFIX]-Call-Credit-Usage: Credit usage for the current request\" and \"[PREFIX]-Current-Credit-Usage: Total credit usage after the request\". The full-JSON response page documents a \"cost\" integer, \"Credit cost for the request\", with 1 as its only example. Searching the docs for billing returns \"No results found\", and the legacy multiplier pages advanced-api-features/proxies and advanced-api-features/stealth-mode both return 404."
        },
        {
          "url": "https://docs.webscrapingapi.com/residential-proxies/getting-started",
          "capturedAt": "2026-09-14",
          "note": "\"Residential Proxies route your requests through real residential IP addresses instead of datacenter IPs\" and \"Residential Proxies expose proxy endpoints that your own HTTP client uses as its outbound proxy\" - a separate per-gigabyte product, not a mode of the Scraper API, and no credit multiplier."
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "One of the two providers here whose own pages disagree with each other. The current Scraper API pricing page sells a flat monthly allowance of plain requests - $19 for 7,000 up to $599 for 450,000 - with JavaScript rendering, country targeting, anti-bot handling and auto parsing marked Included on every tier and no multiplier printed anywhere; the word credit never appears on it. The still-live quick-start guide describes the same product as metered in API credits, on Starter and Grow plans that no longer exist, and the two docs pages that once carried the proxy and stealth multipliers now 404. So a rendered page costs the same as a static one on today's page, and that is what is recorded, but it rests on the absence of a multiplier rather than on a statement that there is none. The residential and anti-bot cells are empty for a different reason: the product is sold, but the only residential price WebScrapingAPI publishes is $8.50 per gigabyte of proxy traffic on a separate product, and a gigabyte is not a page. The one genuinely good disclosure is also in the legacy guide: only status 200 responses are charged, and a request that times out after 10 seconds is free.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Starter",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 49,
            "per1kUsd": 4.9,
            "via": "Basic",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 149,
            "per1kUsd": 1.49,
            "via": "Advanced",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Starter",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 49,
            "per1kUsd": 4.9,
            "via": "Basic",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 149,
            "per1kUsd": 1.49,
            "via": "Advanced",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ]
      }
    },
    {
      "slug": "zenrows",
      "name": "ZenRows",
      "homepage": "https://www.zenrows.com",
      "pricingUrl": "https://www.zenrows.com/pricing",
      "docsUrl": "https://docs.zenrows.com/first-steps/pricing",
      "logoDomain": "zenrows.com",
      "hq": "ES",
      "billing": {
        "model": "subscription",
        "freeTier": {
          "calls": 5000,
          "period": "month",
          "creditCardRequired": false,
          "note": "\"5,000 credits/month - no card\", refreshed monthly with no rollover and no top-ups, 5 concurrent requests, every primitive unlocked. 5,000 credits is 5,000 plain pages or 200 protected ones."
        },
        "minimumMonthlyUsd": 19,
        "creditsExpire": true,
        "expiryNote": "Paid tiers roll unused plan credits into the next billing period once, then they expire; Free has no rollover. Unused top-up credits also roll into the next period. On an upgrade, unused credits carry across as bonus credits on the new plan. Annual billing grants the whole year's allowance up front as one balance.",
        "annualDiscountPct": 16.67,
        "prepaidOnly": false,
        "payAsYouGoAvailable": false
      },
      "unitCost": {
        "basis": "credit",
        "plain": 1,
        "js": 5,
        "residential": 10,
        "antibot": 25,
        "markdown": 1,
        "note": "Docs pricing table, \"Cost Multipliers for Fetch\": standard request 1 credit, JavaScript Rendering 5, Premium Proxies 10, \"JS Rendering + Premium Proxies (protected)\" 25. The docs add that \"these credit weights are fixed and never change. A JavaScript-rendered request always costs 5 credits, a protected request always costs 25, on every plan.\" Premium Proxies is the residential tier (\"over 55 million residential IPs from 190+ countries\"), and protected at 25 is the top of the ladder ZenRows sells against anti-bot walls - there is no separate stealth product above it. Markdown is 1 because response_type=markdown (and plaintext, and pdf) is a free output parameter on the ordinary Fetch call, so a plain page returned as Markdown is the same single credit; it costs 5 or 25 if that page also needs a browser or the protected stack. Adaptive Stealth Mode (mode=auto) starts at the cheapest viable setup and escalates, and the docs promise that \"if multiple internal attempts are needed before success, only the successful request is charged\", so the credit cost of an auto call is whichever rung finally worked. Two prices that are not per page and are deliberately left out of the verticals above: standalone Residential Proxies (the legacy proxy-port product) meter at 25,000 credits per GB, and Browser Sessions bill that same bandwidth rate plus 5 credits per minute of session time. The docs' own rule of thumb is \"1 GB = 25,000 credits = 1,000 protected pages.\""
      },
      "plans": [
        {
          "name": "Free",
          "monthlyUsd": 0,
          "includedUnits": 5000,
          "overagePerUnitUsd": null,
          "hardCap": true,
          "delivery": "live",
          "note": "5 concurrent requests, docs and community support. No rollover and no top-ups: if you run out you wait for the monthly refresh or upgrade."
        },
        {
          "name": "Build B1",
          "monthlyUsd": 19,
          "includedUnits": 45000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "20 concurrency, email support, 1-month rollover. Top-up pack 11,000 credits for $6.50, up to 4 packs a billing period."
        },
        {
          "name": "Build B2",
          "monthlyUsd": 29,
          "includedUnits": 80000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "20 concurrency. Top-up pack 13,000 credits for $6.50."
        },
        {
          "name": "Build B3",
          "monthlyUsd": 39,
          "includedUnits": 120000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "20 concurrency. Top-up pack 43,000 credits for $19.50."
        },
        {
          "name": "Launch L1",
          "monthlyUsd": 69,
          "includedUnits": 250000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "50 concurrency, chat support. Top-up pack 50,000 credits for $19.50."
        },
        {
          "name": "Launch L2",
          "monthlyUsd": 99,
          "includedUnits": 500000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "50 concurrency. Top-up pack 70,000 credits for $19.50."
        },
        {
          "name": "Launch L3",
          "monthlyUsd": 129,
          "includedUnits": 700000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "50 concurrency. Top-up pack 175,000 credits for $45.50."
        },
        {
          "name": "Growth G1",
          "monthlyUsd": 199,
          "includedUnits": 1200000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "100 concurrency, priority support, \"residential network at scale\". Top-up pack 224,000 credits for $52."
        },
        {
          "name": "Growth G2",
          "monthlyUsd": 279,
          "includedUnits": 2000000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "100 concurrency. Top-up pack 400,000 credits for $78."
        },
        {
          "name": "Growth G3",
          "monthlyUsd": 399,
          "includedUnits": 3000000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "100 concurrency. Top-up pack 525,000 credits for $97.50."
        },
        {
          "name": "Scale S1",
          "monthlyUsd": 549,
          "includedUnits": 5000000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "200 concurrency, priority support, committed capacity options. Top-up pack 845,000 credits for $130."
        },
        {
          "name": "Scale S2",
          "monthlyUsd": 749,
          "includedUnits": 8000000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "200 concurrency. Top-up pack 1,240,000 credits for $163."
        },
        {
          "name": "Scale S3",
          "monthlyUsd": 999,
          "includedUnits": 12500000,
          "overagePerUnitUsd": null,
          "hardCap": false,
          "delivery": "live",
          "note": "200 concurrency, largest self-serve rung. Top-up pack 1,800,000 credits for $200."
        },
        {
          "name": "Enterprise",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "\"Custom\" above 12.5M credits a month: 400 to 1,000+ concurrency, negotiated rollover, dedicated account manager, and the only tier with an SLA on uptime and success rate plus SOC 2, ISO 27001 and DPA."
        }
      ],
      "features": {
        "engines": [
          "api",
          "proxy"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot",
          "markdown"
        ],
        "kind": "direct",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": true,
        "failedRequestsFree": true,
        "structuredParsers": true,
        "proxyPortMode": true,
        "asyncBatch": true,
        "geoTargeting": true,
        "sla": false
      },
      "sources": [
        {
          "url": "https://docs.zenrows.com/first-steps/pricing",
          "capturedAt": "2026-09-14",
          "note": "the authoritative page: the 1 / 5 / 10 / 25 multiplier table and \"these credit weights are fixed and never change\"; all 13 self-serve rungs with monthly USD and credits (Free 0/5,000 through Scale S3 999/12,500,000) plus Enterprise; the top-up pack price for every rung and the limit of 4 a period; concurrency, support and rollover by tier; \"You're charged only for successful requests. Failed or retried requests don't consume your balance. HTTP 404 and 410 responses count as successful\"; Residential Proxies at 25,000 credits per GB and Browser Sessions at that plus 5 credits a minute; \"Paying yearly gives you two months free (pay for 10, get 12)\"; \"Does Zenrows offer Pay-As-You-Go plans? Not as a standalone option today\"; SLA, SOC 2 and ISO 27001 on Enterprise only"
        },
        {
          "url": "https://www.zenrows.com/pricing",
          "capturedAt": "2026-09-14",
          "note": "plan cards sharing the same rungs, the \"Monthly / Annual Save 17%\" toggle whose annual column reads $16, $57, $165 and $456 a month for Build, Launch, Growth and Scale, \"Start free, pay only for successful requests\", \"5,000 credits/month - no card\", \"Everything unlocked\", and the footnote \"Extract adds no cost beyond the Fetch request it uses; Batch bills at the same per-request rate as Fetch. Prices in USD.\" The monthly figures in this record come from the docs table, which prints every rung rather than the four the slider shows."
        },
        {
          "url": "https://docs.zenrows.com/fetch/api-reference.md",
          "capturedAt": "2026-09-14",
          "note": "parameter list: premium_proxy (\"Route through residential IPs\"), js_render, proxy_country, response_type (\"Convert HTML to other formats (Markdown, Plaintext, PDF)\"), autoparse, css_extractor, session_id, mode=auto; and the same credit list, 1 / 5 / 10 / 25, with \"only the successful request is charged\" under Adaptive Stealth Mode"
        },
        {
          "url": "https://docs.zenrows.com/fetch/features/markdown.md",
          "capturedAt": "2026-09-14",
          "note": "\"The response_type=markdown parameter tells Zenrows to convert the scraped page's HTML into clean Markdown before returning the response\"; no credit surcharge is stated anywhere on the page"
        },
        {
          "url": "https://docs.zenrows.com/legacy/residential-proxies/introduction.md",
          "capturedAt": "2026-09-14",
          "note": "the proxy-port product, now marked Legacy: 55M+ rotating IPs, 190+ countries, sticky sessions, billed on bandwidth rather than per page"
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "Four fixed weights and no small print: 1 plain, 5 rendered, 10 residential, 25 protected, identical on every plan, so the only thing you buy as you move up the thirteen rungs is more credits. Build B1 at $19 for 45,000 credits is $0.42 per 1,000 plain pages and $10.56 per 1,000 protected ones. Markdown is a free output parameter, so LLM-ready text costs the same as HTML. It is the only provider in this group with a real free plan, 5,000 credits every month with no card, and it bills successful responses only, counting 404 and 410 as successes. The catches: there is no pay-as-you-go at all, an overdrawn plan is fixed with top-up packs rather than metered overage (four a period, priced per rung), and the anti-bot answer is the same protected tier as the rest of the ladder rather than a separate stealth pool. Standalone residential proxies and browser sessions are billed per gigabyte, 25,000 credits per GB, which is not a per-page price and is left out of the table. The SLA is Enterprise-only. Left null: any per-credit overage rate, which does not exist.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Build B1",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 19,
            "per1kUsd": 1.9,
            "via": "Build B1",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 39,
            "per1kUsd": 0.39,
            "via": "Build B3",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 199,
            "per1kUsd": 0.199,
            "via": "Growth G1",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Build B1",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 29,
            "per1kUsd": 2.9,
            "via": "Build B2",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99,
            "per1kUsd": 0.99,
            "via": "Launch L2",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 549,
            "per1kUsd": 0.549,
            "via": "Scale S1",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Build B1",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 39,
            "per1kUsd": 3.9,
            "via": "Build B3",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 199,
            "per1kUsd": 1.99,
            "via": "Growth G1",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 999,
            "per1kUsd": 0.999,
            "via": "Scale S3",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Build B1",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 69,
            "per1kUsd": 6.9,
            "via": "Launch L1",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 399,
            "per1kUsd": 3.99,
            "via": "Growth G3",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 19,
            "per1kUsd": 19,
            "via": "Build B1",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 19,
            "per1kUsd": 1.9,
            "via": "Build B1",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 39,
            "per1kUsd": 0.39,
            "via": "Build B3",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 199,
            "per1kUsd": 0.199,
            "via": "Growth G1",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ]
      }
    },
    {
      "slug": "zenscrape",
      "name": "Zenscrape",
      "homepage": "https://zenscrape.com",
      "pricingUrl": "https://zenscrape.com/#pricingSection",
      "docsUrl": "https://app.zenscrape.com/documentation",
      "logoDomain": "zenscrape.com",
      "hq": "US",
      "founded": null,
      "billing": {
        "model": "subscription",
        "freeTier": {
          "calls": 1000,
          "period": "month",
          "creditCardRequired": null,
          "note": "The free card reads \"Free, All basic to get started, $0 /mo\" and its only line item is \"1,000 Searched\" - the site's own typo, and the only place on the pricing table that does not say Credits. Every paid card says Credits. The card is priced per month so the grant is recorded as monthly; the page never says whether a card is required."
        },
        "minimumMonthlyUsd": 59.99,
        "creditsExpire": true,
        "expiryNote": "Plans are a monthly credit volume with usage alerts at 90% and 100%; no rollover is offered. FAQ: \"We will send you an email notification when your monthly usage hits 90% and 100%.\"",
        "annualDiscountPct": 10,
        "prepaidOnly": false,
        "payAsYouGoAvailable": false
      },
      "unitCost": {
        "basis": "credit",
        "plain": 1,
        "js": 5,
        "residential": 10,
        "antibot": 10,
        "markdown": null,
        "note": "Zenscrape contradicts itself on the residential price, on one page, in two tables. The \"Credit Costs & Failed Requests\" summary table gives premium=false render=false 1, premium=false render=true 5, premium=true render=false 10, premium=true render=true 25. The parameter table on the same page says premium is \"optional, boolean, counts as 20 credits towards your quota\" while render is \"optional, boolean, counts as 5 credits towards your quota\". So premium alone is 10 in one table and 20 in the other. The lower figure is recorded because it is the one in the table headed Credit Costs, and the discrepancy is flagged in notes rather than resolved. Anti-bot is recorded at the same 10 as residential because there is no separate anti-bot tier or parameter: premium is described as the mode that \"unlocks sites that are hard to scrape\", and Cloudflare handling is claimed as automatic and unpriced (\"Zenscrape automatically detects the presence of Cloudflare protection on websites, and more importantly, it takes proactive measures to handle it without any manual intervention required from your end\"). Markdown is null: no markdown or output-format parameter exists. Page intro, verbatim: \"a request can cost between 1 and 25 credits\"."
      },
      "plans": [
        {
          "name": "Free",
          "monthlyUsd": 0,
          "includedUnits": 1000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "\"$0 /mo\", \"1,000 Searched\". No concurrency, geotargeting, standard-proxy or premium-proxy line items are listed on this card, unlike every paid card."
        },
        {
          "name": "Small",
          "monthlyUsd": 59.99,
          "includedUnits": 250000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "250,000 credits, 10 concurrent requests, worldwide geotargeting, standard proxies, premium proxies, self-service onboarding. No SLA on this tier. No overage rate is published on any tier."
        },
        {
          "name": "Medium",
          "monthlyUsd": 99.99,
          "includedUnits": 1000000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "1,000,000 credits, 25 concurrent, concierge onboarding, first tier with a Service Level Agreement."
        },
        {
          "name": "Large",
          "monthlyUsd": 249.99,
          "includedUnits": 3000000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "3,000,000 credits, 50 concurrent, Service Level Agreement."
        },
        {
          "name": "Professional",
          "monthlyUsd": 349.99,
          "includedUnits": 5000000,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "delivery": "live",
          "note": "5,000,000 credits, 100 concurrent, Service Level Agreement, prioritized queue."
        },
        {
          "name": "Custom quote",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "Verbatim: \"Need More Credit? Contact us for a quote! We will reply within a few hours.\" No public price."
        }
      ],
      "features": {
        "engines": [
          "api"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot"
        ],
        "kind": "direct",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": false,
        "failedRequestsFree": null,
        "structuredParsers": false,
        "proxyPortMode": false,
        "asyncBatch": null,
        "geoTargeting": true,
        "sla": true
      },
      "sources": [
        {
          "url": "https://zenscrape.com/",
          "capturedAt": "2026-09-14",
          "note": "The pricing table lives on the homepage at #pricingSection; zenscrape.com/pricing/ returns 404 and is noindexed. Cards verbatim: Free $0 /mo \"1,000 Searched\"; Small $59.99 /mo 250,000 Credits, 10 Concurrent Requests, Worldwide Geotargeting, Standard Proxies, Premium Proxies, Self-Service Onboarding; Medium $99.99 /mo 1,000,000 Credits, 25 Concurrent, Concierge Onboarding, Service Level Agreement; Large $249.99 /mo 3,000,000 Credits, 50 Concurrent, SLA; Professional $349.99 /mo 5,000,000 Credits, 100 Concurrent, SLA, Prioritized Queue; \"Need More Credit? Contact us for a quote!\". FAQ verbatim on annual: \"Yes. We also offer you a 10% discount if you choose an annual subscription plan.\" FAQ verbatim on failures: \"Will request errors be counted towards my monthly limit? This depends on the error code. Errors that are related to captchas are usually not deducted from your credit volume. If this happens anyway, please contact us and we will refund the lost credits back to your API key.\" FAQ on uptime: \"an uptime of 99.9%, calculated in the past 12 months.\" Cloudflare claim: \"Zenscrape automatically detects the presence of Cloudflare protection on websites, and more importantly, it takes proactive measures to handle it without any manual intervention required from your end.\" Footer: \"(c) 2026 Zenscrape API, an APILayer product.\""
        },
        {
          "url": "https://app.zenscrape.com/documentation",
          "capturedAt": "2026-09-14",
          "note": "The credit table, and the contradiction. Section \"Credit Costs & Failed Requests\", verbatim intro: \"The number of credits that is counted towards your quota depends on the type request configuration that and the status code that the API endpoint returns. Hence, a request can cost between 1 and 25 credits.\" Table: premium false / render false = 1; false / true = 5; true / false = 10; true / true = 25. Basic Usage: \"adding the url parameter to your request will fetch the HTML content from the target website. This request configuration will use standard proxies and will count as 1 credit towards your monthly limit.\" But the parameter table on the SAME page says: \"premium optional, boolean, counts as 20 credits towards your quota. Uses residential proxies, unlocks sites that are hard to scrape\" and \"render optional, boolean, counts as 5 credits towards your quota\". 10 against 20 for the same flag, unreconciled. The page is a JavaScript application: it is empty to a plain fetch and had to be read in a browser. No statement anywhere that failed requests are free."
        },
        {
          "url": "https://documentation.zenscrape.com/",
          "capturedAt": "2026-09-14",
          "note": "Rot evidence. The documentation subdomain Zenscrape's own older pages and third parties link to returns HTTP 522 (Cloudflare cannot reach the origin), not a redirect. The live docs are at app.zenscrape.com/documentation, linked from the homepage nav."
        },
        {
          "url": "https://zenscrape.com/imprint/",
          "capturedAt": "2026-09-14",
          "note": "Ownership and country: the imprint link resolves to the Idera, Inc. / apilayer legal page, contact address \"6805 N Capital of Texas Hwy, Suite 275, Austin, TX 78731 US\". Same corporate parent as Scrapestack."
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "Zenscrape prints two different prices for the same thing. On its documentation page the credit-cost table says a premium (residential) request costs 10 credits, and the parameter table six inches below says premium \"counts as 20 credits towards your quota\". Both were read on the same URL on the same day, and nothing reconciles them, so the cheaper figure is recorded and the expensive one is on the record too. The rest is a conventional 1 / 5 / 10 / 25 ladder on plans from $59.99 for 250,000 credits, which is roughly twice what ScrapeOwl charges for the same credit volume with the same multipliers. Other things a buyer would want: the pricing page is the homepage, because zenscrape.com/pricing/ is a noindexed 404; the documentation subdomain the older links point at is a dead 522, with the real docs now on app.zenscrape.com; and the free card says \"1,000 Searched\" where every other card says Credits. Failures are not clearly free - the FAQ says only that CAPTCHA-related errors are \"usually not deducted\" and offers to refund them on request, which is a support promise, not a billing rule. Zenscrape and Scrapestack are both APILayer products under Idera, and their price lists do not match.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 59.99,
            "per1kUsd": 59.99,
            "via": "Small",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 59.99,
            "per1kUsd": 5.999,
            "via": "Small",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 59.99,
            "per1kUsd": 0.5999,
            "via": "Small",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 99.99,
            "per1kUsd": 0.09999,
            "via": "Medium",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 59.99,
            "per1kUsd": 59.99,
            "via": "Small",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 59.99,
            "per1kUsd": 5.999,
            "via": "Small",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99.99,
            "per1kUsd": 0.9999,
            "via": "Medium",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 349.99,
            "per1kUsd": 0.34999,
            "via": "Professional",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 59.99,
            "per1kUsd": 59.99,
            "via": "Small",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 59.99,
            "per1kUsd": 5.999,
            "via": "Small",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99.99,
            "per1kUsd": 0.9999,
            "via": "Medium",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 59.99,
            "per1kUsd": 59.99,
            "via": "Small",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 59.99,
            "per1kUsd": 5.999,
            "via": "Small",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 99.99,
            "per1kUsd": 0.9999,
            "via": "Medium",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "no plan reaches this volume"
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ]
      }
    },
    {
      "slug": "zyte-api",
      "name": "Zyte API",
      "homepage": "https://www.zyte.com",
      "pricingUrl": "https://www.zyte.com/pricing/",
      "docsUrl": "https://docs.zyte.com/zyte-api/pricing.html",
      "logoDomain": "zyte.com",
      "hq": "IE",
      "billing": {
        "model": "hybrid",
        "freeTier": {
          "calls": null,
          "period": "once",
          "creditCardRequired": false,
          "note": "Not a request count: \"Try Zyte API with $5 free credit\" and \"No commitment or subscription, 30 days to try it out\". The docs add that the $5 is for your first billing month, is shared across standard plans, and that the account is suspended when it runs out until you set a spending limit. How many pages $5 buys depends entirely on which of the five website tiers your target falls in, so no call count is recorded here."
        },
        "minimumMonthlyUsd": 0,
        "creditsExpire": true,
        "expiryNote": "The $5 sign-up credit is \"for your first billing month\" and the account is suspended when it expires. Commitments are minimum monthly spend, not an allowance of stored credits: \"If you exceed your minimum commitment, you're only charged at your current discounted rate - never an additional fee.\"",
        "annualDiscountPct": null,
        "prepaidOnly": false,
        "payAsYouGoAvailable": true
      },
      "unitCost": {
        "basis": "request",
        "plain": 1,
        "js": 7.77,
        "residential": null,
        "antibot": 9.77,
        "markdown": null,
        "note": "Zyte does not sell credits or modes; it sells a per-1,000 dollar rate that depends on how hard the target website is. \"Zyte API automatically uses the most cost-efficient technology for each website and assigns price tiers accordingly. There are 5 tiers each for HTTP requests and browser requests.\" Tier assignment is automatic and reviewed quarterly, so a buyer cannot choose it. The unit here is one tier-1 (Simple) HTTP response, which is the $0.13 per 1,000 headline on pay-as-you-go. The published pay-as-you-go ladder for an HTTP response body is Simple $0.13, Easy $0.23, Moderate $0.44, Complex $0.70, Advanced $1.27 per 1,000; for a browser-rendered response it is $1.01, $2.01, $4.02, $8.04, $16.08. So js 7.77 is a rendered Simple page against a plain Simple page ($1.01 against $0.13; the same ratio is 7.5x at the $100 and $200 commitments and 8.0x at $500), and antibot 9.77 is the dearest plain fetch Zyte publishes, the Advanced tier ($1.27 against $0.13) - a hard site that also needs a browser is 16.08 against 0.13, about 124x. Residential is null because Zyte prices it in a way no page states: \"Requests using extended geolocations or device residential IPs have different base costs that depend only on request type, plus additional costs based on network consumption\", and no rate card for either the base cost or the bandwidth is published. Markdown is null because Zyte API does not return it - its own ZenRows migration table lists markdown_response as \"Not supported\". Screenshots ($0.002), automatic extraction ($0.0004-$0.0016 per data type, SERP free), custom attributes and browser actions are billed on top."
      },
      "plans": [
        {
          "name": "Pay as you go",
          "monthlyUsd": 0,
          "includedUnits": 0,
          "overagePerUnitUsd": 0.00013,
          "hardCap": false,
          "delivery": "live",
          "note": "No commitment. $0.13 per 1,000 tier-1 HTTP responses, rising to $1.27 per 1,000 on the Advanced tier. The docs cap this plan with a $100/month spending limit and a 3,000 RPM rate limit."
        },
        {
          "name": "$100 commitment",
          "monthlyUsd": 100,
          "includedUnits": 1000000,
          "overagePerUnitUsd": 0.0001,
          "hardCap": false,
          "delivery": "live",
          "note": "Minimum monthly commitment of $100 buys the tier-1 HTTP rate down to $0.10 per 1,000 (Easy $0.17, Moderate $0.33, Complex $0.53, Advanced $0.95; browser $0.75 to $12.00). The commitment is spend, not an allowance, so the included figure is $100 at the tier-1 rate. \"No overage penalties: If you exceed your minimum commitment, you're only charged at your current discounted rate.\""
        },
        {
          "name": "$200 commitment",
          "monthlyUsd": 200,
          "includedUnits": 2500000,
          "overagePerUnitUsd": 0.00008,
          "hardCap": false,
          "delivery": "live",
          "note": "Tier-1 HTTP $0.08 per 1,000 (Easy $0.14, Moderate $0.26, Complex $0.42, Advanced $0.76; browser $0.60 to $9.60). Included figure is $200 at the tier-1 rate."
        },
        {
          "name": "$500 commitment",
          "monthlyUsd": 500,
          "includedUnits": 8333333,
          "overagePerUnitUsd": 0.00006,
          "hardCap": false,
          "delivery": "live",
          "note": "The source of the site's \"From $0.06 per 1,000 successful responses\" headline. Tier-1 HTTP $0.06 per 1,000 (Easy $0.11, Moderate $0.21, Complex $0.34, Advanced $0.61; browser $0.48 to $7.68). Included figure is $500 at the tier-1 rate. The docs describe standard spending limits of $200, $400, $700 or $2,500 a month against these commitments."
        },
        {
          "name": "Enterprise",
          "monthlyUsd": null,
          "includedUnits": null,
          "overagePerUnitUsd": null,
          "hardCap": null,
          "note": "\"Further discounts based on volume usage - Contact sales.\" $200 initial free credit, 10,000 RPM, custom spending limit, custom volume discount, and premium 24/7 support with a 1-hour weekday response-time SLA. No list price is published."
        }
      ],
      "features": {
        "engines": [
          "api",
          "proxy"
        ],
        "verticals": [
          "plain",
          "js",
          "residential",
          "antibot"
        ],
        "kind": "network",
        "jsRendering": true,
        "residentialProxy": true,
        "antiBotBypass": true,
        "markdownOutput": false,
        "failedRequestsFree": true,
        "structuredParsers": true,
        "proxyPortMode": true,
        "asyncBatch": false,
        "geoTargeting": true,
        "sla": null
      },
      "sources": [
        {
          "url": "https://www.zyte.com/pricing/",
          "capturedAt": "2026-09-14",
          "note": "\"From $0.06 per 1,000 successful responses\"; the full five-tier ladder for HTTP response body and browser rendered at pay-as-you-go and at the $100, $200 and $500 minimum commitments; \"Websites are priced in five tiers, with datacenter, residential, rendering and more included in one automated API - you're charged only for what's needed\"; \"No overage penalties\"; \"Try Zyte API with $5 free credit\"; the feature list (IP rotation all types, CAPTCHA, JS rendering, geo locations, actions, sessions, instant browsers) and the warning \"Additional costs for some features\"."
        },
        {
          "url": "https://www.zyte.com/zyte-api/",
          "capturedAt": "2026-09-14",
          "note": "Product page: one API for ban handling, headless browser and AI extraction, with residential IP rotation included and the tier model behind it."
        },
        {
          "url": "https://docs.zyte.com/zyte-api/pricing.html",
          "capturedAt": "2026-09-14",
          "note": "\"You are only charged for successful responses. Rate-limiting and unsuccessful responses are free.\" The plan table (Standard PAYG, Standard commitment $100-$500, Enterprise; $5 and $200 initial free credit; 3,000 and 10,000 RPM; 25%-52% volume discount), the 5-tier model, and the extra costs: screenshots $0.002, automatic extraction $0.0004-$0.0016 per data type (serp free), custom attributes, actions and network captures, plus \"Requests using extended geolocations or device residential IPs have different base costs that depend only on request type, plus additional costs based on network consumption\"."
        },
        {
          "url": "https://docs.zyte.com/zyte-api/migration/zenrows/index.html",
          "capturedAt": "2026-09-14",
          "note": "Used for two capability answers: the feature table's \"Markdown output: No\" for Zyte API, and the parameter mapping where markdown_response is \"Not supported\" while ipType residential exists as a Zyte API request parameter. The same table states Zyte's ban avoidance is \"Always available, automatic\" and its geolocation covers 249 countries."
        },
        {
          "url": "https://www.zyte.com/contact-us/",
          "capturedAt": "2026-09-14",
          "note": "Operating company address, 12 South Mall, Cork, Ireland."
        }
      ],
      "capturedAt": "2026-09-14",
      "notes": "The cheapest plain page on this site, and the one whose price you cannot look up in advance: Zyte sorts every website into one of five difficulty tiers itself, and the same fetch costs $0.13 or $1.27 per 1,000 depending on which tier your target landed in. Tier assignment is automatic, reviewed quarterly, and you get two weeks' notice if it moves. Rendering is the big multiplier - a browser response is 7.5 to 8 times the plain rate on the same site, up to $16.08 per 1,000 on the hardest tier. Failures are genuinely free (\"Rate-limiting and unsuccessful responses are free\") and there is no subscription: $100 to $500 a month is a minimum commitment that buys the rate down by 25% to 52%, with no penalty for going over. Two things it does not sell: Markdown output, and a residential rate you can read - residential and extended-geolocation requests have a different, unpublished base cost plus a bandwidth charge, so those cells are blank here rather than guessed. Screenshots, browser actions and AI extraction are billed on top of the request.",
      "normalized": {
        "plain": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 0.12999999999999998,
            "per1kUsd": 0.13,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 1.2999999999999998,
            "per1kUsd": 0.13,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 12.999999999999998,
            "per1kUsd": 0.13,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 100,
            "per1kUsd": 0.1,
            "via": "$100 commitment",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "js": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 1.0101,
            "per1kUsd": 1.0101,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 10.100999999999999,
            "per1kUsd": 1.0101,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 100,
            "per1kUsd": 1,
            "via": "$100 commitment",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 500,
            "per1kUsd": 0.5,
            "via": "$500 commitment",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "residential": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "cost not published"
          }
        ],
        "antibot": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": 1.2700999999999998,
            "per1kUsd": 1.2701,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": 12.700999999999999,
            "per1kUsd": 1.2701,
            "via": "Pay as you go",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": 100,
            "per1kUsd": 1,
            "via": "$100 commitment",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": 586.20002,
            "per1kUsd": 0.5862,
            "via": "$500 commitment",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": null
          }
        ],
        "markdown": [
          {
            "unitsPerMonth": 1000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 10000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 100000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          },
          {
            "unitsPerMonth": 1000000,
            "monthlyUsd": null,
            "per1kUsd": null,
            "via": "-",
            "prepaidUsd": null,
            "queuePer1kUsd": null,
            "queueVia": null,
            "blocked": "not offered"
          }
        ]
      }
    }
  ]
}