{
  "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-08T19:08:48.061629983Z",
          "lastOk": true,
          "lastStatus": 400,
          "lastMs": 289,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 184,
          "p95ms24h": 666,
          "samples24h": 42,
          "samples30d": 42,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 42,
              "ok": 42
            }
          ]
        },
        "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"
        },
        "pages": [
          {
            "url": "https://developers.google.com/workspace/sheets/release-notes",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:17:57.991043636Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e2880ec22d35"
          }
        ],
        "updatedAt": "2026-10-08T19:08:48.061629983Z"
      }
    },
    "answer": "Google Sheets API and NocoDB score within a point of each other on agent readiness, 76.3 (BB) and 75.7 (BB). NocoDB leads on reliability.",
    "b": {
      "slug": "nocodb",
      "name": "NocoDB",
      "vendor": "NocoDB Inc",
      "vendorUrl": "https://nocodb.com",
      "kind": "http-api",
      "category": "spreadsheets",
      "summary": "NocoDB is a database of typed records in bases, tables and views, run on NocoDB Cloud or self-hosted. Agents reach it through a REST API and a built-in MCP server, using scoped API tokens or OAuth.",
      "url": "https://www.anchorterminal.com/tools/nocodb",
      "markdownUrl": "https://www.anchorterminal.com/tools/nocodb.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/nocodb.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/nocodb.json",
      "repo": "https://github.com/nocodb/nocodb",
      "license": "Sustainable Use License 1.0 since January 2026 (source-available, not OSI-approved; AGPL-3.0 before). NocoDB Cloud is a proprietary service under NocoDB's Terms of Service",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://app.nocodb.com",
      "packages": [
        {
          "registry": "npm",
          "name": "nocodb-sdk"
        }
      ],
      "auth": "mixed",
      "authNotes": "Self-serve. A signed-in user creates a fine-grained API token in Account Settings, choosing permission categories, bases and an expiry, and sends it as `xc-token` or `Authorization: Bearer`. For MCP the user creates a connection with its own key, sent as `x-api-key`, or a web client uses OAuth with PKCE and dynamic client registration and the user picks bases and tools on the consent screen. No review step was found. A token or connection never exceeds its owner's role. Workspaces that enforce SSO accept only tokens created after an SSO sign-in.",
      "pricing": "freemium",
      "pricingNotes": "Free plan with 1,000 API calls a month, 1,000 records and 3 editor seats, no card required per the pricing page, so an agent can start without a contract. Plus is $12 a seat a month billed annually, Business $24 and Scale $45, with Plus and Business capped at 9 paid seats. Enterprise through sales. API calls aren't priced separately. The self-hosted Community Edition is free for internal use (checked 2026-10-08).",
      "priceSummary": "$12 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the REST API docs, the MCP docs, the OpenAPI file or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 199,
      "popularity": {
        "githubStars": 65215,
        "npmWeekly": 6282,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://nocodb.com/docs/apis-and-mcp",
      "llmsTxt": "https://nocodb.com/llms.txt",
      "openapi": "https://nocodb.com/apis/v3/swagger-v3.json",
      "capabilities": [
        "sheets.records",
        "sheets.read",
        "sheets.write",
        "sheets.tables",
        "sheets.formulas"
      ],
      "tags": [
        "official",
        "hosted",
        "self-hosted",
        "mcp",
        "source-available",
        "free-tier",
        "oauth",
        "openapi",
        "llms-txt",
        "webhooks",
        "javascript",
        "status-page",
        "soc2"
      ],
      "lastRelease": "2026-09-29",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 75.7,
        "grade": "BB",
        "agentReady": true,
        "rank": 37,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 2,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 74,
          "maintenance": 87,
          "payments": 30,
          "reliability": 97,
          "schema": 85,
          "security": 71,
          "transparency": 76
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "API tokens and MCP connections are limited by permission category and by base, and an MCP connection registers only the tools it is allowed. The v3 REST API has a public OpenAPI file. Requests are capped at 5 a second per user, REST writes take 10 records a call, and the Free plan stops at 1,000 API calls a month.",
        "bestFor": "Teams that want Airtable-style typed records with the option to self-host, and an agent that reads, filters and writes records or builds schema through MCP with a narrow allowlist.",
        "strengths": [
          "Fine-grained API tokens carry eight permission categories at Read or Read and write, a list of bases, an expiry and an on-off switch",
          "An MCP connection lists only the tools its owner allowed, by section at Read, Read and write, or Read, write and delete",
          "Public OpenAPI 3.1 file for the v3 REST API with 114 operations, plus llms.txt and a Markdown copy of every docs page",
          "The MCP record tools in the source set `readOnlyHint` and `destructiveHint`, and `deleteRecords` is marked destructive",
          "status.nocodb.com lists no incident from July to October 2026 and shows 99.9907 per cent for the application over 90 days"
        ],
        "weaknesses": [
          "5 requests a second per user on every plan, shared by all of that user's tokens, with a 30-second block after a 429",
          "REST create, update and upsert calls take 10 records each by default",
          "The Free plan allows 1,000 API calls a month and 1,000 records, and workspace audit logs start at the Scale plan",
          "The licence changed from AGPL-3.0 to the Sustainable Use License in January 2026, which is not OSI-approved",
          "No security.txt and no bug bounty were found, and the MCP server is not in the official MCP registry"
        ],
        "agentNotes": [
          "Create a fine-grained token limited to the bases and categories the task needs. Send it as `xc-token` or as a Bearer token",
          "Stay under 5 requests a second across all tokens of one user. After a 429, honour `Retry-After` or wait 30 seconds",
          "Send REST writes in batches of 10 records. The MCP record tools take up to 100, counted as one API call per 10 records",
          "Write date filters with a sub-operator, such as `(due_date,eq,exactDate,2026-06-01)`, and put no space after `~and` or `~or`",
          "Use `/records/upsert` with a merge key so a repeated write updates the record instead of adding a duplicate"
        ],
        "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": 74,
          "maintenance": 87,
          "payments": 30,
          "reliability": 97,
          "schema": 85,
          "security": 71,
          "transparency": 66
        },
        "provenanceScore": 86
      },
      "connect": {
        "install": "docker run -d \\\n  --name noco \\\n  -v \"$(pwd)\"/nocodb:/usr/app/data/ \\\n  -p 8080:8080 \\\n  nocodb/nocodb:latest",
        "http": "curl -H \"xc-token: nc_pat_...\" https://your-nocodb.com/api/v3/...",
        "config": {
          "mcpServers": {
            "NocoDB MCP": {
              "args": [
                "mcp-remote",
                "https://your-domain.com/mcp/\u003cncId\u003e",
                "--header",
                "x-api-key: \u003cncToken\u003e"
              ],
              "command": "npx"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/sheets.records",
        "tool": "https://letme.dev/nocodb"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Plus",
          "unit": "seat-month",
          "usd": 12,
          "note": "billed annually, at most 9 paid seats ($108 a month), 100,000 API calls a month"
        },
        {
          "item": "Business",
          "unit": "seat-month",
          "usd": 24,
          "note": "billed annually, at most 9 paid seats ($216 a month), 1,000,000 API calls a month"
        },
        {
          "item": "Scale",
          "unit": "seat-month",
          "usd": 45,
          "note": "billed annually, 3 seats minimum, 5,000,000 API calls a month"
        }
      ],
      "provenance": {
        "legalEntity": "NocoDB Inc (doing business as NocoDB)",
        "domain": "nocodb.com",
        "domainRegistered": "2021-04-14",
        "endpointOnVendorDomain": true,
        "terms": "https://nocodb.com/docs/legal/terms-of-service",
        "privacy": "https://nocodb.com/docs/legal/privacy",
        "statusPage": "https://status.nocodb.com",
        "changelog": "https://nocodb.com/docs/changelog",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The Terms of Service (last updated 14 October 2025) and the privacy policy (last updated 5 August 2025) name NocoDB Inc, doing business as NocoDB, and cover the website, the hosted services and the APIs. No postal address was found in the parts we read.",
          "The REST API and the MCP server answer at app.nocodb.com, a nocodb.com subdomain. A self-hosted instance answers on the owner's own domain.",
          "nocodb.com/.well-known/security.txt, nocodb.com/security.txt and app.nocodb.com/.well-known/security.txt return 404. SECURITY.md in the repository sends reports to security@nocodb.com.",
          "RDAP for nocodb.com gives a registration date of 2021-04-14.",
          "Organisations on an order form are governed by the Master Subscription Agreement (last updated 14 October 2025), which states SOC 2 Type II compliance with the report on request. The Service Level Agreement (last updated 6 October 2025) commits to 99.9 per cent monthly uptime for Enterprise plans."
        ],
        "score": 86
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/nocodb.json",
      "live": {
        "slug": "nocodb",
        "probe": {
          "target": "https://app.nocodb.com",
          "method": "get",
          "lastAt": "2026-10-08T19:08:53.946941776Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 289,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 298,
          "p95ms24h": 423,
          "samples24h": 19,
          "samples30d": 19,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 19,
              "ok": 19
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.nocodb.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T17:50:54.642935507Z"
        },
        "pages": [
          {
            "url": "https://nocodb.com/docs/changelog",
            "kind": "changelog",
            "status": 404,
            "checkedAt": "2026-10-08T18:22:20.469505035Z",
            "changedAt": "0001-01-01T00:00:00Z"
          },
          {
            "url": "https://nocodb.com/docs/legal/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:22:22.574237418Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "0c382788e85c"
          },
          {
            "url": "https://nocodb.com/docs/legal/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:22:24.679133564Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "78a7b9c3e6ab"
          }
        ],
        "updatedAt": "2026-10-08T19:08:53.946941776Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Google",
        "b": "NocoDB Inc",
        "name": "Vendor"
      },
      {
        "a": "https://sheets.googleapis.com/v4",
        "b": "https://app.nocodb.com",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Freemium",
        "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": "Sustainable Use License 1.0 since January 2026 (source-available, not OSI-approved; AGPL-3.0 before). NocoDB Cloud is a proprietary service under NocoDB's Terms of Service",
        "name": "Licence"
      },
      {
        "a": "6",
        "b": "199",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-07",
        "b": "2026-09-29",
        "name": "Last release"
      },
      {
        "a": "2021-11-09",
        "b": "2025-10-14",
        "name": "Terms last updated"
      },
      {
        "a": "2026-10-01",
        "b": "2026-03-20",
        "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": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "12k stars, 1.9M npm/wk, 31.8M PyPI/wk",
        "b": "65k stars, 6.3k npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Google Sheets API and NocoDB score within a point of each other on agent readiness, 76.3 (BB) and 75.7 (BB). NocoDB leads on reliability.",
        "question": "Which is better for AI agents, Google Sheets API or NocoDB?"
      },
      {
        "answer": "Google Sheets API uses an OAuth sign-in. NocoDB takes an API key or an OAuth sign-in.",
        "question": "Do Google Sheets API and NocoDB need an API key?"
      },
      {
        "answer": "Yes. Google Sheets API has a hosted endpoint at https://sheets.googleapis.com/v4 and NocoDB at https://app.nocodb.com.",
        "question": "Can an agent call Google Sheets API and NocoDB without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Security \u0026 auth, 80 against 71",
          "Payments \u0026 pricing, 35 against 30"
        ],
        "also": null,
        "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": [
          "Reliability, 97 against 90"
        ],
        "also": null,
        "goodFor": "Teams that want Airtable-style typed records with the option to self-host, and an agent that reads, filters and writes records or builds schema through MCP with a narrow allowlist.",
        "slug": "nocodb",
        "watchFor": "5 requests a second per user on every plan, shared by all of that user's tokens, with a 30-second block after a 429"
      }
    ],
    "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/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/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-nocodb.json",
        "title": "Coda (Superhuman Docs) vs NocoDB",
        "url": "https://www.anchorterminal.com/compare/coda-vs-nocodb"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-sheets-api-vs-microsoft-excel-graph.json",
        "title": "Google Sheets API vs Microsoft Excel (Microsoft Graph workbook API)",
        "url": "https://www.anchorterminal.com/compare/google-sheets-api-vs-microsoft-excel-graph"
      },
      {
        "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/airtable-vs-nocodb.json",
        "title": "Airtable vs NocoDB",
        "url": "https://www.anchorterminal.com/compare/airtable-vs-nocodb"
      },
      {
        "json": "https://www.anchorterminal.com/compare/baserow-vs-nocodb.json",
        "title": "Baserow vs NocoDB",
        "url": "https://www.anchorterminal.com/compare/baserow-vs-nocodb"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nocodb-vs-smartsheet.json",
        "title": "NocoDB vs Smartsheet API + MCP",
        "url": "https://www.anchorterminal.com/compare/nocodb-vs-smartsheet"
      }
    ],
    "scores": [
      {
        "by": 7,
        "edge": "nocodb",
        "google-sheets-api": 90,
        "key": "reliability",
        "name": "Reliability",
        "nocodb": 97,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 2,
        "edge": "nocodb",
        "google-sheets-api": 83,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "nocodb": 85,
        "weight": 13
      },
      {
        "by": 0,
        "edge": "",
        "google-sheets-api": 74,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "nocodb": 74,
        "weight": 13
      },
      {
        "by": 9,
        "edge": "google-sheets-api",
        "google-sheets-api": 80,
        "key": "security",
        "name": "Security \u0026 auth",
        "nocodb": 71,
        "weight": 14
      },
      {
        "by": 5,
        "edge": "google-sheets-api",
        "google-sheets-api": 35,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "nocodb": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 2,
        "edge": "nocodb",
        "google-sheets-api": 85,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "nocodb": 87,
        "weight": 7
      },
      {
        "by": 4,
        "edge": "google-sheets-api",
        "google-sheets-api": 80,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "nocodb": 76,
        "weight": 7
      }
    ],
    "summary": "Google Sheets API and NocoDB score within a point of each other on agent readiness, 76.3 (BB) and 75.7 (BB). NocoDB leads on reliability. 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.",
      "nocodb": "API tokens and MCP connections are limited by permission category and by base, and an MCP connection registers only the tools it is allowed. The v3 REST API has a public OpenAPI file. Requests are capped at 5 a second per user, REST writes take 10 records a call, and the Free plan stops at 1,000 API calls a month."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/google-sheets-api-vs-nocodb",
    "json": "https://www.anchorterminal.com/compare/google-sheets-api-vs-nocodb.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/google-sheets-api-vs-nocodb.md",
    "slim": "https://www.anchorterminal.com/compare/google-sheets-api-vs-nocodb.min.md"
  },
  "markdown": "Google Sheets API and NocoDB score within a point of each other on agent readiness, 76.3 (BB) and 75.7 (BB). NocoDB leads on reliability. 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- NocoDB: grade BB, 75.7/100, rank #37 of 629. Markdown https://www.anchorterminal.com/tools/nocodb.md · JSON https://www.anchorterminal.com/api/v1/tools/nocodb.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- Security \u0026 auth, 80 against 71\n- Payments \u0026 pricing, 35 against 30\n\nWatch for: Quotas are 300 reads and 300 writes a minute per project and 60 each per user per project\n\n### NocoDB (BB)\n\nGood for: Teams that want Airtable-style typed records with the option to self-host, and an agent that reads, filters and writes records or builds schema through MCP with a narrow allowlist.\n\nAhead on:\n- Reliability, 97 against 90\n\nWatch for: 5 requests a second per user on every plan, shared by all of that user's tokens, with a 30-second block after a 429\n\n\n## Score by category\n\n| Category | Weight | Google Sheets API | NocoDB | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 90 | 97 | NocoDB +7 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 83 | 85 | NocoDB +2 |\n| Agent ergonomics | 13% (16.2 this run) | 74 | 74 | even |\n| Security \u0026 auth | 14% (17.5 this run) | 80 | 71 | Google Sheets API +9 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 30 | Google Sheets API +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 85 | 87 | NocoDB +2 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 80 | 76 | Google Sheets API +4 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **76.3 · BB** | **75.7 · BB** | |\n\n## Facts side by side\n\n| Fact | Google Sheets API | NocoDB |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Google | NocoDB Inc |\n| Hosted endpoint | `https://sheets.googleapis.com/v4` | `https://app.nocodb.com` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth | OAuth or key |\n| Pricing | Free | Freemium |\n| x402 | no | no |\n| Licence | Proprietary service under the Google APIs Terms of Service. The client libraries are Apache-2.0 | Sustainable Use License 1.0 since January 2026 (source-available, not OSI-approved; AGPL-3.0 before). NocoDB Cloud is a proprietary service under NocoDB's Terms of Service |\n| Tools exposed | 6 | 199 |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Last release | 2026-10-07 | 2026-09-29 |\n| Terms last updated | 2021-11-09 | 2025-10-14 |\n| Privacy policy last updated | 2026-10-01 | 2026-03-20 |\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 | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | not found in the text | yes |\n| Popularity | 12k stars, 1.9M npm/wk, 31.8M PyPI/wk | 65k stars, 6.3k npm/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**NocoDB.** API tokens and MCP connections are limited by permission category and by base, and an MCP connection registers only the tools it is allowed. The v3 REST API has a public OpenAPI file. Requests are capped at 5 a second per user, REST writes take 10 records a call, and the Free plan stops at 1,000 API calls a month.\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### NocoDB\n\n1. Create a fine-grained token limited to the bases and categories the task needs. Send it as `xc-token` or as a Bearer token\n2. Stay under 5 requests a second across all tokens of one user. After a 429, honour `Retry-After` or wait 30 seconds\n3. Send REST writes in batches of 10 records. The MCP record tools take up to 100, counted as one API call per 10 records\n4. Write date filters with a sub-operator, such as `(due_date,eq,exactDate,2026-06-01)`, and put no space after `~and` or `~or`\n5. Use `/records/upsert` with a merge key so a repeated write updates the record instead of adding a duplicate\n\n## Questions\n\n### Which is better for AI agents, Google Sheets API or NocoDB?\n\nGoogle Sheets API and NocoDB score within a point of each other on agent readiness, 76.3 (BB) and 75.7 (BB). NocoDB leads on reliability.\n\n### Do Google Sheets API and NocoDB need an API key?\n\nGoogle Sheets API uses an OAuth sign-in. NocoDB takes an API key or an OAuth sign-in.\n\n### Can an agent call Google Sheets API and NocoDB without installing anything?\n\nYes. Google Sheets API has a hosted endpoint at https://sheets.googleapis.com/v4 and NocoDB at https://app.nocodb.com.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/google-sheets-api-vs-nocodb.json, and with the fewest tokens: https://www.anchorterminal.com/compare/google-sheets-api-vs-nocodb.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"google-sheets-api\", \"b\": \"nocodb\"}`. From a terminal: `anchor compare google-sheets-api nocodb`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/google-sheets-api.json and https://www.anchorterminal.com/api/v1/tools/nocodb.json\n\n## Other comparisons with Google Sheets API or NocoDB\n\n- [Airtable vs Google Sheets API](https://www.anchorterminal.com/compare/airtable-vs-google-sheets-api.md)\n- [Baserow vs Google Sheets API](https://www.anchorterminal.com/compare/baserow-vs-google-sheets-api.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 NocoDB](https://www.anchorterminal.com/compare/coda-vs-nocodb.md)\n- [Google Sheets API vs Microsoft Excel (Microsoft Graph workbook API)](https://www.anchorterminal.com/compare/google-sheets-api-vs-microsoft-excel-graph.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- [Airtable vs NocoDB](https://www.anchorterminal.com/compare/airtable-vs-nocodb.md)\n- [Baserow vs NocoDB](https://www.anchorterminal.com/compare/baserow-vs-nocodb.md)\n- [NocoDB vs Smartsheet API + MCP](https://www.anchorterminal.com/compare/nocodb-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 NocoDB",
        "url": ""
      }
    ],
    "description": "Google Sheets API and NocoDB score within a point of each other on agent readiness, 76.3 (BB) and 75.7 (BB). NocoDB leads on reliability. Both do sheets read. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Google Sheets API BB 76.3",
      "NocoDB BB 75.7",
      "scores"
    ],
    "h1": "Google Sheets API vs NocoDB",
    "image": "https://www.anchorterminal.com/assets/og/compare-google-sheets-api-vs-nocodb.png",
    "path": "/compare/google-sheets-api-vs-nocodb",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Google Sheets API vs NocoDB for AI agents, BB 76.3 vs BB 75.7",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/google-sheets-api-vs-nocodb"
  },
  "tokens": {
    "markdown": 2100,
    "slim": 680
  },
  "version": 1
}
