# DatoCMS vs Ghost > DatoCMS scores 74.4 (BB) on agent readiness against Ghost's 58.3 (C), and leads in 4 of 7 scored categories. Ghost leads on payments & pricing. Both do cms content. Category scores, facts, verdicts and agent notes side by side. - Canonical: https://www.anchorterminal.com/compare/datocms-vs-ghost - Markdown: https://www.anchorterminal.com/compare/datocms-vs-ghost.md (~2,250 tokens) - Slim: https://www.anchorterminal.com/compare/datocms-vs-ghost.min.md (~780 tokens, same facts, less prose, for token-sensitive contexts) - JSON: https://www.anchorterminal.com/compare/datocms-vs-ghost.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-08 DatoCMS scores 74.4 (BB) on agent readiness against Ghost's 58.3 (C), and leads in 4 of 7 scored categories. Ghost leads on payments & pricing. Both do cms content. - DatoCMS: grade BB, 74.4/100, rank #62 of 722. Markdown https://www.anchorterminal.com/tools/datocms.md · JSON https://www.anchorterminal.com/api/v1/tools/datocms.json - Ghost: grade C, 58.3/100, rank #455 of 722. Markdown https://www.anchorterminal.com/tools/ghost.md · JSON https://www.anchorterminal.com/api/v1/tools/ghost.json ## Which one, for what ### 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 51 - Agent ergonomics, 78 against 69 - Security & auth, 77 against 56 - Transparency & trust, 80 against 72 Also in its favour: - Agent-ready, a grade of BB or better - A hosted endpoint, with nothing to install - Free to start without a card - No incidents deducted, where Ghost loses 7 points for them Watch for: No idempotency keys in the reviewed documentation. Safe retries rest on optimistic locking and the JavaScript client's automatic retry ### Ghost (C) Good for: A publication, blog or newsletter where an agent drafts posts and a person or a higher role publishes. Ahead on: - Payments & pricing, 50 against 35 Also in its favour: - Open source Watch for: No OpenAPI or other machine-readable description of the Admin API was found in the docs or the repository ## Score by category | Category | Weight | DatoCMS | Ghost | Edge | | --- | --- | --- | --- | --- | | Reliability | 16% (20 this run) | 80 | 80 | even | | Performance | 10%, pending | pending | pending | not scored in this run | | Schema & documentation | 13% (16.2 this run) | 85 | 51 | DatoCMS +34 | | Agent ergonomics | 13% (16.2 this run) | 78 | 69 | DatoCMS +9 | | Security & auth | 14% (17.5 this run) | 77 | 56 | DatoCMS +21 | | Payments & pricing | 10% (12.5 this run) | 35 | 50 | Ghost +15 | | Task success | 10%, pending | pending | pending | not scored in this run | | Maintenance & community | 7% (8.8 this run) | 81 | 85 | Ghost +4 | | Transparency & trust | 7% (8.8 this run) | 80 | 72 | DatoCMS +8 | | Negative events | ≤15 | 0 | -7 | | | **Total** | | **74.4 · BB** | **58.3 · C** | | ## Facts side by side | Fact | DatoCMS | Ghost | | --- | --- | --- | | Kind | HTTP API | HTTP API | | Vendor | Dato Srl | Ghost Foundation | | Hosted endpoint | `https://site-api.datocms.com` | no (local only) | | Transports | HTTP, Streamable HTTP | HTTP | | Auth | OAuth or key | API key | | Pricing | Freemium | Freemium | | x402 | no | no | | Licence | 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 | MIT, copyright Ghost Foundation. Ghost(Pro) is a paid hosting service under the Ghost Foundation's terms | | Tools exposed | 9 | none | | Read-only variant documented | yes | no | | llms.txt | yes | yes | | Last release | 2026-10-01 | 2026-10-07 | | Terms last updated | couldn't be read | no date given | | Privacy policy last updated | couldn't be read | no date given | | Customer content may train models | couldn't be read | not found in the text | | Terms restrict automated access | couldn't be read | yes | | Terms restrict benchmarking | couldn't be read | not found in the text | | Terms or service can change without notice | couldn't be read | not found in the text | | Arbitration or class-action waiver | couldn't be read | not found in the text | | Popularity | 153k npm/wk | 56k stars, 24k npm/wk | ## Verdicts **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. **Ghost.** A create needs only a title, updates are checked against `updated_at` so a stale write is refused, and a Contributor's staff token can draft without being able to publish. The Admin API has no OpenAPI file and one fixed permission set per integration, and 20 security advisories were published between 3 September and 1 October 2026. ## Before you call either ### 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 ### Ghost 1. Sign a fresh HS256 token for each batch of calls. Decode the hex secret to bytes, set `kid` to the key id, `aud` to `/admin/` and `exp` at most 5 minutes ahead 2. Set `status` to `draft` on every create unless told to publish, and publish later with a PUT that sets `status` to `published` 3. GET the post before each PUT and send its `updated_at` back. Tags and authors in a PUT replace the existing lists 4. Send content as a Lexical JSON string, or add `?source=html` and send `html`. The HTML conversion is lossy unless wrapped in an HTML card 5. Page through lists with `limit` up to 100 and `page`. Since Ghost 6.0 `limit=all` returns 100 items without an error ## Questions ### Which is better for AI agents, DatoCMS or Ghost? DatoCMS scores 74.4 (BB) on agent readiness against Ghost's 58.3 (C), and leads in 4 of 7 scored categories. Ghost leads on payments & pricing. ### Do DatoCMS and Ghost need an API key? DatoCMS takes an API key or an OAuth sign-in. Ghost needs an API key. ### Can an agent call DatoCMS and Ghost without installing anything? DatoCMS has a hosted endpoint at https://site-api.datocms.com. No hosted endpoint is listed for Ghost. ### Are DatoCMS and Ghost open source? No open-source release is listed for DatoCMS. Ghost is open source (MIT, copyright Ghost Foundation. Ghost(Pro) is a paid hosting service under the Ghost Foundation's terms). ## For agents - This comparison as JSON: https://www.anchorterminal.com/compare/datocms-vs-ghost.json, and with the fewest tokens: https://www.anchorterminal.com/compare/datocms-vs-ghost.min.md - Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {"a": "datocms", "b": "ghost"}`. From a terminal: `anchor compare datocms ghost` - Each listing in full: https://www.anchorterminal.com/api/v1/tools/datocms.json and https://www.anchorterminal.com/api/v1/tools/ghost.json ## Other comparisons with DatoCMS or Ghost - [Contentstack vs DatoCMS](https://www.anchorterminal.com/compare/contentstack-vs-datocms.md) - [Contentstack vs Ghost](https://www.anchorterminal.com/compare/contentstack-vs-ghost.md) - [DatoCMS vs Directus](https://www.anchorterminal.com/compare/datocms-vs-directus.md) - [DatoCMS vs Payload](https://www.anchorterminal.com/compare/datocms-vs-payload.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) - [Directus vs Ghost](https://www.anchorterminal.com/compare/directus-vs-ghost.md) - [Ghost vs Payload](https://www.anchorterminal.com/compare/ghost-vs-payload.md) - [Ghost vs Sanity](https://www.anchorterminal.com/compare/ghost-vs-sanity.md) - [Ghost vs Storyblok](https://www.anchorterminal.com/compare/ghost-vs-storyblok.md) - [Ghost vs Strapi](https://www.anchorterminal.com/compare/ghost-vs-strapi.md) - [Ghost vs Webflow](https://www.anchorterminal.com/compare/ghost-vs-webflow.md) - [Ghost vs WordPress](https://www.anchorterminal.com/compare/ghost-vs-wordpress.md)