NewLaunching String Web Access APIRead the manifesto →
← Comparisons

String vs Zyte (2026): 100 sites compared

Logan Harless, Founder, String · Updated October 27, 2026

Which is better, String or Zyte?

String is the better fit when protected pages have to return consistently and you want a published rate for each fetch path. Zyte is the better fit when you already use Scrapy, want the vendor to choose the lowest-cost technology for each domain, or your sites land in Zyte's inexpensive HTTP tiers. In the September 16, 2026 Web Data Frontier Benchmark, String returned verified content on 97.0% of 500 requests. Zyte's HTTP path returned it on 68.0%.

  • Choose String if protected pages have to return and you want a published rate for each fetch path. String returned 97.0% of requests and Zyte's HTTP path 68.0%.
  • Choose Zyte if you want automatic extraction for products, articles, and jobs, or browser actions and screenshots in the same API.
  • Do not switch if you run Scrapy and your domains sit in Zyte's Simple HTTP tier, where it can cost less than String's standard path.

Zyte still wins meaningful cases. It returned AutoTrader and Foot Locker on five of five attempts where String returned four, passed 100% against Kasada to String's 93.3%, and charges $0.10 to $0.95 per 1,000 successful HTTP responses at a $100 commitment. Every Zyte HTTP tier below Advanced costs less than String's $0.90 premium-request rate. Buyers should test the path and domains they will actually use.

Last updated October 27, 2026. Benchmark figures come from the September 16, 2026 run; see /benchmark. Zyte prices, plans, free credit, and tier-assignment rules were checked against its published pricing page and pricing documentation on October 27, 2026. Its billing and product claims were checked against its error documentation and API reference on August 31, 2026.

TL;DR

  • String passed 485 of 500 benchmark requests, or 97.0%. Zyte passed 340, or 68.0%.
  • String returned content on every attempt for 93 of 100 sites. Zyte did so for 57.
  • String's failure-aware latency score was 7.06 seconds, first of 16 providers. Zyte's was 17.46 seconds, seventh. On the 55 sites both returned in full, Zyte was the faster of the two: a median 1.50 seconds per site against String's 2.20.
  • Zyte returned nothing on 26 sites. String returned nothing on two.
  • Zyte beat String on Kasada, 100% against 93.3%, and on AutoTrader and Foot Locker, five of five attempts against four.
  • Zyte assigns one of five tiers to each website and request type, reviews assignments quarterly, and gives two weeks' notice of changes.
  • At a $100 commitment, Zyte HTTP costs $0.10 to $0.95 per 1,000 successful responses. Browser requests cost $0.75 to $12.00.
  • String Growth costs $99 a month, which includes $99 of usage at $0.16 to $3.25 per 1,000 verified requests, depending on the fetch and proxy path.
  • Both providers make ban and unsuccessful responses free. Zyte treats a non-ban target 404 as a successful, billable response.
  • Every benchmark number comes from a public harness that accepts your own API keys.
String Zyte
Product shape One fetch API, plus search, sitemap crawling, remote Chrome, and MCP Zyte API with HTTP, browser, automatic extraction, and Scrapy integration
Benchmark path String selects the request or browser path httpResponseBody, the HTTP path
Benchmark success 97.0% (485/500) 68.0% (340/500)
Failure-aware latency score 7.06s, first of 16 17.46s, seventh of 16
Sites passed on all 5 attempts 93 of 100 57 of 100
Sites passed on no attempts 2 of 100 26 of 100
Entry offer 20,000 free standard fetches; Starter $19, all of it usage credit $5 free credit for 30 days, no commitment
Roughly $100 tier Growth $99, used at $0.16 to $3.25 per 1,000 verified requests $100 commitment; HTTP $0.10 to $0.95, browser $0.75 to $12.00 per 1,000 successful responses
Pricing control Four published paths chosen per request Five automatic tiers per domain and request type
Best fit Protected pages that must return consistently Scrapy teams and domains assigned to inexpensive Zyte tiers

String vs Zyte benchmark results

