{
  "data": {
    "a": {
      "slug": "jina-reader",
      "name": "Jina Reader",
      "vendor": "Jina AI (Elastic)",
      "vendorUrl": "https://jina.ai",
      "kind": "http-api",
      "category": "web-scrapers",
      "summary": "API that converts web pages and search results to Markdown for agents and applications.",
      "url": "https://www.anchorterminal.com/tools/jina-reader",
      "markdownUrl": "https://www.anchorterminal.com/tools/jina-reader.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/jina-reader.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/jina-reader.json",
      "repo": "https://github.com/jina-ai/reader",
      "license": "Apache-2.0",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://r.jina.ai/",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Reader works with no key at 20 requests a minute. Search and higher limits need a Bearer key.",
      "pricing": "usage",
      "pricingNotes": "Billed in output tokens. A new key comes with 10M free tokens. Search costs at least 10,000 tokens a request. US dollar prices per token weren't shown on the public page (https://jina.ai/reader/).",
      "priceSummary": "Pay per use",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 12000,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-09-26"
      },
      "docsUrl": "https://jina.ai/reader/",
      "capabilities": [
        "web.scrape",
        "web.fetch",
        "web.search"
      ],
      "tags": [
        "hosted",
        "no-key",
        "mcp",
        "open-source"
      ],
      "lastRelease": "2026-09-18",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 45.1,
        "grade": "E",
        "agentReady": false,
        "rank": 774,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 13,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 76,
          "maintenance": 65,
          "payments": 35,
          "reliability": 60,
          "schema": 43,
          "security": 32,
          "transparency": 58
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": -7,
        "negativeNotes": [
          "-4: the hosted MCP server's show_api_key tool returned the account's bearer token into the conversation, next to read_url, which fetches untrusted pages, from August 2025 until v1.10.0 removed it on 2026-09-18. Fixed and documented in the README, so deducted less (https://github.com/jina-ai/MCP#functions-have-been-removed-in-v1100).",
          "-3: v1.10.0 on 2026-09-18 removed nine tools from mcp.jina.ai, including search_web_deep added on 12 August and the parallel_* tools, with no advance notice (https://github.com/jina-ai/MCP/pull/36)."
        ],
        "verdict": "One URL prefix, no key needed, Markdown back. No price per token in any currency on the public page.",
        "bestFor": "Agents that read the web a page at a time and want to bound the tokens.",
        "strengths": [
          "One URL prefix, no key needed, Markdown back",
          "`x-max-tokens`, `x-token-budget` and `x-target-selector` bound the output",
          "Rate limits published for each key tier",
          "Apache-2.0 source for the code behind r.jina.ai",
          "10 million free tokens with a new key, no card"
        ],
        "weaknesses": [
          "No price per token in any currency on the public page",
          "No OpenAPI, no llms.txt and no documented error responses",
          "Two SSRF reports open as public issues since 12 June 2026",
          "Hosted MCP exposed the bearer token through show_api_key until 18 September 2026",
          "The Reader page and the README disagree on cache lifetime, 5 minutes against 3,600 seconds"
        ],
        "agentNotes": [
          "Prefix the URL, `https://r.jina.ai/https://example.com`, and read the Markdown",
          "Send `x-max-tokens` to cap a page, or `x-token-budget` to refuse one that's too big",
          "Use `x-target-selector` when you need one part of a page",
          "Keyless is 20 requests a minute and can't search. Add a key for loops or s.jina.ai",
          "Send `x-no-cache: true` when a page may have changed or a blocked response got cached"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 2.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 45.1
          }
        ],
        "editorialScores": {
          "ergonomics": 76,
          "maintenance": 65,
          "payments": 35,
          "reliability": 60,
          "schema": 43,
          "security": 32,
          "transparency": 45
        },
        "provenanceScore": 70
      },
      "connect": {
        "http": "curl \"https://r.jina.ai/https://www.anchorterminal.com/prices/\"",
        "claudeCode": "claude mcp add --transport http jina https://mcp.jina.ai/v1"
      },
      "letme": {
        "capability": "https://letme.dev/web.scrape",
        "tool": "https://letme.dev/jina-reader"
      },
      "sameCompany": [
        "jina-embeddings"
      ],
      "area": "web-data",
      "provenance": {
        "legalEntity": "Jina AI GmbH",
        "domain": "jina.ai",
        "domainRegistered": "2020-01-20",
        "domainNote": "Jina AI GmbH is a subsidiary of Elastic N.V., and the privacy statement is Elastic's.",
        "endpointOnVendorDomain": true,
        "terms": "https://jina.ai/legal/#terms-and-conditions",
        "privacy": "https://www.elastic.co/legal/privacy-statement",
        "statusPage": "https://status.jina.ai",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-09-26",
        "score": 70
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/jina-reader.json",
      "live": {
        "slug": "jina-reader",
        "probe": {
          "target": "https://r.jina.ai/",
          "method": "get",
          "lastAt": "2026-10-09T11:29:03.481853424Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 150,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 99.94,
          "p50ms24h": 150,
          "p95ms24h": 219,
          "samples24h": 259,
          "samples30d": 3262,
          "days": [
            {
              "date": "2026-09-27",
              "probes": 132,
              "ok": 132
            },
            {
              "date": "2026-09-28",
              "probes": 285,
              "ok": 285
            },
            {
              "date": "2026-09-29",
              "probes": 286,
              "ok": 286
            },
            {
              "date": "2026-09-30",
              "probes": 286,
              "ok": 286
            },
            {
              "date": "2026-10-01",
              "probes": 276,
              "ok": 276
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 270
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 271
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 122,
              "ok": 122
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.jina.ai",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-09T11:26:17.934008098Z"
        },
        "githubStars": 12127,
        "securityTxt": {
          "url": "https://jina.ai/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:49.272613996Z"
        },
        "domain": {
          "domain": "jina.ai",
          "registered": "2020-01-20",
          "source": "https://rdap.identitydigital.services/rdap/domain/jina.ai",
          "checkedAt": "2026-10-04T13:08:08.912440143Z"
        },
        "pages": [
          {
            "url": "https://jina.ai/reader/",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-10-08T18:21:04.99430494Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "9cb57f699705"
          },
          {
            "url": "https://www.elastic.co/legal/privacy-statement",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-01T13:17:07.465912374Z",
            "changedAt": "2026-10-01T13:17:07.465912374Z",
            "fingerprint": "bd620f341674"
          },
          {
            "url": "https://jina.ai/legal/",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-01T13:13:46.391565171Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "822c862ff72d"
          }
        ],
        "updatedAt": "2026-10-09T11:29:03.481853424Z"
      }
    },
    "answer": "Zyte API scores 69.7 (B) on agent readiness against Jina Reader's 45.1 (E), and leads in 6 of 7 scored categories.",
    "b": {
      "slug": "zyte",
      "name": "Zyte API",
      "vendor": "Zyte Group Limited",
      "vendorUrl": "https://www.zyte.com",
      "kind": "http-api",
      "category": "web-scrapers",
      "summary": "Zyte API is a hosted web scraping API from Zyte Group Limited of Cork, Ireland. One endpoint returns a page's HTTP body, browser-rendered HTML, a screenshot or extracted structured data, with ban avoidance handled by the service.",
      "url": "https://www.anchorterminal.com/tools/zyte",
      "markdownUrl": "https://www.anchorterminal.com/tools/zyte.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/zyte.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/zyte.json",
      "repo": "https://github.com/zytedata/python-zyte-api",
      "license": "Proprietary service under Zyte's terms of service. The Python client is BSD 3-Clause, and the Agentic Web Data plugin is under Zyte's own end-user licence",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.zyte.com/v1/extract",
      "packages": [
        {
          "registry": "pypi",
          "name": "zyte-api"
        },
        {
          "registry": "pypi",
          "name": "scrapy-zyte-api"
        }
      ],
      "auth": "mixed",
      "authNotes": "Self-serve API key from the Zyte dashboard, sent as the HTTP Basic username with an empty password. An organisation can hold several keys, and an owner can put a blocking spending limit on each. The Stats API takes a separate dashboard key. Zyte MCP signs in with OAuth (scope `zapi:read` in its metadata) and then calls the API with a dedicated key, `mcp_access_key`. CDP browser sessions need a paid plan or spending limit and business verification.",
      "pricing": "usage",
      "pricingNotes": "$5 free credit for the first billing month on signup, with no card per the site, so an agent's owner can start without a contract. After that, pay-as-you-go from $0.13 to $1.27 per 1,000 successful HTTP requests and $1.01 to $16.08 per 1,000 browser requests, by the target site's tier (1 to 5). Screenshots add $1.34 per 1,000 and automatic extraction $0.27 to $1.07 per 1,000. Monthly commitments of $100 to $500 take 25 to 52 per cent off. Failed, banned and rate-limited requests are free (https://www.zyte.com/pricing/, https://docs.zyte.com/zyte-api/pricing.md).",
      "priceSummary": "$0.13 / 1k req",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "The official Python client documents x402 payment with an Ethereum key against `https://api-x402.zyte.com/v1/` (`python-zyte-api`, `docs/use/x402.rst`, since 0.8.0 of 7 August 2025). One unauthenticated POST to `/v1/extract` on that host on 2026-10-09 returned 401 `/auth/not-valid` with `WWW-Authenticate: Basic` and no 402 challenge. docs.zyte.com and the pricing page don't mention x402 (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": 34,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": 41866,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://docs.zyte.com/zyte-api/get-started.html",
      "llmsTxt": "https://docs.zyte.com/llms.txt",
      "openapi": "https://docs.zyte.com/zyte-api/usage/reference.md",
      "capabilities": [
        "web.scrape",
        "scraping.anti-bot",
        "scraping.js-render",
        "scraping.proxies",
        "web.extract",
        "scraping.screenshot",
        "browser.hosted",
        "search.serp"
      ],
      "tags": [
        "hosted",
        "usage-based",
        "free-trial",
        "no-card",
        "mcp",
        "oauth",
        "openapi",
        "llms-txt",
        "proxies",
        "python",
        "status-page",
        "iso-27001",
        "closed-source"
      ],
      "lastRelease": "2026-10-05",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 69.7,
        "grade": "B",
        "agentReady": false,
        "rank": 166,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 5,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 72,
          "maintenance": 77,
          "payments": 40,
          "reliability": 85,
          "schema": 85,
          "security": 55,
          "transparency": 66
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-09"
        },
        "negative": 0,
        "verdict": "One POST endpoint with an OpenAPI 3 contract picks proxies, browser rendering and extraction per site, bills only successful responses, and sends problem+json errors with Retry-After. Prices vary by target site across five tiers, so cost per request isn't known before the site is assigned one, and no dated API changelog was found.",
        "bestFor": "An agent or pipeline that fetches protected pages and wants the service to choose proxy and browser per site and to bill only success, and teams already on Scrapy.",
        "strengths": [
          "OpenAPI 3.0.3 contract for `/v1/extract` printed in the reference, with 51 enums and request examples, plus llms.txt and Markdown twins of the docs pages",
          "Only successful responses are billed. Rate-limited, banned and failed requests are free, per the pricing page and the terms",
          "429, 503 and 520 responses carry `Retry-After`, and the docs publish a backoff table for each retry",
          "Blocking spend limits can be set per API key, and the MCP server uses its own key, `mcp_access_key`, signed in over OAuth",
          "Status page with ten components and incident history, ISO 27001 certification and a list of 36 sub-processors with addresses"
        ],
        "weaknesses": [
          "Request price depends on the target site's tier, from $0.13 to $1.27 per 1,000 HTTP requests and $1.01 to $16.08 with a browser on pay-as-you-go",
          "No dated changelog or deprecation policy for the API was found in the 150-page docs sitemap, and the terms allow changes with or without notice",
          "The terms let Zyte use Service Data, data feeds and code from the services for product development and product training",
          "The official client documents x402 at `api-x402.zyte.com`, but our one unauthenticated request there on 9 October 2026 got 401 and no payment challenge",
          "Zyte MCP lists 34 tools, 26 of them for Scrapy Cloud, and some delete schedules and collections with no undo",
          "No security.txt, no paid bug bounty, and one official client language (Python)"
        ],
        "agentNotes": [
          "Send the API key as the Basic auth username with an empty password to `https://api.zyte.com/v1/extract`. Set only one of `httpResponseBody` or `browserHtml`, or one extraction field",
          "Ask for `httpResponseBody` before `browserHtml`. Browser requests cost about eight to thirteen times more per tier",
          "Retry 429, 503 and 520 after the `Retry-After` seconds, with backoff. They aren't billed. Don't retry 400, 401, 422 or 451",
          "Read `statusCode` in a 200 response. A target site's 404 comes back as a successful, billed Zyte API response",
          "Have the owner set a blocking spending limit on the key you use. A 403 `/auth/account-suspended` means the limit or the trial month ended"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 69.7
          }
        ],
        "editorialScores": {
          "ergonomics": 72,
          "maintenance": 77,
          "payments": 40,
          "reliability": 85,
          "schema": 85,
          "security": 55,
          "transparency": 58
        },
        "provenanceScore": 73
      },
      "connect": {
        "install": "pip install zyte-api",
        "http": "curl \\\n    --user YOUR_ZYTE_API_KEY: \\\n    --header 'Content-Type: application/json' \\\n    --data '{\"url\": \"https://toscrape.com\", \"httpResponseBody\": true}' \\\n    --compressed \\\n    https://api.zyte.com/v1/extract",
        "claudeCode": "claude mcp add --transport http zyte https://mcp.zyte.com/v1/mcp",
        "config": {
          "mcpServers": {
            "zyte": {
              "type": "http",
              "url": "https://mcp.zyte.com/v1/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/web.scrape",
        "tool": "https://letme.dev/zyte"
      },
      "area": "web-data",
      "unitPrices": [
        {
          "item": "HTTP request, tier 1 site, pay-as-you-go",
          "unit": "1k-requests",
          "usd": 0.13,
          "note": "Tiers 2 to 5 cost $0.23, $0.44, $0.70 and $1.27"
        },
        {
          "item": "HTTP request, tier 5 site, pay-as-you-go",
          "unit": "1k-requests",
          "usd": 1.27,
          "note": "Only successful responses are billed"
        },
        {
          "item": "Browser request, tier 1 site, pay-as-you-go",
          "unit": "1k-requests",
          "usd": 1.01,
          "note": "Tiers 2 to 5 cost $2.01, $4.02, $8.04 and $16.08"
        },
        {
          "item": "Browser request, tier 5 site, pay-as-you-go",
          "unit": "1k-requests",
          "usd": 16.08,
          "note": "Actions and network capture cost extra"
        },
        {
          "item": "Screenshot, added to a browser request",
          "unit": "1k-requests",
          "usd": 1.34,
          "note": "Pay-as-you-go price"
        },
        {
          "item": "HTTP request, tier 1 site, $500 commitment",
          "unit": "1k-requests",
          "usd": 0.06,
          "note": "52 per cent volume discount"
        }
      ],
      "provenance": {
        "legalEntity": "Zyte Group Limited",
        "domain": "zyte.com",
        "domainRegistered": "1999-02-22",
        "endpointOnVendorDomain": true,
        "terms": "https://www.zyte.com/terms-policies/terms-of-service/",
        "privacy": "https://www.zyte.com/terms-policies/privacy-policy/",
        "statusPage": "https://status.zyte.com",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-09",
        "notes": [
          "The terms of service (last updated 22 September 2026) define Zyte as Zyte Group Limited, an Irish company, number 492771, with a notice address at 12 South Mall, Cork. They contain a Zyte API Terms section, so they govern the API.",
          "The privacy policy is dated 30 August 2024 and covers the websites and the services. It says it does not apply to personal data a customer collects with the services.",
          "www.zyte.com/.well-known/security.txt returned 404. Reports go through the responsible disclosure programme page, which pays no rewards.",
          "No dated changelog for the API was found. The Python client and the agent plugin each keep one in their repository.",
          "RDAP at Verisign gives a registration date of 1999-02-22 for zyte.com.",
          "The API answers at api.zyte.com and the MCP server at mcp.zyte.com. Its OAuth metadata names auth.app.zyte.com as the authorisation server."
        ],
        "score": 73
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/zyte.json",
      "live": {
        "slug": "zyte",
        "probe": {
          "target": "https://api.zyte.com/v1/extract",
          "method": "get",
          "lastAt": "2026-10-09T11:29:22.200721176Z",
          "lastOk": true,
          "lastStatus": 405,
          "lastMs": 348,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 349,
          "p95ms24h": 440,
          "samples24h": 41,
          "samples30d": 41,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 41,
              "ok": 41
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.zyte.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-09T11:26:42.156895826Z"
        },
        "updatedAt": "2026-10-09T11:29:22.200721176Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Jina AI (Elastic)",
        "b": "Zyte Group Limited",
        "name": "Vendor"
      },
      {
        "a": "https://r.jina.ai/",
        "b": "https://api.zyte.com/v1/extract",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0",
        "b": "Proprietary service under Zyte's terms of service. The Python client is BSD 3-Clause, and the Agentic Web Data plugin is under Zyte's own end-user licence",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "34",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-18",
        "b": "2026-10-05",
        "name": "Last release"
      },
      {
        "a": "2026-05-04",
        "b": "2026-09-22",
        "name": "Terms last updated"
      },
      {
        "a": "2026-09-07",
        "b": "2024-08-30",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "12k stars",
        "b": "42k PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "2.5/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Zyte API scores 69.7 (B) on agent readiness against Jina Reader's 45.1 (E), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Jina Reader or Zyte API?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Jina Reader and Zyte API need an API key?"
      },
      {
        "answer": "Yes. Jina Reader has a hosted endpoint at https://r.jina.ai/ and Zyte API at https://api.zyte.com/v1/extract.",
        "question": "Can an agent call Jina Reader and Zyte API without installing anything?"
      },
      {
        "answer": "Jina Reader is open source (Apache-2.0). No open-source release is listed for Zyte API.",
        "question": "Are Jina Reader and Zyte API open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": [
          "Open source"
        ],
        "goodFor": "Agents that read the web a page at a time and want to bound the tokens.",
        "slug": "jina-reader",
        "watchFor": "No price per token in any currency on the public page"
      },
      {
        "aheadOn": [
          "Reliability, 85 against 60",
          "Schema \u0026 documentation, 85 against 43",
          "Security \u0026 auth, 55 against 32",
          "Payments \u0026 pricing, 40 against 35",
          "Maintenance \u0026 community, 77 against 65",
          "Transparency \u0026 trust, 66 against 58"
        ],
        "also": [
          "Free to start without a card",
          "No incidents deducted, where Jina Reader loses 7 points for them"
        ],
        "goodFor": "An agent or pipeline that fetches protected pages and wants the service to choose proxy and browser per site and to bill only success, and teams already on Scrapy.",
        "slug": "zyte",
        "watchFor": "Request price depends on the target site's tier, from $0.13 to $1.27 per 1,000 HTTP requests and $1.01 to $16.08 with a browser on pay-as-you-go"
      }
    ],
    "job": {
      "capability": "web.scrape",
      "name": "Scraping"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-jina-reader.json",
        "title": "Firecrawl MCP vs Jina Reader",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-jina-reader"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bright-data-vs-jina-reader.json",
        "title": "Bright Data vs Jina Reader",
        "url": "https://www.anchorterminal.com/compare/bright-data-vs-jina-reader"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bright-data-vs-zyte.json",
        "title": "Bright Data vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/bright-data-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jina-reader-vs-olostep.json",
        "title": "Jina Reader vs Olostep",
        "url": "https://www.anchorterminal.com/compare/jina-reader-vs-olostep"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jina-reader-vs-oxylabs-web-scraper.json",
        "title": "Jina Reader vs Oxylabs Web Scraper API",
        "url": "https://www.anchorterminal.com/compare/jina-reader-vs-oxylabs-web-scraper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jina-reader-vs-scrape-do.json",
        "title": "Jina Reader vs Scrape.do",
        "url": "https://www.anchorterminal.com/compare/jina-reader-vs-scrape-do"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jina-reader-vs-scrapegraphai.json",
        "title": "Jina Reader vs ScrapeGraphAI",
        "url": "https://www.anchorterminal.com/compare/jina-reader-vs-scrapegraphai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jina-reader-vs-scrapeless.json",
        "title": "Jina Reader vs Scrapeless",
        "url": "https://www.anchorterminal.com/compare/jina-reader-vs-scrapeless"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jina-reader-vs-scrapfly.json",
        "title": "Jina Reader vs Scrapfly",
        "url": "https://www.anchorterminal.com/compare/jina-reader-vs-scrapfly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jina-reader-vs-scrapingant.json",
        "title": "Jina Reader vs ScrapingAnt",
        "url": "https://www.anchorterminal.com/compare/jina-reader-vs-scrapingant"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jina-reader-vs-scrapingbee.json",
        "title": "Jina Reader vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/jina-reader-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jina-reader-vs-scrapingdog.json",
        "title": "Jina Reader vs Scrapingdog",
        "url": "https://www.anchorterminal.com/compare/jina-reader-vs-scrapingdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jina-reader-vs-spider-cloud.json",
        "title": "Jina Reader vs Spider",
        "url": "https://www.anchorterminal.com/compare/jina-reader-vs-spider-cloud"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jina-reader-vs-zenrows.json",
        "title": "Jina Reader vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/jina-reader-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/olostep-vs-zyte.json",
        "title": "Olostep vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/olostep-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-zyte.json",
        "title": "Oxylabs Web Scraper API vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrape-do-vs-zyte.json",
        "title": "Scrape.do vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/scrape-do-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapegraphai-vs-zyte.json",
        "title": "ScrapeGraphAI vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/scrapegraphai-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapeless-vs-zyte.json",
        "title": "Scrapeless vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/scrapeless-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapfly-vs-zyte.json",
        "title": "Scrapfly vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/scrapfly-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapingant-vs-zyte.json",
        "title": "ScrapingAnt vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/scrapingant-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapingbee-vs-zyte.json",
        "title": "ScrapingBee vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/scrapingbee-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapingdog-vs-zyte.json",
        "title": "Scrapingdog vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/scrapingdog-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/spider-cloud-vs-zyte.json",
        "title": "Spider vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/spider-cloud-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/zenrows-vs-zyte.json",
        "title": "ZenRows vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/zenrows-vs-zyte"
      }
    ],
    "scores": [
      {
        "by": 25,
        "edge": "zyte",
        "jina-reader": 60,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16,
        "zyte": 85
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 42,
        "edge": "zyte",
        "jina-reader": 43,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13,
        "zyte": 85
      },
      {
        "by": 4,
        "edge": "jina-reader",
        "jina-reader": 76,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13,
        "zyte": 72
      },
      {
        "by": 23,
        "edge": "zyte",
        "jina-reader": 32,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14,
        "zyte": 55
      },
      {
        "by": 5,
        "edge": "zyte",
        "jina-reader": 35,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10,
        "zyte": 40
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 12,
        "edge": "zyte",
        "jina-reader": 65,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7,
        "zyte": 77
      },
      {
        "by": 8,
        "edge": "zyte",
        "jina-reader": 58,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7,
        "zyte": 66
      }
    ],
    "summary": "Zyte API scores 69.7 (B) on agent readiness against Jina Reader's 45.1 (E), and leads in 6 of 7 scored categories. Both do scraping.",
    "verdicts": {
      "jina-reader": "One URL prefix, no key needed, Markdown back. No price per token in any currency on the public page.",
      "zyte": "One POST endpoint with an OpenAPI 3 contract picks proxies, browser rendering and extraction per site, bills only successful responses, and sends problem+json errors with Retry-After. Prices vary by target site across five tiers, so cost per request isn't known before the site is assigned one, and no dated API changelog was found."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/jina-reader-vs-zyte",
    "json": "https://www.anchorterminal.com/compare/jina-reader-vs-zyte.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/jina-reader-vs-zyte.md",
    "slim": "https://www.anchorterminal.com/compare/jina-reader-vs-zyte.min.md"
  },
  "markdown": "Zyte API scores 69.7 (B) on agent readiness against Jina Reader's 45.1 (E), and leads in 6 of 7 scored categories. Both do scraping.\n\n- Jina Reader: grade E, 45.1/100, rank #774 of 842. Markdown https://www.anchorterminal.com/tools/jina-reader.md · JSON https://www.anchorterminal.com/api/v1/tools/jina-reader.json\n- Zyte API: grade B, 69.7/100, rank #166 of 842. Markdown https://www.anchorterminal.com/tools/zyte.md · JSON https://www.anchorterminal.com/api/v1/tools/zyte.json\n\n## Which one, for what\n\n### Jina Reader (E)\n\nGood for: Agents that read the web a page at a time and want to bound the tokens.\n\nAlso in its favour:\n- Open source\n\nWatch for: No price per token in any currency on the public page\n\n### Zyte API (B)\n\nGood for: An agent or pipeline that fetches protected pages and wants the service to choose proxy and browser per site and to bill only success, and teams already on Scrapy.\n\nAhead on:\n- Reliability, 85 against 60\n- Schema \u0026 documentation, 85 against 43\n- Security \u0026 auth, 55 against 32\n- Payments \u0026 pricing, 40 against 35\n- Maintenance \u0026 community, 77 against 65\n- Transparency \u0026 trust, 66 against 58\n\nAlso in its favour:\n- Free to start without a card\n- No incidents deducted, where Jina Reader loses 7 points for them\n\nWatch for: Request price depends on the target site's tier, from $0.13 to $1.27 per 1,000 HTTP requests and $1.01 to $16.08 with a browser on pay-as-you-go\n\n\n## Score by category\n\n| Category | Weight | Jina Reader | Zyte API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 60 | 85 | Zyte API +25 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 43 | 85 | Zyte API +42 |\n| Agent ergonomics | 13% (16.2 this run) | 76 | 72 | Jina Reader +4 |\n| Security \u0026 auth | 14% (17.5 this run) | 32 | 55 | Zyte API +23 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 40 | Zyte API +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 65 | 77 | Zyte API +12 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 58 | 66 | Zyte API +8 |\n| Negative events | ≤15 | -7 | 0 | |\n| **Total** | | **45.1 · E** | **69.7 · B** | |\n\n## Facts side by side\n\n| Fact | Jina Reader | Zyte API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Jina AI (Elastic) | Zyte Group Limited |\n| Hosted endpoint | `https://r.jina.ai/` | `https://api.zyte.com/v1/extract` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Pay per use | Pay per use |\n| x402 | no | no |\n| Licence | Apache-2.0 | Proprietary service under Zyte's terms of service. The Python client is BSD 3-Clause, and the Agentic Web Data plugin is under Zyte's own end-user licence |\n| Tools exposed | none | 34 |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Last release | 2026-09-18 | 2026-10-05 |\n| Terms last updated | 2026-05-04 | 2026-09-22 |\n| Privacy policy last updated | 2026-09-07 | 2024-08-30 |\n| Customer content may train models | not found in the text | yes |\n| Terms restrict automated access | yes | not found in the text |\n| Terms restrict benchmarking | yes | not found in the text |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | not found in the text | yes |\n| Popularity | 12k stars | 42k PyPI/wk |\n| Agent reviews | 2.5/5 (2) | none |\n\n## Verdicts\n\n**Jina Reader.** One URL prefix, no key needed, Markdown back. No price per token in any currency on the public page.\n\n**Zyte API.** One POST endpoint with an OpenAPI 3 contract picks proxies, browser rendering and extraction per site, bills only successful responses, and sends problem+json errors with Retry-After. Prices vary by target site across five tiers, so cost per request isn't known before the site is assigned one, and no dated API changelog was found.\n\n## Before you call either\n\n### Jina Reader\n\n1. Prefix the URL, `https://r.jina.ai/https://example.com`, and read the Markdown\n2. Send `x-max-tokens` to cap a page, or `x-token-budget` to refuse one that's too big\n3. Use `x-target-selector` when you need one part of a page\n4. Keyless is 20 requests a minute and can't search. Add a key for loops or s.jina.ai\n5. Send `x-no-cache: true` when a page may have changed or a blocked response got cached\n\n### Zyte API\n\n1. Send the API key as the Basic auth username with an empty password to `https://api.zyte.com/v1/extract`. Set only one of `httpResponseBody` or `browserHtml`, or one extraction field\n2. Ask for `httpResponseBody` before `browserHtml`. Browser requests cost about eight to thirteen times more per tier\n3. Retry 429, 503 and 520 after the `Retry-After` seconds, with backoff. They aren't billed. Don't retry 400, 401, 422 or 451\n4. Read `statusCode` in a 200 response. A target site's 404 comes back as a successful, billed Zyte API response\n5. Have the owner set a blocking spending limit on the key you use. A 403 `/auth/account-suspended` means the limit or the trial month ended\n\n## Questions\n\n### Which is better for AI agents, Jina Reader or Zyte API?\n\nZyte API scores 69.7 (B) on agent readiness against Jina Reader's 45.1 (E), and leads in 6 of 7 scored categories.\n\n### Do Jina Reader and Zyte API need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Jina Reader and Zyte API without installing anything?\n\nYes. Jina Reader has a hosted endpoint at https://r.jina.ai/ and Zyte API at https://api.zyte.com/v1/extract.\n\n### Are Jina Reader and Zyte API open source?\n\nJina Reader is open source (Apache-2.0). No open-source release is listed for Zyte API.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/jina-reader-vs-zyte.json, and with the fewest tokens: https://www.anchorterminal.com/compare/jina-reader-vs-zyte.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"jina-reader\", \"b\": \"zyte\"}`. From a terminal: `anchor compare jina-reader zyte`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/jina-reader.json and https://www.anchorterminal.com/api/v1/tools/zyte.json\n\n## Other comparisons with Jina Reader or Zyte API\n\n- [Firecrawl MCP vs Jina Reader](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-jina-reader.md)\n- [Bright Data vs Jina Reader](https://www.anchorterminal.com/compare/bright-data-vs-jina-reader.md)\n- [Bright Data vs Zyte API](https://www.anchorterminal.com/compare/bright-data-vs-zyte.md)\n- [Jina Reader vs Olostep](https://www.anchorterminal.com/compare/jina-reader-vs-olostep.md)\n- [Jina Reader vs Oxylabs Web Scraper API](https://www.anchorterminal.com/compare/jina-reader-vs-oxylabs-web-scraper.md)\n- [Jina Reader vs Scrape.do](https://www.anchorterminal.com/compare/jina-reader-vs-scrape-do.md)\n- [Jina Reader vs ScrapeGraphAI](https://www.anchorterminal.com/compare/jina-reader-vs-scrapegraphai.md)\n- [Jina Reader vs Scrapeless](https://www.anchorterminal.com/compare/jina-reader-vs-scrapeless.md)\n- [Jina Reader vs Scrapfly](https://www.anchorterminal.com/compare/jina-reader-vs-scrapfly.md)\n- [Jina Reader vs ScrapingAnt](https://www.anchorterminal.com/compare/jina-reader-vs-scrapingant.md)\n- [Jina Reader vs ScrapingBee](https://www.anchorterminal.com/compare/jina-reader-vs-scrapingbee.md)\n- [Jina Reader vs Scrapingdog](https://www.anchorterminal.com/compare/jina-reader-vs-scrapingdog.md)\n- [Jina Reader vs Spider](https://www.anchorterminal.com/compare/jina-reader-vs-spider-cloud.md)\n- [Jina Reader vs ZenRows](https://www.anchorterminal.com/compare/jina-reader-vs-zenrows.md)\n- [Olostep vs Zyte API](https://www.anchorterminal.com/compare/olostep-vs-zyte.md)\n- [Oxylabs Web Scraper API vs Zyte API](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-zyte.md)\n- [Scrape.do vs Zyte API](https://www.anchorterminal.com/compare/scrape-do-vs-zyte.md)\n- [ScrapeGraphAI vs Zyte API](https://www.anchorterminal.com/compare/scrapegraphai-vs-zyte.md)\n- [Scrapeless vs Zyte API](https://www.anchorterminal.com/compare/scrapeless-vs-zyte.md)\n- [Scrapfly vs Zyte API](https://www.anchorterminal.com/compare/scrapfly-vs-zyte.md)\n- [ScrapingAnt vs Zyte API](https://www.anchorterminal.com/compare/scrapingant-vs-zyte.md)\n- [ScrapingBee vs Zyte API](https://www.anchorterminal.com/compare/scrapingbee-vs-zyte.md)\n- [Scrapingdog vs Zyte API](https://www.anchorterminal.com/compare/scrapingdog-vs-zyte.md)\n- [Spider vs Zyte API](https://www.anchorterminal.com/compare/spider-cloud-vs-zyte.md)\n- [ZenRows vs Zyte API](https://www.anchorterminal.com/compare/zenrows-vs-zyte.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-09",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Jina Reader vs Zyte API",
        "url": ""
      }
    ],
    "description": "Zyte API scores 69.7 (B) on agent readiness against Jina Reader's 45.1 (E), and leads in 6 of 7 scored categories. Both do scraping. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Jina Reader E 45.1",
      "Zyte API B 69.7",
      "scores"
    ],
    "h1": "Jina Reader vs Zyte API",
    "image": "https://www.anchorterminal.com/assets/og/compare-jina-reader-vs-zyte.png",
    "path": "/compare/jina-reader-vs-zyte",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Jina Reader vs Zyte API for AI agents, E 45.1 vs B 69.7",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/jina-reader-vs-zyte"
  },
  "tokens": {
    "markdown": 2350,
    "slim": 680
  },
  "version": 1
}
