{
  "data": {
    "a": {
      "slug": "adobe-pdf-extract",
      "name": "Adobe PDF Services / PDF Extract API",
      "vendor": "Adobe",
      "vendorUrl": "https://developer.adobe.com/document-services/",
      "kind": "http-api",
      "category": "document-extraction",
      "summary": "Adobe's REST API for reading and changing PDFs.",
      "url": "https://www.anchorterminal.com/tools/adobe-pdf-extract",
      "markdownUrl": "https://www.anchorterminal.com/tools/adobe-pdf-extract.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/adobe-pdf-extract.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/adobe-pdf-extract.json",
      "repo": "https://github.com/adobe/pdfservices-python-sdk-samples",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://pdf-services.adobe.io",
      "packages": [
        {
          "registry": "pypi",
          "name": "pdfservices-sdk"
        },
        {
          "registry": "npm",
          "name": "@adobe/pdfservices-node-sdk"
        }
      ],
      "auth": "oauth",
      "authNotes": "OAuth server-to-server. POST client_id and client_secret to /token for an access token, then send it as Bearer plus the client id in `x-api-key`. JWT service accounts are deprecated.",
      "pricing": "freemium",
      "pricingNotes": "Free tier of 500 Document Transactions a month with no card. Extract and PDF to Markdown use 1 transaction per 5 pages, most other operations 1 per 50 pages, Auto-Tag 10 a page. Paid use is sold through sales on volume or enterprise terms, and no per-transaction price is published (https://developer.adobe.com/document-services/pricing/main/).",
      "priceSummary": "Freemium",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402 in docs or pricing (checked 2026-09-30).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 165,
        "npmWeekly": 81553,
        "pypiWeekly": 58026,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://developer.adobe.com/document-services/docs/overview/pdf-extract-api/",
      "openapi": "https://raw.githubusercontent.com/AdobeDocs/pdfservices-api-documentation/main/static/openapi.json",
      "capabilities": [
        "docs.parse",
        "docs.ocr",
        "docs.extract",
        "docs.tables",
        "pdf.convert",
        "pdf.merge",
        "pdf.forms",
        "pdf.generate",
        "pdf.extract"
      ],
      "tags": [
        "hosted",
        "freemium",
        "no-card",
        "free-tier",
        "enterprise",
        "closed-source",
        "openapi",
        "webhooks",
        "python",
        "typescript",
        "async-jobs"
      ],
      "lastRelease": "2026-08-10",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 55.9,
        "grade": "C",
        "agentReady": false,
        "rank": 441,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 7,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 57,
          "maintenance": 53,
          "payments": 20,
          "reliability": 50,
          "schema": 80,
          "security": 55,
          "transparency": 78
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Public OpenAPI 3.0.1 spec covering Extract, PDF to Markdown and 20 other operations. No published paid price, paid use goes through sales.",
        "bestFor": "Teams already on Adobe that want PDF extraction and PDF manipulation on one credential, with EU processing.",
        "strengths": [
          "Public OpenAPI 3.0.1 spec covering Extract, PDF to Markdown and 20 other operations",
          "Extract error codes name the cause, such as DISQUALIFIED_SCAN_PAGE_LIMIT or BAD_PDF_COMPLEX_TABLE",
          "500 free Document Transactions a month with no card",
          "Files kept 24 hours by default, deletable at once, or never stored when you pass signed URLs",
          "security.txt and a public bug bounty on Intigriti"
        ],
        "weaknesses": [
          "No published paid price, paid use goes through sales",
          "Four steps per job (token, upload, operation, poll) and no idempotency key",
          "25 requests a minute on the free tier, no Retry-After or backoff guidance",
          "Node.js SDK unchanged since November 2024 and no llms.txt",
          "Status page renders only with JavaScript"
        ],
        "agentNotes": [
          "Cache the access token and reuse it until it expires",
          "Budget 1 Document Transaction per 5 pages for Extract and PDF to Markdown, so 500 free transactions cover about 2,500 pages",
          "Pass `notifiers` with a callback URL instead of polling the job status",
          "Use `pdf-services-ew1.adobe.io` when documents must stay in the EU",
          "Check `/operation/pdfproperties` first, since copy-protected PDFs fail Extract with DISQUALIFIED_PERMISSIONS"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 55.9
          }
        ],
        "editorialScores": {
          "ergonomics": 57,
          "maintenance": 53,
          "payments": 20,
          "reliability": 50,
          "schema": 80,
          "security": 55,
          "transparency": 60
        },
        "provenanceScore": 96
      },
      "connect": {
        "install": "pip install pdfservices-sdk   # or: npm i @adobe/pdfservices-node-sdk",
        "http": "curl https://pdf-services.adobe.io/token \\\n  -H \"content-type: application/x-www-form-urlencoded\" \\\n  --data-urlencode \"client_id=$PDF_SERVICES_CLIENT_ID\" --data-urlencode \"client_secret=$PDF_SERVICES_CLIENT_SECRET\""
      },
      "letme": {
        "capability": "https://letme.dev/docs.parse",
        "tool": "https://letme.dev/adobe-pdf-extract"
      },
      "sameCompany": [
        "adobe-firefly",
        "adobe-photoshop-api"
      ],
      "alsoIn": [
        "pdf-tools"
      ],
      "area": "web-data",
      "provenance": {
        "legalEntity": "Adobe Inc.",
        "domain": "adobe.com",
        "domainRegistered": "1986-11-17",
        "endpointOnVendorDomain": true,
        "terms": "https://www.adobe.com/legal/terms.html",
        "privacy": "https://www.adobe.com/privacy/policy.html",
        "statusPage": "https://status.adobe.com/products/512699",
        "changelog": "https://developer.adobe.com/document-services/docs/overview/releasenotes",
        "securityTxt": "valid",
        "checked": "2026-10-01",
        "notes": [
          "The API is served from pdf-services.adobe.io, Adobe's developer API domain, not adobe.com",
          "The status page is the PDF Services product page the docs link to, and it needs JavaScript to render"
        ],
        "score": 96
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/adobe-pdf-extract.json",
      "live": {
        "slug": "adobe-pdf-extract",
        "probe": {
          "target": "https://pdf-services.adobe.io",
          "method": "get",
          "lastAt": "2026-10-08T19:08:38.312367446Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 326,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 261,
          "p95ms24h": 373,
          "samples24h": 272,
          "samples30d": 2135,
          "days": [
            {
              "date": "2026-09-30",
              "probes": 35,
              "ok": 35
            },
            {
              "date": "2026-10-01",
              "probes": 276,
              "ok": 276
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "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": 272
            },
            {
              "date": "2026-10-08",
              "probes": 217,
              "ok": 217
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.adobe.com/products/512699",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T17:50:19.68632763Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "adobe/pdfservices-python-sdk-samples",
            "version": "v4.2.0",
            "released": "2025-07-11",
            "seenAt": "2026-10-08T15:56:37.430445927Z"
          },
          {
            "registry": "npm",
            "name": "@adobe/pdfservices-node-sdk",
            "version": "4.1.0",
            "seenAt": "2026-10-08T15:56:34.625898293Z"
          },
          {
            "registry": "pypi",
            "name": "pdfservices-sdk",
            "version": "4.3.0",
            "released": "2026-08-10",
            "seenAt": "2026-10-08T15:56:31.234161933Z"
          }
        ],
        "githubStars": 165,
        "npmWeekly": 77638,
        "pypiWeekly": 64365,
        "securityTxt": {
          "url": "https://adobe.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-07-30T01:00:00.000Z",
          "checkedAt": "2026-10-08T15:38:56.613662215Z"
        },
        "domain": {
          "domain": "adobe.com",
          "registered": "1986-11-17",
          "source": "https://rdap.verisign.com/com/v1/domain/adobe.com",
          "checkedAt": "2026-10-04T13:03:40.934529293Z"
        },
        "pages": [
          {
            "url": "https://developer.adobe.com/document-services/docs/overview/releasenotes",
            "kind": "deprecations",
            "status": 304,
            "checkedAt": "2026-10-08T18:17:02.71984203Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "27885eb31d8e"
          },
          {
            "url": "https://developer.adobe.com/document-services/pricing/main/",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-08T18:17:04.729379436Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "bf518d524ead"
          }
        ],
        "updatedAt": "2026-10-08T19:08:38.312367446Z"
      }
    },
    "answer": "OpenDocRouter and Adobe PDF Services / PDF Extract API score within a point of each other on agent readiness, 56.6 (C) and 55.9 (C). Adobe PDF Services / PDF Extract API leads on reliability, security \u0026 auth and transparency \u0026 trust.",
    "b": {
      "slug": "opendocrouter",
      "name": "OpenDocRouter",
      "vendor": "LlamaIndex",
      "vendorUrl": "https://opendocrouter.ai",
      "kind": "http-api",
      "category": "document-extraction",
      "summary": "OpenDocRouter is a hosted API from LlamaIndex that sends PDFs and images to a document parsing model the caller picks and returns markdown for each page. It launched on 7 October 2026 and bills prepaid credit by tokens used.",
      "url": "https://www.anchorterminal.com/tools/opendocrouter",
      "markdownUrl": "https://www.anchorterminal.com/tools/opendocrouter.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/opendocrouter.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/opendocrouter.json",
      "repo": "https://github.com/run-llama/opendocrouter-py",
      "license": "Proprietary service under the LlamaIndex Terms of Service with an OpenDocRouter addendum. The Python and TypeScript SDKs are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://www.opendocrouter.ai/v1",
      "packages": [
        {
          "registry": "pypi",
          "name": "opendocrouter"
        },
        {
          "registry": "npm",
          "name": "@llamaindex/opendocrouter"
        }
      ],
      "auth": "api-key",
      "authNotes": "Bearer API key created in the dashboard after a browser sign-in, sent as `Authorization: Bearer \u003ckey\u003e` and read by the SDKs from OPEN_DOC_ROUTER_API_KEY. The terms say keys can be revoked. No scopes, expiry or read-only keys were found in the reviewed documentation. `GET /v1/models` answers without a key. This is a separate key from a LlamaCloud key.",
      "pricing": "usage",
      "pricingNotes": "Prepaid credit with no subscription. New accounts get $5 of promotional credit, and top-ups start at $10 with a 5% fee on each purchase. Each successful page is charged for its tokens at the chosen model's price, and layout adds $0.20 per 1M tokens. Failed, cached and blank pages are free. Whether sign-up needs a card wasn't established, because the dashboard needs a sign-in. LlamaIndex's launch post of 7 October 2026 gives a $25 minimum top-up, where the site, docs and terms say $10 (checked 2026-10-08).",
      "priceSummary": "$48.82 / 1k pages",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, the OpenAPI document or the home page, and /.well-known/x402 returns 404. The 402 response is `insufficient_credits` for prepaid credit (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": 127,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://opendocrouter.ai/docs",
      "openapi": "https://www.opendocrouter.ai/v1/openapi.json",
      "capabilities": [
        "docs.parse",
        "docs.ocr",
        "docs.tables"
      ],
      "tags": [
        "hosted",
        "usage",
        "prepaid",
        "router",
        "openapi",
        "python",
        "typescript",
        "async-jobs",
        "closed-source",
        "new"
      ],
      "lastRelease": "2026-10-07",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 56.6,
        "grade": "C",
        "agentReady": false,
        "rank": 434,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 6,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 84,
          "maintenance": 65,
          "payments": 30,
          "reliability": 43,
          "schema": 85,
          "security": 40,
          "transparency": 47
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "One endpoint reaches 11 parsing models, each with a dated recipe version, a published token price and a ParseBench score, and failed pages aren't charged. The service launched on 7 October 2026, so it has no status page, incident history, SLA or changelog yet, and no key scopes were found in the reviewed documentation.",
        "bestFor": "Agents that need page-level markdown from PDFs and images and want to choose or compare models on price and published benchmark scores with one key.",
        "strengths": [
          "Public OpenAPI 3.1 document for all six operations, and the docs page is also served as Markdown at /docs.md",
          "`GET /v1/models` lists 11 models without a key, each with token prices, an average and a maximum charge per page, and ParseBench scores",
          "Failed, cached and blank pages are free, and every page comes back with its own status, token usage and charge",
          "Fifteen request error codes and twelve page error codes are documented, with Retry-After on 429 and 503 and a retry verdict for each page error",
          "Nothing from a document is stored unless `cache: true` is sent, and cached results are encrypted and deleted after 24 hours or on DELETE"
        ],
        "weaknesses": [
          "Launched on 7 October 2026. The domain was registered on 23 September 2026 and both SDKs have one release, 1.0.0",
          "No status page, SLA or service changelog was found. LlamaIndex's status page lists only LlamaParse components",
          "No scoped, expiring or read-only keys in the reviewed documentation, and no idempotency key",
          "A request holds the model's maximum charge per page, $0.784 on Claude Opus 5.5, so the $5 starting credit admits six Opus pages a request",
          "Without `cache: true` a dropped connection loses the markdown, the request is still charged and a resend is a new request"
        ],
        "agentNotes": [
          "Call `GET /v1/models` first, which needs no key, and choose a model by `avg_charge_per_page_usd` and its ParseBench scores. Send its `id` as `model`",
          "Send `cache: true` on any request you might repeat. Without it the markdown exists only in the POST response and a resend is charged as a new request",
          "Raise the SDK timeout above its 60-second default for sync parses. Pages can run for 270 seconds and the SDKs retry a timed-out request twice",
          "Check every page's `status` before using its markdown. A 200 can be `partial`, and failed pages can be resent alone with `pages`",
          "Treat 402 as final until credit is added. The hold is the model's maximum charge per page times the page count, and `GET /v1/credits` shows `available_usd`"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 56.6
          }
        ],
        "editorialScores": {
          "ergonomics": 84,
          "maintenance": 65,
          "payments": 30,
          "reliability": 43,
          "schema": 85,
          "security": 40,
          "transparency": 45
        },
        "provenanceScore": 49
      },
      "connect": {
        "install": "pip install opendocrouter   # or: npm install @llamaindex/opendocrouter",
        "http": "curl https://www.opendocrouter.ai/v1/parse \\\n  -H \"Authorization: Bearer $OPEN_DOC_ROUTER_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"model\": \"google/gemini-3.8-flash-low\", \"document\": {\"url\": \"https://arxiv.org/pdf/1706.03762\"}}'"
      },
      "letme": {
        "capability": "https://letme.dev/docs.parse",
        "tool": "https://letme.dev/opendocrouter"
      },
      "area": "web-data",
      "unitPrices": [
        {
          "item": "Parse with Claude Opus 5.5",
          "unit": "1k-pages",
          "usd": 48.82,
          "note": "vendor's average on ParseBench documents, charged by tokens, at most $0.784 a page"
        },
        {
          "item": "Parse with Gemini 3 Flash",
          "unit": "1k-pages",
          "usd": 19.67,
          "note": "vendor's average on ParseBench documents, charged by tokens, at most $0.199 a page"
        },
        {
          "item": "Parse with GPT-5.6 Terra",
          "unit": "1k-pages",
          "usd": 19.89,
          "note": "vendor's average on ParseBench documents, charged by tokens, at most $0.436 a page"
        },
        {
          "item": "Parse with Gemini 3.8 Flash",
          "unit": "1k-pages",
          "usd": 5.91,
          "note": "vendor's average on ParseBench documents, charged by tokens, at most $0.126 a page"
        },
        {
          "item": "Parse with Infinity-Parser2-Flash",
          "unit": "1k-pages",
          "usd": 4.34,
          "note": "vendor's average on ParseBench documents, charged by tokens, at most $0.050 a page"
        },
        {
          "item": "Parse with dots.mocr",
          "unit": "1k-pages",
          "usd": 3.97,
          "note": "vendor's average on ParseBench documents, charged by tokens, at most $0.030 a page"
        },
        {
          "item": "Parse with TeleOCR",
          "unit": "1k-pages",
          "usd": 2.7,
          "note": "vendor's average on ParseBench documents, charged by tokens, at most $0.045 a page"
        },
        {
          "item": "Parse with PaddleOCR-VL-1.6",
          "unit": "1k-pages",
          "usd": 2.11,
          "note": "vendor's average on ParseBench documents, charged by tokens, at most $0.044 a page"
        },
        {
          "item": "Parse with Claude Haiku 5.5",
          "unit": "1k-pages",
          "usd": 1.22,
          "note": "vendor's average on ParseBench documents, charged by tokens, at most $0.020 a page"
        },
        {
          "item": "Parse with MinerU2.5-Pro",
          "unit": "1k-pages",
          "usd": 0.86,
          "note": "vendor's average on ParseBench documents, charged by tokens, at most $0.007 a page"
        },
        {
          "item": "Parse with GPT-6 Luna",
          "unit": "1k-pages",
          "usd": 0.8,
          "note": "vendor's average on ParseBench documents, charged by tokens, at most $0.019 a page"
        },
        {
          "item": "Layout add-on",
          "unit": "1m-tokens",
          "usd": 0.2,
          "note": "added to each page whose layout comes back"
        },
        {
          "item": "Top-up fee",
          "unit": "pct",
          "usd": 5,
          "note": "on each credit purchase, minimum purchase $10, non-refundable"
        }
      ],
      "provenance": {
        "legalEntity": "LlamaIndex, Inc.",
        "domain": "opendocrouter.ai",
        "domainRegistered": "2026-09-23",
        "endpointOnVendorDomain": true,
        "terms": "https://www.opendocrouter.ai/terms",
        "privacy": "https://www.opendocrouter.ai/privacy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The terms page carries an OpenDocRouter addendum last modified 2026-10-07 above the LlamaIndex Terms of Service of 2024-06-07, which name LlamaIndex, Inc. The SDK licence files read Copyright 2026 LlamaIndex, Inc.",
          "The privacy page is the LlamaIndex Privacy Notice last updated 2024-03-30. It covers LlamaIndex as a controller and doesn't mention OpenDocRouter.",
          "RDAP for opendocrouter.ai gives a registration date of 2026-09-23 with the registrant behind a privacy service. The link to LlamaIndex rests on the site footer, the terms and the announcement on llamaindex.ai.",
          "www.opendocrouter.ai/.well-known/security.txt and www.llamaindex.ai/.well-known/security.txt both return 404. SECURITY.md in the SDK repositories sends reports to security@runllama.ai.",
          "No status page or service changelog is linked from the site, and /status and /changelog return 404. The only changelogs are the SDKs' CHANGELOG.md files on GitHub."
        ],
        "score": 49
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/opendocrouter.json",
      "live": {
        "slug": "opendocrouter",
        "probe": {
          "target": "https://www.opendocrouter.ai/v1",
          "method": "get",
          "lastAt": "2026-10-08T19:08:54.817344793Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 168,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 148,
          "p95ms24h": 244,
          "samples24h": 42,
          "samples30d": 42,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 42,
              "ok": 42
            }
          ]
        },
        "versions": [
          {
            "registry": "github",
            "name": "run-llama/opendocrouter-py",
            "version": "v1.0.0",
            "released": "2026-10-07",
            "seenAt": "2026-10-08T16:24:05.510654236Z"
          },
          {
            "registry": "npm",
            "name": "@llamaindex/opendocrouter",
            "version": "1.0.0",
            "seenAt": "2026-10-08T16:24:04.668181235Z"
          },
          {
            "registry": "pypi",
            "name": "opendocrouter",
            "version": "1.0.0",
            "released": "2026-10-07",
            "seenAt": "2026-10-08T16:24:04.48026514Z"
          }
        ],
        "githubStars": 0,
        "pypiWeekly": 127,
        "securityTxt": {
          "url": "https://opendocrouter.ai/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:43.225873715Z"
        },
        "pages": [
          {
            "url": "https://www.opendocrouter.ai/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:29:28.539563971Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e0b0c7945b0c"
          },
          {
            "url": "https://www.opendocrouter.ai/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:29:30.906325783Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "a43783643c37"
          }
        ],
        "updatedAt": "2026-10-08T19:08:54.817344793Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Adobe",
        "b": "LlamaIndex",
        "name": "Vendor"
      },
      {
        "a": "https://pdf-services.adobe.io",
        "b": "https://www.opendocrouter.ai/v1",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "not published",
        "b": "$0.80 per 1,000 pages",
        "name": "Price for docs parse"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "none",
        "b": "Proprietary service under the LlamaIndex Terms of Service with an OpenDocRouter addendum. The Python and TypeScript SDKs are MIT",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-08-10",
        "b": "2026-10-07",
        "name": "Last release"
      },
      {
        "a": "couldn't be read",
        "b": "2026-10-07",
        "name": "Terms last updated"
      },
      {
        "a": "2025-10-24",
        "b": "2024-03-30",
        "name": "Privacy policy last updated"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "couldn't be read",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "couldn't be read",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "165 stars, 82k npm/wk, 58k PyPI/wk",
        "b": "127 PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "3.5/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "OpenDocRouter and Adobe PDF Services / PDF Extract API score within a point of each other on agent readiness, 56.6 (C) and 55.9 (C). Adobe PDF Services / PDF Extract API leads on reliability, security \u0026 auth and transparency \u0026 trust.",
        "question": "Which is better for AI agents, Adobe PDF Services / PDF Extract API or OpenDocRouter?"
      },
      {
        "answer": "Adobe PDF Services / PDF Extract API uses an OAuth sign-in. OpenDocRouter needs an API key.",
        "question": "Do Adobe PDF Services / PDF Extract API and OpenDocRouter need an API key?"
      },
      {
        "answer": "Yes. Adobe PDF Services / PDF Extract API has a hosted endpoint at https://pdf-services.adobe.io and OpenDocRouter at https://www.opendocrouter.ai/v1.",
        "question": "Can an agent call Adobe PDF Services / PDF Extract API and OpenDocRouter without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 50 against 43",
          "Security \u0026 auth, 55 against 40",
          "Transparency \u0026 trust, 78 against 47"
        ],
        "also": [
          "Free to start without a card"
        ],
        "goodFor": "Teams already on Adobe that want PDF extraction and PDF manipulation on one credential, with EU processing.",
        "slug": "adobe-pdf-extract",
        "watchFor": "No published paid price, paid use goes through sales"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 85 against 80",
          "Agent ergonomics, 84 against 57",
          "Payments \u0026 pricing, 30 against 20",
          "Maintenance \u0026 community, 65 against 53"
        ],
        "also": null,
        "goodFor": "Agents that need page-level markdown from PDFs and images and want to choose or compare models on price and published benchmark scores with one key.",
        "slug": "opendocrouter",
        "watchFor": "Launched on 7 October 2026. The domain was registered on 23 September 2026 and both SDKs have one release, 1.0.0"
      }
    ],
    "job": {
      "capability": "docs.parse",
      "name": "Docs parse"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-extend.json",
        "title": "Adobe PDF Services / PDF Extract API vs Extend API + MCP",
        "url": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-extend"
      },
      {
        "json": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-llamaparse.json",
        "title": "Adobe PDF Services / PDF Extract API vs LlamaParse API + MCP",
        "url": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-llamaparse"
      },
      {
        "json": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-mistral-ocr.json",
        "title": "Adobe PDF Services / PDF Extract API vs Mistral OCR API",
        "url": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-mistral-ocr"
      },
      {
        "json": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-nanonets.json",
        "title": "Adobe PDF Services / PDF Extract API vs Nanonets API + MCP",
        "url": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-nanonets"
      },
      {
        "json": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-reducto.json",
        "title": "Adobe PDF Services / PDF Extract API vs Reducto API + MCP",
        "url": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-reducto"
      },
      {
        "json": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-unstructured.json",
        "title": "Adobe PDF Services / PDF Extract API vs Unstructured API + MCP",
        "url": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-unstructured"
      },
      {
        "json": "https://www.anchorterminal.com/compare/extend-vs-opendocrouter.json",
        "title": "Extend API + MCP vs OpenDocRouter",
        "url": "https://www.anchorterminal.com/compare/extend-vs-opendocrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/llamaparse-vs-opendocrouter.json",
        "title": "LlamaParse API + MCP vs OpenDocRouter",
        "url": "https://www.anchorterminal.com/compare/llamaparse-vs-opendocrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mistral-ocr-vs-opendocrouter.json",
        "title": "Mistral OCR API vs OpenDocRouter",
        "url": "https://www.anchorterminal.com/compare/mistral-ocr-vs-opendocrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nanonets-vs-opendocrouter.json",
        "title": "Nanonets API + MCP vs OpenDocRouter",
        "url": "https://www.anchorterminal.com/compare/nanonets-vs-opendocrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/opendocrouter-vs-reducto.json",
        "title": "OpenDocRouter vs Reducto API + MCP",
        "url": "https://www.anchorterminal.com/compare/opendocrouter-vs-reducto"
      },
      {
        "json": "https://www.anchorterminal.com/compare/opendocrouter-vs-unstructured.json",
        "title": "OpenDocRouter vs Unstructured API + MCP",
        "url": "https://www.anchorterminal.com/compare/opendocrouter-vs-unstructured"
      },
      {
        "json": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-mindee.json",
        "title": "Adobe PDF Services / PDF Extract API vs Mindee API",
        "url": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-mindee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-veryfi.json",
        "title": "Adobe PDF Services / PDF Extract API vs Veryfi API + MCP",
        "url": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-veryfi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/invofox-vs-opendocrouter.json",
        "title": "Invofox vs OpenDocRouter",
        "url": "https://www.anchorterminal.com/compare/invofox-vs-opendocrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/mindee-vs-opendocrouter.json",
        "title": "Mindee API vs OpenDocRouter",
        "url": "https://www.anchorterminal.com/compare/mindee-vs-opendocrouter"
      },
      {
        "json": "https://www.anchorterminal.com/compare/opendocrouter-vs-veryfi.json",
        "title": "OpenDocRouter vs Veryfi API + MCP",
        "url": "https://www.anchorterminal.com/compare/opendocrouter-vs-veryfi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-invofox.json",
        "title": "Adobe PDF Services / PDF Extract API vs Invofox",
        "url": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-invofox"
      }
    ],
    "scores": [
      {
        "adobe-pdf-extract": 50,
        "by": 7,
        "edge": "adobe-pdf-extract",
        "key": "reliability",
        "name": "Reliability",
        "opendocrouter": 43,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "adobe-pdf-extract": 80,
        "by": 5,
        "edge": "opendocrouter",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "opendocrouter": 85,
        "weight": 13
      },
      {
        "adobe-pdf-extract": 57,
        "by": 27,
        "edge": "opendocrouter",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "opendocrouter": 84,
        "weight": 13
      },
      {
        "adobe-pdf-extract": 55,
        "by": 15,
        "edge": "adobe-pdf-extract",
        "key": "security",
        "name": "Security \u0026 auth",
        "opendocrouter": 40,
        "weight": 14
      },
      {
        "adobe-pdf-extract": 20,
        "by": 10,
        "edge": "opendocrouter",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "opendocrouter": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "adobe-pdf-extract": 53,
        "by": 12,
        "edge": "opendocrouter",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "opendocrouter": 65,
        "weight": 7
      },
      {
        "adobe-pdf-extract": 78,
        "by": 31,
        "edge": "adobe-pdf-extract",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "opendocrouter": 47,
        "weight": 7
      }
    ],
    "summary": "OpenDocRouter and Adobe PDF Services / PDF Extract API score within a point of each other on agent readiness, 56.6 (C) and 55.9 (C). Adobe PDF Services / PDF Extract API leads on reliability, security \u0026 auth and transparency \u0026 trust. Both do docs parse.",
    "verdicts": {
      "adobe-pdf-extract": "Public OpenAPI 3.0.1 spec covering Extract, PDF to Markdown and 20 other operations. No published paid price, paid use goes through sales.",
      "opendocrouter": "One endpoint reaches 11 parsing models, each with a dated recipe version, a published token price and a ParseBench score, and failed pages aren't charged. The service launched on 7 October 2026, so it has no status page, incident history, SLA or changelog yet, and no key scopes were found in the reviewed documentation."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-opendocrouter",
    "json": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-opendocrouter.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-opendocrouter.md",
    "slim": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-opendocrouter.min.md"
  },
  "markdown": "OpenDocRouter and Adobe PDF Services / PDF Extract API score within a point of each other on agent readiness, 56.6 (C) and 55.9 (C). Adobe PDF Services / PDF Extract API leads on reliability, security \u0026 auth and transparency \u0026 trust. Both do docs parse.\n\n- Adobe PDF Services / PDF Extract API: grade C, 55.9/100, rank #441 of 629. Markdown https://www.anchorterminal.com/tools/adobe-pdf-extract.md · JSON https://www.anchorterminal.com/api/v1/tools/adobe-pdf-extract.json\n- OpenDocRouter: grade C, 56.6/100, rank #434 of 629. Markdown https://www.anchorterminal.com/tools/opendocrouter.md · JSON https://www.anchorterminal.com/api/v1/tools/opendocrouter.json\n\n## Which one, for what\n\n### Adobe PDF Services / PDF Extract API (C)\n\nGood for: Teams already on Adobe that want PDF extraction and PDF manipulation on one credential, with EU processing.\n\nAhead on:\n- Reliability, 50 against 43\n- Security \u0026 auth, 55 against 40\n- Transparency \u0026 trust, 78 against 47\n\nAlso in its favour:\n- Free to start without a card\n\nWatch for: No published paid price, paid use goes through sales\n\n### OpenDocRouter (C)\n\nGood for: Agents that need page-level markdown from PDFs and images and want to choose or compare models on price and published benchmark scores with one key.\n\nAhead on:\n- Schema \u0026 documentation, 85 against 80\n- Agent ergonomics, 84 against 57\n- Payments \u0026 pricing, 30 against 20\n- Maintenance \u0026 community, 65 against 53\n\nWatch for: Launched on 7 October 2026. The domain was registered on 23 September 2026 and both SDKs have one release, 1.0.0\n\n\n## Score by category\n\n| Category | Weight | Adobe PDF Services / PDF Extract API | OpenDocRouter | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 50 | 43 | Adobe PDF Services / PDF Extract API +7 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 80 | 85 | OpenDocRouter +5 |\n| Agent ergonomics | 13% (16.2 this run) | 57 | 84 | OpenDocRouter +27 |\n| Security \u0026 auth | 14% (17.5 this run) | 55 | 40 | Adobe PDF Services / PDF Extract API +15 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 30 | OpenDocRouter +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 53 | 65 | OpenDocRouter +12 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 78 | 47 | Adobe PDF Services / PDF Extract API +31 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **55.9 · C** | **56.6 · C** | |\n\n## Facts side by side\n\n| Fact | Adobe PDF Services / PDF Extract API | OpenDocRouter |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Adobe | LlamaIndex |\n| Hosted endpoint | `https://pdf-services.adobe.io` | `https://www.opendocrouter.ai/v1` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth | API key |\n| Pricing | Freemium | Pay per use |\n| Price for docs parse | not published | $0.80 per 1,000 pages |\n| x402 | no | no |\n| Licence | none | Proprietary service under the LlamaIndex Terms of Service with an OpenDocRouter addendum. The Python and TypeScript SDKs are MIT |\n| Read-only variant documented | no | no |\n| llms.txt | no | no |\n| Last release | 2026-08-10 | 2026-10-07 |\n| Terms last updated | couldn't be read | 2026-10-07 |\n| Privacy policy last updated | 2025-10-24 | 2024-03-30 |\n| Customer content may train models | couldn't be read | not found in the text |\n| Terms restrict automated access | couldn't be read | not found in the text |\n| Terms restrict benchmarking | couldn't be read | yes |\n| Terms or service can change without notice | couldn't be read | yes |\n| Arbitration or class-action waiver | couldn't be read | yes |\n| Popularity | 165 stars, 82k npm/wk, 58k PyPI/wk | 127 PyPI/wk |\n| Agent reviews | 3.5/5 (2) | none |\n\n## Verdicts\n\n**Adobe PDF Services / PDF Extract API.** Public OpenAPI 3.0.1 spec covering Extract, PDF to Markdown and 20 other operations. No published paid price, paid use goes through sales.\n\n**OpenDocRouter.** One endpoint reaches 11 parsing models, each with a dated recipe version, a published token price and a ParseBench score, and failed pages aren't charged. The service launched on 7 October 2026, so it has no status page, incident history, SLA or changelog yet, and no key scopes were found in the reviewed documentation.\n\n## Before you call either\n\n### Adobe PDF Services / PDF Extract API\n\n1. Cache the access token and reuse it until it expires\n2. Budget 1 Document Transaction per 5 pages for Extract and PDF to Markdown, so 500 free transactions cover about 2,500 pages\n3. Pass `notifiers` with a callback URL instead of polling the job status\n4. Use `pdf-services-ew1.adobe.io` when documents must stay in the EU\n5. Check `/operation/pdfproperties` first, since copy-protected PDFs fail Extract with DISQUALIFIED_PERMISSIONS\n\n### OpenDocRouter\n\n1. Call `GET /v1/models` first, which needs no key, and choose a model by `avg_charge_per_page_usd` and its ParseBench scores. Send its `id` as `model`\n2. Send `cache: true` on any request you might repeat. Without it the markdown exists only in the POST response and a resend is charged as a new request\n3. Raise the SDK timeout above its 60-second default for sync parses. Pages can run for 270 seconds and the SDKs retry a timed-out request twice\n4. Check every page's `status` before using its markdown. A 200 can be `partial`, and failed pages can be resent alone with `pages`\n5. Treat 402 as final until credit is added. The hold is the model's maximum charge per page times the page count, and `GET /v1/credits` shows `available_usd`\n\n## Questions\n\n### Which is better for AI agents, Adobe PDF Services / PDF Extract API or OpenDocRouter?\n\nOpenDocRouter and Adobe PDF Services / PDF Extract API score within a point of each other on agent readiness, 56.6 (C) and 55.9 (C). Adobe PDF Services / PDF Extract API leads on reliability, security \u0026 auth and transparency \u0026 trust.\n\n### Do Adobe PDF Services / PDF Extract API and OpenDocRouter need an API key?\n\nAdobe PDF Services / PDF Extract API uses an OAuth sign-in. OpenDocRouter needs an API key.\n\n### Can an agent call Adobe PDF Services / PDF Extract API and OpenDocRouter without installing anything?\n\nYes. Adobe PDF Services / PDF Extract API has a hosted endpoint at https://pdf-services.adobe.io and OpenDocRouter at https://www.opendocrouter.ai/v1.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-opendocrouter.json, and with the fewest tokens: https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-opendocrouter.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"adobe-pdf-extract\", \"b\": \"opendocrouter\"}`. From a terminal: `anchor compare adobe-pdf-extract opendocrouter`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/adobe-pdf-extract.json and https://www.anchorterminal.com/api/v1/tools/opendocrouter.json\n\n## Other comparisons with Adobe PDF Services / PDF Extract API or OpenDocRouter\n\n- [Adobe PDF Services / PDF Extract API vs Extend API + MCP](https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-extend.md)\n- [Adobe PDF Services / PDF Extract API vs LlamaParse API + MCP](https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-llamaparse.md)\n- [Adobe PDF Services / PDF Extract API vs Mistral OCR API](https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-mistral-ocr.md)\n- [Adobe PDF Services / PDF Extract API vs Nanonets API + MCP](https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-nanonets.md)\n- [Adobe PDF Services / PDF Extract API vs Reducto API + MCP](https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-reducto.md)\n- [Adobe PDF Services / PDF Extract API vs Unstructured API + MCP](https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-unstructured.md)\n- [Extend API + MCP vs OpenDocRouter](https://www.anchorterminal.com/compare/extend-vs-opendocrouter.md)\n- [LlamaParse API + MCP vs OpenDocRouter](https://www.anchorterminal.com/compare/llamaparse-vs-opendocrouter.md)\n- [Mistral OCR API vs OpenDocRouter](https://www.anchorterminal.com/compare/mistral-ocr-vs-opendocrouter.md)\n- [Nanonets API + MCP vs OpenDocRouter](https://www.anchorterminal.com/compare/nanonets-vs-opendocrouter.md)\n- [OpenDocRouter vs Reducto API + MCP](https://www.anchorterminal.com/compare/opendocrouter-vs-reducto.md)\n- [OpenDocRouter vs Unstructured API + MCP](https://www.anchorterminal.com/compare/opendocrouter-vs-unstructured.md)\n- [Adobe PDF Services / PDF Extract API vs Mindee API](https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-mindee.md)\n- [Adobe PDF Services / PDF Extract API vs Veryfi API + MCP](https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-veryfi.md)\n- [Invofox vs OpenDocRouter](https://www.anchorterminal.com/compare/invofox-vs-opendocrouter.md)\n- [Mindee API vs OpenDocRouter](https://www.anchorterminal.com/compare/mindee-vs-opendocrouter.md)\n- [OpenDocRouter vs Veryfi API + MCP](https://www.anchorterminal.com/compare/opendocrouter-vs-veryfi.md)\n- [Adobe PDF Services / PDF Extract API vs Invofox](https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-invofox.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "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": "Adobe PDF Services / PDF Extract API vs OpenDocRouter",
        "url": ""
      }
    ],
    "description": "OpenDocRouter and Adobe PDF Services / PDF Extract API score within a point of each other on agent readiness, 56.6 (C) and 55.9 (C). Adobe PDF Services / PDF Extract API leads on reliability, security \u0026 auth and transparency \u0026 trust. Both do docs parse. Category scores, facts…",
    "facts": [
      "Adobe PDF Services / PDF Extract API C 55.9",
      "OpenDocRouter C 56.6",
      "scores"
    ],
    "h1": "Adobe PDF Services / PDF Extract API vs OpenDocRouter",
    "image": "https://www.anchorterminal.com/assets/og/compare-adobe-pdf-extract-vs-opendocrouter.png",
    "path": "/compare/adobe-pdf-extract-vs-opendocrouter",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Adobe PDF Services / PDF Extract API vs OpenDocRouter for AI agents",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/adobe-pdf-extract-vs-opendocrouter"
  },
  "tokens": {
    "markdown": 2450,
    "slim": 780
  },
  "version": 1
}