The Web Data Frontier Benchmark sends every provider the same 100 URLs five times. A response passes only when it contains a marker from the real page. A CAPTCHA or block page that returns HTTP 200 still fails. The September run made 8,000 live requests across 16 providers.

String built the benchmark and sells the product that ranked first. The test is public so that conflict is inspectable: the target list and pass criteria, Zyte adapter, and complete results JSON are available for review.

Provider Successful requests Success rate Latency score
String 485/500 97.0% 7.06s
Zyte 340/500 68.0% 17.46s

The latency score is failure-aware. For each target it takes the p75 of successful attempts; a provider that never returns the page inherits the p75 of providers that did. That prevents a fast block page from looking like good performance.

Accuracy against latency. Accuracy is the percent of requests that returned verified content; latency is the failure-aware mean per-target p75, in seconds. Web Data Frontier Benchmark · 100 targets · 500 requests per provider · September 16, 2026. Current leaderboard

The benchmark tested Zyte's HTTP path

The Zyte adapter posts to /v1/extract with httpResponseBody: true. Zyte's HTTP documentation says this path does not reflect content loaded at runtime by JavaScript.

Zyte also sells browser requests that return rendered HTML, screenshots, execute actions, and capture network traffic. A browser request could plausibly clear pages the HTTP path missed. It is also a different price band: at a $100 commitment, tier 1 rises from $0.10 to $0.75 per 1,000 and tier 5 from $0.95 to $12.00.

The 68.0% result is therefore not a claim about the ceiling of every Zyte configuration. It is the measured result for the lower-cost HTTP path. String chooses its request or browser path behind the same endpoint and bills the path actually used.

Where the 29-point success gap appears

Zyte returned nothing on all five attempts for 26 sites: Temu, Mouser, Trustpilot, Best Buy, Apartments.com, Lowe's, Realtor.com, AutoZone, Louis Vuitton, Yelp, Neiman Marcus, Saks Fifth Avenue, G2, Coupang, Idealista, StubHub, American Airlines, Cars.com, Yellow Pages, Allegro, Wall Street Journal, LinkedIn, Asda, Booking.com, CarGurus and Kroger.

String returned content on 24 of those 26. It passed all five attempts on 21, and four of five on Yelp, Coupang and Allegro. Temu and Idealista shut out both providers.

Zyte won two targets in the September run, AutoTrader and Foot Locker, each by one attempt. None of the four it won in August survived: String now returns Skyscanner, Neiman Marcus and Booking.com on all five attempts, and Zyte returns nothing on Allegro.

Anti-bot systems

Anti-bot system String Zyte
Cloudflare 100% 58.7%
Akamai 98.0% 64.0%
DataDome 92.6% 50.5%
PerimeterX 100% 88.9%
Kasada 93.3% 100%

Zyte stayed close on PerimeterX and beat String on Kasada, 100% against 93.3%, the only column where it leads. Its largest gaps are Cloudflare and DataDome, which together protect 34 of the 100 targets, and AWS WAF, where it fell to 30.0%.

What each product is

Zyte API combines automatic proxy selection, anti-ban work, HTTP fetching, browser rendering, and extraction. The API reference supports httpResponseBody, browserHtml, screenshots, actions, sessions, and structured extraction for products, articles, jobs, forums, and search results.

Zyte is particularly natural for Scrapy teams. Its HTTP path works through scrapy-zyte-api, while the browser path supplies rendered DOM and actions. Zyte decides which infrastructure a domain needs and folds datacenter, residential, and rendering costs into the assigned tier.

String is narrower. Send a URL to the Web Access API and get Markdown, HTML, or JSON. Proxy rotation, fingerprinting, CAPTCHA solving, and browser escalation happen behind the endpoint. String also provides search, an asynchronous sitemap crawl, remote Chrome over CDP, and an MCP server.

String publishes a server in the official MCP registry as ai.usestring/web-access. Zyte runs a remote MCP server with fetch, browser, extraction, search, and Scrapy Cloud tools. Both have MCP; native Scrapy integration is an advantage for Zyte.

The same request in Zyte and String

