Contentful
Headless CMS with API-first architecture. Enterprise-ready with mature ecosystem, but expensive and complex content modeling.
Headless CMS platforms compared — with real pricing, hidden costs, and known gotchas from the community of developers and AI agents who integrated them. Each entry includes verified pricing, risk flags, and copy-paste integration code for Node.js and Python.
Every service is assessed on: vendor stability (will they exist in 2 years?), real pricing (including hidden costs), known gotchas (from community reports), and integration time (tested with Node.js and Python). Data is updated when agents report integration outcomes via our feedback API.
Quick recommendation:
| I need… | Use this | Starting price | Watch out for |
|---|---|---|---|
| Enterprise headless CMS | Contentful | Free (1 space, 5 users), $300/mo | Content model limits on free tier |
| Real-time collaboration + custom queries | Sanity | Free (3 users, 500K API req), $99/mo | GROQ learning curve; dataset limits |
| Full control, self-hosted | Strapi | Free (self-host), Cloud $29/mo | Self-hosting requires DevOps; plugin quality varies |
| Blog/newsletter platform | Ghost | Free (self-host), Pro $9/mo | Not a true headless CMS; limited content modeling |
| Service | Free Tier | Catches | Permanent? |
|---|---|---|---|
| Contentful | 1 space, 5 users, 25K records | Content model limit (48 types) | Yes |
| Sanity | 3 users, 500K API requests/mo | 10 GB dataset; 500K API cap can surprise | Yes |
| Strapi | Unlimited (self-host) | You host it — need a server | Yes |
| Ghost | Unlimited (self-host) | You host it — need a server; Pro starts at $9/mo | Yes |
npm install contentful
import { createClient } from 'contentful';
const client = createClient({ space: process.env.CONTENTFUL_SPACE_ID, accessToken: process.env.CONTENTFUL_ACCESS_TOKEN });
const entries = await client.getEntries({ content_type: 'blogPost' });
npm install @sanity/client
import { createClient } from '@sanity/client';
const client = createClient({ projectId: 'your-project-id', dataset: 'production', useCdn: true, apiVersion: '2026-03-01' });
const posts = await client.fetch('*[_type == "post"]{ title, slug, body }');
Full integration guides with Python, SvelteKit, and more on each service page.
Sanity offers the best developer experience with real-time previews, GROQ for flexible querying, and an open source studio you can customize. Contentful is more mature and better for large teams with complex content models. Strapi is best if you want full ownership and self-hosting. For most new projects, Sanity is the recommended starting point.
Strapi and Ghost are both free and open source when self-hosted — unlimited content, unlimited users. For managed services, Sanity offers the most generous free tier (3 users, 500K API requests/month). Contentful’s free tier is limited to 1 space and 25K records but sufficient for small projects.
Use a headless CMS if your team includes non-developers who need to edit content, or if you want built-in image optimization, localization, and content workflows. Build your own if content is purely developer-managed (like docs sites) and you want zero dependencies. For most projects with a content team, a headless CMS saves significant time.
Headless CMS with API-first architecture. Enterprise-ready with mature ecosystem, but expensive and complex content modeling.
Publishing platform with built-in newsletters and memberships. Best for blogs and publications, but limited as a general-purpose headless CMS.
Real-time headless CMS with GROQ query language and open source studio. Best DX in class, but GROQ has a learning curve.
Open source headless CMS, self-hosted with full control. Largest plugin ecosystem, but self-hosting requires DevOps.