Powerful CMS. Zero headache.

Drop our API-based CMS into any tech stack in minutes.

Butter slides right into our apps and lets us avoid having yet another WordPress site.

Daniel, Founder of Collective Idea

Marketers love Butter

  • ButterCMS Feature Image SEO Landing Pages
  • ButterCMS Feature Image Customer Case Studies
  • ButterCMS Feature Image Company News & Updates
  • ButterCMS Feature Image Events + Webinar Pages
  • ButterCMS Feature Image Education Center
  • ButterCMS Feature Image Location Pages
  • ButterCMS Feature Image and more...

Butter saves you development time

Save thousands of dollars worth of development time with our easy setup.

Integrating Butter into our Ruby application took less than an hour and most of that time was spent on design work.

Luke Brean, Legally

Everything you need

  • ButterCMS Feature Image Custom Page Types
  • ButterCMS Feature Image Custom Content Modeling
  • ButterCMS Feature Image Preview changes
  • ButterCMS Feature Image Media library
  • ButterCMS Feature Image CDN for assets
  • ButterCMS Feature Image Testing environment
  • ButterCMS Feature Image Localization
  • ButterCMS Feature Image Webhooks

Butter requires zero maintenance

Never worry about security upgrades, hosting, or performance.

Just wanted to let you know that Butter is awesome. 5 minutes to set it up and write a sample blog post, that was it.

Jeff Judge, Bright

Butter works with every tech stack

Ship projects faster using your preferred language/framework.

I've tried other API-first CMS'. I liked their programs, but I got yours up and running the fastest.

Beau O'Hara, Anstar Products

Setup in minutes

require 'buttercms-ruby'
ButterCMS::api_token = "api_token_BQokikJOvBiI2HlWgH4olfQ2"

# Get customer case studies
ButterCMS::Page.list('case_studies')

# Get website main menu
ButterCMS::Content.fetch(['main_menu'])

# Get list of FAQ
ButterCMS::Content.fetch(['faq'])
var butter = require('buttercms')('api_token_BQokikJOvBiI2HlWgH4olfQ2');

// Get customer case studies
butter.page.list('case_studies').then(function(resp) {
    console.log(resp.data)
});

// Get website main menu
butter.content.retrieve(['main_menu']).then(function(resp) {
  console.log(resp)
});

// Get list of FAQ
butter.content.retrieve(['faq']).then(function(resp) {
  console.log(resp)
});
var butter = require('buttercms')('api_token_BQokikJOvBiI2HlWgH4olfQ2');

// Get customer case studies
butter.page.list('case_studies').then(function(resp) {
    console.log(resp.data)
});

// Get website main menu
butter.content.retrieve(['main_menu']).then(function(resp) {
  console.log(resp)
});

// Get list of FAQ
butter.content.retrieve(['faq']).then(function(resp) {
  console.log(resp)
});
from butter_cms import ButterCMS
client = ButterCMS('api_token_BQokikJOvBiI2HlWgH4olfQ2')

def case_studies(request):
 case_studies = client.pages.all('case_studies')
 return render(request, 'case_studies.html', {'case_studies': case_studies})

def case_study(request, slug):
 case_study = client.pages.get('case_studies', slug)
 return render(request, 'case_study.html', {'case_study': case_study})
from butter_cms import ButterCMS
client = ButterCMS('api_token_BQokikJOvBiI2HlWgH4olfQ2')

# Get customer case studies
client.pages.all('case_studies')

# Get website main menu
client.content_fields.get(['main_menu'])

# Get list of FAQ
client.content_fields.get(['faq'])
class PagesController < ApplicationController
  def case_study_index
    @pages = ButterCMS::Page.list('case_studies')
  end

  def case_study
    @page = ButterCMS::Page.get('case_studies', params[:slug])
  end
end
use ButterCMS\ButterCMS;
$butterCms = new ButterCMS('api_token_BQokikJOvBiI2HlWgH4olfQ2');

# Get customer case studies
$butterCms->fetchPages('case_studies');

# Get website main menu
$butterCms->fetchContentFields(['main_menu']);

# Get list of FAQ
$butterCms->fetchContentFields(['faq']);
use ButterCMS\ButterCMS;
$butterCms = new ButterCMS('api_token_BQokikJOvBiI2HlWgH4olfQ2');

# Get customer case studies
$butterCms->fetchPages('case_studies');

# Get website main menu
$butterCms->fetchContentFields(['main_menu']);

# Get list of FAQ
$butterCms->fetchContentFields(['faq']);
using ButterCMS;

var client = new ButterCMSClient("api_token_BQokikJOvBiI2HlWgH4olfQ2");

// Get case studies
var caseStudies = await butterClient.ListPagesAsync("case_studies");

// Get website main menu
var keys = new string[1] { "main_menu" };
var contentFields = await butterClient.RetrieveContentFieldsJSONAsync(keys);
package main

import (
    "github.com/buttercms/buttercms-go"
)

func main() {
    ButterCMS.SetAuthToken("api_token_BQokikJOvBiI2HlWgH4olfQ2")
    // Get Case Studies
    ButterCMS.GetPages("case_studies", params)

    // Get main menu
    ButterCMS.GetContentFields([]string{"main_menu"})

    // Get FAQ
    ButterCMS.GetContentFields([]string{"faq"})
}

Beautiful admin interface

Easy to use. Easy to customize.

Try Butter free for 30-days

Get started now

Get started now

Sign up with Google Sign up with Github
or