One job, done both ways: fetch a JavaScript-heavy product page and get its content back. Each request follows the vendor's own docs for that job, checked against those docs on October 15, 2026. Each one reads its key from an environment variable, such as $STRING_API_KEY.

curl --user $ZYTE_API_KEY: https://api.zyte.com/v1/extract \
  -H "Content-Type: application/json" \
  --compressed \
  -d '{"url": "https://www.example.com/product/123", "browserHtml": true}'
curl https://request.usestring.ai/v1/fetch \
  -H "Authorization: Bearer $STRING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://www.example.com/product/123", "format": "markdown"}'

Zyte API takes the key as a Basic-auth username with an empty password. browserHtml: true returns the rendered page as HTML. The HTTP path the benchmark ran, httpResponseBody: true, returns the body Base64-encoded, so your code decodes it. We found no markdown output in Zyte's docs. String takes the key in a header, picks the fetch path and proxy class for each request, and bills the path it used. Add "executeJS": true if you want to force a browser.

Pricing: automatic tiers versus published paths

Zyte API pricing assigns every combination of website and request type to one of five tiers.

Zyte tier HTTP PAYG HTTP at $100 Browser PAYG Browser at $100
Simple $0.13 $0.10 $1.01 $0.75
Easy $0.23 $0.17 $2.01 $1.50
Moderate $0.44 $0.33 $4.02 $3.00
Complex $0.70 $0.53 $8.04 $6.00
Advanced $1.27 $0.95 $16.08 $12.00

Rates are per 1,000 successful responses. Zyte's pricing documentation says new domain and request-type combinations begin on a temporary tier, permanent assignments are reviewed quarterly, and affected customers get two weeks' notice. A $100 spending limit has no commitment; a $100 commitment buys a $200 spending limit and a 25% discount.

Zyte does not charge rate-limit or unsuccessful responses. Its error documentation says an unavoidable ban returns a 520 response and is free. A non-ban response such as a target 404 is returned as a successful Zyte response and is billable.

String's plan fee is paid in as usage credit and spent only on requests that return verified content. The first 20,000 standard fetches are free. Starter is $19 per month and includes $19 of usage; Growth is $99 and includes $99. Usage above that bills at the same rates, and unused credit rolls over. Growth rates are:

Fetch path Price per 1,000 verified requests
Request, standard proxy $0.16
Browser, standard proxy $0.80
Request, premium proxy $0.90
Browser, premium proxy $3.25

The honest price comparison runs both ways. Four of the five Zyte HTTP tiers undercut String's $0.90 premium-request rate, and Zyte's Simple HTTP tier undercuts String's $0.16 standard rate. String is cheaper than Zyte's Moderate-through-Advanced browser tiers and publishes the same four path prices for every domain.

Do not divide either provider's success-billed rate by benchmark success. A blocked request costs neither provider anything. Success rate answers whether the page arrives. The rate card answers what a successful response costs. The broader 16-provider pricing comparison keeps those questions separate.

Where Zyte is the better choice

  • You already use Scrapy and want a first-party integration rather than a separate fetch client.
  • Your target domains fall in the Simple HTTP tier, where Zyte can be cheaper than String's standard path.
  • Kasada protects much of the list. Zyte passed 100% there against String's 93.3%.
  • You need structured extraction, browser actions, screenshots, or a browser path through the same API.
  • AutoTrader or Foot Locker matters more than the overall benchmark. Zyte returned both on five of five attempts, String on four.

Where String is the better choice

  • A fixed list of protected pages must return consistently through one endpoint.
  • Your targets resemble Zyte's retail, local, real-estate, travel, or ticketing shutouts.
  • Cloudflare and Akamai protect much of the list.
  • You want published path rates instead of a vendor-assigned domain tier that can change quarterly.
  • You want Markdown output with no Base64 decoding step.

Using String and Zyte together

Keep Zyte for inexpensive HTTP-tier domains, structured extraction, or a Scrapy-native workflow, and send the pages that miss through String. The reverse can also work: use String for protected retrieval and Zyte for automatic extraction or browser actions.

