{
  "data": {
    "a": {
      "slug": "google-sheets-api",
      "name": "Google Sheets API",
      "vendor": "Google",
      "vendorUrl": "https://developers.google.com/workspace/sheets",
      "kind": "http-api",
      "category": "spreadsheets",
      "summary": "REST API from Google for reading and writing Google Sheets spreadsheets, covering cell values, ranges, formulas, formatting, tables and comments. Access is by OAuth 2.0, and a six-tool MCP server is in Developer Preview.",
      "url": "https://www.anchorterminal.com/tools/google-sheets-api",
      "markdownUrl": "https://www.anchorterminal.com/tools/google-sheets-api.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/google-sheets-api.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/google-sheets-api.json",
      "repo": "https://github.com/googleapis/google-api-nodejs-client",
      "license": "Proprietary service under the Google APIs Terms of Service. The client libraries are Apache-2.0",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://sheets.googleapis.com/v4",
      "packages": [
        {
          "registry": "npm",
          "name": "@googleapis/sheets"
        },
        {
          "registry": "pypi",
          "name": "google-api-python-client"
        }
      ],
      "auth": "oauth",
      "authNotes": "OAuth 2.0, set up by a person in a Google Cloud project with a consent screen. No partner or sales approval. drive.file is non-sensitive and covers only files the user opens with the app. spreadsheets and spreadsheets.readonly are sensitive and need extra verification for a public app, and drive and drive.readonly are restricted. Scopes apply to a whole spreadsheet file, not one sheet. Service accounts work, and their calls count as one user for quota. An API key reads only files shared with anyone who has the link. The MCP server also needs sheetsmcp.googleapis.com enabled, your own OAuth client and Developer Preview Programme membership.",
      "pricing": "free",
      "pricingNotes": "Standard use of the Sheets API has no additional cost, and a free Google account can start without a card or contract. Quotas are 300 reads and 300 writes a minute per project and 60 each per user, with no daily limit. Google says exceeding the quota request limits is planned to incur charges to the Cloud billing account later in 2026, with no price published and 90 days' notice promised. There is no separate sandbox; a test spreadsheet in any account does that job (https://developers.google.com/workspace/sheets/api/limits; https://developers.google.com/workspace/tools-safety).",
      "priceSummary": "Free",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Sheets API docs, the limits page or the discovery document (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 6,
      "popularity": {
        "githubStars": 12262,
        "npmWeekly": 1859932,
        "pypiWeekly": 31750331,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developers.google.com/workspace/sheets/api/guides/concepts",
      "capabilities": [
        "sheets.read",
        "sheets.write",
        "sheets.formulas",
        "sheets.tables"
      ],
      "tags": [
        "hosted",
        "official",
        "free-tier",
        "mcp",
        "oauth",
        "typescript",
        "python",
        "enterprise",
        "status-page"
      ],
      "lastRelease": "2026-10-07",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 76.3,
        "grade": "BB",
        "agentReady": true,
        "rank": 33,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 74,
          "maintenance": 85,
          "payments": 35,
          "reliability": 90,
          "schema": 83,
          "security": 80,
          "transparency": 80
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Batch updates apply atomically and count as one request, and the drive.file scope limits an app to files the user picks. Quotas are 300 reads and 300 writes a minute per project, reads are by range with no row filter or paging, and a person must complete OAuth consent first.",
        "bestFor": "Agents reading and writing cells, formulas and formatting in spreadsheets people already keep in Google Sheets.",
        "strengths": [
          "spreadsheets.batchUpdate takes 74 request kinds, applies them atomically and counts as one request against quota",
          "Public discovery document for v4 (revision 20260930, 17 methods, 273 schemas) and Markdown copies of doc pages at .md.txt URLs",
          "drive.file is a non-sensitive scope that limits an app to the files a user opens with it, and spreadsheets.readonly exists for reading",
          "No Sheets incident on the Workspace status dashboard since 12 November 2025, read on 8 October 2026",
          "Standard use costs nothing, with no daily request cap inside the per-minute quotas"
        ],
        "weaknesses": [
          "Quotas are 300 reads and 300 writes a minute per project and 60 each per user per project",
          "No row filter, query or paging on reads. An agent asks for A1 ranges and trims with a fields mask",
          "No idempotency key, so a values.append retried after the 180-second timeout can add the rows twice",
          "The MCP server is Developer Preview, and its update_spreadsheet tool carries destructiveHint false although it can delete sheets, rows and ranges",
          "Scopes apply to a whole spreadsheet file, not one sheet, and overage charges planned for later in 2026 have no published price"
        ],
        "agentNotes": [
          "Ask for drive.file where the user picks the files. spreadsheets and spreadsheets.readonly are sensitive scopes and need extra verification for a public app",
          "Send valueInputOption=USER_ENTERED to write formulas. With RAW the string =1+2 is stored as text",
          "Put related changes in one spreadsheets.batchUpdate. It counts as one write request and none of it applies if any request is invalid",
          "Pass ranges and a fields mask on spreadsheets.get and leave includeGridData off for large files",
          "Back off exponentially on 429 and 503, and keep to one request a second per spreadsheet. After a timeout on values.append, read the range before retrying"
        ],
        "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": 76.3
          }
        ],
        "editorialScores": {
          "ergonomics": 74,
          "maintenance": 85,
          "payments": 35,
          "reliability": 90,
          "schema": 83,
          "security": 80,
          "transparency": 65
        },
        "provenanceScore": 94
      },
      "connect": {
        "install": "npm install @googleapis/sheets",
        "http": "curl \"https://sheets.googleapis.com/v4/spreadsheets/$SPREADSHEET_ID/values/Sheet1!A1:D10\" \\\n  -H \"Authorization: Bearer $GOOGLE_ACCESS_TOKEN\"",
        "config": {
          "mcpServers": {
            "sheets": {
              "url": "https://sheetsmcp.googleapis.com/mcp/v1"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/sheets.read",
        "tool": "https://letme.dev/google-sheets-api"
      },
      "sameCompany": [
        "gemini-api",
        "gemini-embedding",
        "vertex-ai-tuning",
        "google-model-armor",
        "google-imagen",
        "google-veo",
        "google-lyria",
        "google-speech-to-text",
        "google-adk",
        "google-secret-manager",
        "google-weather-api",
        "chrome-devtools-mcp",
        "google-maps-platform",
        "google-cloud-translation",
        "google-calendar-api",
        "google-drive-api",
        "gemini-cli",
        "google-ads-api",
        "gmail-api"
      ],
      "area": "business",
      "provenance": {
        "legalEntity": "Google LLC",
        "domain": "google.com",
        "domainRegistered": "1997-09-15",
        "domainNote": "The endpoint is on googleapis.com, Google's API domain. google.com was registered in 1997.",
        "endpointOnVendorDomain": true,
        "terms": "https://developers.google.com/terms",
        "privacy": "https://policies.google.com/privacy",
        "statusPage": "https://www.google.com/appsstatus/dashboard/",
        "changelog": "https://developers.google.com/workspace/sheets/release-notes",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The Google APIs Terms of Service (last modified 9 November 2021) name Google LLC, 1600 Amphitheatre Parkway, Mountain View.",
          "RDAP for google.com gives a registration date of 1997-09-15.",
          "www.google.com/.well-known/security.txt expires on 1 April 2030 and names g.co/vulnz, security@google.com and the vulnerability reward programme.",
          "Google publishes a discovery document for the API, not an OpenAPI spec.",
          "The MCP server is part of the Workspace Developer Preview Programme and can change.",
          "The Google privacy policy read on 8 October 2026 is the version effective 1 October 2026."
        ],
        "score": 94
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/google-sheets-api.json",
      "live": {
        "slug": "google-sheets-api",
        "probe": {
          "target": "https://sheets.googleapis.com/v4",
          "method": "get",
          "lastAt": "2026-10-08T17:36:36.670614924Z",
          "lastOk": true,
          "lastStatus": 400,
          "lastMs": 192,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 188,
          "p95ms24h": 700,
          "samples24h": 25,
          "samples30d": 25,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 25,
              "ok": 25
            }
          ]
        },
        "versions": [
          {
            "registry": "github",
            "name": "googleapis/google-api-nodejs-client",
            "version": "agentidentity-v3.2.0",
            "released": "2026-10-07",
            "seenAt": "2026-10-08T16:14:25.225453746Z"
          },
          {
            "registry": "npm",
            "name": "@googleapis/sheets",
            "version": "18.1.1",
            "seenAt": "2026-10-08T16:14:21.513613578Z"
          },
          {
            "registry": "pypi",
            "name": "google-api-python-client",
            "version": "2.201.0",
            "released": "2026-09-30",
            "seenAt": "2026-10-08T16:14:25.103740958Z"
          }
        ],
        "githubStars": 12263,
        "npmWeekly": 1859932,
        "pypiWeekly": 31750331,
        "securityTxt": {
          "url": "https://google.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2030-04-01T00:00:00z",
          "checkedAt": "2026-10-08T15:38:39.75078566Z"
        },
        "updatedAt": "2026-10-08T17:36:36.670614924Z"
      }
    },
    "answer": "Google Sheets API scores 76.3 (BB) on agent readiness against Microsoft Excel (Microsoft Graph workbook API)'s 58.5 (C), and leads in 6 of 7 scored categories.",
    "b": {
      "slug": "microsoft-excel-graph",
      "name": "Microsoft Excel (Microsoft Graph workbook API)",
      "vendor": "Microsoft",
      "vendorUrl": "https://learn.microsoft.com/en-us/graph/excel-concept-overview",
      "kind": "http-api",
      "category": "spreadsheets",
      "summary": "Workbook endpoints of Microsoft Graph for Excel files stored in OneDrive for work or school and SharePoint. Calls read and write ranges, tables, charts and named items, and run Excel worksheet functions on a file in place.",
      "url": "https://www.anchorterminal.com/tools/microsoft-excel-graph",
      "markdownUrl": "https://www.anchorterminal.com/tools/microsoft-excel-graph.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/microsoft-excel-graph.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/microsoft-excel-graph.json",
      "repo": "https://github.com/microsoftgraph/msgraph-sdk-javascript",
      "license": "MIT (SDKs)",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://graph.microsoft.com/v1.0",
      "packages": [
        {
          "registry": "npm",
          "name": "@microsoft/microsoft-graph-client"
        },
        {
          "registry": "pypi",
          "name": "msgraph-sdk"
        }
      ],
      "auth": "oauth",
      "authNotes": "OAuth 2.0 tokens from Microsoft Entra ID, after a person registers an app. Registration is self-serve, with no partner or sales approval. The workbook reference pages list delegated permissions only, with Files.ReadWrite as least privileged, and mark application permissions as not supported. The overview page names Files.Read for read actions. A delegated token reaches every file its user can open.",
      "pricing": "byo-plan",
      "pricingNotes": "Workbook calls carry no per-call charge. Microsoft's list of metered Graph APIs names only SharePoint and OneDrive `assignSensitivityLabel`, at $0.00185 a call (https://learn.microsoft.com/en-us/graph/metered-api-list). Files must sit in OneDrive for work or school or SharePoint, which need a Microsoft 365 licence. The Microsoft 365 plan price page refused our reader on 2026-10-08. A free Microsoft 365 E5 developer sandbox is limited to Visual Studio subscribers and members of named partner programmes (https://learn.microsoft.com/en-us/office/developer-program/microsoft-365-developer-program-faq).",
      "priceSummary": "Your plan",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the workbook documentation or the metered API list (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 835,
        "npmWeekly": 2882852,
        "pypiWeekly": 1578201,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://learn.microsoft.com/en-us/graph/api/resources/excel",
      "openapi": "https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml",
      "capabilities": [
        "sheets.read",
        "sheets.write",
        "sheets.tables",
        "sheets.formulas"
      ],
      "tags": [
        "hosted",
        "official",
        "oauth",
        "openapi",
        "typescript",
        "python",
        "enterprise"
      ],
      "lastRelease": "2025-09-19",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 58.5,
        "grade": "C",
        "agentReady": false,
        "rank": 399,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 7,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 73,
          "maintenance": 53,
          "payments": 15,
          "reliability": 62,
          "schema": 85,
          "security": 65,
          "transparency": 75
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": -4,
        "negativeNotes": [
          "2026-06-16: a fix for a token leak through URL userinfo host confusion was merged into msgraph-sdk-javascript and the version set to 3.0.8, but npm still served 3.0.7 on 8 October 2026 and the repository lists no published advisory. Exploiting it needs an attacker-influenced URL passed to the client, and it affects agents that call the workbook API through that client (https://github.com/microsoftgraph/msgraph-sdk-javascript/commit/5438ae90f50ef15d3656f0cf9c5485deee351f19, https://registry.npmjs.org/@microsoft/microsoft-graph-client/latest)"
        ],
        "verdict": "Ranges, tables, charts and 366 worksheet function endpoints are reachable over REST with a public OpenAPI, and a non-persistent session lets an agent test changes without saving them. The reference pages list delegated permissions only, with Files.ReadWrite as the least privileged scope, and writes take no idempotency key.",
        "bestFor": "Agents working on .xlsx files that already live in a Microsoft 365 tenant, and for using Excel's calculation engine through function endpoints.",
        "strengths": [
          "Non-persistent sessions (`persistChanges: false`) keep changes in a temporary copy, so an agent can calculate or test edits without saving",
          "The OpenAPI for Graph v1.0 holds 1,442 workbook paths and 1,765 operations, 366 of the paths for worksheet functions",
          "Error handling guide gives a retry instruction for each of 22 required second-level error codes",
          "Throttling limits are published at 5,000 requests per 10 seconds per app and 1,500 per app per tenant, with `Retry-After` on throttled responses",
          "Microsoft's policy is at least 24 months' notice before a generally available Graph API is removed"
        ],
        "weaknesses": [
          "Reference pages list delegated permissions only and mark application permissions as not supported",
          "Files.ReadWrite is the least privileged permission on the reference pages, even for reading a range or listing rows",
          "No idempotency key on writes. The row-add page says to repeat the request on a 504",
          "Cell values, formulas and number formats are untyped JSON in the OpenAPI",
          "The last Workbooks and charts changelog entry is dated 19 September 2025, and the overview page is dated March 2024"
        ],
        "agentNotes": [
          "Create a session with POST /workbook/createSession and send `workbook-session-id` on every call. Persistent sessions expire after about 5 minutes idle",
          "Set `persistChanges` to false when you only need a calculation or a chart image, so nothing is saved to the file",
          "Send one request at a time per workbook and wait for each response. Microsoft warns that parallel writes cause throttling, timeouts and merge conflicts",
          "Add rows in one call with a two-dimensional `values` array, and check the table before repeating a row add that returned 504",
          "Read bounded addresses such as A1:D500. A whole-column range such as C:C returns null for values, and writes to it are refused"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 58.5
          }
        ],
        "editorialScores": {
          "ergonomics": 73,
          "maintenance": 53,
          "payments": 15,
          "reliability": 62,
          "schema": 85,
          "security": 65,
          "transparency": 65
        },
        "provenanceScore": 85
      },
      "connect": {
        "http": "curl https://graph.microsoft.com/v1.0/me/drive/items/{id}/workbook/worksheets \\\n  -H \"Authorization: Bearer $MS_GRAPH_TOKEN\" \\\n  -H \"workbook-session-id: $SESSION_ID\""
      },
      "letme": {
        "capability": "https://letme.dev/sheets.read",
        "tool": "https://letme.dev/microsoft-excel-graph"
      },
      "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-devops-mcp",
        "microsoft-learn-mcp",
        "playwright-mcp",
        "azure-mcp",
        "azure-translator",
        "microsoft-graph-calendar",
        "dynamics-365-sales",
        "microsoft-advertising-api",
        "outlook-mail-graph"
      ],
      "area": "business",
      "provenance": {
        "legalEntity": "Microsoft Corporation",
        "domain": "microsoft.com",
        "domainRegistered": "1991-05-02",
        "domainNote": "The endpoint is on graph.microsoft.com. microsoft.com publishes a security.txt, but it passed its Expires date on 2026-09-23.",
        "endpointOnVendorDomain": true,
        "terms": "https://learn.microsoft.com/en-us/legal/microsoft-apis/terms-of-use",
        "privacy": "https://privacy.microsoft.com/en-us/privacystatement",
        "statusPage": "https://status.cloud.microsoft",
        "changelog": "https://developer.microsoft.com/en-us/graph/changelog",
        "securityTxt": "expired",
        "checked": "2026-10-08",
        "notes": [
          "www.microsoft.com/.well-known/security.txt still carries Expires 2026-09-23T16:00:00.000Z when read on 2026-10-08.",
          "The Microsoft service health page at status.cloud.microsoft needs JavaScript to show anything.",
          "The Microsoft APIs terms of use name Microsoft Corporation and were last updated in October 2025.",
          "The Microsoft privacy statement was last updated in September 2026.",
          "RDAP for microsoft.com gives a registration date of 1991-05-02."
        ],
        "score": 85
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/microsoft-excel-graph.json",
      "live": {
        "slug": "microsoft-excel-graph",
        "probe": {
          "target": "https://graph.microsoft.com/v1.0",
          "method": "get",
          "lastAt": "2026-10-08T17:36:40.30570825Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 3,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 34,
          "p95ms24h": 57,
          "samples24h": 25,
          "samples30d": 25,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 25,
              "ok": 25
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.cloud.microsoft",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T15:36:56.168932402Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "microsoftgraph/msgraph-sdk-javascript",
            "version": "3.0.7",
            "released": "2023-09-19",
            "seenAt": "2026-10-08T16:20:40.005701271Z"
          },
          {
            "registry": "npm",
            "name": "@microsoft/microsoft-graph-client",
            "version": "3.0.7",
            "seenAt": "2026-10-08T16:20:38.997085198Z"
          },
          {
            "registry": "pypi",
            "name": "msgraph-sdk",
            "version": "1.64.0",
            "released": "2026-10-06",
            "seenAt": "2026-10-08T16:20:39.875494563Z"
          }
        ],
        "githubStars": 835,
        "npmWeekly": 2882852,
        "pypiWeekly": 1578201,
        "securityTxt": {
          "url": "https://microsoft.com/.well-known/security.txt",
          "state": "expired",
          "expires": "2026-09-23T16:00:00.000Z",
          "checkedAt": "2026-10-08T15:39:08.216544687Z"
        },
        "updatedAt": "2026-10-08T17:36:40.30570825Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Google",
        "b": "Microsoft",
        "name": "Vendor"
      },
      {
        "a": "https://sheets.googleapis.com/v4",
        "b": "https://graph.microsoft.com/v1.0",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "OAuth",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Your plan",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under the Google APIs Terms of Service. The client libraries are Apache-2.0",
        "b": "MIT (SDKs)",
        "name": "Licence"
      },
      {
        "a": "6",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-07",
        "b": "2025-09-19",
        "name": "Last release"
      },
      {
        "a": "2021-11-09",
        "b": "2025-10-01",
        "name": "Terms last updated"
      },
      {
        "a": "2026-10-01",
        "b": "2026-09-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "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": "12k stars, 1.9M npm/wk, 31.8M PyPI/wk",
        "b": "835 stars, 2.9M npm/wk, 1.6M PyPI/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Google Sheets API scores 76.3 (BB) on agent readiness against Microsoft Excel (Microsoft Graph workbook API)'s 58.5 (C), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Google Sheets API or Microsoft Excel (Microsoft Graph workbook API)?"
      },
      {
        "answer": "Both use an OAuth sign-in.",
        "question": "Do Google Sheets API and Microsoft Excel (Microsoft Graph workbook API) need an API key?"
      },
      {
        "answer": "Yes. Google Sheets API has a hosted endpoint at https://sheets.googleapis.com/v4 and Microsoft Excel (Microsoft Graph workbook API) at https://graph.microsoft.com/v1.0.",
        "question": "Can an agent call Google Sheets API and Microsoft Excel (Microsoft Graph workbook API) without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 90 against 62",
          "Security \u0026 auth, 80 against 65",
          "Payments \u0026 pricing, 35 against 15",
          "Maintenance \u0026 community, 85 against 53",
          "Transparency \u0026 trust, 80 against 75"
        ],
        "also": [
          "Agent-ready, a grade of BB or better",
          "No incidents deducted, where Microsoft Excel (Microsoft Graph workbook API) loses 4 points for them"
        ],
        "goodFor": "Agents reading and writing cells, formulas and formatting in spreadsheets people already keep in Google Sheets.",
        "slug": "google-sheets-api",
        "watchFor": "Quotas are 300 reads and 300 writes a minute per project and 60 each per user per project"
      },
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "Agents working on .xlsx files that already live in a Microsoft 365 tenant, and for using Excel's calculation engine through function endpoints.",
        "slug": "microsoft-excel-graph",
        "watchFor": "Reference pages list delegated permissions only and mark application permissions as not supported"
      }
    ],
    "job": {
      "capability": "sheets.read",
      "name": "Sheets read"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/airtable-vs-google-sheets-api.json",
        "title": "Airtable vs Google Sheets API",
        "url": "https://www.anchorterminal.com/compare/airtable-vs-google-sheets-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/airtable-vs-microsoft-excel-graph.json",
        "title": "Airtable vs Microsoft Excel (Microsoft Graph workbook API)",
        "url": "https://www.anchorterminal.com/compare/airtable-vs-microsoft-excel-graph"
      },
      {
        "json": "https://www.anchorterminal.com/compare/baserow-vs-google-sheets-api.json",
        "title": "Baserow vs Google Sheets API",
        "url": "https://www.anchorterminal.com/compare/baserow-vs-google-sheets-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/baserow-vs-microsoft-excel-graph.json",
        "title": "Baserow vs Microsoft Excel (Microsoft Graph workbook API)",
        "url": "https://www.anchorterminal.com/compare/baserow-vs-microsoft-excel-graph"
      },
      {
        "json": "https://www.anchorterminal.com/compare/coda-vs-google-sheets-api.json",
        "title": "Coda (Superhuman Docs) vs Google Sheets API",
        "url": "https://www.anchorterminal.com/compare/coda-vs-google-sheets-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/coda-vs-microsoft-excel-graph.json",
        "title": "Coda (Superhuman Docs) vs Microsoft Excel (Microsoft Graph workbook API)",
        "url": "https://www.anchorterminal.com/compare/coda-vs-microsoft-excel-graph"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-sheets-api-vs-nocodb.json",
        "title": "Google Sheets API vs NocoDB",
        "url": "https://www.anchorterminal.com/compare/google-sheets-api-vs-nocodb"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-sheets-api-vs-smartsheet.json",
        "title": "Google Sheets API vs Smartsheet API + MCP",
        "url": "https://www.anchorterminal.com/compare/google-sheets-api-vs-smartsheet"
      },
      {
        "json": "https://www.anchorterminal.com/compare/microsoft-excel-graph-vs-nocodb.json",
        "title": "Microsoft Excel (Microsoft Graph workbook API) vs NocoDB",
        "url": "https://www.anchorterminal.com/compare/microsoft-excel-graph-vs-nocodb"
      },
      {
        "json": "https://www.anchorterminal.com/compare/microsoft-excel-graph-vs-smartsheet.json",
        "title": "Microsoft Excel (Microsoft Graph workbook API) vs Smartsheet API + MCP",
        "url": "https://www.anchorterminal.com/compare/microsoft-excel-graph-vs-smartsheet"
      }
    ],
    "scores": [
      {
        "by": 28,
        "edge": "google-sheets-api",
        "google-sheets-api": 90,
        "key": "reliability",
        "microsoft-excel-graph": 62,
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 2,
        "edge": "microsoft-excel-graph",
        "google-sheets-api": 83,
        "key": "schema",
        "microsoft-excel-graph": 85,
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "by": 1,
        "edge": "google-sheets-api",
        "google-sheets-api": 74,
        "key": "ergonomics",
        "microsoft-excel-graph": 73,
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "by": 15,
        "edge": "google-sheets-api",
        "google-sheets-api": 80,
        "key": "security",
        "microsoft-excel-graph": 65,
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "by": 20,
        "edge": "google-sheets-api",
        "google-sheets-api": 35,
        "key": "payments",
        "microsoft-excel-graph": 15,
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 32,
        "edge": "google-sheets-api",
        "google-sheets-api": 85,
        "key": "maintenance",
        "microsoft-excel-graph": 53,
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "by": 5,
        "edge": "google-sheets-api",
        "google-sheets-api": 80,
        "key": "transparency",
        "microsoft-excel-graph": 75,
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Google Sheets API scores 76.3 (BB) on agent readiness against Microsoft Excel (Microsoft Graph workbook API)'s 58.5 (C), and leads in 6 of 7 scored categories. Both do sheets read.",
    "verdicts": {
      "google-sheets-api": "Batch updates apply atomically and count as one request, and the drive.file scope limits an app to files the user picks. Quotas are 300 reads and 300 writes a minute per project, reads are by range with no row filter or paging, and a person must complete OAuth consent first.",
      "microsoft-excel-graph": "Ranges, tables, charts and 366 worksheet function endpoints are reachable over REST with a public OpenAPI, and a non-persistent session lets an agent test changes without saving them. The reference pages list delegated permissions only, with Files.ReadWrite as the least privileged scope, and writes take no idempotency key."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/google-sheets-api-vs-microsoft-excel-graph",
    "json": "https://www.anchorterminal.com/compare/google-sheets-api-vs-microsoft-excel-graph.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/google-sheets-api-vs-microsoft-excel-graph.md",
    "slim": "https://www.anchorterminal.com/compare/google-sheets-api-vs-microsoft-excel-graph.min.md"
  },
  "markdown": "Google Sheets API scores 76.3 (BB) on agent readiness against Microsoft Excel (Microsoft Graph workbook API)'s 58.5 (C), and leads in 6 of 7 scored categories. Both do sheets read.\n\n- Google Sheets API: grade BB, 76.3/100, rank #33 of 629. Markdown https://www.anchorterminal.com/tools/google-sheets-api.md · JSON https://www.anchorterminal.com/api/v1/tools/google-sheets-api.json\n- Microsoft Excel (Microsoft Graph workbook API): grade C, 58.5/100, rank #399 of 629. Markdown https://www.anchorterminal.com/tools/microsoft-excel-graph.md · JSON https://www.anchorterminal.com/api/v1/tools/microsoft-excel-graph.json\n\n## Which one, for what\n\n### Google Sheets API (BB)\n\nGood for: Agents reading and writing cells, formulas and formatting in spreadsheets people already keep in Google Sheets.\n\nAhead on:\n- Reliability, 90 against 62\n- Security \u0026 auth, 80 against 65\n- Payments \u0026 pricing, 35 against 15\n- Maintenance \u0026 community, 85 against 53\n- Transparency \u0026 trust, 80 against 75\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n- No incidents deducted, where Microsoft Excel (Microsoft Graph workbook API) loses 4 points for them\n\nWatch for: Quotas are 300 reads and 300 writes a minute per project and 60 each per user per project\n\n### Microsoft Excel (Microsoft Graph workbook API) (C)\n\nGood for: Agents working on .xlsx files that already live in a Microsoft 365 tenant, and for using Excel's calculation engine through function endpoints.\n\nWatch for: Reference pages list delegated permissions only and mark application permissions as not supported\n\n\n## Score by category\n\n| Category | Weight | Google Sheets API | Microsoft Excel (Microsoft Graph workbook API) | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 90 | 62 | Google Sheets API +28 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 83 | 85 | Microsoft Excel (Microsoft Graph workbook API) +2 |\n| Agent ergonomics | 13% (16.2 this run) | 74 | 73 | Google Sheets API +1 |\n| Security \u0026 auth | 14% (17.5 this run) | 80 | 65 | Google Sheets API +15 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 15 | Google Sheets API +20 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 85 | 53 | Google Sheets API +32 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 80 | 75 | Google Sheets API +5 |\n| Negative events | ≤15 | 0 | -4 | |\n| **Total** | | **76.3 · BB** | **58.5 · C** | |\n\n## Facts side by side\n\n| Fact | Google Sheets API | Microsoft Excel (Microsoft Graph workbook API) |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Google | Microsoft |\n| Hosted endpoint | `https://sheets.googleapis.com/v4` | `https://graph.microsoft.com/v1.0` |\n| Transports | HTTP, Streamable HTTP | HTTP |\n| Auth | OAuth | OAuth |\n| Pricing | Free | Your plan |\n| x402 | no | no |\n| Licence | Proprietary service under the Google APIs Terms of Service. The client libraries are Apache-2.0 | MIT (SDKs) |\n| Tools exposed | 6 | none |\n| Read-only variant documented | no | no |\n| llms.txt | no | no |\n| Last release | 2026-10-07 | 2025-09-19 |\n| Terms last updated | 2021-11-09 | 2025-10-01 |\n| Privacy policy last updated | 2026-10-01 | 2026-09-01 |\n| Customer content may train models | yes | yes |\n| Terms restrict automated access | yes | yes |\n| Terms restrict benchmarking | not found in the text | yes |\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 | 12k stars, 1.9M npm/wk, 31.8M PyPI/wk | 835 stars, 2.9M npm/wk, 1.6M PyPI/wk |\n\n## Verdicts\n\n**Google Sheets API.** Batch updates apply atomically and count as one request, and the drive.file scope limits an app to files the user picks. Quotas are 300 reads and 300 writes a minute per project, reads are by range with no row filter or paging, and a person must complete OAuth consent first.\n\n**Microsoft Excel (Microsoft Graph workbook API).** Ranges, tables, charts and 366 worksheet function endpoints are reachable over REST with a public OpenAPI, and a non-persistent session lets an agent test changes without saving them. The reference pages list delegated permissions only, with Files.ReadWrite as the least privileged scope, and writes take no idempotency key.\n\n## Before you call either\n\n### Google Sheets API\n\n1. Ask for drive.file where the user picks the files. spreadsheets and spreadsheets.readonly are sensitive scopes and need extra verification for a public app\n2. Send valueInputOption=USER_ENTERED to write formulas. With RAW the string =1+2 is stored as text\n3. Put related changes in one spreadsheets.batchUpdate. It counts as one write request and none of it applies if any request is invalid\n4. Pass ranges and a fields mask on spreadsheets.get and leave includeGridData off for large files\n5. Back off exponentially on 429 and 503, and keep to one request a second per spreadsheet. After a timeout on values.append, read the range before retrying\n\n### Microsoft Excel (Microsoft Graph workbook API)\n\n1. Create a session with POST /workbook/createSession and send `workbook-session-id` on every call. Persistent sessions expire after about 5 minutes idle\n2. Set `persistChanges` to false when you only need a calculation or a chart image, so nothing is saved to the file\n3. Send one request at a time per workbook and wait for each response. Microsoft warns that parallel writes cause throttling, timeouts and merge conflicts\n4. Add rows in one call with a two-dimensional `values` array, and check the table before repeating a row add that returned 504\n5. Read bounded addresses such as A1:D500. A whole-column range such as C:C returns null for values, and writes to it are refused\n\n## Questions\n\n### Which is better for AI agents, Google Sheets API or Microsoft Excel (Microsoft Graph workbook API)?\n\nGoogle Sheets API scores 76.3 (BB) on agent readiness against Microsoft Excel (Microsoft Graph workbook API)'s 58.5 (C), and leads in 6 of 7 scored categories.\n\n### Do Google Sheets API and Microsoft Excel (Microsoft Graph workbook API) need an API key?\n\nBoth use an OAuth sign-in.\n\n### Can an agent call Google Sheets API and Microsoft Excel (Microsoft Graph workbook API) without installing anything?\n\nYes. Google Sheets API has a hosted endpoint at https://sheets.googleapis.com/v4 and Microsoft Excel (Microsoft Graph workbook API) at https://graph.microsoft.com/v1.0.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/google-sheets-api-vs-microsoft-excel-graph.json, and with the fewest tokens: https://www.anchorterminal.com/compare/google-sheets-api-vs-microsoft-excel-graph.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"google-sheets-api\", \"b\": \"microsoft-excel-graph\"}`. From a terminal: `anchor compare google-sheets-api microsoft-excel-graph`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/google-sheets-api.json and https://www.anchorterminal.com/api/v1/tools/microsoft-excel-graph.json\n\n## Other comparisons with Google Sheets API or Microsoft Excel (Microsoft Graph workbook API)\n\n- [Airtable vs Google Sheets API](https://www.anchorterminal.com/compare/airtable-vs-google-sheets-api.md)\n- [Airtable vs Microsoft Excel (Microsoft Graph workbook API)](https://www.anchorterminal.com/compare/airtable-vs-microsoft-excel-graph.md)\n- [Baserow vs Google Sheets API](https://www.anchorterminal.com/compare/baserow-vs-google-sheets-api.md)\n- [Baserow vs Microsoft Excel (Microsoft Graph workbook API)](https://www.anchorterminal.com/compare/baserow-vs-microsoft-excel-graph.md)\n- [Coda (Superhuman Docs) vs Google Sheets API](https://www.anchorterminal.com/compare/coda-vs-google-sheets-api.md)\n- [Coda (Superhuman Docs) vs Microsoft Excel (Microsoft Graph workbook API)](https://www.anchorterminal.com/compare/coda-vs-microsoft-excel-graph.md)\n- [Google Sheets API vs NocoDB](https://www.anchorterminal.com/compare/google-sheets-api-vs-nocodb.md)\n- [Google Sheets API vs Smartsheet API + MCP](https://www.anchorterminal.com/compare/google-sheets-api-vs-smartsheet.md)\n- [Microsoft Excel (Microsoft Graph workbook API) vs NocoDB](https://www.anchorterminal.com/compare/microsoft-excel-graph-vs-nocodb.md)\n- [Microsoft Excel (Microsoft Graph workbook API) vs Smartsheet API + MCP](https://www.anchorterminal.com/compare/microsoft-excel-graph-vs-smartsheet.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Google Sheets API vs Microsoft Excel (Microsoft Graph workbook API)",
        "url": ""
      }
    ],
    "description": "Google Sheets API scores 76.3 (BB) on agent readiness against Microsoft Excel (Microsoft Graph workbook API)'s 58.5 (C), and leads in 6 of 7 scored categories. Both do sheets read. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Google Sheets API BB 76.3",
      "Microsoft Excel (Microsoft Graph workbook API) C 58.5",
      "scores"
    ],
    "h1": "Google Sheets API vs Microsoft Excel (Microsoft Graph workbook API)",
    "image": "https://www.anchorterminal.com/assets/og/compare-google-sheets-api-vs-microsoft-excel-graph.png",
    "path": "/compare/google-sheets-api-vs-microsoft-excel-graph",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Google Sheets API vs Microsoft Excel (Microsoft Graph workbook API)",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/google-sheets-api-vs-microsoft-excel-graph"
  },
  "tokens": {
    "markdown": 2300,
    "slim": 730
  },
  "version": 1
}
