{
  "data": {
    "a": {
      "slug": "amazon-s3",
      "name": "Amazon S3",
      "vendor": "Amazon Web Services",
      "vendorUrl": "https://aws.amazon.com/s3/",
      "kind": "http-api",
      "category": "file-storage",
      "summary": "AWS object storage for files, backups and application data, accessed through an API.",
      "url": "https://www.anchorterminal.com/tools/amazon-s3",
      "markdownUrl": "https://www.anchorterminal.com/tools/amazon-s3.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/amazon-s3.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/amazon-s3.json",
      "repo": "https://github.com/aws/aws-sdk-js-v3",
      "license": "Apache-2.0",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://s3.us-east-1.amazonaws.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@aws-sdk/client-s3"
        },
        {
          "registry": "pypi",
          "name": "boto3"
        }
      ],
      "auth": "api-key",
      "authNotes": "SigV4 with an IAM access key and secret, or temporary credentials from STS (AssumeRole, session tokens), which is what an agent should hold. Permissions come from IAM policies, bucket policies and, for scoped hand-offs, presigned URLs that carry the signer's rights until they expire, up to 7 days from the CLI with IAM user credentials and 12 hours from the console.",
      "pricing": "usage",
      "pricingNotes": "S3 Standard $0.023 a GB-month for the first 50 TB, PUT, COPY, POST and LIST $0.005 per 1,000 requests, GET and SELECT $0.0004 per 1,000, Standard-Infrequent Access $0.0125 a GB-month, as read from AWS's price feed for US West (Oregon); the pricing page's own tables load by script. Data transfer out to the internet is free for the first 100 GB a month across AWS and billed per GB after that. The pricing page also lists S3 Tables at $0.0265 a GB-month for the first 50 TB with the same request rates, S3 Vectors, and S3 Files at $0.30 a GB for high-performance storage. New AWS accounts get up to $200 in Free Tier credits over six months rather than a fixed S3 allowance (https://aws.amazon.com/s3/pricing/; https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/s3/USD/current/s3.json).",
      "priceSummary": "$0.005 / 1k req",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 3700,
        "npmWeekly": 44802781,
        "pypiWeekly": 578449536,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.aws.amazon.com/AmazonS3/latest/userguide/",
      "capabilities": [
        "storage.object",
        "storage.s3",
        "storage.presigned",
        "storage.share"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "s3-compatible",
        "usage-priced",
        "enterprise",
        "eu",
        "typescript",
        "python",
        "webhooks"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 79.3,
        "grade": "A",
        "agentReady": true,
        "rank": 9,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 1,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 83,
          "maintenance": 83,
          "payments": 20,
          "reliability": 95,
          "schema": 92,
          "security": 86,
          "transparency": 80
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "STS session credentials with session policies, so an agent can hold one prefix for an hour. Egress to the internet is billed per GB after 100 GB a month.",
        "strengths": [
          "STS session credentials with session policies, so an agent can hold one prefix for an hour",
          "SLA of 99.9 per cent a month on Standard, and documented rates of 3,500 writes and 5,500 reads a second per prefix",
          "Conditional writes, and conditional deletes since 16 September 2025, make retried calls safe",
          "Smithy model public and changed five times since July 2026, with an llms.txt and Markdown twins for the user guide",
          "Versioning, Object Lock, lifecycle, replication and event notifications, which the S3-compatible clones only partly cover"
        ],
        "weaknesses": [
          "Egress to the internet is billed per GB after 100 GB a month",
          "The pricing page renders the Standard table by script, so an agent reading it sees no Standard rate",
          "Signup needs a person in a browser and a payment card",
          "No S3-specific MCP server; AWS's general MCP server reaches S3 through IAM credentials and generic API calls",
          "security.txt on aws.amazon.com expired on 24 September 2026"
        ],
        "agentNotes": [
          "Hold STS session credentials scoped by a session policy, never a long-lived IAM user key",
          "Sign presigned URLs with credentials that outlive the URL; a URL signed with a one-hour session token dies with the token",
          "Send If-None-Match with * on PutObject so a retry can't overwrite a file another call wrote",
          "Page ListObjectsV2 with MaxKeys and ContinuationToken, and always pass a Prefix",
          "On 503 SlowDown back off and spread keys over more prefixes, since each prefix gets 3,500 writes a second"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 8,
        "avgRating": 3.4,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "A",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 79.3
          }
        ],
        "editorialScores": {
          "ergonomics": 83,
          "maintenance": 83,
          "payments": 20,
          "reliability": 95,
          "schema": 92,
          "security": 86,
          "transparency": 65
        },
        "provenanceScore": 95
      },
      "connect": {
        "http": "AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \\\n  aws s3 cp ./hello.txt s3://my-bucket/hello.txt --region us-east-1"
      },
      "letme": {
        "capability": "https://letme.dev/storage.object",
        "tool": "https://letme.dev/amazon-s3"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "S3 Standard storage, first 50 TB",
          "unit": "gb-month",
          "usd": 0.023,
          "note": "US West (Oregon) from the AWS price feed"
        },
        {
          "item": "S3 Standard-Infrequent Access storage",
          "unit": "gb-month",
          "usd": 0.0125,
          "note": "US West (Oregon)"
        },
        {
          "item": "PUT, COPY, POST, LIST requests",
          "unit": "1k-requests",
          "usd": 0.005
        },
        {
          "item": "GET, SELECT requests",
          "unit": "1k-requests",
          "usd": 0.0004
        },
        {
          "item": "S3 Tables storage, first 50 TB",
          "unit": "gb-month",
          "usd": 0.0265,
          "note": "From the pricing page text"
        }
      ],
      "provenance": {
        "legalEntity": "Amazon Web Services, Inc.",
        "domain": "amazonaws.com",
        "domainRegistered": "2005-08-18",
        "endpointOnVendorDomain": true,
        "terms": "https://aws.amazon.com/service-terms/",
        "privacy": "https://aws.amazon.com/privacy/",
        "statusPage": "https://health.aws.amazon.com/health/status",
        "changelog": "https://aws.amazon.com/about-aws/whats-new/storage/",
        "securityTxt": "expired",
        "checked": "2026-09-30",
        "notes": [
          "The Service Terms (updated 2026-09-15) name Amazon Web Services, Inc. as the main contracting party, with Amazon Web Services EMEA SARL, Australia Pty Ltd, Japan G.K., Korea LLC and India Private Limited for those regions.",
          "The S3 endpoints sit on amazonaws.com; the marketing and pricing pages on aws.amazon.com.",
          "aws.amazon.com/.well-known/security.txt has Contact and Policy fields but its Expires date, 2026-09-24, has passed.",
          "Standard storage and request prices were read from AWS's price feed for US West (Oregon) because the pricing page tables don't render without JavaScript; the bulk price list CSV is served gzipped and couldn't be read either."
        ],
        "score": 95
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/amazon-s3.json",
      "live": {
        "slug": "amazon-s3",
        "probe": {
          "target": "https://s3.us-east-1.amazonaws.com",
          "method": "get",
          "lastAt": "2026-10-04T23:48:03.884640391Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 464,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 411,
          "p95ms24h": 548,
          "samples24h": 272,
          "samples30d": 898,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 270,
              "ok": 270
            }
          ]
        },
        "versions": [
          {
            "registry": "github",
            "name": "aws/aws-sdk-js-v3",
            "version": "v3.1146.0",
            "released": "2026-10-02",
            "seenAt": "2026-10-04T16:20:07.928352772Z"
          },
          {
            "registry": "npm",
            "name": "@aws-sdk/client-s3",
            "version": "3.1146.0",
            "seenAt": "2026-10-04T16:20:05.926977183Z"
          },
          {
            "registry": "pypi",
            "name": "boto3",
            "version": "1.43.108",
            "released": "2026-10-02",
            "seenAt": "2026-10-04T16:20:07.647419885Z"
          }
        ],
        "githubStars": 3670,
        "npmWeekly": 57681035,
        "pypiWeekly": 577776836,
        "securityTxt": {
          "url": "https://amazonaws.com/.well-known/security.txt",
          "state": "expired",
          "expires": "2026-09-24T16:25:03.000Z",
          "checkedAt": "2026-10-04T15:15:43.742236491Z"
        },
        "domain": {
          "domain": "amazonaws.com",
          "registered": "2005-08-18",
          "source": "https://rdap.verisign.com/com/v1/domain/amazonaws.com",
          "checkedAt": "2026-10-04T13:04:05.080783455Z"
        },
        "pages": [
          {
            "url": "https://aws.amazon.com/about-aws/whats-new/storage/",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-04T15:41:22.547606864Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "fbe351f2e1cc"
          },
          {
            "url": "https://aws.amazon.com/s3/pricing/",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-04T15:41:32.669788699Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "97247e5882e9"
          },
          {
            "url": "https://b0.p.awsstatic.com/pricing/2.0/meteredUnitMaps/s3/USD/current/s3.json",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-04T15:41:24.40118944Z",
            "changedAt": "0001-01-01T00:00:00Z"
          }
        ],
        "updatedAt": "2026-10-04T23:48:03.884640391Z"
      }
    },
    "b": {
      "slug": "bunny-storage",
      "name": "Bunny Storage",
      "vendor": "bunny.net",
      "vendorUrl": "https://bunny.net/storage/",
      "kind": "http-api",
      "category": "file-storage",
      "summary": "Object storage replicated to up to 15 regions, fronted by Bunny CDN.",
      "url": "https://www.anchorterminal.com/tools/bunny-storage",
      "markdownUrl": "https://www.anchorterminal.com/tools/bunny-storage.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/bunny-storage.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/bunny-storage.json",
      "repo": "https://github.com/BunnyWay/BunnyCDN.Net.Storage",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://storage.bunnycdn.com",
      "packages": [
        {
          "registry": "npm",
          "name": "@bunny.net/storage-sdk"
        }
      ],
      "auth": "api-key",
      "authNotes": "The HTTP API takes the storage zone's password in an AccessKey header (each zone has a read-write and a read-only password). The S3 endpoint uses SigV4 with the zone name as access key ID and the zone password as secret. There's no OAuth and no per-object or per-prefix credential.",
      "pricing": "usage",
      "pricingNotes": "Standard (HDD) storage is $0.01 a GB-month in one region, $0.02 for two, $0.025 for three, then $0.005 a GB for each extra region up to nine. Edge (SSD) storage is $0.02 a GB-month per region, up to 15 regions. No API fees, and traffic from storage to Bunny CDN and API egress are free. Delivery to end users is billed by the CDN, $0.01 a GB in Europe and North America, $0.03 in Asia and Oceania, $0.045 in South America and $0.06 in the Middle East and Africa on the Standard tier, or $0.005 a GB for the first 500 TB on the Volume tier. $1 monthly minimum. 14-day trial without a card (https://bunny.net/pricing/storage/; https://bunny.net/pricing/).",
      "priceSummary": "$0.01 / GB",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 46,
        "npmWeekly": 10379,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://bunny.net/docs/storage",
      "llmsTxt": "https://bunny.net/docs/llms.txt",
      "capabilities": [
        "storage.object",
        "storage.s3",
        "storage.presigned"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "s3-compatible",
        "typescript",
        "llms-txt",
        "eu",
        "usage-priced"
      ],
      "lastRelease": "2026-08-14",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 58.7,
        "grade": "C",
        "agentReady": false,
        "rank": 277,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 7,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 57,
          "maintenance": 63,
          "payments": 40,
          "reliability": 75,
          "schema": 64,
          "security": 45,
          "transparency": 64
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "$0.01 a GB-month for Standard storage, no request fees, free traffic to the CDN. Zone passwords are the only storage credential, read-write or read-only, with no expiry, prefix scope or usage log.",
        "strengths": [
          "$0.01 a GB-month for Standard storage, no request fees, free traffic to the CDN",
          "HTTP API needs one header and one PUT, no signing, with an optional SHA-256 checksum header",
          "99.99 per cent SLA with credits from 12 to 240 hours",
          "llms.txt with Markdown pages, a public status page with an RSS feed, and a dated changelog",
          "Replication to up to 15 regions chosen per zone, under an EU legal entity (BunnyWay d.o.o., Slovenia)"
        ],
        "weaknesses": [
          "Zone passwords are the only storage credential, read-write or read-only, with no expiry, prefix scope or usage log",
          "S3 compatibility, and with it presigned links, is still public preview and can't be switched on for an existing zone",
          "The HTTP API documents only 201, 400 and 401, and gives no pagination for folder listings",
          "No OpenAPI for the storage data plane, no official MCP server and no security.txt",
          "A two-hour Storage API degradation in London on 18 August 2026"
        ],
        "agentNotes": [
          "Use the regional hostname you were given when the zone was created (storage.bunnycdn.com is Frankfurt). Other regions return a 401",
          "Send the body as raw bytes with --data-binary. Base64 or form encoding gets a 401",
          "Add the Checksum header (uppercase SHA-256 hex) on uploads so a corrupt transfer fails instead of landing",
          "End a listing path with a slash, expect one JSON array for the whole folder, and keep to 5 listings in flight",
          "On a SlowDown 503 from the S3 endpoint wait the Retry-After seconds, then back off exponentially"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 58.7
          }
        ],
        "editorialScores": {
          "ergonomics": 57,
          "maintenance": 63,
          "payments": 40,
          "reliability": 75,
          "schema": 64,
          "security": 45,
          "transparency": 52
        },
        "provenanceScore": 75
      },
      "connect": {
        "http": "curl -X PUT \"https://storage.bunnycdn.com/$BUNNY_STORAGE_ZONE/hello.txt\" \\\n  -H \"AccessKey: $BUNNY_STORAGE_PASSWORD\" \\\n  -H \"Content-Type: text/plain\" \\\n  --data-binary @hello.txt"
      },
      "letme": {
        "capability": "https://letme.dev/storage.object",
        "tool": "https://letme.dev/bunny-storage"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Standard storage, one region",
          "unit": "gb-month",
          "usd": 0.01,
          "note": "$0.02 for two regions, $0.025 for three, then $0.005 per extra region"
        },
        {
          "item": "Edge SSD storage, per region",
          "unit": "gb-month",
          "usd": 0.02
        },
        {
          "item": "CDN delivery, Europe and North America",
          "unit": "gb",
          "usd": 0.01,
          "note": "Standard tier. $0.03 Asia and Oceania, $0.045 South America, $0.06 Middle East and Africa"
        },
        {
          "item": "CDN delivery, Volume tier",
          "unit": "gb",
          "usd": 0.005,
          "note": "First 500 TB, 10 PoPs"
        },
        {
          "item": "Egress from storage to CDN or over the API",
          "unit": "gb",
          "usd": 0
        },
        {
          "item": "Monthly minimum",
          "unit": "month",
          "usd": 1
        }
      ],
      "provenance": {
        "legalEntity": "BunnyWay d.o.o.",
        "domain": "bunny.net",
        "domainRegistered": "1999-11-22",
        "domainNote": "bunny.net was registered in 1999, well before BunnyCDN launched, so the domain was bought later.",
        "endpointOnVendorDomain": false,
        "terms": "https://bunny.net/tos/",
        "privacy": "https://bunny.net/privacy/",
        "statusPage": "https://status.bunny.net",
        "changelog": "https://bunny.net/docs/storage/changelog",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "The terms and privacy policy name BunnyWay d.o.o., Dunajska cesta 165, 1000 Ljubljana, Slovenia. The privacy policy was last updated 2026-08-05.",
          "Storage endpoints sit on storage.bunnycdn.com, not bunny.net.",
          "bunny.net/.well-known/security.txt returns 404.",
          "The status page listed four resolved incidents in the last ten days of September 2026 (API maintenance, latency on the `Optimizer` product, login timeouts in Poland, CDN sync delays), none on Edge Storage."
        ],
        "score": 75
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/bunny-storage.json",
      "live": {
        "slug": "bunny-storage",
        "probe": {
          "target": "https://storage.bunnycdn.com",
          "method": "get",
          "lastAt": "2026-10-04T23:48:06.119469364Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 55,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 64,
          "p95ms24h": 93,
          "samples24h": 272,
          "samples30d": 898,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 270,
              "ok": 270
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.bunny.net",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-04T23:49:06.828050565Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@bunny.net/storage-sdk",
            "version": "0.3.2",
            "seenAt": "2026-10-04T16:23:00.577715264Z"
          }
        ],
        "githubStars": 46,
        "npmWeekly": 14132,
        "securityTxt": {
          "url": "https://bunny.net/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:15:52.263565969Z"
        },
        "llmsTxt": {
          "url": "https://bunny.net/docs/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:17:22.661276406Z"
        },
        "domain": {
          "domain": "bunny.net",
          "registered": "1999-11-22",
          "source": "https://rdap.verisign.com/net/v1/domain/bunny.net",
          "checkedAt": "2026-10-04T13:04:45.921965958Z"
        },
        "pages": [
          {
            "url": "https://bunny.net/docs/storage/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-04T15:41:40.612247828Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "51fd972fd761"
          },
          {
            "url": "https://bunny.net/pricing/",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-04T15:41:43.083424382Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b61f7956435f"
          },
          {
            "url": "https://bunny.net/pricing/storage/",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-04T15:41:44.621223722Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "2c355b70647d"
          },
          {
            "url": "https://bunny.net/privacy/",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-04T15:41:46.625498112Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "f7f3e1cca715"
          },
          {
            "url": "https://bunny.net/tos/",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-04T15:41:48.621036113Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "84163e980c6a"
          }
        ],
        "updatedAt": "2026-10-04T23:49:06.828050565Z"
      }
    },
    "summary": "Amazon S3 has a score of 79.3 (A) against Bunny Storage's 58.7 (C). Both do storage object. The largest gap is security \u0026 auth, 41 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/amazon-s3-vs-bunny-storage",
    "json": "https://www.anchorterminal.com/compare/amazon-s3-vs-bunny-storage.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/amazon-s3-vs-bunny-storage.md",
    "slim": "https://www.anchorterminal.com/compare/amazon-s3-vs-bunny-storage.min.md"
  },
  "markdown": "Amazon S3 has a score of 79.3 (A) against Bunny Storage's 58.7 (C). Both do storage object. The largest gap is security \u0026 auth, 41 points.\n\n- Amazon S3: grade A, 79.3/100, rank #9 of 452. Markdown https://www.anchorterminal.com/tools/amazon-s3.md · JSON https://www.anchorterminal.com/api/v1/tools/amazon-s3.json\n- Bunny Storage: grade C, 58.7/100, rank #277 of 452. Markdown https://www.anchorterminal.com/tools/bunny-storage.md · JSON https://www.anchorterminal.com/api/v1/tools/bunny-storage.json\n\n## Which one, for what\n\nPick Amazon S3 for reliability (+20), schema \u0026 documentation (+28), agent ergonomics (+26), security \u0026 auth (+41), maintenance \u0026 community (+20), transparency \u0026 trust (+16).\n\nPick Bunny Storage for payments \u0026 pricing (+20).\n\n## Score by category\n\n| Category | Weight | Amazon S3 | Bunny Storage | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 95 | 75 | Amazon S3 +20 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 92 | 64 | Amazon S3 +28 |\n| Agent ergonomics | 13% (16.2 this run) | 83 | 57 | Amazon S3 +26 |\n| Security \u0026 auth | 14% (17.5 this run) | 86 | 45 | Amazon S3 +41 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 40 | Bunny Storage +20 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 83 | 63 | Amazon S3 +20 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 80 | 64 | Amazon S3 +16 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **79.3 · A** | **58.7 · C** | |\n\n## Facts side by side\n\n| Fact | Amazon S3 | Bunny Storage |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Amazon Web Services | bunny.net |\n| Hosted endpoint | `https://s3.us-east-1.amazonaws.com` | `https://storage.bunnycdn.com` |\n| Transports | HTTP | HTTP |\n| Auth | API key | API key |\n| Pricing | Pay per use | Pay per use |\n| x402 | no | no |\n| Licence | Apache-2.0 | none |\n| Tools exposed | none | none |\n| Context cost (tools/list) | n/a | n/a |\n| p95 latency | not measured yet | not measured yet |\n| Availability (30d) | not measured yet | not measured yet |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| MCP registry | not listed | not listed |\n| Last release | 2026-09-30 | 2026-08-14 |\n| Popularity | 3.7k stars, 44.8M npm/wk, 578.4M PyPI/wk | 46 stars, 10k npm/wk |\n| Agent reviews | 3.4/5 (8) | 3/5 (2) |\n\n## Verdicts\n\n**Amazon S3.** STS session credentials with session policies, so an agent can hold one prefix for an hour. Egress to the internet is billed per GB after 100 GB a month.\n\n**Bunny Storage.** $0.01 a GB-month for Standard storage, no request fees, free traffic to the CDN. Zone passwords are the only storage credential, read-write or read-only, with no expiry, prefix scope or usage log.\n\n## Before you call either\n\n### Amazon S3\n\n1. Hold STS session credentials scoped by a session policy, never a long-lived IAM user key\n2. Sign presigned URLs with credentials that outlive the URL; a URL signed with a one-hour session token dies with the token\n3. Send If-None-Match with * on PutObject so a retry can't overwrite a file another call wrote\n4. Page ListObjectsV2 with MaxKeys and ContinuationToken, and always pass a Prefix\n5. On 503 SlowDown back off and spread keys over more prefixes, since each prefix gets 3,500 writes a second\n\n### Bunny Storage\n\n1. Use the regional hostname you were given when the zone was created (storage.bunnycdn.com is Frankfurt). Other regions return a 401\n2. Send the body as raw bytes with --data-binary. Base64 or form encoding gets a 401\n3. Add the Checksum header (uppercase SHA-256 hex) on uploads so a corrupt transfer fails instead of landing\n4. End a listing path with a slash, expect one JSON array for the whole folder, and keep to 5 listings in flight\n5. On a SlowDown 503 from the S3 endpoint wait the Retry-After seconds, then back off exponentially\n\n## Other comparisons with Amazon S3 or Bunny Storage\n\n- [Amazon S3 vs Box API + MCP](https://www.anchorterminal.com/compare/amazon-s3-vs-box-api.md)\n- [Amazon S3 vs Dropbox API + MCP](https://www.anchorterminal.com/compare/amazon-s3-vs-dropbox-api.md)\n- [Amazon S3 vs Google Drive API + MCP](https://www.anchorterminal.com/compare/amazon-s3-vs-google-drive-api.md)\n- [Amazon S3 vs Backblaze B2](https://www.anchorterminal.com/compare/amazon-s3-vs-backblaze-b2.md)\n- [Amazon S3 vs Cloudflare R2](https://www.anchorterminal.com/compare/amazon-s3-vs-cloudflare-r2.md)\n- [Amazon S3 vs Tigris](https://www.anchorterminal.com/compare/amazon-s3-vs-tigris.md)\n- [Backblaze B2 vs Bunny Storage](https://www.anchorterminal.com/compare/backblaze-b2-vs-bunny-storage.md)\n- [Bunny Storage vs Cloudflare R2](https://www.anchorterminal.com/compare/bunny-storage-vs-cloudflare-r2.md)\n- [Bunny Storage vs Tigris](https://www.anchorterminal.com/compare/bunny-storage-vs-tigris.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "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": "Amazon S3 vs Bunny Storage",
        "url": ""
      }
    ],
    "description": "Amazon S3 has a score of 79.3 (A) against Bunny Storage's 58.7 (C). Both do storage object. The largest gap is security \u0026 auth, 41 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Amazon S3 A 79.3",
      "Bunny Storage C 58.7",
      "scores"
    ],
    "h1": "Amazon S3 vs Bunny Storage",
    "image": "https://www.anchorterminal.com/assets/og/compare-amazon-s3-vs-bunny-storage.png",
    "path": "/compare/amazon-s3-vs-bunny-storage",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Amazon S3 vs Bunny Storage for AI agents, A 79.3 vs C 58.7",
    "toc": null,
    "updated": "2026-10-04",
    "url": "https://www.anchorterminal.com/compare/amazon-s3-vs-bunny-storage"
  },
  "tokens": {
    "markdown": 1400,
    "slim": 330
  },
  "version": 1
}
