{
  "data": {
    "a": {
      "slug": "google-forms",
      "name": "Google Forms API",
      "vendor": "Google",
      "vendorUrl": "https://developers.google.com/workspace/forms",
      "kind": "http-api",
      "category": "forms",
      "summary": "REST API from Google for creating and editing Google Forms forms and quizzes, reading responses and quiz grades, and subscribing to change notifications through Cloud Pub/Sub. Access is by OAuth 2.0.",
      "url": "https://www.anchorterminal.com/tools/google-forms",
      "markdownUrl": "https://www.anchorterminal.com/tools/google-forms.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/google-forms.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/google-forms.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"
      ],
      "remoteUrl": "https://forms.googleapis.com/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "@googleapis/forms"
        },
        {
          "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. Six scopes work with the API. forms.body, forms.body.readonly and forms.responses.readonly are specific to Forms, and drive, drive.file and drive.readonly are the Drive scopes. Reading responses needs forms.responses.readonly, drive or drive.file. Google's troubleshooting page says apps asking for sensitive scopes must pass verification to remove the unverified-app warning. The limits page says calls by a service account count as one account for quota. Watches also need a Pub/Sub topic that grants publish rights to forms-notifications@system.gserviceaccount.com.",
      "pricing": "free",
      "pricingNotes": "Standard use of the Forms API has no additional cost, and a Google account can enable it without a card or contract. Quotas are 975 reads, 450 response-list reads and 375 writes a minute per project, 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. Push notifications use Cloud Pub/Sub, which is billed separately and needs billing enabled. There is no separate sandbox; a test form in any account does that job (https://developers.google.com/workspace/forms/api/limits; https://developers.google.com/workspace/tools-safety).",
      "priceSummary": "Free",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Forms API docs, the limits page or the discovery document (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 0,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 31730,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developers.google.com/workspace/forms/api/guides",
      "capabilities": [
        "forms.create",
        "forms.responses",
        "forms.webhooks",
        "forms.surveys"
      ],
      "tags": [
        "hosted",
        "official",
        "closed-source",
        "free",
        "oauth",
        "webhooks",
        "typescript",
        "python",
        "enterprise",
        "status-page",
        "soc2"
      ],
      "lastRelease": "2026-09-24",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 70.8,
        "grade": "BB",
        "agentReady": true,
        "rank": 127,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 72,
          "maintenance": 61,
          "payments": 35,
          "reliability": 91,
          "schema": 78,
          "security": 66,
          "transparency": 80
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Six OAuth scopes separate form structure from responses, and batchUpdate applies a batch atomically with a revision check. Notifications go only to a Cloud Pub/Sub topic and carry no response data, the API can't list forms or create file upload questions, and the release notes were last updated on 8 April 2025.",
        "bestFor": "Agents that build forms and quizzes in a Google account and read the answers back, where people already use Google Forms.",
        "strengths": [
          "Separate read-only scopes for form structure (forms.body.readonly) and responses (forms.responses.readonly), plus the per-file drive.file scope",
          "forms.batchUpdate applies every request or none, and writeControl.requiredRevisionId rejects a write made against a stale revision",
          "Public discovery document for v1 (revision 20261004, 10 methods, 64 schemas) and Markdown copies of doc pages at `.md.txt` URLs",
          "Quotas are 975 reads, 450 response-list reads and 375 writes a minute per project, with no daily cap",
          "No Forms incident on the Workspace status dashboard since 12 November 2025, read on 8 October 2026"
        ],
        "weaknesses": [
          "Push notifications go only to a Cloud Pub/Sub topic in the caller's project, which needs Cloud billing, and they carry no form or response data",
          "A watch expires after seven days unless renewed, with at most 20 watches per form and event type for each project",
          "No method lists forms or deletes one, the API can't create file upload questions, and it can't submit a response",
          "The release notes have two entries, the latest dated 8 April 2025, and no error reference page was found beyond authentication and 429",
          "forms.create copies only the title, so a ten-question form takes forms.create, forms.batchUpdate and, by the vendor's notice, forms.setPublishSettings"
        ],
        "agentNotes": [
          "Call forms.create with a title only, then add items with forms.batchUpdate. Any other field in the create body is disallowed",
          "Publish with forms.setPublishSettings before sharing. Google's notice says forms created through the API after 30 June 2026 start unpublished",
          "Pass pageSize on forms.responses.list. With none set a page can hold up to 5,000 responses. Use filter=timestamp \u003e N to fetch only new ones",
          "After a Pub/Sub notification, call forms.responses.list yourself. The message holds only formId, watchId and eventType. Renew each watch within seven days",
          "Send writeControl.requiredRevisionId on forms.batchUpdate, and read the form before retrying a timed-out forms.create, which has no idempotency key"
        ],
        "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": 70.8
          }
        ],
        "editorialScores": {
          "ergonomics": 72,
          "maintenance": 61,
          "payments": 35,
          "reliability": 91,
          "schema": 78,
          "security": 66,
          "transparency": 66
        },
        "provenanceScore": 94
      },
      "connect": {
        "install": "npm install @googleapis/forms",
        "http": "curl \"https://forms.googleapis.com/v1/forms/$FORM_ID/responses?pageSize=50\" \\\n  -H \"Authorization: Bearer $GOOGLE_ACCESS_TOKEN\""
      },
      "letme": {
        "capability": "https://letme.dev/forms.create",
        "tool": "https://letme.dev/google-forms"
      },
      "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",
        "google-sheets-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/forms/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 release notes page has two entries, 17 March 2022 and 8 April 2025.",
          "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-forms.json",
      "live": {
        "slug": "google-forms",
        "probe": {
          "target": "https://forms.googleapis.com/v1",
          "method": "get",
          "lastAt": "2026-10-08T21:12:11.306229755Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 604,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 604,
          "p95ms24h": 664,
          "samples24h": 21,
          "samples30d": 21,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 21,
              "ok": 21
            }
          ]
        },
        "updatedAt": "2026-10-08T21:12:11.306229755Z"
      }
    },
    "answer": "Google Forms API scores 70.8 (BB) on agent readiness against Tally's 60.6 (C), and leads in 5 of 7 scored categories. Tally leads on maintenance \u0026 community.",
    "b": {
      "slug": "tally",
      "name": "Tally",
      "vendor": "Tally BV",
      "vendorUrl": "https://tally.so",
      "kind": "http-api",
      "category": "forms",
      "summary": "Tally is a form and survey builder from Tally BV in Ghent, Belgium. Agents create forms, read submissions and manage webhooks through a REST API at api.tally.so, or through a hosted MCP server that is in beta.",
      "url": "https://www.anchorterminal.com/tools/tally",
      "markdownUrl": "https://www.anchorterminal.com/tools/tally.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/tally.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/tally.json",
      "license": "Proprietary service under Tally's terms and conditions. The OpenAPI spec names MIT as its own licence",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.tally.so",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Self-serve. The REST API takes a Bearer API key that a signed-in user creates at tally.so/settings/api-keys. A key is tied to that user, carries all of the user's access, has no scopes and stops working when the user leaves the organisation. The MCP server takes the same key or OAuth 2 (authorisation code grant with PKCE S256, refresh tokens and dynamic client registration), where a person signs in to Tally and approves the client. The server metadata lists the scopes user, forms, responses, webhooks and mcp. No app review, partner approval or sales step was found.",
      "pricing": "freemium",
      "pricingNotes": "Free plan with unlimited forms and submissions under a fair use policy, and the API and the MCP server are free on every plan, so an agent's owner can start without a contract. Pro and Business are shown at $24 and $74 a month, with a monthly and yearly toggle and two months off for yearly billing. We could not establish which billing period the displayed figures belong to. Workspace and folder endpoints need Pro. There is no sandbox or test mode in the reviewed documentation (checked 2026-10-08).",
      "priceSummary": "$24 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the OpenAPI spec or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developers.tally.so",
      "llmsTxt": "https://developers.tally.so/llms.txt",
      "openapi": "https://developers.tally.so/api-reference/openapi.json",
      "capabilities": [
        "forms.create",
        "forms.responses",
        "forms.webhooks",
        "forms.surveys",
        "forms.embed"
      ],
      "tags": [
        "official",
        "hosted",
        "mcp",
        "oauth",
        "api-key",
        "openapi",
        "llms-txt",
        "webhooks",
        "free-tier",
        "closed-source",
        "eu-hosted",
        "status-page"
      ],
      "lastRelease": "2026-09-11",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 60.6,
        "grade": "C",
        "agentReady": false,
        "rank": 395,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 2,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 50,
          "maintenance": 66,
          "payments": 30,
          "reliability": 75,
          "schema": 82,
          "security": 47,
          "transparency": 73
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "The REST API is free on every plan, with a public OpenAPI 3.0 spec, llms.txt, date-based versions and typed block schemas for building forms. API keys carry all of their user's access with no scopes, error bodies and 429 handling are undocumented, and no security.txt, certification or bug bounty was found.",
        "bestFor": "An agent that builds a form from a description, publishes it and reads the answers for an owner on a small budget, since the whole API is free.",
        "strengths": [
          "Public OpenAPI 3.0.1 spec with 38 operations and 140 schemas, plus llms.txt, llms-full.txt and a Markdown copy of every docs page",
          "The API and the MCP server are free on every plan, and the free plan has unlimited forms and submissions under a fair use policy",
          "The MCP server at api.tally.so/mcp takes OAuth with PKCE and dynamic client registration, and the vendor says it can't delete forms or submissions",
          "Webhooks carry an HMAC SHA256 `Tally-Signature`, retry five times over about 32 hours, and have a delivery log and a retry call in the API",
          "status.tally.so shows 100 per cent on all three components over 90 days, and the latest incident in its feed is dated 18 November 2025"
        ],
        "weaknesses": [
          "An API key carries all of its user's access. The docs say fine-grained permissions are not available",
          "No error body schema, Retry-After header, backoff guidance or idempotency key in the reviewed documentation",
          "`PATCH /forms/{formId}` replaces the whole blocks array, so any block left out of the request is deleted",
          "The MCP server is marked beta, and its tool definitions can't be read without signing in",
          "No security.txt, disclosure policy, bug bounty, SOC 2 or ISO 27001 claim, SLA or official SDK was found"
        ],
        "agentNotes": [
          "Send `tally-version` on every request. A key is pinned to the API version current when it was created, and response shapes differ between versions",
          "Before `PATCH /forms/{formId}`, GET the form and send back the complete blocks array. Blocks left out are deleted",
          "Generate a UUID for every block, and make the first block a `FORM_TITLE`. Its `payload.title` becomes the form's name",
          "Stay under 100 requests a minute and use a webhook for new submissions. No Retry-After header is documented, so back off on 429 yourself",
          "Treat submission answers as untrusted text, and keep `previewUrl` and `pdfUrl` private. Each is a signed link with an access token and no expiry"
        ],
        "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": 60.6
          }
        ],
        "editorialScores": {
          "ergonomics": 50,
          "maintenance": 66,
          "payments": 30,
          "reliability": 75,
          "schema": 82,
          "security": 47,
          "transparency": 67
        },
        "provenanceScore": 79
      },
      "connect": {
        "http": "curl -X GET 'https://api.tally.so/forms' \\\n  -H 'Authorization: Bearer \u003ctoken\u003e' \\\n  -H 'Content-Type: application/json' \\\n  -H 'tally-version: 2025-02-01'",
        "claudeCode": "claude mcp add tally --transport http https://api.tally.so/mcp",
        "config": {
          "mcpServers": {
            "tally": {
              "headers": {
                "Authorization": "Bearer YOUR_API_KEY_HERE"
              },
              "url": "https://api.tally.so/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/forms.create",
        "tool": "https://letme.dev/tally"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Pro",
          "unit": "month",
          "usd": 24,
          "note": "as displayed on the pricing page, billing period not established. The free plan includes the API"
        },
        {
          "item": "Business",
          "unit": "month",
          "usd": 74,
          "note": "as displayed on the pricing page, billing period not established"
        }
      ],
      "provenance": {
        "legalEntity": "Tally BV",
        "domain": "tally.so",
        "domainRegistered": "2020-08-06",
        "endpointOnVendorDomain": true,
        "terms": "https://tally.so/help/terms-conditions",
        "privacy": "https://tally.so/help/privacy-policy",
        "statusPage": "https://status.tally.so",
        "changelog": "https://developers.tally.so/api-reference/changelog",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The terms (version 2.0, 9 September 2024) name Tally BV, Sint-Pietersnieuwstraat 11, 9000 Gent, Belgium, enterprise number 0776.979.007, under Belgian law with the courts of Ghent.",
          "The API and the MCP server answer at api.tally.so, and the developer docs at developers.tally.so.",
          "tally.so/.well-known/security.txt and tally.so/security.txt both return 404.",
          "RDAP at rdap.nic.so gives a registration date of 2020-08-06 for tally.so and NameCheap as registrar.",
          "A second changelog for the product as a whole is at tally.so/changelog."
        ],
        "score": 79
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/tally.json",
      "live": {
        "slug": "tally",
        "probe": {
          "target": "https://api.tally.so",
          "method": "get",
          "lastAt": "2026-10-08T21:12:23.026415366Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 67,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 77,
          "p95ms24h": 201,
          "samples24h": 64,
          "samples30d": 64,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 64,
              "ok": 64
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.tally.so",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T19:39:15.701831114Z"
        },
        "securityTxt": {
          "url": "https://tally.so/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:55.978667631Z"
        },
        "pages": [
          {
            "url": "https://developers.tally.so/api-reference/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:18:03.02632096Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "cc08fa442aff"
          },
          {
            "url": "https://tally.so/help/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:25:05.667847097Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1d8b6671d903"
          },
          {
            "url": "https://tally.so/help/terms-conditions",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:25:07.91997507Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "f67a529c212c"
          }
        ],
        "updatedAt": "2026-10-08T21:12:23.026415366Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Google",
        "b": "Tally BV",
        "name": "Vendor"
      },
      {
        "a": "https://forms.googleapis.com/v1",
        "b": "https://api.tally.so",
        "name": "Hosted endpoint"
      },
      {
        "a": "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": "Proprietary service under Tally's terms and conditions. The OpenAPI spec names MIT as its own licence",
        "name": "Licence"
      },
      {
        "a": "0",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "yes",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-24",
        "b": "2026-09-11",
        "name": "Last release"
      },
      {
        "a": "2021-11-09",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-10-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": "yes",
        "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": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "32k npm/wk",
        "b": "none",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Google Forms API scores 70.8 (BB) on agent readiness against Tally's 60.6 (C), and leads in 5 of 7 scored categories. Tally leads on maintenance \u0026 community.",
        "question": "Which is better for AI agents, Google Forms API or Tally?"
      },
      {
        "answer": "Google Forms API uses an OAuth sign-in. Tally takes an API key or an OAuth sign-in.",
        "question": "Do Google Forms API and Tally need an API key?"
      },
      {
        "answer": "Yes. Google Forms API has a hosted endpoint at https://forms.googleapis.com/v1 and Tally at https://api.tally.so.",
        "question": "Can an agent call Google Forms API and Tally without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 91 against 75",
          "Agent ergonomics, 72 against 50",
          "Security \u0026 auth, 66 against 47",
          "Payments \u0026 pricing, 35 against 30",
          "Transparency \u0026 trust, 80 against 73"
        ],
        "also": [
          "Agent-ready, a grade of BB or better"
        ],
        "goodFor": "Agents that build forms and quizzes in a Google account and read the answers back, where people already use Google Forms.",
        "slug": "google-forms",
        "watchFor": "Push notifications go only to a Cloud Pub/Sub topic in the caller's project, which needs Cloud billing, and they carry no form or response data"
      },
      {
        "aheadOn": [
          "Maintenance \u0026 community, 66 against 61"
        ],
        "also": null,
        "goodFor": "An agent that builds a form from a description, publishes it and reads the answers for an owner on a small budget, since the whole API is free.",
        "slug": "tally",
        "watchFor": "An API key carries all of its user's access. The docs say fine-grained permissions are not available"
      }
    ],
    "job": {
      "capability": "forms.create",
      "name": "Forms create"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/formstack-vs-google-forms.json",
        "title": "Formstack vs Google Forms API",
        "url": "https://www.anchorterminal.com/compare/formstack-vs-google-forms"
      },
      {
        "json": "https://www.anchorterminal.com/compare/formstack-vs-tally.json",
        "title": "Formstack vs Tally",
        "url": "https://www.anchorterminal.com/compare/formstack-vs-tally"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-forms-vs-jotform.json",
        "title": "Google Forms API vs Jotform",
        "url": "https://www.anchorterminal.com/compare/google-forms-vs-jotform"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-forms-vs-surveymonkey.json",
        "title": "Google Forms API vs SurveyMonkey",
        "url": "https://www.anchorterminal.com/compare/google-forms-vs-surveymonkey"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-forms-vs-typeform.json",
        "title": "Google Forms API vs Typeform",
        "url": "https://www.anchorterminal.com/compare/google-forms-vs-typeform"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jotform-vs-tally.json",
        "title": "Jotform vs Tally",
        "url": "https://www.anchorterminal.com/compare/jotform-vs-tally"
      },
      {
        "json": "https://www.anchorterminal.com/compare/surveymonkey-vs-tally.json",
        "title": "SurveyMonkey vs Tally",
        "url": "https://www.anchorterminal.com/compare/surveymonkey-vs-tally"
      },
      {
        "json": "https://www.anchorterminal.com/compare/tally-vs-typeform.json",
        "title": "Tally vs Typeform",
        "url": "https://www.anchorterminal.com/compare/tally-vs-typeform"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fillout-vs-google-forms.json",
        "title": "Fillout vs Google Forms API",
        "url": "https://www.anchorterminal.com/compare/fillout-vs-google-forms"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fillout-vs-tally.json",
        "title": "Fillout vs Tally",
        "url": "https://www.anchorterminal.com/compare/fillout-vs-tally"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-forms-vs-paperform.json",
        "title": "Google Forms API vs Paperform",
        "url": "https://www.anchorterminal.com/compare/google-forms-vs-paperform"
      },
      {
        "json": "https://www.anchorterminal.com/compare/paperform-vs-tally.json",
        "title": "Paperform vs Tally",
        "url": "https://www.anchorterminal.com/compare/paperform-vs-tally"
      },
      {
        "json": "https://www.anchorterminal.com/compare/formbricks-vs-google-forms.json",
        "title": "Formbricks vs Google Forms API",
        "url": "https://www.anchorterminal.com/compare/formbricks-vs-google-forms"
      },
      {
        "json": "https://www.anchorterminal.com/compare/formbricks-vs-tally.json",
        "title": "Formbricks vs Tally",
        "url": "https://www.anchorterminal.com/compare/formbricks-vs-tally"
      }
    ],
    "scores": [
      {
        "by": 16,
        "edge": "google-forms",
        "google-forms": 91,
        "key": "reliability",
        "name": "Reliability",
        "tally": 75,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 4,
        "edge": "tally",
        "google-forms": 78,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "tally": 82,
        "weight": 13
      },
      {
        "by": 22,
        "edge": "google-forms",
        "google-forms": 72,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "tally": 50,
        "weight": 13
      },
      {
        "by": 19,
        "edge": "google-forms",
        "google-forms": 66,
        "key": "security",
        "name": "Security \u0026 auth",
        "tally": 47,
        "weight": 14
      },
      {
        "by": 5,
        "edge": "google-forms",
        "google-forms": 35,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "tally": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 5,
        "edge": "tally",
        "google-forms": 61,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "tally": 66,
        "weight": 7
      },
      {
        "by": 7,
        "edge": "google-forms",
        "google-forms": 80,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "tally": 73,
        "weight": 7
      }
    ],
    "summary": "Google Forms API scores 70.8 (BB) on agent readiness against Tally's 60.6 (C), and leads in 5 of 7 scored categories. Tally leads on maintenance \u0026 community. Both do forms create.",
    "verdicts": {
      "google-forms": "Six OAuth scopes separate form structure from responses, and batchUpdate applies a batch atomically with a revision check. Notifications go only to a Cloud Pub/Sub topic and carry no response data, the API can't list forms or create file upload questions, and the release notes were last updated on 8 April 2025.",
      "tally": "The REST API is free on every plan, with a public OpenAPI 3.0 spec, llms.txt, date-based versions and typed block schemas for building forms. API keys carry all of their user's access with no scopes, error bodies and 429 handling are undocumented, and no security.txt, certification or bug bounty was found."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/google-forms-vs-tally",
    "json": "https://www.anchorterminal.com/compare/google-forms-vs-tally.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/google-forms-vs-tally.md",
    "slim": "https://www.anchorterminal.com/compare/google-forms-vs-tally.min.md"
  },
  "markdown": "Google Forms API scores 70.8 (BB) on agent readiness against Tally's 60.6 (C), and leads in 5 of 7 scored categories. Tally leads on maintenance \u0026 community. Both do forms create.\n\n- Google Forms API: grade BB, 70.8/100, rank #127 of 722. Markdown https://www.anchorterminal.com/tools/google-forms.md · JSON https://www.anchorterminal.com/api/v1/tools/google-forms.json\n- Tally: grade C, 60.6/100, rank #395 of 722. Markdown https://www.anchorterminal.com/tools/tally.md · JSON https://www.anchorterminal.com/api/v1/tools/tally.json\n\n## Which one, for what\n\n### Google Forms API (BB)\n\nGood for: Agents that build forms and quizzes in a Google account and read the answers back, where people already use Google Forms.\n\nAhead on:\n- Reliability, 91 against 75\n- Agent ergonomics, 72 against 50\n- Security \u0026 auth, 66 against 47\n- Payments \u0026 pricing, 35 against 30\n- Transparency \u0026 trust, 80 against 73\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n\nWatch for: Push notifications go only to a Cloud Pub/Sub topic in the caller's project, which needs Cloud billing, and they carry no form or response data\n\n### Tally (C)\n\nGood for: An agent that builds a form from a description, publishes it and reads the answers for an owner on a small budget, since the whole API is free.\n\nAhead on:\n- Maintenance \u0026 community, 66 against 61\n\nWatch for: An API key carries all of its user's access. The docs say fine-grained permissions are not available\n\n\n## Score by category\n\n| Category | Weight | Google Forms API | Tally | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 91 | 75 | Google Forms API +16 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 78 | 82 | Tally +4 |\n| Agent ergonomics | 13% (16.2 this run) | 72 | 50 | Google Forms API +22 |\n| Security \u0026 auth | 14% (17.5 this run) | 66 | 47 | Google Forms API +19 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 30 | Google Forms API +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 61 | 66 | Tally +5 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 80 | 73 | Google Forms API +7 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **70.8 · BB** | **60.6 · C** | |\n\n## Facts side by side\n\n| Fact | Google Forms API | Tally |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Google | Tally BV |\n| Hosted endpoint | `https://forms.googleapis.com/v1` | `https://api.tally.so` |\n| Transports | 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 | Proprietary service under Tally's terms and conditions. The OpenAPI spec names MIT as its own licence |\n| Tools exposed | 0 | none |\n| Read-only variant documented | yes | no |\n| llms.txt | no | yes |\n| Last release | 2026-09-24 | 2026-09-11 |\n| Terms last updated | 2021-11-09 | no date given |\n| Privacy policy last updated | 2026-10-01 | no date given |\n| Customer content may train models | yes | not found in the text |\n| Terms restrict automated access | yes | yes |\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 | not found in the text |\n| Popularity | 32k npm/wk | none |\n\n## Verdicts\n\n**Google Forms API.** Six OAuth scopes separate form structure from responses, and batchUpdate applies a batch atomically with a revision check. Notifications go only to a Cloud Pub/Sub topic and carry no response data, the API can't list forms or create file upload questions, and the release notes were last updated on 8 April 2025.\n\n**Tally.** The REST API is free on every plan, with a public OpenAPI 3.0 spec, llms.txt, date-based versions and typed block schemas for building forms. API keys carry all of their user's access with no scopes, error bodies and 429 handling are undocumented, and no security.txt, certification or bug bounty was found.\n\n## Before you call either\n\n### Google Forms API\n\n1. Call forms.create with a title only, then add items with forms.batchUpdate. Any other field in the create body is disallowed\n2. Publish with forms.setPublishSettings before sharing. Google's notice says forms created through the API after 30 June 2026 start unpublished\n3. Pass pageSize on forms.responses.list. With none set a page can hold up to 5,000 responses. Use filter=timestamp \u003e N to fetch only new ones\n4. After a Pub/Sub notification, call forms.responses.list yourself. The message holds only formId, watchId and eventType. Renew each watch within seven days\n5. Send writeControl.requiredRevisionId on forms.batchUpdate, and read the form before retrying a timed-out forms.create, which has no idempotency key\n\n### Tally\n\n1. Send `tally-version` on every request. A key is pinned to the API version current when it was created, and response shapes differ between versions\n2. Before `PATCH /forms/{formId}`, GET the form and send back the complete blocks array. Blocks left out are deleted\n3. Generate a UUID for every block, and make the first block a `FORM_TITLE`. Its `payload.title` becomes the form's name\n4. Stay under 100 requests a minute and use a webhook for new submissions. No Retry-After header is documented, so back off on 429 yourself\n5. Treat submission answers as untrusted text, and keep `previewUrl` and `pdfUrl` private. Each is a signed link with an access token and no expiry\n\n## Questions\n\n### Which is better for AI agents, Google Forms API or Tally?\n\nGoogle Forms API scores 70.8 (BB) on agent readiness against Tally's 60.6 (C), and leads in 5 of 7 scored categories. Tally leads on maintenance \u0026 community.\n\n### Do Google Forms API and Tally need an API key?\n\nGoogle Forms API uses an OAuth sign-in. Tally takes an API key or an OAuth sign-in.\n\n### Can an agent call Google Forms API and Tally without installing anything?\n\nYes. Google Forms API has a hosted endpoint at https://forms.googleapis.com/v1 and Tally at https://api.tally.so.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/google-forms-vs-tally.json, and with the fewest tokens: https://www.anchorterminal.com/compare/google-forms-vs-tally.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"google-forms\", \"b\": \"tally\"}`. From a terminal: `anchor compare google-forms tally`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/google-forms.json and https://www.anchorterminal.com/api/v1/tools/tally.json\n\n## Other comparisons with Google Forms API or Tally\n\n- [Formstack vs Google Forms API](https://www.anchorterminal.com/compare/formstack-vs-google-forms.md)\n- [Formstack vs Tally](https://www.anchorterminal.com/compare/formstack-vs-tally.md)\n- [Google Forms API vs Jotform](https://www.anchorterminal.com/compare/google-forms-vs-jotform.md)\n- [Google Forms API vs SurveyMonkey](https://www.anchorterminal.com/compare/google-forms-vs-surveymonkey.md)\n- [Google Forms API vs Typeform](https://www.anchorterminal.com/compare/google-forms-vs-typeform.md)\n- [Jotform vs Tally](https://www.anchorterminal.com/compare/jotform-vs-tally.md)\n- [SurveyMonkey vs Tally](https://www.anchorterminal.com/compare/surveymonkey-vs-tally.md)\n- [Tally vs Typeform](https://www.anchorterminal.com/compare/tally-vs-typeform.md)\n- [Fillout vs Google Forms API](https://www.anchorterminal.com/compare/fillout-vs-google-forms.md)\n- [Fillout vs Tally](https://www.anchorterminal.com/compare/fillout-vs-tally.md)\n- [Google Forms API vs Paperform](https://www.anchorterminal.com/compare/google-forms-vs-paperform.md)\n- [Paperform vs Tally](https://www.anchorterminal.com/compare/paperform-vs-tally.md)\n- [Formbricks vs Google Forms API](https://www.anchorterminal.com/compare/formbricks-vs-google-forms.md)\n- [Formbricks vs Tally](https://www.anchorterminal.com/compare/formbricks-vs-tally.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 Forms API vs Tally",
        "url": ""
      }
    ],
    "description": "Google Forms API scores 70.8 (BB) on agent readiness against Tally's 60.6 (C), and leads in 5 of 7 scored categories. Tally leads on maintenance \u0026 community. Both do forms create. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Google Forms API BB 70.8",
      "Tally C 60.6",
      "scores"
    ],
    "h1": "Google Forms API vs Tally",
    "image": "https://www.anchorterminal.com/assets/og/compare-google-forms-vs-tally.png",
    "path": "/compare/google-forms-vs-tally",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Google Forms API vs Tally for AI agents, BB 70.8 vs C 60.6",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/google-forms-vs-tally"
  },
  "tokens": {
    "markdown": 2200,
    "slim": 680
  },
  "version": 1
}
