# ButterCMS vs DatoCMS > DatoCMS scores 74.4 (BB) to ButterCMS's 53.3 (D) for content management. Prices, MCP, x402, uptime and agent notes side by side. - Canonical: https://www.anchorterminal.com/compare/buttercms-vs-datocms - Markdown: https://www.anchorterminal.com/compare/buttercms-vs-datocms.md (~2,450 tokens) - Slim: https://www.anchorterminal.com/compare/buttercms-vs-datocms.min.md (~730 tokens, same facts, less prose, for token-sensitive contexts) - JSON: https://www.anchorterminal.com/compare/buttercms-vs-datocms.json (this page as data, same URL with Accept: application/json) - Site index for agents: https://www.anchorterminal.com/llms.txt (full text: https://www.anchorterminal.com/llms-full.txt) - API: https://www.anchorterminal.com/api/v1/index.json - Updated: 2026-10-09 DatoCMS scores 74.4 (BB) on agent readiness against ButterCMS's 53.3 (D), and leads in 6 of 7 scored categories. Both do content management. - ButterCMS: grade D, 53.3/100, rank #711 of 950. Markdown https://www.anchorterminal.com/tools/buttercms.md · JSON https://www.anchorterminal.com/api/v1/tools/buttercms.json - DatoCMS: grade BB, 74.4/100, rank #71 of 950. Markdown https://www.anchorterminal.com/tools/datocms.md · JSON https://www.anchorterminal.com/api/v1/tools/datocms.json - Best headless CMS and website publishing for AI agents: https://www.anchorterminal.com/best/cms/index.md - All 91 cms comparisons: https://www.anchorterminal.com/compare/cms/index.md ## Which one, for what ### ButterCMS (D) Good for: A team already on a paid ButterCMS plan that wants an agent to draft and publish pages, collection items and blog posts in small volumes. Watch for: The Write API is a paid add-on on Advanced ($249 a month) and Professional ($399), capped at 2,000 and 5,000 write calls a month. Its price is not published ### DatoCMS (BB) Good for: Teams on DatoCMS who want an agent to create, translate and publish records, upload assets or change models, testing first in a sandbox environment. Ahead on: - Schema & documentation, 85 against 78 - Agent ergonomics, 78 against 64 - Security & auth, 77 against 36 - Payments & pricing, 35 against 20 - Maintenance & community, 81 against 27 - Transparency & trust, 80 against 51 Also in its favour: - Agent-ready, a grade of BB or better Watch for: No idempotency keys in the reviewed documentation. Safe retries rest on optimistic locking and the JavaScript client's automatic retry ## Score by category | Category | Weight | ButterCMS | DatoCMS | Edge | | --- | --- | --- | --- | --- | | Reliability | 16% (20 this run) | 83 | 80 | ButterCMS +3 | | Performance | 10%, pending | pending | pending | not scored in this run | | Schema & documentation | 13% (16.2 this run) | 78 | 85 | DatoCMS +7 | | Agent ergonomics | 13% (16.2 this run) | 64 | 78 | DatoCMS +14 | | Security & auth | 14% (17.5 this run) | 36 | 77 | DatoCMS +41 | | Payments & pricing | 10% (12.5 this run) | 20 | 35 | DatoCMS +15 | | Task success | 10%, pending | pending | pending | not scored in this run | | Maintenance & community | 7% (8.8 this run) | 27 | 81 | DatoCMS +54 | | Transparency & trust | 7% (8.8 this run) | 51 | 80 | DatoCMS +29 | | Negative events | ≤15 | -2 | 0 | | | **Total** | | **53.3 · D** | **74.4 · BB** | | ## Facts side by side | Fact | ButterCMS | DatoCMS | | --- | --- | --- | | Kind | HTTP API | HTTP API | | Vendor | ButterCMS LLC | Dato Srl | | Hosted endpoint | `https://api.buttercms.com/v2` | `https://site-api.datocms.com` | | Transports | HTTP | HTTP, Streamable HTTP | | Auth | API key | OAuth or key | | Pricing | Freemium | Freemium | | x402 | no | no | | Licence | Proprietary service under ButterCMS's terms of service. The SDKs and starter projects on GitHub are MIT | Proprietary service under Dato Srl's terms of service. The API clients in datocms/js-rest-api-clients and the CLI in datocms/cli are MIT | | Tools exposed | none | 9 | | Read-only variant documented | no | yes | | llms.txt | yes | yes | | Last release | 2025-09-04 | 2026-10-01 | | Terms last updated | no date given | couldn't be read | | Privacy policy last updated | 2022-08-15 | couldn't be read | | Customer content may train models | not found in the text | couldn't be read | | Terms restrict automated access | not found in the text | couldn't be read | | Terms restrict benchmarking | not found in the text | couldn't be read | | Terms or service can change without notice | not found in the text | couldn't be read | | Arbitration or class-action waiver | not found in the text | couldn't be read | | Popularity | 6.9k npm/wk | 153k npm/wk | ## Verdicts **ButterCMS.** The Read and Write APIs have a public OpenAPI 3.1 file, Markdown docs and a status page with no incident since October 2025. The Write API is a paid add-on from the $249 plan, capped at 2,000 or 5,000 calls a month. Writes answer 202 with no identifier, support rotates tokens, and the terms are an undated website document. **DatoCMS.** The Content Management API publishes a JSON Hyper-Schema for 202 operations, 100 documented error codes and rate-limit headers, and the hosted MCP server adds OAuth with three access levels. There are no idempotency keys, the only official client library is JavaScript, audit logs are Enterprise only, and prices are in euros with no machine payment route. ## Before you call either ### ButterCMS 1. End every path with a slash. A missing slash returns a 301, and the vendor counts the redirect and the retry as two API calls 2. Send the write token only as `Authorization: Token `. The `auth_token` query parameter works for reads only 3. On page creation send every field key of the page type, with empty strings for fields left blank 4. A 202 means queued, not saved. Read the entry back with `preview=1` to confirm, and check a slug exists before retrying a create 5. Call the REST API directly for writes. The JavaScript SDK 3.0.3 has list, retrieve and search methods only ### DatoCMS 1. Send `X-Api-Version: 3` and `Accept: application/json` on every request, with `Content-Type: application/vnd.api+json` on writes 2. Records are `items`, models are `item_types` and assets are `uploads` in every path and payload 3. Save a record, then call the publish endpoint as a separate PUT. Send `meta.current_version` on updates and re-fetch on `STALE_ITEM_VERSION` 4. Stay under 60 requests every 3 seconds. On 429 wait the seconds in `x-ratelimit-reset`, and retry any error whose body has `transient` set to true 5. Fork a sandbox environment for schema changes and promote it when checked. Use `POST /items/validate` to test a payload without saving it ## Questions ### Which is better for AI agents, ButterCMS or DatoCMS? DatoCMS scores 74.4 (BB) on agent readiness against ButterCMS's 53.3 (D), and leads in 6 of 7 scored categories. ### Do ButterCMS and DatoCMS need an API key? ButterCMS needs an API key. DatoCMS takes an API key or an OAuth sign-in. ### Can an agent call ButterCMS and DatoCMS without installing anything? Yes. ButterCMS has a hosted endpoint at https://api.buttercms.com/v2 and DatoCMS at https://site-api.datocms.com. ## For agents - This comparison as JSON: https://www.anchorterminal.com/compare/buttercms-vs-datocms.json, and with the fewest tokens: https://www.anchorterminal.com/compare/buttercms-vs-datocms.min.md - Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {"a": "buttercms", "b": "datocms"}`. From a terminal: `anchor compare buttercms datocms` - Each listing in full: https://www.anchorterminal.com/api/v1/tools/buttercms.json and https://www.anchorterminal.com/api/v1/tools/datocms.json ## Other comparisons with ButterCMS or DatoCMS - [ButterCMS vs Contentstack](https://www.anchorterminal.com/compare/buttercms-vs-contentstack.md) - [ButterCMS vs Directus](https://www.anchorterminal.com/compare/buttercms-vs-directus.md) - [ButterCMS vs Ghost](https://www.anchorterminal.com/compare/buttercms-vs-ghost.md) - [ButterCMS vs Hygraph](https://www.anchorterminal.com/compare/buttercms-vs-hygraph.md) - [ButterCMS vs Kontent.ai](https://www.anchorterminal.com/compare/buttercms-vs-kontent-ai.md) - [ButterCMS vs Payload](https://www.anchorterminal.com/compare/buttercms-vs-payload.md) - [ButterCMS vs Prismic](https://www.anchorterminal.com/compare/buttercms-vs-prismic.md) - [ButterCMS vs Sanity](https://www.anchorterminal.com/compare/buttercms-vs-sanity.md) - [ButterCMS vs Storyblok](https://www.anchorterminal.com/compare/buttercms-vs-storyblok.md) - [ButterCMS vs Strapi](https://www.anchorterminal.com/compare/buttercms-vs-strapi.md) - [ButterCMS vs Webflow](https://www.anchorterminal.com/compare/buttercms-vs-webflow.md) - [ButterCMS vs WordPress](https://www.anchorterminal.com/compare/buttercms-vs-wordpress.md) - [Contentstack vs DatoCMS](https://www.anchorterminal.com/compare/contentstack-vs-datocms.md) - [DatoCMS vs Directus](https://www.anchorterminal.com/compare/datocms-vs-directus.md) - [DatoCMS vs Ghost](https://www.anchorterminal.com/compare/datocms-vs-ghost.md) - [DatoCMS vs Hygraph](https://www.anchorterminal.com/compare/datocms-vs-hygraph.md) - [DatoCMS vs Kontent.ai](https://www.anchorterminal.com/compare/datocms-vs-kontent-ai.md) - [DatoCMS vs Payload](https://www.anchorterminal.com/compare/datocms-vs-payload.md) - [DatoCMS vs Prismic](https://www.anchorterminal.com/compare/datocms-vs-prismic.md) - [DatoCMS vs Sanity](https://www.anchorterminal.com/compare/datocms-vs-sanity.md) - [DatoCMS vs Storyblok](https://www.anchorterminal.com/compare/datocms-vs-storyblok.md) - [DatoCMS vs Strapi](https://www.anchorterminal.com/compare/datocms-vs-strapi.md) - [DatoCMS vs Webflow](https://www.anchorterminal.com/compare/datocms-vs-webflow.md) - [DatoCMS vs WordPress](https://www.anchorterminal.com/compare/datocms-vs-wordpress.md)