The REST Admin API is a legacy API as of October 1, 2024. Starting April 1, 2025, all new public apps must be built exclusively with the GraphQL Admin API. For details and migration steps, visit our migration guide.
Blog
content
access scope.In addition to an online storefront, Shopify shops come with a built-in blogging engine, allowing a shop to have one or more blogs.

Shop owners are encouraged to use blogs to:
- Make announcements
- Talk about their products in more detail
- Show off their expertise
- Connect with their customers and
- Boost their shop's search engine rankings
Shopify blogs are like most other blogs: a content management system for articles posted in reverse chronological order. Articles can be posted under one or more user-defined categories and tagged with one or more user-defined tags, with an option to allow readers to post comments to articles. An Atom feed is automatically generated for each blog, allowing for syndication. The search functionality built into every shop also searches the text in blog articles.
Blogs are meant to be used as a type of magazine or newsletter for the shop, with content that changes over time. If your shop needs a static page (such as an "About Us" page), we recommend that you use a Page instead.
Also see the Article resource for managing blog articles.
Endpoints
- post/admin/api/latest/blogs.
json Create a new Blog - get/admin/api/latest/blogs.
json Retrieve a list of all blogs - get/admin/api/latest/blogs/{blog_
id}. json Receive a single Blog - get/admin/api/latest/blogs/count.
json Receive a count of all Blogs - put/admin/api/latest/blogs/{blog_
id}. json Modify an existing Blog - del/admin/api/latest/blogs/{blog_
id}. json Remove an existing Blog
The Blog resource
Properties
Indicates whether readers can post comments to the blog and if comments are moderated or not. Possible values are:
Show commentable properties
- no (default): Readers cannot post comments to blog articles.
- moderate: Readers can post comments to blog articles, but comments must be moderated before they appear.
- yes: Readers can post comments to blog articles without moderation.
The date and time when the blog was created. The API returns this value in ISO 8601 format.
FeedBurner is a web feed management provider and can be enabled to provide custom RSS feeds for Shopify bloggers. Google has stopped supporting FeedBurner, and new or existing blogs that are not already integrated with FeedBurner can't use the service. This property will default to blank unless FeedBurner is enabled.
The URL that points to the FeedBurner location for blogs that have FeedBurner enabled. Google has stopped supporting FeedBurner, and new or existing blogs that are not already integrated with FeedBurner can't use the service. This property will default to blank unless FeedBurner is enabled
A human-friendly unique string that is automatically generated from the title if no handle is sent during the creation of a blog. Duplicate handles are appended with an incremental number, for example, blog-2
. The handle is customizable and is used by the Liquid templating language to refer to the blog. If you change the handle of a blog, then it can negatively affect the SEO of the shop. We recommend that you create a URL redirect to avoid any SEO issues.
A unique numeric identifier for the blog.
Attaches additional metadata to a store's resources:
Show metafields properties
- key (required): Identifier for the metafield (maximum of 30 characters).
- namespace (required): Container for a set of metadata. Namespaces help distinguish between metadata you created and metadata created by another individual with a similar namespace (maximum of 20 characters).
- value (required): Information to be stored as metadata.
- type (required): The metafield's information type. Refer to the full list of types.
- description (optional): Additional information about the metafield.
For more information on attaching metadata to Shopify resources, see the Metafield resource.
A list of tags associated with the 200 most recent blog articles. Tags are additional short descriptors formatted as a string of comma-separated values. For example, if an article has three tags: tag1, tag2, tag3. Tags are limited to 255 characters.
States the name of the template a blog is using if it is using an alternate template. If a blog is using the default blog.liquid template, the value returned is "null".
The title of the blog.
The date and time when changes were last made to the blog's properties. Note that this is not updated when creating, modifying or deleting articles in the blog. The API returns this value in ISO 8601 format.
The GraphQL GID of the blog.
The Blog resource
Anchor to POST request, Create a new BlogpostCreate a new Blog
Create a new blog
The title of the blog. Maximum length: 255 characters.
Anchor to post-blogs-examplesExamples
Create a new empty blog
Create a new empty blog
Show blog properties
The title of the blog.
Create a new empty blog with a metafield
Create a new empty blog with a metafield
Show blog properties
The title of the blog.
Attaches additional metadata to a store's resources:
Show metafields properties
- key (required): Identifier for the metafield (maximum of 30 characters).
- namespace (required): Container for a set of metadata. Namespaces help distinguish between metadata you created and metadata created by another individual with a similar namespace (maximum of 20 characters).
- value (required): Information to be stored as metadata.
- type (required): The metafield's information type. Refer to the full list of types.
- description (optional): Additional information about the metafield.
For more information on attaching metadata to Shopify resources, see the Metafield resource.
Trying to create a blog without a title will return an error
Trying to create a blog without a title will return an error
/admin/api/2025-07/blogs. json
Response
Anchor to GET request, Retrieve a list of all blogsgetRetrieve a list of all blogs
Retrieve a list of all blogs. Note: This endpoint implements pagination by using links that are provided in the response header. To learn more, refer to Make paginated requests to the REST Admin API.
comma-separated list of fields to include in the response
Filter by blog handle
The maximum number of results to retrieve.
Restrict results to after the specified ID
Anchor to get-blogs-examplesExamples
Get all blogs for a shop
Get all blogs for a shop
Get all blogs for a shop after a specified ID
Get all blogs for a shop after a specified ID
Restrict results to after the specified ID
/admin/api/2025-07/blogs. json
Response
Anchor to GET request, Receive a single BloggetReceive a single Blog
Get a single blog by its ID
comma-separated list of fields to include in the response
Get a single blog
Get a single blog
Get the id and title of a single blog
Get the id and title of a single blog
comma-separated list of fields to include in the response
/admin/api/2025-07/blogs/241253187. json
Response
Anchor to GET request, Receive a count of all BlogsgetReceive a count of all Blogs
Get a count of all blogs
Get the blogs count for a shop
Get the blogs count for a shop
/admin/api/2025-07/blogs/count. json
Response
Anchor to PUT request, Modify an existing BlogputModify an existing Blog
Update a blog
Add a metafield to an existing blog
Add a metafield to an existing blog
Show blog properties
A unique numeric identifier for the blog.
Attaches additional metadata to a store's resources:
Show metafields properties
- key (required): Identifier for the metafield (maximum of 30 characters).
- namespace (required): Container for a set of metadata. Namespaces help distinguish between metadata you created and metadata created by another individual with a similar namespace (maximum of 20 characters).
- value (required): Information to be stored as metadata.
- type (required): The metafield's information type. Refer to the full list of types.
- description (optional): Additional information about the metafield.
For more information on attaching metadata to Shopify resources, see the Metafield resource.
Update an existing blog title
Update an existing blog title
Show blog properties
A unique numeric identifier for the blog.
The title of the blog.
Update an existing blog title and handle and also activate comments
Update an existing blog title and handle and also activate comments
Show blog properties
A unique numeric identifier for the blog.
The title of the blog.
A human-friendly unique string that is automatically generated from the title if no handle is sent during the creation of a blog. Duplicate handles are appended with an incremental number, for example, blog-2
. The handle is customizable and is used by the Liquid templating language to refer to the blog. If you change the handle of a blog, then it can negatively affect the SEO of the shop. We recommend that you create a URL redirect to avoid any SEO issues.
Indicates whether readers can post comments to the blog and if comments are moderated or not. Possible values are:
Show commentable properties
- no (default): Readers cannot post comments to blog articles.
- moderate: Readers can post comments to blog articles, but comments must be moderated before they appear.
- yes: Readers can post comments to blog articles without moderation.
/admin/api/2025-07/blogs/241253187. json
Response
Anchor to DELETE request, Remove an existing BlogdelRemove an existing Blog
Delete a blog
Remove an existing blog from a shop
Remove an existing blog from a shop