Switching from Zyte to String

What carries over. A POST to api.zyte.com/v1/extract becomes a POST to String's /v1/fetch, with a bearer key in place of the Basic-auth username. browserHtml: true maps to "executeJS": true, httpResponseBody to "format": "raw" with no Base64 step, and actions to String's actions. Scrapy spiders that run through scrapy-zyte-api call String over plain HTTP instead, because String has no Scrapy plugin.

What you rebuild. Automatic extraction for products, articles, job posts, and search results, network capture, proxy mode, and Scrapy Cloud hosting with periodic jobs. String's jsonSchema covers extraction into fields you name, at a metered fee on top of the request. Scheduled spider runs stay on Scrapy Cloud or move to a job runner you already operate.

Integrations to reconnect. Zyte publishes a Python client, the scrapy-zyte-api plugin, a remote MCP server, and agent plugins for coding tools. Its docs list no n8n, Zapier, Make, LangChain, or LlamaIndex integration. String ships no language SDK, so an SDK call becomes one HTTP POST. Its hosted MCP server runs at mcp.usestring.ai, n8n calls String through the HTTP Request node, and Zapier, LangChain, and the Vercel AI SDK have setup guides in String's docs.

Test on your own failing URLs first. Run Zyte's HTTP and browser paths against the same URLs you run through String. In this run Zyte's HTTP path returned nothing on 26 of the 100 sites, and String returned 21 of those on every attempt. Compare pages returned and cost per usable page, then move only the targets that improve. Leave custom headers off for the test: String does not bill a blocked request unless that request sent custom headers. The first 20,000 String standard fetches are free with no card. If Zyte is one option among several, the Zyte alternatives comparison ranks the substitutes on the same benchmark.

FAQ

Is String better than Zyte for protected websites?

On the September 2026 Web Data Frontier Benchmark overall, yes. String returned verified content on 97.0% of 500 requests and Zyte's HTTP path on 68.0%, with 2 total shutouts against 26. Zyte beat String on Kasada, 100% against 93.3%, and is the faster of the two on sites both return. Run the public test harness against your own domains.

Is String cheaper than Zyte?

Not always. At a $100 commitment, Zyte's HTTP tiers run from $0.10 to $0.95 per 1,000 successful responses, and all but the top one are cheaper than String's $0.90 premium-request path. The cheapest tier also undercuts String's $0.16 standard rate. String is cheaper than Zyte's $6.00 and $12.00 high-tier browser rates, and its prices do not change by domain.

Does Zyte charge for blocked requests?

No. Zyte's error documentation says ban, rate-limit, and unsuccessful responses are free. A target response that is not a ban, such as a real 404 page, counts as a successful response and is billable. String bills only when verified content returns.

Did the benchmark test Zyte's browser path?

No. It tested httpResponseBody, the lower-priced HTTP path. Zyte's browser path could clear JavaScript-heavy pages the HTTP path missed, but it costs 7.5 to 12.6 times more within the same tier at a $100 commitment.

Which product is faster?

String on the failure-aware benchmark score: 7.06 seconds against Zyte's 17.46. Zyte is the faster product on pages it returns: across the 55 sites both cleared on all five attempts, its median per-site time was 1.50 seconds against String's 2.20. The failure-aware score includes the cost of targets a provider fails, which is where the two separate.

When should I stay with Zyte?

Stay when you use Scrapy, your domains sit in inexpensive Zyte tiers, or you need structured extraction and browser actions through the same API. Zyte also led String on Kasada and returned two targets, AutoTrader and Foot Locker, more reliably than String.

Can I verify these results?

Yes. The benchmark repository, Zyte adapter, and September results file are public. A full run makes thousands of billable requests, so begin with a subset.

Best Web Scraping APIs in 2026: 16 Tools ComparedUpdated October 28, 2026Web Scraping API Pricing in 2026: 16 Providers ComparedUpdated October 28, 2026Best ScraperAPI Alternatives in 2026: 6 Tools ComparedUpdated October 28, 2026
Get your API key →Explore the Web Access API