7-day Trial

ScraperAPI Review 2026: 7 Benchmark Tests, Pricing and Real Costs

Picture of Anthony Heath

Try Gologin for free

Most scraping APIs look the same on a static page. The differences show up on sites behind Cloudflare or DataDome, and in what each page costs once the credit multipliers stack up. This ScraperAPI review runs ScraperAPI, a web scraping API, and Gologin on the same seven targets, with the same runs and the same success check.

ScraperAPI sells one endpoint with credit costs that change by parameter and by site. Gologin enters as a stack: Gologin Web Unlocker for page retrieval plus Gologin Cloud Browser for jobs that need a live session.

Every number below comes from a logged run, including Gologin’s losses.

ScraperAPI vs Gologin: Key Takeaways

  • Retrieval success: ScraperAPI returned the full page in 38 of 45 runs across tests 1 to 5, Web Unlocker in 44 of 45. Almost all of the gap is one target, the DataDome category page.
  • DataDome target: ScraperAPI got 3/10 on the Amway category page at its best setting, premium proxies plus rendering plus US geo, at 40 credits a request. Web Unlocker got 10/10 at a median of 12.86 s with the default request.
  • Where ScraperAPI was faster: Indeed (8.82 s against 12.41 s) and Walmart (6.37 s against 9.02 s), both with the default request and no rendering.
  • Empty pages are billed: ScraperAPI charges every HTTP 200. On Amway it charged 10 to 40 credits for 17 pages that said “A system error has occurred” and listed no products.
  • Infinite scroll: ScraperAPI’s rendering instructions loaded 100 quotes in 5/5 runs at 26.08 s. Gologin Cloud Browser did it 5/5 at 14.90 s through Playwright.
  • Neither is the universal winner: ScraperAPI is cheaper on static pages and won on speed on two of five targets. The Gologin stack won the DataDome page, the JavaScript page and both browser tests.
