String vs Decodo (2026): 100 protected sites
Which is better, String or Decodo?
String won the measured fetch comparison. On the September 16, 2026 Web Data Frontier Benchmark, String returned verified content on 97.0% of 500 requests and Decodo 50.6%, down 20.1 points from its August result. Decodo's API returned HTTP 429 on every attempt for the run's last 29 targets, 145 attempts in all, and the harness scored them as failures. String's failure-aware latency score was 7.06 seconds against Decodo's 25.41. Decodo ran in the configuration it recommends for difficult pages: universal target, premium proxies, and JavaScript rendering. Pick String for measured coverage and speed. Pick Decodo when its $1.10 per 1,000 premium-plus-JS rate and broader scraping platform matter more.
- Choose String if coverage and speed decide it. String returned 97.0% of requests and Decodo 50.6%, with latency scores of 7.06 and 25.41 seconds.
- Choose Decodo if you want 100+ target templates, raw proxy pools, or browser actions in the same account.
- Do not switch if Decodo already returns your pages and premium-plus-JavaScript price decides it. Its $99 plan works out to $1.10 per 1,000 successful requests.
TL;DR
- Success rate: String 97.0% (485/500), Decodo 50.6% (253/500), down from 70.7% in August
- Latency score: String 7.06s (first of 16), Decodo 25.41s (15th)
- Clean targets: String 93 of 100, Decodo 34
- Sites where nothing came back: String 2, Decodo 39, including the 29 targets in Decodo's HTTP 429 block
- Decodo's clean win: Foot Locker, 5/5 against String's 4/5
- Benchmark mode: universal target, premium proxy pool, JavaScript rendering, raw HTML
- Price: Decodo's $99 plan includes about 90,000 premium-plus-JS successes at $1.10 per 1,000
- Every number comes from a public harness you can run with your own keys
| String | Decodo | |
|---|---|---|
| Product type | Fetch, search, sitemap, and remote browser | Web Data API, formerly the Web Scraping API, 100+ templates, proxies, Site Unblocker, search APIs, AI Parser, MCP |
| Benchmark success rate | 97.0% (485/500) | 50.6% (253/500), premium proxies plus JS |
| Latency score | 7.06s, first of 16 | 25.41s, 15th of 16 |
| Per-target outcome | 93 clean, 5 partial, 2 blank | 34 clean, 27 partial, 39 blank |
| Anti-bot highlights | 100% Cloudflare, PerimeterX, AWS WAF and Fastly | 93.3% Kasada, 82.2% PerimeterX, 57.0% Akamai |
| Pricing basis | Plan fee paid in as usage credit; blocked requests are free, a site's 404 bills; credit rolls over | Monthly plan billed per request by proxy and rendering path; its own failures are free, a 2xx or 4xx that returns a result bills |
| Entry point | First 20,000 standard fetches free | Free plan, no card: up to 10,000 standard or about 3,300 premium-plus-JS requests |
| Agent tooling | Hosted MCP and HTTP API | MCP server, Markdown output, AI integrations, TypeScript tooling |
| Where it wins | Measured coverage and latency | Foot Locker, premium-plus-JS pricing, templates, formats, proxy breadth, ISO 27001 |
How we tested, and our conflict of interest
We built the Web Data Frontier Benchmark and sell the product that ranks first. The defense against that conflict is reproducibility. The targets and pass criteria, every provider adapter, and the raw results are public. A request passes only when its body contains an expected marker from the real page. A captcha or empty shell with HTTP 200 fails.
The Decodo adapter called POST /v2/scrape with target: "universal", proxy_pool: "premium", and headless: "html". Decodo's parameter reference says premium proxies are for stronger anti-bot measures and headless: "html" enables JavaScript rendering. Its introduction recommends that combination for protected or difficult targets.
This is the strongest general-purpose Decodo path, returning raw HTML. It did not use one of Decodo's 100+ site-specific templates, a dedicated parser, browser actions, or location targeting. A template could do better on a supported target, but no one template spans the 100-site suite.
If Decodo believes a different general configuration is fairer, the adapter is one file and a pull request changes the next run. A Firecrawl engineer used that route in benchmark pull request 6, and the next run raised Firecrawl's result by 7.7 points.
Decodo pricing and billing were checked against its live pricing page, billing docs and response-code table on October 28, 2026, and other product claims against first-party pages on August 31, 2026. Performance figures are from the September 16, 2026 run.
What Decodo is
Decodo, formerly Smartproxy, sells both raw proxy infrastructure and managed scraping products. Its Web Data API, which replaced the Web Scraping API the benchmark ran, handles proxy rotation, browser rendering, anti-bot work, retries, and parsing behind one endpoint. It can return HTML, JSON, CSV, Markdown, XHR captures, or PNG screenshots, synchronously or asynchronously.
The product has 100+ target templates for search engines, ecommerce, social platforms, and other common sources. The universal Web target accepts any public URL. Per-request controls cover standard or premium proxies, JavaScript rendering, location, device, sessions, POST bodies, Markdown, XHR capture, and successful status codes. Decodo also documents browser actions for clicks, waits, and network-resource capture.
Outside the Web Data API, Decodo sells residential, mobile, ISP, and datacenter proxies, Site Unblocker, Fast Search API, specialized scraping APIs, an AI Parser, and a free MCP server. String is narrower: one adaptive fetch endpoint, plus search, sitemap crawling, a remote browser over CDP, and MCP.
The same request in Decodo 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 https://data.decodo.com/v1/scrape \
-H "Authorization: Bearer $DECODO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.example.com/product/123", "headless": "html", "markdown": 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"}'
Decodo's Web Data API replaced the Web Scraping API the benchmark ran, and its migration guide says old and new keys do not work across the two. It returns a JSON envelope with the page in content and does not render JavaScript unless the request sends headless: "html". markdown: true converts the page. 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.
Success rate: String 97.0%, Decodo 50.6%
The benchmark sent 16 providers the same 100 URLs five times each. Most targets are protected retail, travel, news, real-estate, and social pages.
| Provider | Successful requests | Success rate | Latency score |
|---|---|---|---|
| String | 485/500 | 97.0% | 7.06s |
| Scrapfly | 431/500 | 86.2% | 19.79s |
| ScraperAPI | 420/500 | 84.0% | 12.97s |
| Firecrawl | 401/500 | 80.2% | 9.11s |
| Apify | 387/500 | 77.4% | 20.64s |
| Bright Data | 373/500 | 74.6% | 15.62s |
| Zyte | 340/500 | 68.0% | 17.46s |
| Decodo | 253/500 | 50.6% | 25.41s |
Decodo ranked 12th for success and 15th on the latency score. The score uses each target's p75 successful latency. A complete miss inherits that target's p75 from providers that did return content, or the 90-second timeout when nobody did. Fast failures do not improve it.
The 46.4-point success gap is meaningful because Decodo already had premium routing and browser rendering enabled. This is not a basic-proxy result.
Decodo wins Foot Locker
Decodo passed Foot Locker on all five attempts; String passed four. That is the only target where Decodo beat String outright.
Decodo's strongest verticals in September were fashion and luxury at 83.6% and social platforms at 80.0%. It fell hardest in real estate, to 17.1%, and returned nothing at all across tickets and events, developer and research, search engines, gaming and betting, and government. Against named anti-bot vendors its best columns were Kasada at 93.3%, tied with String, and PerimeterX at 82.2%.
The three targets Decodo won in the August run are gone. It now returns nothing on Skyscanner and Allegro, and three of five on Booking.com against String's five. There is no site in this run where Decodo returned every attempt and String returned none.
The measured coverage gap is 37 rescued targets
| Outcome across 100 sites | String | Decodo |
|---|---|---|
| Passed all 5 attempts | 93 | 34 |
| Passed 1 to 4 attempts | 5 | 27 |
| Passed none | 2 | 39 |
Decodo returned nothing on 39 sites, including Temu, Mouser, Trustpilot, Apartments.com, Realtor.com, Skyscanner, Neiman Marcus, Idealista, StubHub, Ticketmaster, SeatGeek, Kayak, Allegro, Google Search, Amazon, Vinted, Leboncoin, Rightmove, Pinterest, CoinMarketCap, TradingView, CarGurus, Delta, Kroger, AXS, Roblox, GitHub, Stack Overflow, arXiv and Bing. String passed 36 of those 39 on all five attempts. Temu and Idealista defeated both products, and String returned four of five on Allegro. All 29 targets in Decodo's HTTP 429 block are in that list of 39, so part of the gap is Decodo's API refusing requests rather than the targets blocking them.
Decodo also has 27 partial targets against String's 5. Retries improve its result on those, but they stretch completion time and leave a dataset that differs between runs.
The anti-bot columns show the coverage difference. Decodo passed 46.7% of Cloudflare requests against String's 100%, 47.4% of DataDome against String's 92.6%, and 30.0% of AWS WAF against String's 100%. Its one parity result is Kasada, where both returned 93.3%. On Akamai, the largest group at twenty sites, Decodo fell from 81.0% in August to 57.0%.
Pricing: Decodo wins on premium proxies plus JavaScript
Decodo's scraping API is now its Web Data API, and its current pricing separates four paths: standard proxies, standard plus JavaScript, premium proxies, and premium plus JavaScript. Premium proxies are the default, so a request that does not choose a pool bills at a premium rate. The benchmark used the last and most expensive path.
| Monthly plan | Standard | Standard + JS | Premium | Premium + JS | Premium + JS allowance |
|---|---|---|---|---|---|
| Free | $0.50/1k | $0.75/1k | $1.00/1k | $1.50/1k | 3,300 |
| $19 | $0.50/1k | $0.75/1k | $1.00/1k | $1.50/1k | 12,600 |
| $49 | $0.40/1k | $0.65/1k | $0.75/1k | $1.25/1k | 39,200 |
| $99 | $0.30/1k | $0.60/1k | $0.70/1k | $1.10/1k | 90,000 |
The free plan requires no card. Decodo says you pay only for successful requests and never for its own 500, 524 and 613 failures. Its response-code table also counts a 2xx or 4xx response as successful when a result comes back, so a block page with a body can bill. Paid plans include a 14-day money-back option.
String's plan fee is paid in as usage credit. Starter is $19 per month, which includes $19 of usage at $0.25 per 1,000 standard fetches or $2.40 per 1,000 premium fetches. Growth is $99 per month, which includes $99 of usage at $0.16 or $0.90. Usage above the included amount bills at the same rates, and browser paths cost more. Blocks are free, a site's 404 bills, and unused credit rolls over.
At 100,000 calls against the benchmark target mix:
| Assumption | Monthly cost | Cost per 1,000 usable pages | |
|---|---|---|---|
| Decodo $99, premium + JS | 50,600 successes fit its 90,000-request allowance, with room for billed 2xx and 4xx failures | $99.00 | $1.96 |
| String Starter, standard fetch | 97,000 successes at $0.25/1k, above the $19 included | $24.25 | $0.25 |
| String Growth, premium fetch | 97,000 successes at $0.90/1k ($87.30), inside the $99 fee | $99.00 | $1.02 |
This is a model, not a bill. Decodo's 39 failed attempts that came back as a 2xx without the real page would add about 7,800 billed requests at this volume, and the total still fits inside the $99 plan. String chooses a path based on what a page needs, so production traffic mixes standard, premium, request, and browser rates. Decodo is cheaper than String when most String traffic needs a browser on a premium proxy. On premium fetches String is cheaper per usable page in this model, $1.02 against $1.96: the usage sits under the $99 Growth fee, which covers it, and any of it you do not use rolls over. String is cheaper still when most pages use its standard request path. Decodo's price advantage is real and should be measured alongside its 50.6% delivery rate.
Templates, formats, proxies, and MCP: Decodo wins
Decodo is a larger scraping toolbox. The Web Data API offers 100+ maintained target templates, sync and async jobs, structured parsers, browser actions, location and device controls, pagination, filtering, and multi-format responses. Raw proxy customers can choose residential, mobile, ISP, or datacenter pools instead of the managed API.
Its MCP server connects compatible agent clients to its scraping endpoints, with a hosted endpoint and an open-source repository. Markdown output keeps responses compact for LLM use. Decodo also lists n8n, LangChain, and OpenClaw integrations.
For procurement, Decodo publishes an ISO/IEC 27001:2022 certification covering its proxies and Scraping API, along with a Trust Center that exposes security, privacy, infrastructure, and data-processing materials. String's public product is more focused on retrieval than on a broad proxy and template catalog.
Which one should you pick?
- Choose String when the core requirement is measured protected-page coverage. It returned at least one usable page on 98 of 100 targets; Decodo did so on 61.
- Choose Decodo when premium-plus-JS pricing decides the purchase. Its $99 plan covers about 90,000 successful requests at $1.10 per 1,000.
- Choose String when latency across failures matters. Its score was 7.06 seconds against 25.41. On the 33 sites both products returned in full, the median per-site time was 2.90 seconds for String and 20.80 for Decodo.
- Choose Decodo for Foot Locker based on this run, where it passed five of five attempts to String's four, and test the exact URL before generalizing.
- Choose Decodo when you also need 100+ templates, structured formats, raw proxy products, browser actions, MCP, or ISO 27001 documentation.
- Test both with the open benchmark or a smaller target subset before committing spend.
Switching from Decodo to String
What carries over. A POST to data.decodo.com/v1/scrape, or to the legacy scraper-api.decodo.com/v2/scrape, becomes a POST to String's /v1/fetch with a bearer key. markdown: true maps to "format": "markdown", headless: "html" to "executeJS": true, and browser actions to String's actions. A move to Decodo's own new API also needs a new key, because the legacy token does not work there.
What you rebuild. The 100+ target templates and their parsers, async tasks and batches with callbacks, the crawl and map endpoints, and the residential, mobile, ISP, and datacenter proxy pools. String's /search endpoint and sitemap crawl cover search and URL discovery, and jsonSchema covers parsing for the fields you name.
Integrations to reconnect. Decodo publishes Python, TypeScript, and Go SDKs, a CLI, a hosted MCP server, and n8n and LangChain integrations. 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. Take the URLs that fail on Decodo today and run them through String. In this run Decodo returned nothing on 39 of the 100 sites, and String returned 36 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 you are weighing more than two tools, the ranking of 16 web scraping APIs uses the same benchmark.
FAQ
Is Decodo better than String?
String was better on the measured fetch task: 97.0% success against 50.6%, with a 7.06-second latency score against 25.41. Decodo is better on premium-plus-JS pricing and product breadth. The three target-level wins it held in the August run, Skyscanner, Allegro and Booking.com, did not survive the September run.
Is Decodo cheaper than String?
For pages that need a browser on a premium proxy, yes. Decodo's $99 plan prices premium proxies plus JavaScript at $1.10 per 1,000 and includes about 90,000 successes; String Growth is $99 a month, which includes $99 of usage, and bills that path at $3.25 per 1,000. At 100,000 calls, String's premium fetch costs $1.02 per 1,000 usable pages against Decodo's $1.96, and its standard fetch costs less.
Does Decodo charge for failed requests?
Not for its own failures. Decodo's billing docs say you pay only for successful requests, and its own 500, 524 and 613 failures are never charged. Its response-code table counts a 2xx or 4xx response as successful when a result comes back, so a block page with a body can bill. String does not bill a blocked request, but it bills a site's 404.
What Decodo configuration did the benchmark use?
The public adapter used the universal target with the premium proxy pool and headless: "html", which enables JavaScript rendering. It returned raw HTML and did not use a site-specific template or parser.
Does Decodo bypass Cloudflare?
Less often than in the August run. Decodo passed 46.7% of requests across 15 Cloudflare targets in September, down from 66.7%; String passed 100%. Decodo reached 57.0% on Akamai and 30.0% on AWS WAF.
Does Decodo have an MCP server?
Yes. Decodo documents an MCP server for compatible clients, backed by its scraping endpoints. It supports live scraping and structured outputs for agent workflows.
When should I use Decodo instead of String?
Use Decodo when you want premium-plus-JS scraping at a lower published rate, site-specific templates, multiple output formats, raw proxy options, browser actions, or ISO 27001 documentation. Use String when verified retrieval coverage and completion speed are the main job.
How can I verify the benchmark numbers?
Run the open-source benchmark with your own keys. The results JSON, target markers, and provider adapters are public. Start with your target subset because a full run makes thousands of billable calls.