{
  "data": {
    "a": {
      "slug": "azure-blob-storage",
      "name": "Azure Blob Storage",
      "vendor": "Microsoft Corporation",
      "vendorUrl": "https://azure.microsoft.com/en-us/products/storage/blobs",
      "kind": "http-api",
      "category": "file-storage",
      "summary": "Microsoft Azure's object storage for files, backups and application data. Agents call a REST API or the Azure SDKs on a storage account, signing in with Microsoft Entra ID, an account key or a shared access signature.",
      "url": "https://www.anchorterminal.com/tools/azure-blob-storage",
      "markdownUrl": "https://www.anchorterminal.com/tools/azure-blob-storage.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/azure-blob-storage.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/azure-blob-storage.json",
      "repo": "https://github.com/Azure/azure-rest-api-specs",
      "license": "Proprietary service under Microsoft's Product Terms. The Azure SDK client libraries are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://\u003caccount\u003e.blob.core.windows.net",
      "packages": [
        {
          "registry": "pypi",
          "name": "azure-storage-blob"
        },
        {
          "registry": "npm",
          "name": "@azure/storage-blob"
        }
      ],
      "auth": "mixed",
      "authNotes": "Three routes. Microsoft Entra ID OAuth 2.0 bearer tokens, authorised by Azure roles assigned on a container, account, resource group or subscription, which Microsoft recommends. Shared Key, an HMAC signature made with one of the account's access keys, which carry full access and are accepted until the owner sets `AllowSharedKeyAccess` to false. A shared access signature (SAS), a signed query string that grants chosen permissions on a resource until an expiry time. A user delegation SAS is signed with a key obtained through Entra ID and lasts at most seven days. Access is self-serve inside an Azure subscription (https://learn.microsoft.com/en-us/rest/api/storageservices/authorize-requests-to-azure-storage, https://learn.microsoft.com/en-us/azure/storage/blobs/authorize-access-azure-active-directory).",
      "pricing": "usage",
      "pricingNotes": "Hot tier LRS storage is $0.0208 a GB-month for the first 50 TB in East US, cool $0.0152, cold $0.0036 and archive $0.00099. Hot write operations cost $0.05 per 10,000, list and create container operations $0.05, read and other operations $0.004. Cool and cold reads add a retrieval charge of $0.01 and $0.03 a GB. The pricing page draws its numbers by script and showed none, so these come from the Azure Retail Prices API (https://prices.azure.com/api/retail/prices?$filter=serviceName%20eq%20%27Storage%27%20and%20armRegionName%20eq%20%27eastus%27%20and%20productName%20eq%20%27General%20Block%20Blob%20v2%27). Internet egress is billed separately as bandwidth and its rate was not read. No free allowance for Blob Storage could be read, because the free services page lists its services by script. A new Azure account gets $200 of credit for 30 days and needs a phone number and a credit or debit card (https://azure.microsoft.com/en-us/pricing/purchase-options/azure-account).",
      "priceSummary": "$0.005 / 1k req",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Blob Storage REST reference, the storage docs read or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 12530696,
        "pypiWeekly": 22597364,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://learn.microsoft.com/en-us/rest/api/storageservices/blob-service-rest-api",
      "openapi": "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/storage/data-plane/Microsoft.BlobStorage/stable/2026-10-06/blob.json",
      "capabilities": [
        "storage.object",
        "storage.presigned",
        "storage.share",
        "infra.azure"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "usage-priced",
        "card-required",
        "openapi",
        "oauth",
        "python",
        "typescript",
        "enterprise",
        "sla",
        "eu"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 75.7,
        "grade": "BB",
        "agentReady": true,
        "rank": 40,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 4,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 84,
          "maintenance": 80,
          "payments": 20,
          "reliability": 88,
          "schema": 85,
          "security": 81,
          "transparency": 80
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Microsoft Entra ID roles can be scoped to one container, and a user delegation signature hands out a link that expires within seven days. Account keys with full access stay enabled until the owner turns them off, request logs are off until configured, and an Azure account needs a person, a phone number and a payment card.",
        "bestFor": "Agents and runtimes already on Azure, where a managed identity writes to one container with no stored key, and jobs that need tiers, immutability or geo-redundant copies.",
        "strengths": [
          "Microsoft Entra ID roles such as Storage Blob Data Reader can be assigned on one container, with no stored key for workloads on Azure",
          "A user delegation shared access signature is signed with Entra credentials, lasts at most seven days and can be limited by permission, IP address and protocol",
          "SLA of 99.9 per cent on the hot tier, 99.99 per cent for reads on RA-GRS accounts, in the 1 October 2026 SLA document",
          "Public OpenAPI 2.0 contract with 69 operations for service version 2026-10-06, and Learn pages returned as Markdown on request",
          "Conditional headers, leases, soft delete of 1 to 365 days and immutability policies protect against a wrong overwrite or delete"
        ],
        "weaknesses": [
          "Shared Key authorisation with the account's access keys is allowed until the owner sets `AllowSharedKeyAccess` to false",
          "Request logs are not collected until a diagnostic setting routes the StorageRead, StorageWrite and StorageDelete categories somewhere",
          "Requests and responses use headers and XML, and every authorised call must carry `x-ms-version`",
          "The pricing page draws its numbers by script, so an agent reading it sees no price. The Retail Prices API has them",
          "An Azure account needs a phone number and a credit or debit card, and no free Blob Storage allowance could be read"
        ],
        "agentNotes": [
          "Request an Entra ID token for https://storage.azure.com/ and send it as a Bearer header with `x-ms-version` and `x-ms-date`. Put Blob also needs `x-ms-blob-type: BlockBlob`",
          "Ask for a Storage Blob Data role on the one container. Role changes can take up to 10 minutes to apply",
          "To share a file, call Get User Delegation Key, then sign a SAS with `sp=r`, `spr=https` and a short expiry. Treat the URL as a secret",
          "Send `If-None-Match: *` on Put Blob so a retry can't overwrite a blob another call wrote",
          "On 503 ServerBusy back off exponentially. After 500 OperationTimedOut check the blob's state before retrying, since the write may have succeeded"
        ],
        "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": 75.7
          }
        ],
        "editorialScores": {
          "ergonomics": 84,
          "maintenance": 80,
          "payments": 20,
          "reliability": 88,
          "schema": 85,
          "security": 81,
          "transparency": 73
        },
        "provenanceScore": 86
      },
      "connect": {
        "install": "pip install azure-storage-blob azure-identity   # or: npm i @azure/storage-blob @azure/identity",
        "http": "PUT https://myaccount.blob.core.windows.net/mycontainer/myblob\nx-ms-version: 2026-04-06\nx-ms-date: \u003cdate\u003e\nx-ms-blob-type: BlockBlob\nAuthorization: Bearer \u003cEntra ID access token for https://storage.azure.com/\u003e"
      },
      "letme": {
        "capability": "https://letme.dev/storage.object",
        "tool": "https://letme.dev/azure-blob-storage"
      },
      "sameCompany": [
        "azure-foundry-fine-tuning",
        "azure-ai-content-safety",
        "azure-speech-to-text",
        "azure-text-to-speech",
        "microsoft-agent-framework",
        "microsoft-execution-containers",
        "microsoft-entra-agent-id",
        "azure-key-vault",
        "azure-document-intelligence",
        "azure-devops-mcp",
        "microsoft-learn-mcp",
        "playwright-mcp",
        "azure-mcp",
        "azure-maps",
        "azure-translator",
        "microsoft-graph-calendar",
        "onedrive-sharepoint",
        "microsoft-teams",
        "dynamics-365-sales",
        "power-automate",
        "foundry-local",
        "microsoft-advertising-api",
        "microsoft-excel-graph",
        "outlook-mail-graph"
      ],
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Hot LRS storage, first 50 TB",
          "unit": "gb-month",
          "usd": 0.0208,
          "note": "East US, general-purpose v2, from the Azure Retail Prices API"
        },
        {
          "item": "Cool LRS storage",
          "unit": "gb-month",
          "usd": 0.0152,
          "note": "East US"
        },
        {
          "item": "Hot LRS write operations",
          "unit": "1k-requests",
          "usd": 0.005,
          "note": "$0.05 per 10,000"
        },
        {
          "item": "Hot read operations",
          "unit": "1k-requests",
          "usd": 0.0004,
          "note": "$0.004 per 10,000"
        }
      ],
      "provenance": {
        "legalEntity": "Microsoft Corporation",
        "domain": "microsoft.com",
        "domainRegistered": "1991-05-02",
        "domainNote": "Accounts answer at \u003caccount\u003e.blob.core.windows.net, as Microsoft's REST reference gives it. RDAP shows windows.net registered on 1995-08-10. Docs are on learn.microsoft.com.",
        "endpointOnVendorDomain": true,
        "terms": "https://www.microsoft.com/licensing/terms/product/ForOnlineServices/all",
        "privacy": "https://www.microsoft.com/en-us/privacy/privacystatement",
        "statusPage": "https://azure.status.microsoft/en-us/status",
        "changelog": "https://learn.microsoft.com/en-us/rest/api/storageservices/versioning-for-the-azure-storage-services",
        "securityTxt": "expired",
        "checked": "2026-10-08",
        "notes": [
          "The Product Terms for Online Services cover Microsoft Azure, carry an acceptable use policy and a competitive benchmarking clause, and point to the Data Protection Addendum. The page showed no effective date when read on 8 October 2026.",
          "Self-serve Azure accounts also accept the Microsoft Online Subscription Agreement (last updated March 2019, Microsoft Corporation, Washington law) at https://azure.microsoft.com/en-us/support/legal/subscription-agreement/, which incorporates the Online Services Terms and the SLAs.",
          "The privacy statement (last updated September 2026) names Microsoft Corporation, One Microsoft Way, Redmond, Washington 98052, and Microsoft Ireland Operations Limited. It lists Microsoft Azure among the enterprise online services covered by the Product Terms.",
          "The Data Protection Addendum read is the English edition of 22 May 2026, a Word file linked from https://www.microsoft.com/licensing/docs/view/Microsoft-Products-and-Services-Data-Protection-Addendum-DPA.",
          "https://www.microsoft.com/.well-known/security.txt shows Expires 2026-09-23T16:00:00.000Z. It points to the MSRC researcher portal, the bounty policy and the coordinated disclosure policy.",
          "RDAP gives 1991-05-02 for microsoft.com and 1995-08-10 for windows.net. The registry record does not name a registrant.",
          "The versioning page is dated 23 September 2026 and each service version has its own page of changes."
        ],
        "score": 86
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/azure-blob-storage.json",
      "live": {
        "slug": "azure-blob-storage",
        "probe": {
          "target": "https://\u003caccount\u003e.blob.core.windows.net",
          "method": "get",
          "lastAt": "2026-10-09T11:46:22.69203777Z",
          "lastOk": false,
          "lastStatus": 0,
          "lastMs": 0,
          "lastNote": "DNS lookup failed",
          "authRequired": false,
          "uptime24h": 0,
          "uptime30d": 0,
          "p50ms24h": 0,
          "p95ms24h": 0,
          "samples24h": 44,
          "samples30d": 44,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 44,
              "ok": 0
            }
          ],
          "outages": [
            {
              "start": "2026-10-09T07:40:20.163794763Z",
              "end": "0001-01-01T00:00:00Z",
              "note": "DNS lookup failed"
            }
          ]
        },
        "updatedAt": "2026-10-09T11:46:22.69203777Z"
      }
    },
    "answer": "Azure Blob Storage scores 75.7 (BB) on agent readiness against Bunny Storage's 58.3 (C), and leads in 6 of 7 scored categories. Bunny Storage leads on payments \u0026 pricing.",
    "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.3,
        "grade": "C",
        "agentReady": false,
        "rank": 525,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 9,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 57,
          "maintenance": 63,
          "payments": 40,
          "reliability": 75,
          "schema": 64,
          "security": 45,
          "transparency": 60
        },
        "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.",
        "bestFor": "An agent that publishes files to be served through a CDN at the lowest price and doesn't need fine-grained credentials.",
        "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.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 58.3
          }
        ],
        "editorialScores": {
          "ergonomics": 57,
          "maintenance": 63,
          "payments": 40,
          "reliability": 75,
          "schema": 64,
          "security": 45,
          "transparency": 52
        },
        "provenanceScore": 67
      },
      "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": 67
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/bunny-storage.json",
      "live": {
        "slug": "bunny-storage",
        "probe": {
          "target": "https://storage.bunnycdn.com",
          "method": "get",
          "lastAt": "2026-10-09T11:46:24.785830685Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 55,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 64,
          "p95ms24h": 106,
          "samples24h": 259,
          "samples30d": 2109,
          "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": 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": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 125,
              "ok": 125
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.bunny.net",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-09T11:38:19.513573126Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@bunny.net/storage-sdk",
            "version": "0.3.2",
            "seenAt": "2026-10-08T16:04:17.201676857Z"
          }
        ],
        "githubStars": 46,
        "npmWeekly": 14083,
        "securityTxt": {
          "url": "https://bunny.net/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:46.132726705Z"
        },
        "llmsTxt": {
          "url": "https://bunny.net/docs/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-08T14:00:09.685757649Z"
        },
        "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-06T16:06:09.17944528Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "51fd972fd761"
          },
          {
            "url": "https://bunny.net/pricing/",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-08T18:16:19.999661462Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b61f7956435f"
          },
          {
            "url": "https://bunny.net/pricing/storage/",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-08T18:16:20.00512301Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "2c355b70647d"
          },
          {
            "url": "https://bunny.net/privacy/",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-08T18:16:22.004892686Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "f7f3e1cca715"
          },
          {
            "url": "https://bunny.net/tos/",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-08T18:16:24.004369379Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "84163e980c6a"
          }
        ],
        "updatedAt": "2026-10-09T11:46:24.785830685Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Microsoft Corporation",
        "b": "bunny.net",
        "name": "Vendor"
      },
      {
        "a": "https://\u003caccount\u003e.blob.core.windows.net",
        "b": "https://storage.bunnycdn.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Microsoft's Product Terms. The Azure SDK client libraries are MIT",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-30",
        "b": "2026-08-14",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-09-01",
        "b": "no date given",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "12.5M npm/wk, 22.6M PyPI/wk",
        "b": "46 stars, 10k npm/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Azure Blob Storage scores 75.7 (BB) on agent readiness against Bunny Storage's 58.3 (C), and leads in 6 of 7 scored categories. Bunny Storage leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, Azure Blob Storage or Bunny Storage?"
      },
      {
        "answer": "Azure Blob Storage takes an API key or an OAuth sign-in. Bunny Storage needs an API key.",
        "question": "Do Azure Blob Storage and Bunny Storage need an API key?"
      },
      {
        "answer": "Yes. Azure Blob Storage has a hosted endpoint at https://\u003caccount\u003e.blob.core.windows.net and Bunny Storage at https://storage.bunnycdn.com.",
        "question": "Can an agent call Azure Blob Storage and Bunny Storage without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 88 against 75",
          "Schema \u0026 documentation, 85 against 64",
          "Agent ergonomics, 84 against 57",
          "Security \u0026 auth, 81 against 45",
          "Maintenance \u0026 community, 80 against 63",
          "Transparency \u0026 trust, 80 against 60"
        ],
        "also": [
          "Agent-ready, a grade of BB or better"
        ],
        "goodFor": "Agents and runtimes already on Azure, where a managed identity writes to one container with no stored key, and jobs that need tiers, immutability or geo-redundant copies.",
        "slug": "azure-blob-storage",
        "watchFor": "Shared Key authorisation with the account's access keys is allowed until the owner sets `AllowSharedKeyAccess` to false"
      },
      {
        "aheadOn": [
          "Payments \u0026 pricing, 40 against 20"
        ],
        "also": null,
        "goodFor": "An agent that publishes files to be served through a CDN at the lowest price and doesn't need fine-grained credentials.",
        "slug": "bunny-storage",
        "watchFor": "Zone passwords are the only storage credential, read-write or read-only, with no expiry, prefix scope or usage log"
      }
    ],
    "job": {
      "capability": "storage.object",
      "name": "Storage object"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-box-api.json",
        "title": "Azure Blob Storage vs Box API + MCP",
        "url": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-box-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-dropbox-api.json",
        "title": "Azure Blob Storage vs Dropbox API + MCP",
        "url": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-dropbox-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-google-drive-api.json",
        "title": "Azure Blob Storage vs Google Drive API + MCP",
        "url": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-google-drive-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-s3-vs-azure-blob-storage.json",
        "title": "Amazon S3 vs Azure Blob Storage",
        "url": "https://www.anchorterminal.com/compare/amazon-s3-vs-azure-blob-storage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-s3-vs-bunny-storage.json",
        "title": "Amazon S3 vs Bunny Storage",
        "url": "https://www.anchorterminal.com/compare/amazon-s3-vs-bunny-storage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-backblaze-b2.json",
        "title": "Azure Blob Storage vs Backblaze B2",
        "url": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-backblaze-b2"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-cloudflare-r2.json",
        "title": "Azure Blob Storage vs Cloudflare R2",
        "url": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-cloudflare-r2"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-tigris.json",
        "title": "Azure Blob Storage vs Tigris",
        "url": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-tigris"
      },
      {
        "json": "https://www.anchorterminal.com/compare/backblaze-b2-vs-bunny-storage.json",
        "title": "Backblaze B2 vs Bunny Storage",
        "url": "https://www.anchorterminal.com/compare/backblaze-b2-vs-bunny-storage"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bunny-storage-vs-cloudflare-r2.json",
        "title": "Bunny Storage vs Cloudflare R2",
        "url": "https://www.anchorterminal.com/compare/bunny-storage-vs-cloudflare-r2"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bunny-storage-vs-tigris.json",
        "title": "Bunny Storage vs Tigris",
        "url": "https://www.anchorterminal.com/compare/bunny-storage-vs-tigris"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-onedrive-sharepoint.json",
        "title": "Azure Blob Storage vs OneDrive and SharePoint files (Microsoft Graph)",
        "url": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-onedrive-sharepoint"
      }
    ],
    "scores": [
      {
        "azure-blob-storage": 88,
        "bunny-storage": 75,
        "by": 13,
        "edge": "azure-blob-storage",
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "azure-blob-storage": 85,
        "bunny-storage": 64,
        "by": 21,
        "edge": "azure-blob-storage",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "azure-blob-storage": 84,
        "bunny-storage": 57,
        "by": 27,
        "edge": "azure-blob-storage",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "azure-blob-storage": 81,
        "bunny-storage": 45,
        "by": 36,
        "edge": "azure-blob-storage",
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "azure-blob-storage": 20,
        "bunny-storage": 40,
        "by": 20,
        "edge": "bunny-storage",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "azure-blob-storage": 80,
        "bunny-storage": 63,
        "by": 17,
        "edge": "azure-blob-storage",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "azure-blob-storage": 80,
        "bunny-storage": 60,
        "by": 20,
        "edge": "azure-blob-storage",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Azure Blob Storage scores 75.7 (BB) on agent readiness against Bunny Storage's 58.3 (C), and leads in 6 of 7 scored categories. Bunny Storage leads on payments \u0026 pricing. Both do storage object.",
    "verdicts": {
      "azure-blob-storage": "Microsoft Entra ID roles can be scoped to one container, and a user delegation signature hands out a link that expires within seven days. Account keys with full access stay enabled until the owner turns them off, request logs are off until configured, and an Azure account needs a person, a phone number and a payment card.",
      "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-bunny-storage",
    "json": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-bunny-storage.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-bunny-storage.md",
    "slim": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-bunny-storage.min.md"
  },
  "markdown": "Azure Blob Storage scores 75.7 (BB) on agent readiness against Bunny Storage's 58.3 (C), and leads in 6 of 7 scored categories. Bunny Storage leads on payments \u0026 pricing. Both do storage object.\n\n- Azure Blob Storage: grade BB, 75.7/100, rank #40 of 842. Markdown https://www.anchorterminal.com/tools/azure-blob-storage.md · JSON https://www.anchorterminal.com/api/v1/tools/azure-blob-storage.json\n- Bunny Storage: grade C, 58.3/100, rank #525 of 842. 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\n### Azure Blob Storage (BB)\n\nGood for: Agents and runtimes already on Azure, where a managed identity writes to one container with no stored key, and jobs that need tiers, immutability or geo-redundant copies.\n\nAhead on:\n- Reliability, 88 against 75\n- Schema \u0026 documentation, 85 against 64\n- Agent ergonomics, 84 against 57\n- Security \u0026 auth, 81 against 45\n- Maintenance \u0026 community, 80 against 63\n- Transparency \u0026 trust, 80 against 60\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n\nWatch for: Shared Key authorisation with the account's access keys is allowed until the owner sets `AllowSharedKeyAccess` to false\n\n### Bunny Storage (C)\n\nGood for: An agent that publishes files to be served through a CDN at the lowest price and doesn't need fine-grained credentials.\n\nAhead on:\n- Payments \u0026 pricing, 40 against 20\n\nWatch for: Zone passwords are the only storage credential, read-write or read-only, with no expiry, prefix scope or usage log\n\n\n## Score by category\n\n| Category | Weight | Azure Blob Storage | Bunny Storage | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 88 | 75 | Azure Blob Storage +13 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 85 | 64 | Azure Blob Storage +21 |\n| Agent ergonomics | 13% (16.2 this run) | 84 | 57 | Azure Blob Storage +27 |\n| Security \u0026 auth | 14% (17.5 this run) | 81 | 45 | Azure Blob Storage +36 |\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) | 80 | 63 | Azure Blob Storage +17 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 80 | 60 | Azure Blob Storage +20 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **75.7 · BB** | **58.3 · C** | |\n\n## Facts side by side\n\n| Fact | Azure Blob Storage | Bunny Storage |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Microsoft Corporation | bunny.net |\n| Hosted endpoint | `https://\u003caccount\u003e.blob.core.windows.net` | `https://storage.bunnycdn.com` |\n| Transports | HTTP | HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Pay per use | Pay per use |\n| x402 | no | no |\n| Licence | Proprietary service under Microsoft's Product Terms. The Azure SDK client libraries are MIT | none |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Last release | 2026-09-30 | 2026-08-14 |\n| Terms last updated | no date given | no date given |\n| Privacy policy last updated | 2026-09-01 | no date given |\n| Customer content may train models | yes | not found in the text |\n| Terms restrict automated access | yes | not found in the text |\n| Terms restrict benchmarking | yes | not found in the text |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 12.5M npm/wk, 22.6M PyPI/wk | 46 stars, 10k npm/wk |\n| Agent reviews | none | 3/5 (2) |\n\n## Verdicts\n\n**Azure Blob Storage.** Microsoft Entra ID roles can be scoped to one container, and a user delegation signature hands out a link that expires within seven days. Account keys with full access stay enabled until the owner turns them off, request logs are off until configured, and an Azure account needs a person, a phone number and a payment card.\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### Azure Blob Storage\n\n1. Request an Entra ID token for https://storage.azure.com/ and send it as a Bearer header with `x-ms-version` and `x-ms-date`. Put Blob also needs `x-ms-blob-type: BlockBlob`\n2. Ask for a Storage Blob Data role on the one container. Role changes can take up to 10 minutes to apply\n3. To share a file, call Get User Delegation Key, then sign a SAS with `sp=r`, `spr=https` and a short expiry. Treat the URL as a secret\n4. Send `If-None-Match: *` on Put Blob so a retry can't overwrite a blob another call wrote\n5. On 503 ServerBusy back off exponentially. After 500 OperationTimedOut check the blob's state before retrying, since the write may have succeeded\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## Questions\n\n### Which is better for AI agents, Azure Blob Storage or Bunny Storage?\n\nAzure Blob Storage scores 75.7 (BB) on agent readiness against Bunny Storage's 58.3 (C), and leads in 6 of 7 scored categories. Bunny Storage leads on payments \u0026 pricing.\n\n### Do Azure Blob Storage and Bunny Storage need an API key?\n\nAzure Blob Storage takes an API key or an OAuth sign-in. Bunny Storage needs an API key.\n\n### Can an agent call Azure Blob Storage and Bunny Storage without installing anything?\n\nYes. Azure Blob Storage has a hosted endpoint at https://\u003caccount\u003e.blob.core.windows.net and Bunny Storage at https://storage.bunnycdn.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/azure-blob-storage-vs-bunny-storage.json, and with the fewest tokens: https://www.anchorterminal.com/compare/azure-blob-storage-vs-bunny-storage.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"azure-blob-storage\", \"b\": \"bunny-storage\"}`. From a terminal: `anchor compare azure-blob-storage bunny-storage`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/azure-blob-storage.json and https://www.anchorterminal.com/api/v1/tools/bunny-storage.json\n\n## Other comparisons with Azure Blob Storage or Bunny Storage\n\n- [Azure Blob Storage vs Box API + MCP](https://www.anchorterminal.com/compare/azure-blob-storage-vs-box-api.md)\n- [Azure Blob Storage vs Dropbox API + MCP](https://www.anchorterminal.com/compare/azure-blob-storage-vs-dropbox-api.md)\n- [Azure Blob Storage vs Google Drive API + MCP](https://www.anchorterminal.com/compare/azure-blob-storage-vs-google-drive-api.md)\n- [Amazon S3 vs Azure Blob Storage](https://www.anchorterminal.com/compare/amazon-s3-vs-azure-blob-storage.md)\n- [Amazon S3 vs Bunny Storage](https://www.anchorterminal.com/compare/amazon-s3-vs-bunny-storage.md)\n- [Azure Blob Storage vs Backblaze B2](https://www.anchorterminal.com/compare/azure-blob-storage-vs-backblaze-b2.md)\n- [Azure Blob Storage vs Cloudflare R2](https://www.anchorterminal.com/compare/azure-blob-storage-vs-cloudflare-r2.md)\n- [Azure Blob Storage vs Tigris](https://www.anchorterminal.com/compare/azure-blob-storage-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- [Azure Blob Storage vs OneDrive and SharePoint files (Microsoft Graph)](https://www.anchorterminal.com/compare/azure-blob-storage-vs-onedrive-sharepoint.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-09",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Azure Blob Storage vs Bunny Storage",
        "url": ""
      }
    ],
    "description": "Azure Blob Storage scores 75.7 (BB) on agent readiness against Bunny Storage's 58.3 (C), and leads in 6 of 7 scored categories. Bunny Storage leads on payments \u0026 pricing. Both do storage object. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Azure Blob Storage BB 75.7",
      "Bunny Storage C 58.3",
      "scores"
    ],
    "h1": "Azure Blob Storage vs Bunny Storage",
    "image": "https://www.anchorterminal.com/assets/og/compare-azure-blob-storage-vs-bunny-storage.png",
    "path": "/compare/azure-blob-storage-vs-bunny-storage",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Azure Blob Storage vs Bunny Storage for AI agents, BB 75.7 vs C 58.3",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/azure-blob-storage-vs-bunny-storage"
  },
  "tokens": {
    "markdown": 2250,
    "slim": 680
  },
  "version": 1
}