ScraperAPI Gologin Web Unlocker (+ Cloud Browser for #6, #7)
Success, tests 1 to 5 38/45 44/45
Median time, hardest target (#4 DataDome) 43.28 s 12.86 s
Cost per 1K, hardest target (entry plan) $19.60 $0.98
JS rendering render=true, 10 credits included
Sessions and interaction session_number (15 min), rendering instructions Cloud Browser, hourly
Charged responses every 200 and 404 successful pages only
Free trial 5,000 credits, 7 days, no card 1,000 requests, 7 days, no card

What Is ScraperAPI?

ScraperAPI is a web data API: you send a URL to one endpoint and get the page back as HTML, Markdown or text. Parameters switch on JavaScript rendering, residential proxies, geo-targeting and browser actions, and each one changes the credit cost of the request.

It is built for developers and data teams that want pages without running their own proxies or browsers, paying a monthly plan in API credits.

Product What it does When you use it
Sync API One request, one page, with all parameters Real-time scraping
Async API Jobs and batches up to 50,000 URLs, results by status URL or webhook Large scheduled jobs
Structured Data Endpoints Parsed JSON for Amazon, Google, Walmart, eBay and others Ready fields instead of HTML
DataPipeline and Crawler Scheduled jobs and site crawls from the dashboard No-code or recurring collection
MCP server ScraperAPI as a tool for AI agents Agents and LLM pipelines

ScraperAPI home page, the web scraping API reviewed here

We ran the same kind of tests in our ScrapingBee review and our Crawlbase review.

How We Tested ScraperAPI and Gologin

Tests ran on 3 November 2026 from one machine. Each tool got 5 runs per target, extended to 10 when a run failed or the slowest run took more than twice the median, at least 10 seconds apart, with a fresh cache-busting parameter (cb=timestamp) on every URL.

# Scenario Target Success marker
1 Static HTML books.toscrape.com product page h1 and .price_color
2 JavaScript-rendered quotes.toscrape.com/js/ at least 10 .quote elements
3 Site behind Cloudflare indeed.com job search, New York h1 and a job card, no challenge
4 Site running DataDome amway.com Skin Care category at least 10 prices, no DataDome markup
5 Marketplace product walmart.com item 5689919121 product title and price
6 Infinite scroll quotes.toscrape.com/scroll at least 50 quotes
7 Escalation amway.com Skin Care category at least 10 prices
  • Direct requests first: a plain request got a Cloudflare challenge from Indeed, a DataDome device check from Amway and a “Robot or human?” page from Walmart, so all three are real access tests.
  • Configuration rule: ScraperAPI started on the cheapest setup and stepped up through render, premium, premium plus render and country_code=us only when the marker failed. Every step is in our log.
  • Success and cost: a run counts only when one shared parser finds the marker in the body, never on HTTP 200 alone. Cost per 1,000 = price per credit x credits per request x 1,000; both vendors say failed requests are free, so there is no division by the success rate.
python -m venv .venv && source .venv/bin/activate && pip install requests beautifulsoup4 playwright python-dotenv

ScraperAPI ran on its free trial (5,000 credits, 7 days). The trial accepted premium=true; ultra_premium=true returned HTTP 403 with “Your current plan does not allow you to use our premium proxies”, so that tier is reported as not available on the tested plan.

ScraperAPI Features and Full API Parameters

  • One endpoint, many costs: a normal request is 1 credit; render, premium and ultra_premium raise it to 10, 25, 30 or 75 (ScraperAPI docs).
  • Site costs: e-commerce sites such as Walmart cost 5 credits, Google 25, LinkedIn 30, and sites behind Cloudflare, DataDome, PerimeterX or Akamai add 10.
  • Cost signals: every response carries an sa-credit-cost header, and the /account/urlcost endpoint quotes a request before you send it.
  • Output formats: HTML, Markdown and text for any URL, JSON or CSV through autoparse on supported sites, and screenshots.
  • Geo-targeting: country_code; Hobby and Startup get only us and eu, Business and higher get the country list.
  • Sticky sessions: session_number keeps one IP, sessions expire 15 minutes after last use.
  • Rendering instructions: click, input, loop, scroll and wait steps sent as a header with render=true.
  • Billing rule: “you are only charged for successful requests, 200 and 404 status codes.”
Parameter Type Default What it does Cost effect
api_key string none Account key none
url string none Target URL, encoded site cost 1 to 30, +10 on sites behind Cloudflare or DataDome
render boolean false Renders JavaScript before returning 10 credits
wait_for_selector string none Waits for an element, needs render none
screenshot boolean false PNG URL in sa-screenshot, enables render rendering cost
country_code ISO code automatic Routes through one country or region none
premium boolean false Residential and mobile IPs 10, or 25 with render
ultra_premium boolean false Top pool, paid plans only 30, or 75 with render
session_number integer none Same IP for 15 minutes, not with premium none
keep_headers boolean false Forwards your headers none
device_type desktop, mobile desktop User agent type none
autoparse boolean false JSON for supported sites none
output_format markdown, text, json, csv html Response format none
follow_redirect boolean true Follows redirects none
max_cost integer none Refuses requests above this cost none
cache_control no-cache cache on Skips the 10-minute ultra_premium cache none
x-sapi-instruction_set JSON header none Click, input, loop, scroll, wait steps rendering cost
  • country_code=us: gave the best test #4 result, 3/10, on top of premium and render.

ScraperAPI Review: Hands-On Testing Results

Test #1: Static HTML page

We sent the books.toscrape.com product page with the default request.

from common import credits, scraperapi
from markers import static_page

TARGET = "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"

def run(**params):
    response, elapsed = scraperapi(TARGET, **params)
    found = static_page(response.text)
    print(f"Config        : {params or 'default'}")
    print(f"HTTP status   : {response.status_code}")
    print(f"Body          : {len(response.content):,} bytes")
    print(f"Marker found  : {found}")
    print(f"Elapsed       : {elapsed:.2f}s")
    print(f"Credits       : {credits(response):g}")
    return response, elapsed, found

run()

Every run returned the title and price.

ScraperAPI review test #1: terminal output for the static books.toscrape.com page, 1 credit

10/10 successful, median 2.69 s, 1 credit each. The slowest run took 6.40 s, more than twice the median, so the test went to 10 runs.

Book product page with title and price returned by ScraperAPI

Test #2: JavaScript-rendered page

We sent quotes.toscrape.com/js/ with the default request, then with render=true.

from common import credits, scraperapi
from markers import js_quotes

TARGET = "https://quotes.toscrape.com/js/"

def run(**params):
    response, elapsed = scraperapi(TARGET, **params)
    found = js_quotes(response.text)
    print(f"Config        : {params or 'default'}")
    print(f"HTTP status   : {response.status_code}")
    print(f"Marker found  : {found}")
    print(f"Elapsed       : {elapsed:.2f}s")
    print(f"Credits       : {credits(response):g}")
    return response, elapsed, found

run(render="true")

With rendering on, the quotes were in the body every time.

ScraperAPI terminal output for quotes.toscrape.com/js/ with render=true, 10 credits

10/10 successful, median 9.84 s, 10 credits each, slowest 41.12 s. The default request got 0/5: ScraperAPI returned HTTP 200 with the unrendered page and charged 1 credit for each.

JavaScript-rendered quotes page returned by ScraperAPI with render=true

Test #3: Site behind Cloudflare

We sent an indeed.com job search, which answers a plain request with a Cloudflare challenge.

from common import credits, scraperapi
from markers import job_search

TARGET = "https://www.indeed.com/jobs?q=python+developer&l=New+York%2C+NY"

def run(**params):
    response, elapsed = scraperapi(TARGET, **params)
    found = job_search(response.text)
    print(f"Config        : {params or 'default'}")
    print(f"HTTP status   : {response.status_code}")
    print(f"Marker found  : {found}")
    print(f"Elapsed       : {elapsed:.2f}s")
    print(f"Credits       : {credits(response):g}")
    return response, elapsed, found

run()

The default request returned the job list every time.

ScraperAPI terminal output for an Indeed job search behind Cloudflare, 10 credits

10/10 successful, median 8.82 s, 10 credits each: 1 for the request plus the 10-credit Cloudflare surcharge, as the sa-credit-cost header showed.

Indeed job list for python developer in New York returned by ScraperAPI

Test #4: Site running DataDome

We sent the Amway Skin Care category, which answers a plain request with a DataDome device check.

from common import credits, scraperapi
from markers import category_page

TARGET = "https://www.amway.com/en_US/Shop/Beauty/Skin-Care/c/105"

def run(**params):
    response, elapsed = scraperapi(TARGET, **params)
    found = category_page(response.text)
    print(f"Config        : {params or 'default'}")
    print(f"HTTP status   : {response.status_code}")
    print(f"Marker found  : {found}")
    print(f"Elapsed       : {elapsed:.2f}s")
    print(f"Credits       : {credits(response):g}")
    return response, elapsed, found

run(premium="true", render="true", country_code="us")

Three of ten runs returned the product grid.

ScraperAPI terminal output for the Amway category page running DataDome with premium, render and US geo

3/10 successful, median 43.28 s, 40 credits each, after the default request (0/5), render (0/5), premium (0/5) and premium plus render (1/5).

The failed runs split two ways. Some ended in HTTP 500 and were not charged. Others came back as HTTP 200 with the category frame, the text “A system error has occurred” and no products, and those were billed: 17 such pages across the steps, at 10 to 40 credits each. Test #4 used 570 credits for 4 product grids.

Amway page without products that ScraperAPI returned and billed as a successful request

Test #5: Marketplace product page

We sent the Walmart product page for item 5689919121 with the default request.

from common import credits, scraperapi
from markers import product_page

TARGET = "https://www.walmart.com/ip/5689919121"

def run(**params):
    response, elapsed = scraperapi(TARGET, **params)
    found = product_page(response.text)
    print(f"Config        : {params or 'default'}")
    print(f"HTTP status   : {response.status_code}")
    print(f"Marker found  : {found}")
    print(f"Elapsed       : {elapsed:.2f}s")
    print(f"Credits       : {credits(response):g}")
    return response, elapsed, found

run()

Every run returned the product title and price.

ScraperAPI terminal output for a Walmart product page, 5 credits

5/5 successful, median 6.37 s, 5 credits each, the documented e-commerce site cost.

Walmart product title and price parsed from ScraperAPI HTML

Test #6: Infinite scroll

ScraperAPI has no browser product, so we used its rendering instructions: a loop of scroll and wait steps sent as a header.

from bs4 import BeautifulSoup
from common import credits, scraperapi

TARGET = "https://quotes.toscrape.com/scroll"

def scroll(times, wait):
    return [{"type": "loop", "for": times, "instructions": [
        {"type": "scroll", "direction": "y", "value": "bottom"},
        {"type": "wait", "value": wait}]}]

def run(times=6, wait=2):
    response, elapsed = scraperapi(TARGET, instructions=scroll(times, wait), render="true")
    quotes = len(BeautifulSoup(response.text, "html.parser").select("div.quote"))
    print(f"Quotes loaded : {quotes}")
    print(f"Marker found  : {quotes >= 50}")
    print(f"Elapsed       : {elapsed:.2f}s")
    print(f"Credits       : {credits(response):g}")
    return response, elapsed, quotes >= 50

run()

Six scrolls loaded all 100 quotes in every run.

ScraperAPI terminal output for the infinite scroll test with a loop of scroll instructions

5/5 successful, median 26.08 s, 10 credits each: the instructions cost nothing on top of rendering.

Quotes page scrolled to the end by ScraperAPI rendering instructions

Test Target Configuration Success Median s Slowest s Units per success
#1 Static books.toscrape.com default 10/10 2.69 6.40 1 credit
#2 JavaScript quotes.toscrape.com/js/ render=true 10/10 9.84 41.12 10 credits
#3 Cloudflare indeed.com default 10/10 8.82 16.70 10 credits
#4 DataDome amway.com premium, render, country_code=us 3/10 43.28 57.17 40 credits
#5 Marketplace walmart.com default 5/5 6.37 8.41 5 credits
#6 Scroll quotes.toscrape.com/scroll render, loop of 6 scrolls 5/5 26.08 31.57 10 credits
#7 Escalation amway.com premium, render, country_code=us 5/10 44.79 56.87 40 credits

Gologin Web Unlocker and Cloud Browser: Same Targets, Same Method

What is the Gologin stack

Gologin Web Unlocker is a page retrieval API: one GET request returns the rendered HTML at one flat price per page, JavaScript included. It is stateless. Gologin Cloud Browser is the second layer: a cloud browser with a residential IP, billed by the hour and driven from Playwright or Puppeteer with a profile id, the same job a scraping browser does.

Feature Web Unlocker Cloud Browser
Unit page browser hour
Entry price $49 for 50k pages $4.50 for 50 hours
JavaScript rendering included full browser
Failed requests free billed by time
Interaction none clicks, scroll, login
Connection HTTP GET Playwright, Puppeteer
IPs managed residential, per profile
Free start 1,000 requests 3 runs of 15 min

Gologin Web Unlocker product page, the ScraperAPI alternative used in this benchmark

Test #1: Static HTML page

We sent the same books.toscrape.com URL with the default request.

from common import unlocker
from markers import static_page

TARGET = "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"

def run():
    response, elapsed = unlocker(TARGET)
    found = static_page(response.text)
    print(f"HTTP status   : {response.status_code}")
    print(f"Body          : {len(response.content):,} bytes")
    print(f"Marker found  : {found}")
    print(f"Elapsed       : {elapsed:.2f}s")
    return response, elapsed, found

run()

Nine runs returned the title and price.

Gologin Web Unlocker terminal output for the static books.toscrape.com page

9/10 successful, median 1.77 s, 1 request each. One run ended in HTTP 503, not charged, and the slowest success took 26.95 s.

Book product page with title and price returned by Gologin Web Unlocker

Test #2: JavaScript-rendered page

We sent quotes.toscrape.com/js/ with the same default request, no rendering option.

from common import unlocker
from markers import js_quotes

TARGET = "https://quotes.toscrape.com/js/"

def run():
    response, elapsed = unlocker(TARGET)
    found = js_quotes(response.text)
    print(f"HTTP status   : {response.status_code}")
    print(f"Marker found  : {found}")
    print(f"Elapsed       : {elapsed:.2f}s")
    return response, elapsed, found

run()

The rendered quotes were in the body every time.

Gologin Web Unlocker terminal output for the JavaScript-rendered quotes page

10/10 successful, median 1.48 s, 1 request each, with the slowest run at 4.15 s.

Rendered quotes page returned by Gologin Web Unlocker with the default request

Test #3: Site behind Cloudflare

We sent the indeed.com search URL with the default request.

from common import unlocker
from markers import job_search

TARGET = "https://www.indeed.com/jobs?q=python+developer&l=New+York%2C+NY"

def run():
    response, elapsed = unlocker(TARGET)
    found = job_search(response.text)
    print(f"HTTP status   : {response.status_code}")
    print(f"Marker found  : {found}")
    print(f"Elapsed       : {elapsed:.2f}s")
    return response, elapsed, found

run()

Every run returned the job list.

Gologin Web Unlocker terminal output for the Indeed job search behind Cloudflare

10/10 successful, median 12.41 s, 1 request each, about 3.6 s slower than ScraperAPI. For job data without writing a parser, Gologin also has a ready Indeed scraper.

Indeed job list returned by Gologin Web Unlocker

Test #4: Site running DataDome

We sent the Amway Skin Care category URL with the default request.

from common import unlocker
from markers import category_page

TARGET = "https://www.amway.com/en_US/Shop/Beauty/Skin-Care/c/105"

def run():
    response, elapsed = unlocker(TARGET)
    found = category_page(response.text)
    print(f"HTTP status   : {response.status_code}")
    print(f"Marker found  : {found}")
    print(f"Elapsed       : {elapsed:.2f}s")
    return response, elapsed, found

run()

Every run returned the product grid with prices.

Gologin Web Unlocker terminal output for the Amway category page running DataDome

10/10 successful, median 12.86 s, 1 request each. The slowest run took 89.14 s.

Amway Skin Care product grid with prices returned by Gologin Web Unlocker

Test #5: Marketplace product page

We sent the Walmart product URL with the default request.

from common import unlocker
from markers import product_page

TARGET = "https://www.walmart.com/ip/5689919121"

def run():
    response, elapsed = unlocker(TARGET)
    found = product_page(response.text)
    print(f"HTTP status   : {response.status_code}")
    print(f"Marker found  : {found}")
    print(f"Elapsed       : {elapsed:.2f}s")
    return response, elapsed, found

run()

Every run returned the title and price.

Gologin Web Unlocker terminal output for the Walmart product page

5/5 successful, median 9.02 s, 1 request each, about 2.7 s slower than ScraperAPI.

Walmart product title and price parsed from Gologin Web Unlocker HTML

Test #6: Infinite scroll with Gologin Cloud Browser

We connected to Cloud Browser from Playwright with a profile id that has a Gologin US residential proxy and scrolled until 50 quotes were on the page.

from playwright.sync_api import sync_playwright
from common import key

TARGET = "https://quotes.toscrape.com/scroll"
ENDPOINT = "wss://cloudbrowser.gologin.com/connect?token={}&profile={}"

def run():
    with sync_playwright() as p:
        browser = p.chromium.connect_over_cdp(ENDPOINT.format(key("GOLOGIN_CLOUD_BROWSER_TOKEN"), key("GOLOGIN_PROFILE_ID")))
        page = browser.contexts[0].pages[0]
        page.goto(TARGET)
        quotes = page.locator("div.quote")
        for _ in range(20):
            if quotes.count() >= 50:
                break
            page.mouse.wheel(0, 5000)
            page.wait_for_timeout(1000)
        count = quotes.count()
        browser.close()
    print(f"Quotes loaded : {count}")
    print(f"Marker found  : {count >= 50}")
    return count

run()

The loop stopped at 50 quotes.

Gologin Cloud Browser terminal output for the infinite scroll test through Playwright

5/5 successful, median 14.90 s including the connection, about 0.004 browser hours each.

Quotes page scrolled to 50 quotes in Gologin Cloud Browser

Test #7: Escalation to Cloud Browser on Amway

We opened the Amway category in Cloud Browser and waited for the product prices, with a new profile and US residential proxy per run.

from playwright.sync_api import sync_playwright
from common import fresh, key, new_profile, stop_session
from markers import category_page

TARGET = "https://www.amway.com/en_US/Shop/Beauty/Skin-Care/c/105"
ENDPOINT = "wss://cloudbrowser.gologin.com/connect?token={}&profile={}"

def run():
    profile = new_profile("amway-run")
    try:
        with sync_playwright() as p:
            browser = p.chromium.connect_over_cdp(ENDPOINT.format(key("GOLOGIN_CLOUD_BROWSER_TOKEN"), profile))
            page = browser.contexts[0].pages[0]
            page.goto(fresh(TARGET), wait_until="domcontentloaded")
            for _ in range(30):
                if category_page(page.content()):
                    break
                page.wait_for_timeout(1000)
            html = page.content()
            browser.close()
    finally:
        stop_session(profile)
    print(f"Marker found  : {category_page(html)}")
    return html

run()

Nine runs returned the full product grid.

Gologin Cloud Browser terminal output for the Amway page with a new profile per run

9/10 successful, median 10.47 s, about 0.003 browser hours each. The first run got a DataDome device check instead of the page.

Amway product grid with prices loaded in Gologin Cloud Browser

Test Target Configuration Success Median s Slowest s Units per success
#1 Static books.toscrape.com Web Unlocker, default 9/10 1.77 26.95 1 request
#2 JavaScript quotes.toscrape.com/js/ Web Unlocker, default 10/10 1.48 4.15 1 request
#3 Cloudflare indeed.com Web Unlocker, default 10/10 12.41 23.58 1 request
#4 DataDome amway.com Web Unlocker, default 10/10 12.86 89.14 1 request
#5 Marketplace walmart.com Web Unlocker, default 5/5 9.02 15.58 1 request
#6 Scroll quotes.toscrape.com/scroll Cloud Browser, US residential 5/5 14.90 15.68 0.004 h
#7 Escalation amway.com Cloud Browser, new profile per run 9/10 10.47 16.92 0.003 h

ScraperAPI Pricing and Credit System Explained

ScraperAPI pricing is credit-based. A normal request is 1 credit, render makes it 10, premium 10 or 25 with render, and ultra_premium 30 or 75. Sites add their own cost: we paid 5 credits for Walmart and 10 for Indeed because of the Cloudflare surcharge. On Amway, premium plus render came to 40.

The billing rule is “you are only charged for successful requests, 200 and 404 status codes”, and our HTTP 500 runs were free. A 200 without the content still counts: we paid for 5 unrendered JavaScript pages and 17 Amway pages with no products. The trial gives 5,000 credits for 7 days with no card; all our tests used 1,110.

ScraperAPI dashboard credit balance before the benchmark tests

Plan Monthly price Units included Price per unit Concurrency Overage
Free trial $0 5,000 credits, 7 days free 5 none
Hobby $49 100K credits $0.49 per 1K 20 auto-upgrade
Startup $149 1M credits $0.15 per 1K 50 auto-upgrade
Business $299 3M credits $0.10 per 1K 100 auto-upgrade
Scaling $475 5M credits $0.095 per 1K 200 pay as you go
Professional $975 10.5M credits $0.093 per 1K 300 pay as you go
Advanced $1,975 21.5M credits $0.092 per 1K 500 pay as you go
Scenario (test) Units per request Cheapest plan $ (Hobby) Comparable plan $ (Startup, $149)
Static (#1) 1 $0.49 $0.15
JavaScript (#2) 10 $4.90 $1.49
Cloudflare (#3) 10 $4.90 $1.49
DataDome (#4) 40 $19.60 $5.96
Marketplace (#5) 5 $2.45 $0.75
Scroll (#6) 10 $4.90 $1.49
DataDome, escalation (#7) 40 $19.60 $5.96

ScraperAPI dashboard credit balance after the benchmark tests

These are the documented costs. Counting the billed empty pages, each Amway product grid at the reported setting in test #4 actually cost 120 credits, $58.80 per 1,000 on Hobby.

Gologin prices differently. Web Unlocker charges one flat price per returned page: $0.98 per 1,000 on Growth ($49 for 50k) and $0.75 on Professional ($149 for 200k), failed pages free. Cloud Browser bills browser time: $4.50 for 50 hours on Professional, so our 10.47 s Amway run comes to about $0.26 per 1,000 pages, plus proxy traffic above the plan allowance at $1/GB.

ScraperAPI Pros

  • Fast on easy and mid pages: 2.69 s on the static page, 8.82 s on Indeed and 6.37 s on Walmart with the default request.
  • Cheap static pages on a subscription: $0.49 per 1,000 on Hobby and $0.15 on Startup.
  • Cost you can see: the sa-credit-cost header on every response and the free urlcost check matched the dashboard to the credit.
  • More than HTML: Markdown, text, JSON autoparse and structured endpoints for large marketplaces and search engines.

ScraperAPI Cons

  • Empty pages are charged: 5 unrendered JavaScript pages and 17 Amway pages without products were billed as successful requests.
  • Costs climb fast on hard sites: the Amway page was 10 credits with no options and 40 with premium, render and US geo.
  • Weak on our DataDome target: 3/10 at best on the trial, at a median of 43.28 s.
  • Top tier off the trial: ultra_premium returned HTTP 403 on the free trial, so the trial does not show its best setting for hard sites.

ScraperAPI Limitations

  • No browser product: no session to drive from Playwright; scroll and click steps run inside one rendered request, and the docs advise 3 to 4 actions.
  • Geo depends on the plan: Hobby and Startup get only us and eu; country codes start on Business.
  • 70-second window: the API retries for up to 70 seconds and then returns HTTP 500.
  • Sessions are short and exclusive: session_number lasts 15 minutes and cannot be combined with premium or ultra_premium.

ScraperAPI vs Gologin: Head-to-Head Results

Both tools return pages from one request but price them differently. ScraperAPI adds credits for rendering, proxy tier and the site’s access protection. Gologin keeps retrieval in Web Unlocker at one price per page and moves live sessions to Cloud Browser.

Aspect ScraperAPI Gologin stack
What you send URL plus parameters URL (Web Unlocker) or a Playwright session (Cloud Browser)
Rendering render=true, 10 credits included in Web Unlocker
Price unit credit, by parameter and site page (Web Unlocker), hour (Cloud Browser)
Interaction rendering instructions inside one call full browser session
Structured output autoparse and structured endpoints HTML, Markdown, text, JSON (product page)

ScraperAPI alternative: when Gologin is a better choice

Scenario Better fit From our tests
Sites running DataDome Web Unlocker 10/10 against 3/10 on test #4
JavaScript-heavy pages at volume Web Unlocker 1.48 s against 9.84 s, 1 request against 10 credits
Pages that need scrolling or clicks Cloud Browser 14.90 s against 26.08 s on test #6
A hard page that needs a real browser Cloud Browser 9/10 at 10.47 s against 5/10 at 44.79 s on test #7
Logged-in or multi-step flows Cloud Browser not tested; documented session product
Test ScraperAPI success ScraperAPI median s Gologin success Gologin median s
#1 Static 10/10 2.69 9/10 1.77
#2 JavaScript 10/10 9.84 10/10 1.48
#3 Cloudflare 10/10 8.82 10/10 12.41
#4 DataDome 3/10 43.28 10/10 12.86
#5 Marketplace 5/5 6.37 5/5 9.02
#6 Scroll 5/5 26.08 5/5 14.90
#7 Escalation 5/10 44.79 9/10 10.47
Scenario ScraperAPI, cheapest plan ScraperAPI, comparable plan Gologin, entry plan Gologin, comparable plan
Static (#1) $0.49 $0.15 $0.98 $0.75
JavaScript (#2) $4.90 $1.49 $0.98 $0.75
Cloudflare (#3) $4.90 $1.49 $0.98 $0.75
DataDome (#4) $19.60 $5.96 $0.98 $0.75
Marketplace (#5) $2.45 $0.75 $0.98 $0.75
Scroll (#6) $4.90 $1.49 $0.37 $0.33
DataDome in a browser (#7) $19.60 $5.96 $0.26 $0.23
Feature ScraperAPI Gologin stack
Pricing model credits by parameter and site per page, flat; browser per hour
JS rendering render=true, 10 credits included
Geo-targeting level us and eu on Hobby and Startup, country from Business country, state, city (product page)
Proxy tiers standard, premium, ultra_premium (paid plans) managed; residential on Cloud Browser
Sticky session, minutes 15 (session_number) Cloud Browser session
Output formats HTML, Markdown, text, JSON, CSV HTML, Markdown, text, JSON (product page)
Structured extraction autoparse, structured endpoints not documented
Screenshots yes, screenshot=true listed in the docs overview
Browser-level control no Gologin Cloud Browser
Batch and webhooks Async API, 50,000 URLs, webhooks up to 1,000 URLs, webhooks (product page)
Failure signalling HTTP status, sa-credit-cost HTTP status
Charged responses every 200 and 404 successful pages only
Free trial 5,000 credits, 7 days 1,000 requests, 7 days

ScraperAPI won tests 3 and 5 on speed and was cheaper on the static page; on test #1 it also had the better success rate, 10/10 against 9/10. Gologin won tests 2, 4, 6 and 7. The gap is widest on test #4: 10/10 at 12.86 s for Web Unlocker against 3/10 at 43.28 s for ScraperAPI.

On cost, ScraperAPI Hobby beats Web Unlocker’s entry plan on static pages, $0.49 against $0.98 per 1,000, and Startup matches it on Walmart at $0.75. Once rendering or a protection surcharge applies, the order flips: $4.90 against $0.98 on JavaScript and Indeed pages, $19.60 against $0.98 on Amway.

When the Unlocker Fails: Escalation to Cloud Browser

Web Unlocker’s only loss in tests 1 to 5 was one HTTP 503 on the static page, so we ran test #7 on the hardest page instead: the Amway category in Gologin Cloud Browser. With a new profile and US residential proxy per run, Cloud Browser returned the grid 9/10 at a median of 10.47 s, about 2.9 browser hours per 1,000 pages, $0.26 on Professional before proxy traffic. ScraperAPI has no browser product, so its side ran its most expensive working configuration, premium plus render plus US geo: 5/10 at 44.79 s, 40 credits, $19.60 per 1,000 on Hobby.

The rule: Web Unlocker for pages you can fetch in one request, Cloud Browser when the page needs scrolling, clicks or a login, as on test #6 (14.90 s against 26.08 s). ScraperAPI does both inside one API, with browser steps limited to what one rendered request can hold.

Frequently Asked Questions

Is ScraperAPI worth it in 2026?

For static pages, Indeed and Walmart, yes: it returned all three 10/10 or 5/5, faster than Web Unlocker on the last two, at $0.49 to $4.90 per 1,000 on Hobby. On our DataDome target it got 3/10 at 40 credits a request, and it bills empty 200 pages. Test your own targets on the 5,000 free credits first.

How much does ScraperAPI cost per 1,000 pages?

It depends on the parameters and the site. On Hobby ($49 for 100K credits) a static page costs $0.49 per 1,000, a rendered page or a page behind Cloudflare $4.90, a Walmart page $2.45, and our DataDome page $19.60 with premium, render and US geo. Gologin Web Unlocker is $0.98 per 1,000 for any page.

Does ScraperAPI charge for failed requests?

Not for errors: our HTTP 500 runs were free. But it charges every HTTP 200 and 404, whatever the page contains. We paid 1 credit each for 5 unrendered JavaScript pages and 10 to 40 credits each for 17 Amway pages that showed “A system error has occurred” and no products.

Is there a ScraperAPI alternative for DataDome sites?

On the Amway category page, which runs DataDome, ScraperAPI got 3/10 at best on the trial, with premium, render and country_code=us, at a median of 43.28 s. Gologin Web Unlocker returned the full product grid 10/10 with the default request at a median of 12.86 s.

Does ScraperAPI have a browser product like Gologin Cloud Browser?

No. ScraperAPI offers rendering instructions (click, input, loop, scroll, wait) inside one rendered request. On our infinite-scroll test they loaded 100 quotes 5/5 at 26.08 s for 10 credits. Gologin Cloud Browser runs a full Playwright session and reached 50 quotes 5/5 at 14.90 s.

ScraperAPI Review Verdict: Which One Should You Use?

There is no single best web scraping API across these seven targets.

What ScraperAPI does better or cheaper than the Gologin stack:

  • Indeed and Walmart: 8.82 s against 12.41 s, and 6.37 s against 9.02 s, with the default request.
  • Static pages: 10/10 against 9/10, and $0.49 per 1,000 on Hobby against $0.98.
  • Structured data and cost signals: autoparse, structured endpoints and an sa-credit-cost header on every response.

Where the Gologin stack was weaker in this test:

  • Static page: one Web Unlocker run ended in HTTP 503 and one success took 26.95 s.
  • Speed on Indeed and Walmart: 3.6 s and 2.7 s slower than ScraperAPI.
  • Slow tail on Amway: the slowest Web Unlocker run took 89.14 s.
  • Cloud Browser on Amway: one of ten runs got a DataDome device check.

What the Gologin stack does better or cheaper than ScraperAPI:

  • Web Unlocker on DataDome: 10/10 against 3/10 on test #4.
  • Web Unlocker on JavaScript pages: 1.48 s against 9.84 s on test #2, 1 request against 10 credits.
  • One price per page: $0.98 per 1,000 on Amway against $19.60 on ScraperAPI Hobby, and empty pages are not billed.
  • Cloud Browser for interaction: 14.90 s against 26.08 s on test #6, and 9/10 against 5/10 on test #7.

Choose ScraperAPI if you need static pages, Indeed-type or Walmart-type pages fast on a low-cost plan, or ready JSON for the sites its structured endpoints cover.

Choose Gologin if you need pages from sites running DataDome, JavaScript-heavy pages at one flat price, or a real browser session for scrolling and multi-step pages.

Conclusion

ScraperAPI is a quick, transparent API for static pages and for sites its default request gets through. On our DataDome target it reached 40 credits a request for 3 grids in 10, billing empty pages on the way. Gologin Web Unlocker returned that page every time at one flat price, and Cloud Browser covers the session jobs that ScraperAPI fits into one request.

Gologin Web Unlocker gives you 1,000 free requests for 7 days with no credit card, enough to repeat these tests on your own pages.

Also Read