{
  "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"
  },
  "tool": {
    "slug": "amazon-textract",
    "name": "Amazon Textract",
    "vendor": "Amazon Web Services",
    "vendorUrl": "https://aws.amazon.com/textract/",
    "kind": "http-api",
    "category": "document-extraction",
    "summary": "Amazon Textract is AWS's document OCR and analysis API. It reads printed and handwritten text from scans and PDFs and returns tables, form fields, layout elements, answers to queries, and invoice, receipt and identity document fields as JSON.",
    "url": "https://www.anchorterminal.com/tools/amazon-textract",
    "markdownUrl": "https://www.anchorterminal.com/tools/amazon-textract.md",
    "slimMarkdownUrl": "https://www.anchorterminal.com/tools/amazon-textract.min.md",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/amazon-textract.json",
    "repo": "https://github.com/aws/api-models-aws",
    "license": "Proprietary service under the AWS Customer Agreement. The AWS SDKs and the Textractor helper library are Apache-2.0",
    "transports": [
      "http"
    ],
    "remoteUrl": "https://textract.us-east-1.amazonaws.com",
    "packages": [
      {
        "registry": "npm",
        "name": "@aws-sdk/client-textract"
      },
      {
        "registry": "pypi",
        "name": "boto3"
      },
      {
        "registry": "pypi",
        "name": "amazon-textract-textractor"
      }
    ],
    "auth": "api-key",
    "authNotes": "Requests are signed with AWS Signature Version 4 using IAM credentials, long-lived access keys or temporary credentials from AWS STS. IAM identity policies use the `textract` action prefix, with resource-level permissions for adapters only and no service-specific condition keys. Access is self-serve with an AWS account. Asynchronous jobs read from S3, and completion notices need an SNS topic and an IAM role Textract can assume.",
    "pricing": "usage",
    "pricingNotes": "Pay per page with no minimum. In US East (N. Virginia), text detection is $1.50 per 1,000 pages for the first million a month and $0.60 after. Document analysis is $15 for tables, $15 for queries, $50 for forms and $65 for tables with forms. Invoices and receipts are $10, identity documents $25 and the lending workflow $70. New AWS customers get three months of free pages, 1,000 a month for text detection and 100 a month for most analysis, and the Free Tier FAQ says most can sign up without a payment method (https://aws.amazon.com/textract/pricing/, https://aws.amazon.com/free/free-tier-faqs/).",
    "priceSummary": "$1.50 / 1k pages",
    "where": "hosted",
    "x402": {
      "level": "no",
      "evidence": "No x402, MPP or L402 in the developer guide, the API model or the pricing page (checked 2026-10-08).",
      "endpoints": []
    },
    "toolCount": null,
    "popularity": {
      "githubStars": null,
      "npmWeekly": 1871217,
      "pypiWeekly": 207553,
      "asOf": "2026-10-08"
    },
    "docsUrl": "https://docs.aws.amazon.com/textract/latest/dg/what-is.html",
    "llmsTxt": "https://docs.aws.amazon.com/textract/latest/dg/llms.txt",
    "capabilities": [
      "docs.parse",
      "docs.ocr",
      "docs.extract",
      "docs.tables"
    ],
    "tags": [
      "hosted",
      "closed-source",
      "llms-txt",
      "typescript",
      "python",
      "async-jobs",
      "sla",
      "enterprise",
      "usage-priced"
    ],
    "lastRelease": "2026-10-08",
    "graded": true,
    "anchor": {
      "graded": true,
      "score": 73.5,
      "grade": "BB",
      "agentReady": true,
      "rank": 85,
      "ranked": true,
      "rankOf": 842,
      "categoryRank": 1,
      "methodology": "0.4",
      "run": "2026-10-01",
      "scores": {
        "ergonomics": 70,
        "maintenance": 58,
        "payments": 35,
        "reliability": 96,
        "schema": 82,
        "security": 74,
        "transparency": 82
      },
      "pending": [
        "performance",
        "tasks"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 96,
          "points": 19.2,
          "reason": "AWS Health Dashboard with per-service, per-Region history (20). AWS's dashboard history file, read on 8 October 2026, lists eleven events since 10 July and none names Amazon Textract. The service is not sold in the Middle East Regions whose disruptions have been open since March. The one event that names it is the US East (N. Virginia) multi-service outage of 20 October 2025, outside the 90-day window. The public dashboard shows broad events only (30). Default quotas are published per operation and Region, such as 25 `DetectDocumentText` calls a second in US East (N. Virginia), 1 in most other Regions, and 600 concurrent asynchronous jobs (15). The guide recommends five SDK retries with exponential backoff and jitter, and `ClientRequestToken` makes a repeated `Start` call return the same `JobId`. Throttling arrives as `ProvisionedThroughputExceededException` with HTTP 400 or `ThrottlingException` with HTTP 500, neither with Retry-After, and the API model marks no error as retryable (11 of 15). The Amazon Textract SLA, last updated 5 May 2022, commits 99.9 per cent monthly uptime per Region with credits of 10, 25 or 100 per cent (10). Generally available since 29 May 2019 (10)."
        },
        {
          "key": "performance",
          "name": "Performance",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
        },
        {
          "key": "schema",
          "name": "Schema \u0026 documentation",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 82,
          "points": 13.33,
          "reason": "No OpenAPI, but the Smithy model is published in aws/api-models-aws, 25 operations under API version 2018-06-27 on the awsJson1_1 protocol (25). llms.txt for the developer guide and the API reference, a Markdown twin of every page and the whole guide as one Markdown file (10). Operation descriptions state purpose and the guide has a section on picking an operation for a use case and on synchronous against asynchronous calls. Few say when not to use them (15 of 20). 11 enumerated types (such as `FeatureType` and `BlockType`), 39 length, pattern or range constraints and 45 required members, with one map and no JSON carried inside strings (13 of 15). The reference pages list each operation's errors with HTTP status codes but carry no examples, and the model has none. The guide has request and response samples and SDK code (11 of 15). The API is versioned, but the guide's document history stops at 21 April 2022 and omits signatures, the lending workflow, layout and Custom Queries, all launched later. Model changes show only as commits in aws/api-models-aws (8 of 15)."
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 70,
          "points": 11.38,
          "reason": "Graded on the Textract API through the AWS CLI and SDKs. `FeatureTypes` selects what a call analyses, and queries return a named answer per question. The response is a flat list of blocks for every page, line and word, each with geometry and a confidence value, with no field selection, no way to omit word blocks and no Markdown or text output (12 of 25). `Get` operations page with `MaxResults` (1,000 blocks at most) and `NextToken`, and the two adapter list operations page and filter. No operation lists jobs and no block filter exists (13 of 20). 18 typed errors with HTTP codes and a recovery hint each, though throttling uses 400 and 500, not 429 (16 of 20). `ClientRequestToken` on the `Start` operations and on adapter creation, with `IdempotentParameterMismatchException` when a token is reused with different input. Synchronous calls change nothing but bill each attempt (18 of 20). `DetectDocumentText` needs only `Document`, and SDKs exist in every major language. Any PDF or TIFF of more than one page needs S3, an asynchronous job and polling or an SNS topic, and every call needs SigV4 (11 of 15)."
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 74,
          "points": 12.95,
          "reason": "IAM with identity policies per action, temporary credentials from AWS STS and rotation. Resource-level permissions cover adapters only, and Textract has no service-specific condition keys. No secret travels in a URL (30). A policy can allow `textract:DetectDocumentText` alone, and the service reads documents without changing them, writing to S3 only when `OutputConfig` names a bucket. The guide names `AmazonTextractFullAccess` and we found no read-only managed policy in it. The only destructive calls delete adapters (16 of 20). Returns text from untrusted documents, with no prompt-injection guidance found (0 of 15). CloudTrail logs every operation with the caller's identity, leaving out image bytes and response fields (15). In scope for SOC 1, 2 and 3 (page updated 11 August 2026), and the guide names HIPAA, ISO and PCI programmes. Vulnerability disclosure programme on HackerOne. aws.amazon.com's security.txt expired on 24 September 2026 and we found no paid bug bounty (18 of 20). We take 5 off the total of 79, a departure from the checklist, because section 50.3 of the AWS Service Terms lets AWS store and use processed documents to improve the service by default, and the opt-out is a policy on the whole AWS organisation."
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 35,
          "points": 4.38,
          "reason": "No x402, MPP or L402 (0). Per-page prices by Region published without login, with a price feed the pricing page loads (20). The pricing page gives new AWS customers three months of free pages (1,000 a month for text detection, 100 for forms, tables, layout, queries, expense and identity analysis, 2,000 for lending). The Free Tier FAQ says most new customers don't need a payment method, though AWS may still ask for one, so 15 of 20. A person signs up for the AWS account. IAM can mint keys by API only after that (0)."
        },
        {
          "key": "tasks",
          "name": "Task success",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
        },
        {
          "key": "maintenance",
          "name": "Maintenance \u0026 community",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 58,
          "points": 5.08,
          "reason": "The Textract API model last changed on 11 August 2026, a documentation update, 58 days before the check, and the JavaScript SDK client shipped 3.1148.0 on 8 October (20 of 30). That is the only model change since 10 July. The client had 64 versions in that period, published with the whole SDK. The guide's document history has no entry after 21 April 2022 and the newest Textract item in AWS's What's New feed is 30 June 2025 (5 of 20). Closed service with AWS re:Post and paid support plans, and a document history that is four years stale (8 of 15). Official SDKs released on most working days (15). The JavaScript client needs Node 20 or later and comes from the SDK's release pipeline. The `amazon-textract-textractor` helper library released 1.10.0 on 11 August 2026 (10)."
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 82,
          "points": 7.18,
          "note": "editorial 69, provenance 95",
          "reason": "Closed service under the AWS Customer Agreement and section 50 of the Service Terms, with Apache-2.0 SDKs (20 of 30). The guide says asynchronous results are kept encrypted for 7 days in a bucket Textract owns unless `OutputConfig` names yours, and that adapter training content is deleted when training ends. Section 50.3 of the Service Terms lets AWS store and use processed content to improve the service, in other Regions too, with an opt-out through an AI services opt-out policy that also deletes stored content. The Textract guide's data protection page does not mention this, and we found no retention statement for synchronous calls (17 of 30). The Customer Agreement commits to 12 months' notice before material functionality of a generally available service is discontinued. No dated Textract deprecation notices found (15 of 20). The sub-processor page, last updated 28 July 2026, lists Textract under service improvement with processing in Australia, Germany, Ireland, Singapore, the United Kingdom and the USA, and promises 30 days' notice of new sub-processors. Region is chosen per request across 16 Regions (17 of 20)."
        }
      ],
      "assessment": {
        "date": "2026-10-08",
        "basis": "public evidence",
        "confidence": "medium",
        "notes": {
          "ergonomics": "Graded on the Textract API through the AWS CLI and SDKs. `FeatureTypes` selects what a call analyses, and queries return a named answer per question. The response is a flat list of blocks for every page, line and word, each with geometry and a confidence value, with no field selection, no way to omit word blocks and no Markdown or text output (12 of 25). `Get` operations page with `MaxResults` (1,000 blocks at most) and `NextToken`, and the two adapter list operations page and filter. No operation lists jobs and no block filter exists (13 of 20). 18 typed errors with HTTP codes and a recovery hint each, though throttling uses 400 and 500, not 429 (16 of 20). `ClientRequestToken` on the `Start` operations and on adapter creation, with `IdempotentParameterMismatchException` when a token is reused with different input. Synchronous calls change nothing but bill each attempt (18 of 20). `DetectDocumentText` needs only `Document`, and SDKs exist in every major language. Any PDF or TIFF of more than one page needs S3, an asynchronous job and polling or an SNS topic, and every call needs SigV4 (11 of 15).",
          "maintenance": "The Textract API model last changed on 11 August 2026, a documentation update, 58 days before the check, and the JavaScript SDK client shipped 3.1148.0 on 8 October (20 of 30). That is the only model change since 10 July. The client had 64 versions in that period, published with the whole SDK. The guide's document history has no entry after 21 April 2022 and the newest Textract item in AWS's What's New feed is 30 June 2025 (5 of 20). Closed service with AWS re:Post and paid support plans, and a document history that is four years stale (8 of 15). Official SDKs released on most working days (15). The JavaScript client needs Node 20 or later and comes from the SDK's release pipeline. The `amazon-textract-textractor` helper library released 1.10.0 on 11 August 2026 (10).",
          "payments": "No x402, MPP or L402 (0). Per-page prices by Region published without login, with a price feed the pricing page loads (20). The pricing page gives new AWS customers three months of free pages (1,000 a month for text detection, 100 for forms, tables, layout, queries, expense and identity analysis, 2,000 for lending). The Free Tier FAQ says most new customers don't need a payment method, though AWS may still ask for one, so 15 of 20. A person signs up for the AWS account. IAM can mint keys by API only after that (0).",
          "reliability": "AWS Health Dashboard with per-service, per-Region history (20). AWS's dashboard history file, read on 8 October 2026, lists eleven events since 10 July and none names Amazon Textract. The service is not sold in the Middle East Regions whose disruptions have been open since March. The one event that names it is the US East (N. Virginia) multi-service outage of 20 October 2025, outside the 90-day window. The public dashboard shows broad events only (30). Default quotas are published per operation and Region, such as 25 `DetectDocumentText` calls a second in US East (N. Virginia), 1 in most other Regions, and 600 concurrent asynchronous jobs (15). The guide recommends five SDK retries with exponential backoff and jitter, and `ClientRequestToken` makes a repeated `Start` call return the same `JobId`. Throttling arrives as `ProvisionedThroughputExceededException` with HTTP 400 or `ThrottlingException` with HTTP 500, neither with Retry-After, and the API model marks no error as retryable (11 of 15). The Amazon Textract SLA, last updated 5 May 2022, commits 99.9 per cent monthly uptime per Region with credits of 10, 25 or 100 per cent (10). Generally available since 29 May 2019 (10).",
          "schema": "No OpenAPI, but the Smithy model is published in aws/api-models-aws, 25 operations under API version 2018-06-27 on the awsJson1_1 protocol (25). llms.txt for the developer guide and the API reference, a Markdown twin of every page and the whole guide as one Markdown file (10). Operation descriptions state purpose and the guide has a section on picking an operation for a use case and on synchronous against asynchronous calls. Few say when not to use them (15 of 20). 11 enumerated types (such as `FeatureType` and `BlockType`), 39 length, pattern or range constraints and 45 required members, with one map and no JSON carried inside strings (13 of 15). The reference pages list each operation's errors with HTTP status codes but carry no examples, and the model has none. The guide has request and response samples and SDK code (11 of 15). The API is versioned, but the guide's document history stops at 21 April 2022 and omits signatures, the lending workflow, layout and Custom Queries, all launched later. Model changes show only as commits in aws/api-models-aws (8 of 15).",
          "security": "IAM with identity policies per action, temporary credentials from AWS STS and rotation. Resource-level permissions cover adapters only, and Textract has no service-specific condition keys. No secret travels in a URL (30). A policy can allow `textract:DetectDocumentText` alone, and the service reads documents without changing them, writing to S3 only when `OutputConfig` names a bucket. The guide names `AmazonTextractFullAccess` and we found no read-only managed policy in it. The only destructive calls delete adapters (16 of 20). Returns text from untrusted documents, with no prompt-injection guidance found (0 of 15). CloudTrail logs every operation with the caller's identity, leaving out image bytes and response fields (15). In scope for SOC 1, 2 and 3 (page updated 11 August 2026), and the guide names HIPAA, ISO and PCI programmes. Vulnerability disclosure programme on HackerOne. aws.amazon.com's security.txt expired on 24 September 2026 and we found no paid bug bounty (18 of 20). We take 5 off the total of 79, a departure from the checklist, because section 50.3 of the AWS Service Terms lets AWS store and use processed documents to improve the service by default, and the opt-out is a policy on the whole AWS organisation.",
          "transparency": "Closed service under the AWS Customer Agreement and section 50 of the Service Terms, with Apache-2.0 SDKs (20 of 30). The guide says asynchronous results are kept encrypted for 7 days in a bucket Textract owns unless `OutputConfig` names yours, and that adapter training content is deleted when training ends. Section 50.3 of the Service Terms lets AWS store and use processed content to improve the service, in other Regions too, with an opt-out through an AI services opt-out policy that also deletes stored content. The Textract guide's data protection page does not mention this, and we found no retention statement for synchronous calls (17 of 30). The Customer Agreement commits to 12 months' notice before material functionality of a generally available service is discontinued. No dated Textract deprecation notices found (15 of 20). The sub-processor page, last updated 28 July 2026, lists Textract under service improvement with processing in Australia, Germany, Ireland, Singapore, the United Kingdom and the USA, and promises 30 days' notice of new sub-processors. Region is chosen per request across 16 Regions (17 of 20)."
        },
        "sources": [
          {
            "what": "developer guide index (llms.txt)",
            "url": "https://docs.aws.amazon.com/textract/latest/dg/llms.txt",
            "seen": "2026-10-08"
          },
          {
            "what": "developer guide as one file",
            "url": "https://docs.aws.amazon.com/textract/latest/dg/full.md",
            "seen": "2026-10-08"
          },
          {
            "what": "what is Amazon Textract",
            "url": "https://docs.aws.amazon.com/textract/latest/dg/what-is.md",
            "seen": "2026-10-08"
          },
          {
            "what": "document history",
            "url": "https://docs.aws.amazon.com/textract/latest/dg/document-history.md",
            "seen": "2026-10-08"
          },
          {
            "what": "set quotas (formats, sizes, languages)",
            "url": "https://docs.aws.amazon.com/textract/latest/dg/limits-document.md",
            "seen": "2026-10-08"
          },
          {
            "what": "default quotas",
            "url": "https://docs.aws.amazon.com/textract/latest/dg/limits-quotas-explained.md",
            "seen": "2026-10-08"
          },
          {
            "what": "endpoints and quotas",
            "url": "https://docs.aws.amazon.com/general/latest/gr/textract.md",
            "seen": "2026-10-08"
          },
          {
            "what": "handling throttling and connection errors",
            "url": "https://docs.aws.amazon.com/textract/latest/dg/handling-errors.md",
            "seen": "2026-10-08"
          },
          {
            "what": "asynchronous operations",
            "url": "https://docs.aws.amazon.com/textract/latest/dg/api-async.md",
            "seen": "2026-10-08"
          },
          {
            "what": "synchronous operations",
            "url": "https://docs.aws.amazon.com/textract/latest/dg/sync-calling.md",
            "seen": "2026-10-08"
          },
          {
            "what": "data protection",
            "url": "https://docs.aws.amazon.com/textract/latest/dg/data-protection.md",
            "seen": "2026-10-08"
          },
          {
            "what": "encryption",
            "url": "https://docs.aws.amazon.com/textract/latest/dg/encryption.md",
            "seen": "2026-10-08"
          },
          {
            "what": "CloudTrail logging",
            "url": "https://docs.aws.amazon.com/textract/latest/dg/logging-using-cloudtrail.md",
            "seen": "2026-10-08"
          },
          {
            "what": "IAM support",
            "url": "https://docs.aws.amazon.com/textract/latest/dg/security_iam_service-with-iam.md",
            "seen": "2026-10-08"
          },
          {
            "what": "identity-based policy examples",
            "url": "https://docs.aws.amazon.com/textract/latest/dg/security_iam_id-based-policy-examples.md",
            "seen": "2026-10-08"
          },
          {
            "what": "compliance validation",
            "url": "https://docs.aws.amazon.com/textract/latest/dg/SERVICENAME-compliance.md",
            "seen": "2026-10-08"
          },
          {
            "what": "API reference index (llms.txt)",
            "url": "https://docs.aws.amazon.com/textract/latest/APIReference/llms.txt",
            "seen": "2026-10-08"
          },
          {
            "what": "document analysis operation reference",
            "url": "https://docs.aws.amazon.com/textract/latest/APIReference/API_AnalyzeDocument.md",
            "seen": "2026-10-08"
          },
          {
            "what": "asynchronous results operation reference",
            "url": "https://docs.aws.amazon.com/textract/latest/APIReference/API_GetDocumentAnalysis.md",
            "seen": "2026-10-08"
          },
          {
            "what": "common errors",
            "url": "https://docs.aws.amazon.com/textract/latest/APIReference/CommonErrors.md",
            "seen": "2026-10-08"
          },
          {
            "what": "Smithy model for textract (cloned)",
            "url": "https://github.com/aws/api-models-aws",
            "seen": "2026-10-08"
          },
          {
            "what": "pricing",
            "url": "https://aws.amazon.com/textract/pricing/",
            "seen": "2026-10-08"
          },
          {
            "what": "price feed the pricing page loads",
            "url": "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/textract/USD/current/textract.json",
            "seen": "2026-10-08"
          },
          {
            "what": "Amazon Textract SLA",
            "url": "https://aws.amazon.com/textract/sla/",
            "seen": "2026-10-08"
          },
          {
            "what": "health dashboard history file",
            "url": "https://history-events-us-east-1-prod.s3.amazonaws.com/historyevents.json",
            "seen": "2026-10-08"
          },
          {
            "what": "health dashboard current events",
            "url": "https://health.aws.amazon.com/public/currentevents",
            "seen": "2026-10-08"
          },
          {
            "what": "What's New feed filtered to Amazon Textract",
            "url": "https://aws.amazon.com/api/dirs/items/search?item.directoryId=whats-new-v2\u0026sort_by=item.additionalFields.postDateTime\u0026sort_order=desc\u0026size=15\u0026item.locale=en_US\u0026tags.id=whats-new-v2%23general-products%23amazon-textract",
            "seen": "2026-10-08"
          },
          {
            "what": "Free Tier FAQ",
            "url": "https://aws.amazon.com/free/free-tier-faqs/",
            "seen": "2026-10-08"
          },
          {
            "what": "AWS Service Terms, section 50",
            "url": "https://aws.amazon.com/service-terms/",
            "seen": "2026-10-08"
          },
          {
            "what": "AI services opt-out policies",
            "url": "https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_ai-opt-out.md",
            "seen": "2026-10-08"
          },
          {
            "what": "AWS Customer Agreement",
            "url": "https://aws.amazon.com/agreement/",
            "seen": "2026-10-08"
          },
          {
            "what": "privacy notice",
            "url": "https://aws.amazon.com/privacy/",
            "seen": "2026-10-08"
          },
          {
            "what": "sub-processors",
            "url": "https://aws.amazon.com/compliance/sub-processors/",
            "seen": "2026-10-08"
          },
          {
            "what": "SOC services in scope",
            "url": "https://aws.amazon.com/compliance/services-in-scope/SOC/",
            "seen": "2026-10-08"
          },
          {
            "what": "security.txt",
            "url": "https://aws.amazon.com/.well-known/security.txt",
            "seen": "2026-10-08"
          },
          {
            "what": "vulnerability reporting",
            "url": "https://aws.amazon.com/security/vulnerability-reporting/",
            "seen": "2026-10-08"
          },
          {
            "what": "npm package and weekly downloads",
            "url": "https://registry.npmjs.org/@aws-sdk/client-textract",
            "seen": "2026-10-08"
          },
          {
            "what": "Textractor helper library on PyPI",
            "url": "https://pypi.org/pypi/amazon-textract-textractor/json",
            "seen": "2026-10-08"
          },
          {
            "what": "RDAP for amazonaws.com",
            "url": "https://rdap.verisign.com/com/v1/domain/amazonaws.com",
            "seen": "2026-10-08"
          }
        ],
        "openQuestions": [
          "unchecked: accuracy, processing time and table quality. We ran no documents through the API.",
          "unchecked: the AWS Data Processing Addendum and the list of services the AI services opt-out policy covers. We read the Service Terms and the opt-out overview page only.",
          "unchecked: whether an AWS managed read-only policy for Textract exists. The guide names `AmazonTextractFullAccess` only, and we did not read the managed policy reference.",
          "unchecked: whether failed or rejected pages are billed. The pricing page read does not say.",
          "unchecked: the remaining API reference pages. We read two operation pages and the common errors page, and took the rest from the Smithy model.",
          "No retention statement for documents sent to synchronous operations was found in the pages read.",
          "No MCP server for Textract was found. `awslabs.amazon-textract-mcp-server` returns 404 on PyPI and in the awslabs/mcp repository.",
          "The PyPI download figure is for `amazon-textract-textractor`, a helper library in the aws-samples organisation on GitHub. `boto3` covers every AWS service, so no Textract figure exists for it.",
          "The lead called the interface a REST API. The model declares the awsJson1_1 protocol, JSON over POST with an `X-Amz-Target` header, signed with SigV4.",
          "The Machine Learning Language SLA does not name Textract. The service has its own SLA at aws.amazon.com/textract/sla/."
        ]
      },
      "negative": 0,
      "verdict": "IAM policies limit a credential to single operations, CloudTrail logs every call, and page prices start at $1.50 per 1,000 in US East. Multipage files need S3 and an asynchronous job. Text detection covers six languages. Under the AWS Service Terms AWS may store and use documents to improve the service unless an AI services opt-out policy is set.",
      "bestFor": "Teams already on AWS with documents in S3 that need OCR, tables and form fields at volume with IAM and CloudTrail controls, and for US invoices, receipts, identity documents and mortgage packages.",
      "strengths": [
        "IAM policies grant single operations such as `textract:DetectDocumentText`, with temporary credentials, and CloudTrail logs every call without the document bytes or the response",
        "Text detection costs $1.50 per 1,000 pages in US East (N. Virginia) and $0.60 after a million pages a month, published without a login",
        "`ClientRequestToken` on the `Start` operations returns the same `JobId` for a repeated call, so a retried submission does not start a second job",
        "Every block carries a page number, a bounding box, a polygon and a confidence value from 0 to 100",
        "Amazon Textract SLA of 99.9 per cent monthly uptime per Region, and no Textract event on the AWS Health Dashboard since 10 July 2026"
      ],
      "weaknesses": [
        "AWS may store and use processed documents to improve the service, in other Regions too, unless an AI services opt-out policy is set on the AWS organisation",
        "Synchronous calls take one page of at most 10 MB. Multipage PDF and TIFF files must sit in S3 and run as asynchronous jobs",
        "Text detection covers English, French, German, Italian, Portuguese and Spanish only. Handwriting and queries are English only, and vertical text is not read",
        "Output is a flat list of JSON blocks linked by ID. No Markdown or plain-text output and no way to leave out word blocks or geometry",
        "The guide's document history stops at 21 April 2022, and the newest Textract entry in AWS's What's New feed is dated 30 June 2025"
      ],
      "agentNotes": [
        "Sign with SigV4 for service `textract` at `textract.\u003cregion\u003e.amazonaws.com`, or call `aws textract detect-document-text`. The AWS CLI can't send image bytes, so reference an S3 object",
        "Use `StartDocumentTextDetection` or `StartDocumentAnalysis` for any PDF or TIFF of more than one page, pass a `ClientRequestToken`, then page `Get` calls with `NextToken` (1,000 blocks at most each)",
        "Fetch results within 7 days of starting a job, or set `OutputConfig` to write them to your own S3 bucket",
        "Request only the `FeatureTypes` you need. Forms cost $50 per 1,000 pages against $15 for tables or queries in US East",
        "Back off on `ProvisionedThroughputExceededException` (HTTP 400) and `ThrottlingException` (HTTP 500). Neither carries Retry-After, and default quotas are 1 call a second in most Regions",
        "Set the AI services opt-out policy on the AWS organisation before sending customer documents"
      ],
      "metrics": {
        "kind": "remote",
        "measured": false
      },
      "reviewCount": 0,
      "avgRating": 0,
      "history": [
        {
          "basis": "public evidence",
          "confidence": "medium",
          "grade": "BB",
          "methodology": "0.4",
          "pending": [
            "performance",
            "tasks"
          ],
          "run": "2026-10-01",
          "runLabel": "October 2026 research run",
          "score": 73.5
        }
      ],
      "editorialScores": {
        "ergonomics": 70,
        "maintenance": 58,
        "payments": 35,
        "reliability": 96,
        "schema": 82,
        "security": 74,
        "transparency": 69
      },
      "provenanceScore": 95
    },
    "connect": {
      "install": "pip install boto3   # or: npm i @aws-sdk/client-textract",
      "http": "aws textract detect-document-text \\\n    --document '{\"S3Object\":{\"Bucket\":\"my-bucket\",\"Name\":\"scan.png\"}}' \\\n    --region us-east-1"
    },
    "letme": {
      "capability": "https://letme.dev/docs.parse",
      "tool": "https://letme.dev/amazon-textract"
    },
    "sameCompany": [
      "amazon-bedrock-customization",
      "agentcore-code-interpreter",
      "aws-end-user-messaging",
      "amazon-sns",
      "amazon-s3"
    ],
    "notable": [
      "Section 50.3 of the AWS Service Terms (last updated 1 October 2026) lets AWS store and use content processed by Textract to improve the service, including in other Regions. An AI services opt-out policy on the AWS organisation turns this off (https://aws.amazon.com/service-terms/)",
      "Synchronous operations take one page of at most 10 MB. Asynchronous jobs take PDF and TIFF files from S3 up to 500 MB and 3,000 pages (https://docs.aws.amazon.com/textract/latest/dg/limits-document.html)",
      "Text detection covers English, French, German, Italian, Portuguese and Spanish. Handwriting and queries are English only, and vertical text is not supported (https://docs.aws.amazon.com/textract/latest/dg/limits-document.html)",
      "Asynchronous results are kept encrypted for 7 days in a bucket Textract owns unless `OutputConfig` names a customer bucket (https://docs.aws.amazon.com/textract/latest/dg/api-async.html)",
      "The developer guide's document history has no entry after 21 April 2022, though signatures, the lending workflow, layout and Custom Queries launched later (https://docs.aws.amazon.com/textract/latest/dg/document-history.html)",
      "Identity analysis covers US passports and US driver's licences only, and the lending workflow is trained on US mortgage documents (https://docs.aws.amazon.com/textract/latest/dg/limits-document.html)",
      "The compliance page says an account processing data subject to PCI DSS must opt out by contacting AWS Support (https://docs.aws.amazon.com/textract/latest/dg/SERVICENAME-compliance.html)"
    ],
    "area": "web-data",
    "details": [
      {
        "label": "API",
        "value": "Amazon Textract API version 2018-06-27, 25 operations, awsJson1_1 protocol (JSON over POST), signed with SigV4. Reached through the AWS CLI (`aws textract`) and the AWS SDKs"
      },
      {
        "label": "Endpoint",
        "value": "`textract.\u003cregion\u003e.amazonaws.com`, with dual-stack `textract.\u003cregion\u003e.api.aws` and FIPS endpoints in US and Canada Regions. 16 Regions on the endpoints page, two GovCloud Regions included"
      },
      {
        "label": "Operations",
        "value": "`DetectDocumentText` for text, `AnalyzeDocument` for tables, forms, queries, signatures and layout, `AnalyzeExpense` for invoices and receipts, `AnalyzeID` for US identity documents, and `StartLendingAnalysis` for mortgage packages, which also classifies pages"
      },
      {
        "label": "Price per page",
        "value": "US East (N. Virginia), per 1,000 pages. Text $1.50, tables $15, queries $15, forms $50, layout $4, signatures $3.50, invoices and receipts $10, identity documents $25, lending $70"
      },
      {
        "label": "Output",
        "value": "JSON blocks (page, line, word, table, cell, key-value set, selection element, query result, layout element) linked by ID. No Markdown or plain-text output"
      },
      {
        "label": "Page references",
        "value": "Each block has a page number, a bounding box, a polygon and a confidence value"
      },
      {
        "label": "Structured extraction",
        "value": "Key-value pairs from forms, up to 15 natural-language queries a page synchronously and 30 asynchronously, and Custom Queries adapters trained on 5 to 2,500 of your documents"
      },
      {
        "label": "Limits",
        "value": "JPEG, PNG, PDF and TIFF. Synchronous calls take 1 page up to 10 MB. Asynchronous jobs take PDF and TIFF up to 500 MB and 3,000 pages from S3"
      },
      {
        "label": "Languages",
        "value": "English, French, German, Italian, Portuguese and Spanish. Handwriting and queries in English only. No vertical text"
      },
      {
        "label": "Free tier",
        "value": "Three months for new AWS customers. 1,000 pages a month for text detection, 100 a month for forms, tables, layout, queries, expense and identity analysis, 2,000 for lending. None for Custom Queries"
      },
      {
        "label": "Rate limits",
        "value": "Per account and Region. 25 `DetectDocumentText` and 10 `AnalyzeDocument` calls a second in US East (N. Virginia) and US West (Oregon), 1 a second in most other Regions. 600 concurrent asynchronous jobs in those two Regions, 100 elsewhere. Adjustable through Service Quotas"
      },
      {
        "label": "Idempotency",
        "value": "`ClientRequestToken` on the `Start` operations returns the same `JobId` for a repeated call"
      },
      {
        "label": "Data retention",
        "value": "Asynchronous results kept 7 days unless written to your S3 bucket. AWS may store documents to improve the service unless an AI services opt-out policy is set"
      },
      {
        "label": "Audit",
        "value": "CloudTrail logs every operation with the caller's identity. Image bytes and response fields are not logged"
      },
      {
        "label": "Agent tooling",
        "value": "No MCP server for Textract found. The AWS CLI and SDKs are the documented routes, with the Apache-2.0 `amazon-textract-textractor` Python library for reading responses"
      },
      {
        "label": "SLA",
        "value": "Amazon Textract SLA, 99.9 per cent monthly uptime per Region, credits of 10, 25 or 100 per cent"
      },
      {
        "label": "Compliance",
        "value": "In scope for SOC 1, 2 and 3 (page updated 11 August 2026). The guide names HIPAA, ISO and PCI programmes, with an account opt-out needed for PCI DSS data"
      }
    ],
    "unitPrices": [
      {
        "item": "Text detection",
        "unit": "1k-pages",
        "usd": 1.5,
        "note": "US East (N. Virginia), first million pages a month. $0.60 after"
      },
      {
        "item": "Document analysis, tables",
        "unit": "1k-pages",
        "usd": 15,
        "note": "US East (N. Virginia), first million pages. Same price for queries"
      },
      {
        "item": "Document analysis, forms",
        "unit": "1k-pages",
        "usd": 50,
        "note": "US East (N. Virginia), first million pages. $65 with tables, $70 with tables and queries"
      },
      {
        "item": "Layout",
        "unit": "1k-pages",
        "usd": 4,
        "note": "US East (N. Virginia). Free alongside forms, tables or queries"
      },
      {
        "item": "Invoices and receipts",
        "unit": "1k-pages",
        "usd": 10,
        "note": "US East (N. Virginia), first million pages"
      },
      {
        "item": "Identity documents",
        "unit": "1k-pages",
        "usd": 25,
        "note": "US East (N. Virginia), first 100,000 pages. $10 after"
      },
      {
        "item": "Lending workflow",
        "unit": "1k-pages",
        "usd": 70,
        "note": "US East (N. Virginia), first million pages"
      }
    ],
    "provenance": {
      "legalEntity": "Amazon Web Services, Inc.",
      "domain": "amazonaws.com",
      "domainRegistered": "2005-08-18",
      "endpointOnVendorDomain": true,
      "terms": "https://aws.amazon.com/agreement/",
      "privacy": "https://aws.amazon.com/privacy/",
      "statusPage": "https://health.aws.amazon.com/health/status",
      "changelog": "https://docs.aws.amazon.com/textract/latest/dg/document-history.html",
      "securityTxt": "expired",
      "checked": "2026-10-08",
      "notes": [
        "The AWS Customer Agreement (last updated 14 August 2026) governs use of the service, with other AWS entities as contracting party by account country.",
        "Section 50 of the AWS Service Terms (last updated 1 October 2026) adds terms for AI services and names Amazon Textract. Section 50.3 lets AWS store and use processed content to improve the service unless the customer sets an AI services opt-out policy (https://aws.amazon.com/service-terms/).",
        "The AWS Privacy Notice (last updated 18 May 2026) says it does not apply to content customers process with AWS services, which the agreement governs.",
        "https://aws.amazon.com/.well-known/security.txt carries Expires 2026-09-24T16:25:03Z, so it had expired on 8 October 2026.",
        "The changelog link is the developer guide's document history, whose newest entry is 21 April 2022.",
        "RDAP for amazonaws.com gives a registration date of 2005-08-18. The API answers at textract.\u003cregion\u003e.amazonaws.com, while product and legal pages sit on aws.amazon.com."
      ],
      "score": 95,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "Amazon Web Services, Inc.",
          "points": 20,
          "max": 20,
          "state": "ok"
        },
        {
          "check": "Domain age",
          "value": "amazonaws.com, registered 2005-08-18 (21 years)",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": "textract.us-east-1.amazonaws.com",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Terms of service",
          "value": "read, states 7 of the 7 things a reader expects",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Privacy policy",
          "value": "read, states 8 of the 8 things a reader expects",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Status page",
          "value": "health.aws.amazon.com/health/status",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Changelog",
          "value": "published",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "security.txt",
          "value": "published but past its Expires date",
          "points": 5,
          "max": 10,
          "state": "part"
        }
      ],
      "policies": [
        {
          "kind": "terms",
          "url": "https://aws.amazon.com/agreement/",
          "state": "read",
          "readAt": "2026-10-08",
          "statedDate": "2026-08-14",
          "words": 10799,
          "points": 10,
          "max": 10,
          "expected": [
            {
              "key": "terms.date",
              "label": "Gives the date it was last updated",
              "found": true,
              "quote": "Last Updated: August 14, 2026",
              "says": "Last updated 2026-08-14"
            },
            {
              "key": "terms.law",
              "label": "Names the governing law or courts",
              "found": true,
              "quote": "The laws of the Province of Ontario, Canada and federal laws of Canada applicable therein",
              "says": "The law of the Province of Ontario"
            },
            {
              "key": "terms.liability",
              "label": "States a limit on its liability",
              "found": true,
              "quote": "…UNDER THIS AGREEMENT OF EITHER AWS OR YOU, AND ANY OF OUR RESPECTIVE AFFILIATES OR LICENSORS, WILL NOT EXCEED THE AMOUNTS PAID BY YOU TO AWS UNDER THIS AGREEMENT FOR THE SERVICES THAT GAVE RISE TO THE LIABILITY DURING THE 12 MONTHS BEFORE THE LIABILITY AROSE;",
              "says": "Capped at the fees paid in the 12 months before the claim"
            },
            {
              "key": "terms.termination",
              "label": "Says how the agreement or account can be ended",
              "found": true,
              "quote": "If you become aware of any violation of your obligations under this Agreement caused by an End User, you will immediately suspend access to Your Content and the Services by such End User."
            },
            {
              "key": "terms.changes",
              "label": "Says how changes to the terms are announced",
              "found": true,
              "quote": "We may change, discontinue or add Service Level Agreements, provided, however, that we will provide at least 90 days’ advance notice for adverse changes to any Service Level Agreement.",
              "says": "Gives 90 days of notice before a change"
            },
            {
              "key": "terms.use",
              "label": "Lists what users may not do",
              "found": true,
              "quote": "AWS log-in credentials and private keys generated by the Services are for your internal use only and you will not sell, transfer or sublicense them to any other entity or person, except that you may disclose your private key to your agents and subcontractors performing work on your behalf."
            },
            {
              "key": "terms.sla",
              "label": "Refers to a service level or uptime commitment",
              "found": true,
              "quote": "Service Level Agreements and Service Terms apply to certain Services."
            }
          ],
          "toKnow": [
            {
              "key": "terms.cutoff",
              "label": "Says access can be ended without notice or for any reason",
              "found": true,
              "quote": "We may terminate this Agreement for any reason by providing you at least 30 days’ advance notice."
            },
            {
              "key": "terms.arbitration",
              "label": "Requires arbitration or waives class actions",
              "found": true,
              "quote": "Disputes will be resolved by binding arbitration, rather than in court, except that either party may elect to proceed in small claims court if your claims qualify."
            }
          ],
          "notes": [
            {
              "date": "2026-10-08",
              "text": "AWS may raise fees or add new fees for services already in use on 30 days' notice.",
              "quote": "We may increase or add new fees and charges for any existing Services you are using by giving you at least 30 days’ prior notice."
            },
            {
              "date": "2026-10-08",
              "text": "For 30 days after termination the customer may retrieve its content only if all amounts due are paid. This period does not apply when AWS terminates under Section 5.2(b).",
              "quote": "(ii) we will allow you to retrieve Your Content from the Services only if you have paid all amounts due under this Agreement."
            },
            {
              "date": "2026-10-08",
              "text": "The customer may not issue a press release or other public communication about the agreement or its use of AWS services.",
              "quote": "You will not issue any press release or make any other public communication with respect to this Agreement or your use of the Services or AWS Content."
            }
          ]
        },
        {
          "kind": "privacy",
          "url": "https://aws.amazon.com/privacy/",
          "state": "read",
          "readAt": "2026-10-08",
          "statedDate": "2026-05-18",
          "words": 8790,
          "points": 10,
          "max": 10,
          "expected": [
            {
              "key": "privacy.date",
              "label": "Gives the date it was last updated",
              "found": true,
              "quote": "Last Updated: May 18, 2026",
              "says": "Last updated 2026-05-18"
            },
            {
              "key": "privacy.collected",
              "label": "Says what personal data is collected",
              "found": true,
              "quote": "This Privacy Notice describes how we collect and use your personal information in relation to AWS websites, applications, products, services, events, and experiences that reference this Privacy Notice (together, “AWS Offerings”)."
            },
            {
              "key": "privacy.retention",
              "label": "Says how long data is kept",
              "found": true,
              "quote": "We keep your personal information to enable your continued use of AWS Offerings, for as long as it is required in order to fulfill the relevant purposes described in this Privacy Notice, as may be required by law (including for tax and accounting purposes), or as otherwise communicated to you.",
              "says": "For as long as needed, with no period named"
            },
            {
              "key": "privacy.processors",
              "label": "Says who else receives the data",
              "found": true,
              "quote": "Information from Other Sources: We might collect information about you from other sources, including service providers, partners, and publicly available sources."
            },
            {
              "key": "privacy.sale",
              "label": "Says whether personal data is sold or shared for advertising",
              "found": true,
              "quote": "Information about our customers is an important part of our business and we are not in the business of selling our customers’ personal information to others."
            },
            {
              "key": "privacy.rights",
              "label": "Says what rights people have over their data",
              "found": true,
              "quote": "Additionally, you may have the right to opt out of the processing of your personal data for cross-context behavioral advertising (also referred to as targeted advertising under certain state privacy laws)."
            },
            {
              "key": "privacy.contact",
              "label": "Gives a privacy contact",
              "found": true,
              "quote": "We provide additional information about our controllers and data protection officers (as applicable), the privacy, collection, and use of personal information of prospective and current customers of AWS Offerings located in certain jurisdictions.",
              "says": "Names a data protection officer"
            },
            {
              "key": "privacy.transfers",
              "label": "Says where data is transferred or stored",
              "found": true,
              "quote": "EU-US Data Privacy Framework, UK Extension, and Swiss-US Data Privacy Framework",
              "says": "Relies on the Data Privacy Framework"
            }
          ],
          "toKnow": [
            {
              "key": "privacy.sells",
              "label": "Says it sells personal data or shares it for advertising",
              "found": true,
              "quote": "To help you receive more useful and relevant ads on other sites and services and to measure their effectiveness, AWS shares limited personal information with our advertising partners."
            }
          ],
          "notes": [
            {
              "date": "2026-10-08",
              "text": "The notice does not cover content that customers process, store or host on AWS. It refers to the customer agreement for how that content is handled.",
              "quote": "This Privacy Notice does not apply to the “content” processed, stored, or hosted by our customers using AWS Offerings in connection with an AWS account."
            }
          ]
        }
      ]
    },
    "pageJsonUrl": "https://www.anchorterminal.com/tools/amazon-textract.json",
    "live": {
      "slug": "amazon-textract",
      "probe": {
        "target": "https://textract.us-east-1.amazonaws.com",
        "method": "get",
        "lastAt": "2026-10-09T10:14:07.611791061Z",
        "lastOk": true,
        "lastStatus": 404,
        "lastMs": 338,
        "authRequired": false,
        "uptime24h": 100,
        "uptime30d": 100,
        "p50ms24h": 331,
        "p95ms24h": 356,
        "samples24h": 28,
        "samples30d": 28,
        "days": [
          {
            "date": "2026-10-09",
            "probes": 28,
            "ok": 28
          }
        ]
      },
      "updatedAt": "2026-10-09T10:14:07.611791061Z"
    }
  }
}
