WordPress Public

App · Website Builders · 14 actions

Read any public WordPress site without a login: its posts, pages, categories, tags, comments, media library, authors and custom post types, straight from the REST API every WordPress site publishes. Watch a blog for new posts, pull a post's text for summarising, search a site, or read a shop's products. No account or API key required.

Actions

ActionWhat it does
Get a pageFetch one published page in full by its ID or by its slug.
Get a postFetch one published post in full by its ID or by its slug, the last part of its URL.
Get site infoIdentify a WordPress site: its title, tagline, time zone and the REST namespaces it offers, which say what else is installed (a wc/ namespace means WooCommerce).
Get the latest postGet the newest published post, flat, so the step after it can read the title, link and body without indexing into a list.
List authorsList a site's authors: the users who have published something public, with their display name, bio, website and avatar.
List categoriesList a site's categories with how many posts each holds, or the categories on one post.
List commentsList the approved comments across a site or on one post, newest first.
List content of a typeList the published items of any public post type by its REST base: product for a WooCommerce shop, portfolio, event, testimonial, recipe, or anything a plugin or theme added.
List mediaList a site's media library: images, video, audio and documents, with the URL of every size the site generated.
List pagesList or search a site's published pages: the about page, the contact page, documentation, landing pages.
List post typesList the public post types a site has and the REST base each one answers on.
List postsList or search a site's published posts, newest first unless sorted otherwise.
List tagsList a site's tags with how many posts each carries, or the tags on one post.
Search a siteSearch everything public on a site at once: posts, pages, custom types such as products, or categories and tags.

Get a page

Fetch one published page in full by its ID or by its slug. The body comes back as HTML and as plain text with a word count, which is what a step that summarises or checks a page for changes wants.

Inputs

Site URLsite_urltext
The WordPress site to read, e.g. https://example.com or https://example.com/blog for a site in a subdirectory. Leave empty to read the default site saved on the connection.
Page IDpage_idnumber
The page's ID. Give this or a slug.At least 1.
Slugslugtext
The page's slug, e.g. about from https://example.com/about/. Give this or a page ID.

Outputs

authornumber
The author's user ID.
author_nametext
The author's display name, or null when the site hides its authors.
author_urltext
The author's archive page on the site, or null.
comment_statustext
open when readers may comment, closed otherwise.
content_htmltext
The full body as rendered HTML, or null when Include content was off.
content_texttext
The full body as plain text with the HTML removed, for summarising or searching. Null when Include content was off.
datetext
When it was published, in the site's own time zone.
date_gmttext
When it was published, in UTC.
excerpt_htmltext
The excerpt as rendered HTML, often empty for a page.
excerpt_texttext
The excerpt as plain text.
featured_image_alttext
The featured image's alt text, or null.
featured_image_urltext
The featured image's full-size URL, or null when there is none.
featured_medianumber
The featured image's media ID, 0 when there is none.
idnumber
The page's ID.
linktext
The page's public URL.
menu_ordernumber
The page's position among its siblings.
modifiedtext
When it was last changed, in the site's own time zone.
modified_gmttext
When it was last changed, in UTC.
parentnumber
The parent page's ID, 0 for a top-level page.
site_urltext
The site that was read, normalised. Useful when the step named one rather than using the default.
slugtext
The page's slug, the last part of its URL.
statustext
Always publish: anonymous requests see published pages only.
titletext
The page's title as plain text.
typetext
The post type, page.
word_countnumber
How many words the body has, or null when Include content was off.
Example output
{
  "author": 3,
  "author_name": "Jordan Blake",
  "author_url": "https://example.com/author/jordan/",
  "comment_status": "closed",
  "content_html": "<p>We are a small team building tools for the web.</p>\n",
  "content_text": "We are a small team building tools for the web.",
  "date": "2025-03-10T12:00:00",
  "date_gmt": "2025-03-10T12:00:00",
  "excerpt_html": "",
  "excerpt_text": "",
  "featured_image_alt": null,
  "featured_image_url": null,
  "featured_media": 0,
  "id": 2,
  "link": "https://example.com/about/",
  "menu_order": 1,
  "modified": "2026-07-01T09:00:00",
  "modified_gmt": "2026-07-01T08:00:00",
  "parent": 0,
  "site_url": "https://example.com",
  "slug": "about",
  "status": "publish",
  "title": "About",
  "type": "page",
  "word_count": 10
}

Get a post

Fetch one published post in full by its ID or by its slug, the last part of its URL. The body comes back as HTML and as plain text with a word count, alongside the author's name, the featured image and the category and tag names. Use the slug when all you have is a link.

Inputs

Site URLsite_urltext
The WordPress site to read, e.g. https://example.com or https://example.com/blog for a site in a subdirectory. Leave empty to read the default site saved on the connection.
Post IDpost_idnumber
The post's ID. Give this or a slug.At least 1.
Slugslugtext
The post's slug, e.g. we-launched from https://example.com/2026/09/we-launched/. Give this or a post ID.

Outputs

authornumber
The author's user ID.
author_nametext
The author's display name, or null when the site hides its authors.
author_urltext
The author's archive page on the site, or null.
categorieslist
The IDs of the post's categories.
category_nameslist
The names of the post's categories.
comment_statustext
open when readers may comment, closed otherwise.
content_htmltext
The full body as rendered HTML, or null when Include content was off.
content_texttext
The full body as plain text with the HTML removed, for summarising or searching. Null when Include content was off.
datetext
When it was published, in the site's own time zone.
date_gmttext
When it was published, in UTC.
excerpt_htmltext
The excerpt as rendered HTML.
excerpt_texttext
The excerpt as plain text.
featured_image_alttext
The featured image's alt text, or null.
featured_image_urltext
The featured image's full-size URL, or null when there is none.
featured_medianumber
The featured image's media ID, 0 when there is none.
formattext
The post format: standard, aside, gallery, link, quote and so on.
idnumber
The post's ID.
linktext
The post's public URL.
modifiedtext
When it was last changed, in the site's own time zone.
modified_gmttext
When it was last changed, in UTC.
site_urltext
The site that was read, normalised. Useful when the step named one rather than using the default.
slugtext
The post's slug, the last part of its URL.
statustext
Always publish: anonymous requests see published posts only.
stickytrue/false
True when the post is pinned to the top of the blog.
tag_nameslist
The names of the post's tags.
tagslist
The IDs of the post's tags.
titletext
The post's title as plain text.
typetext
The post type, post for an ordinary post.
word_countnumber
How many words the body has, or null when Include content was off.
Example output
{
  "author": 3,
  "author_name": "Jordan Blake",
  "author_url": "https://example.com/author/jordan/",
  "categories": [
    5
  ],
  "category_names": [
    "News"
  ],
  "comment_status": "open",
  "content_html": "<p>After a year of work, the new version is out.</p>\n<h2>What changed</h2>\n<ul>\n<li>A faster editor</li>\n<li>Better search</li>\n</ul>\n",
  "content_text": "After a year of work, the new version is out.\nWhat changed\nA faster editor\nBetter search",
  "date": "2026-09-01T09:30:00",
  "date_gmt": "2026-09-01T08:30:00",
  "excerpt_html": "<p>After a year of work, the new version is out. [&hellip;]</p>\n",
  "excerpt_text": "After a year of work, the new version is out. [\u2026]",
  "featured_image_alt": "Five people around a laptop",
  "featured_image_url": "https://example.com/wp-content/uploads/2026/08/launch-hero.jpg",
  "featured_media": 412,
  "format": "standard",
  "id": 128,
  "link": "https://example.com/2026/09/we-launched/",
  "modified": "2026-09-02T14:05:00",
  "modified_gmt": "2026-09-02T13:05:00",
  "site_url": "https://example.com",
  "slug": "we-launched",
  "status": "publish",
  "sticky": true,
  "tag_names": [
    "Launch"
  ],
  "tags": [
    22
  ],
  "title": "We launched \u2013 here\u2019s what\u2019s new",
  "type": "post",
  "word_count": 17
}

Get site info

Identify a WordPress site: its title, tagline, time zone and the REST namespaces it offers, which say what else is installed (a wc/ namespace means WooCommerce). It also reports where the API was found, so it is the one-step check that a site can be read at all before a workflow asks more of it.

Inputs

Site URLsite_urltext
The WordPress site to read, e.g. https://example.com or https://example.com/blog for a site in a subdirectory. Leave empty to read the default site saved on the connection.

Outputs

api_roottext
Where the REST API answers on this site, as found.
gmt_offsetnumber
The site's UTC offset in hours, the clock its dates are in.
has_woocommercetrue/false
True when a WooCommerce namespace is listed, i.e. the site is a shop.
has_wp_v2true/false
True when the wp/v2 content routes are there, which every action here needs.
hometext
The site address, where visitors go.
nametext
The site's title.
namespaceslist
Every REST namespace the site offers: wp/v2 always, plus one per plugin that adds routes.
pretty_permalinkstrue/false
True when the API answers at /wp-json/, false when the site is on plain permalinks.
site_icon_urltext
The site icon, or null when none is set or the site is older than 6.0.
site_urltext
The site that was read, normalised. Useful when the step named one rather than using the default.
taglinetext
The site's tagline, empty when none is set.
timezonetext
The site's time zone name, e.g. Europe/London, or empty when set as an offset.
urltext
The WordPress address, where the software is installed.
Example output
{
  "api_root": "https://example.com/wp-json/",
  "gmt_offset": 1.0,
  "has_woocommerce": true,
  "has_wp_v2": true,
  "home": "https://example.com",
  "name": "Example",
  "namespaces": [
    "oembed/1.0",
    "wp/v2",
    "wp-site-health/v1",
    "wp-block-editor/v1",
    "wc/v3",
    "wc/store/v1"
  ],
  "pretty_permalinks": true,
  "site_icon_url": "https://example.com/wp-content/uploads/2025/03/icon-150x150.png",
  "site_url": "https://example.com",
  "tagline": "Just another WordPress site",
  "timezone": "Europe/London",
  "url": "https://example.com"
}

Get the latest post

Get the newest published post, flat, so the step after it can read the title, link and body without indexing into a list. Narrow to a category, tag or author. This is the step for 'tell me when the blog publishes': run it on a schedule, keep the last ID seen, and act when it changes. When nothing matches, found is false and the fields are empty rather than the step failing.

Inputs

Site URLsite_urltext
The WordPress site to read, e.g. https://example.com or https://example.com/blog for a site in a subdirectory. Leave empty to read the default site saved on the connection.
Category IDcategorynumber
Only return posts in this category. Find IDs with List categories.At least 1.
Tag IDtagnumber
Only return posts with this tag. Find IDs with List tags.At least 1.
Author IDauthornumber
Only return posts by this author. Find IDs with List authors, or read author off any post.At least 1.

Outputs

authornumber
The author's user ID.
author_nametext
The author's display name, or null when the site hides its authors.
author_urltext
The author's archive page on the site, or null.
categorieslist
The IDs of the post's categories.
category_nameslist
The names of the post's categories.
comment_statustext
open when readers may comment, closed otherwise.
content_htmltext
The full body as rendered HTML, or null when Include content was off.
content_texttext
The full body as plain text with the HTML removed, for summarising or searching. Null when Include content was off.
datetext
When it was published, in the site's own time zone.
date_gmttext
When it was published, in UTC.
excerpt_htmltext
The excerpt as rendered HTML.
excerpt_texttext
The excerpt as plain text.
featured_image_alttext
The featured image's alt text, or null.
featured_image_urltext
The featured image's full-size URL, or null when there is none.
featured_medianumber
The featured image's media ID, 0 when there is none.
formattext
The post format: standard, aside, gallery, link, quote and so on.
foundtrue/false
True when a post matched. False means the site, or the category, tag or author asked for, has no published posts.
idnumber
The post's ID.
linktext
The post's public URL.
modifiedtext
When it was last changed, in the site's own time zone.
modified_gmttext
When it was last changed, in UTC.
site_urltext
The site that was read, normalised. Useful when the step named one rather than using the default.
slugtext
The post's slug, the last part of its URL.
statustext
Always publish: anonymous requests see published posts only.
stickytrue/false
True when the post is pinned to the top of the blog.
tag_nameslist
The names of the post's tags.
tagslist
The IDs of the post's tags.
titletext
The post's title as plain text.
total_postsnumber
How many published posts match the filters in all.
typetext
The post type, post for an ordinary post.
word_countnumber
How many words the body has, or null when Include content was off.
Example output
{
  "author": 3,
  "author_name": "Jordan Blake",
  "author_url": "https://example.com/author/jordan/",
  "categories": [
    5
  ],
  "category_names": [
    "News"
  ],
  "comment_status": "open",
  "content_html": "<p>After a year of work, the new version is out.</p>\n<h2>What changed</h2>\n<ul>\n<li>A faster editor</li>\n<li>Better search</li>\n</ul>\n",
  "content_text": "After a year of work, the new version is out.\nWhat changed\nA faster editor\nBetter search",
  "date": "2026-09-01T09:30:00",
  "date_gmt": "2026-09-01T08:30:00",
  "excerpt_html": "<p>After a year of work, the new version is out. [&hellip;]</p>\n",
  "excerpt_text": "After a year of work, the new version is out. [\u2026]",
  "featured_image_alt": "Five people around a laptop",
  "featured_image_url": "https://example.com/wp-content/uploads/2026/08/launch-hero.jpg",
  "featured_media": 412,
  "format": "standard",
  "found": true,
  "id": 128,
  "link": "https://example.com/2026/09/we-launched/",
  "modified": "2026-09-02T14:05:00",
  "modified_gmt": "2026-09-02T13:05:00",
  "site_url": "https://example.com",
  "slug": "we-launched",
  "status": "publish",
  "sticky": true,
  "tag_names": [
    "Launch"
  ],
  "tags": [
    22
  ],
  "title": "We launched \u2013 here\u2019s what\u2019s new",
  "total_posts": 57,
  "type": "post",
  "word_count": 17
}

List authors

List a site's authors: the users who have published something public, with their display name, bio, website and avatar. This is how to find the author ID the post filters take. Emails, logins and roles are never public. Some sites hide this list with a security plugin; the author's name still comes back on every post.

Inputs

Site URLsite_urltext
The WordPress site to read, e.g. https://example.com or https://example.com/blog for a site in a subdirectory. Leave empty to read the default site saved on the connection.
Searchsearchtext
Only return authors matching these words.
Slugslugtext
Only return the author with this slug, the last part of its URL. Exact match.
Sort byorder_bytext
What to sort by. WordPress defaults to name.One of: name, id, slug, url (Website), include (Order of included IDs), include_slugs (Order of included slugs).
Sort directionordertext
Ascending or descending. WordPress defaults to descending.One of: desc (Descending), asc (Ascending).
Results per pageper_pagenumber
How many results to return, 1 to 100. WordPress defaults to 10 and refuses more than 100; read total_pages and ask for the next page for the rest.From 1 to 100. Default: 10.
Pagepagenumber
Which page of results to return, starting at 1.At least 1. Default: 1.

Outputs

countnumber
How many authors came back on this page.
has_moretrue/false
True when a later page exists.
itemslist
The authors on this page of results.
pagenumber
Which page this is.
per_pagenumber
The page size that was used.
site_urltext
The site that was read, normalised. Useful when the step named one rather than using the default.
totalnumber
How many authors match in all, across every page, from the site's X-WP-Total header. Null when the site did not say.
total_pagesnumber
How many pages there are at this page size.
Example output
{
  "count": 1,
  "has_more": false,
  "items": [
    {
      "avatar_url": "https://secure.gravatar.com/avatar/6f1c?s=96&d=mm&r=g",
      "description": "Writes about the web, one post at a time.",
      "id": 3,
      "link": "https://example.com/author/jordan/",
      "name": "Jordan Blake",
      "slug": "jordan",
      "url": "https://jordanblake.example"
    }
  ],
  "page": 1,
  "per_page": 10,
  "site_url": "https://example.com",
  "total": 2,
  "total_pages": 1
}

List categories

List a site's categories with how many posts each holds, or the categories on one post. This is how to find the category ID the post filters take, and how to map the IDs a post carries back to names. Categories can be nested: narrow to the children of one, or to the top level with a parent of 0.

Inputs

Site URLsite_urltext
The WordPress site to read, e.g. https://example.com or https://example.com/blog for a site in a subdirectory. Leave empty to read the default site saved on the connection.
Searchsearchtext
Only return categories matching these words.
Parent category IDparentnumber
Only return the subcategories of this category. 0 returns top-level categories only; leave empty for every category.At least 0.
Slugslugtext
Only return the category with this slug, the last part of its URL. Exact match.
Post IDpostnumber
Only return the terms assigned to this post.At least 1.
Hide emptyhide_emptytrue/false
Turn this on to leave out terms that no published post uses.Default: false.
Sort byorder_bytext
What to sort by. WordPress defaults to name.One of: name, count (Number of posts), id, slug, description, term_group (Term group), include (Order of included IDs), include_slugs (Order of included slugs).
Sort directionordertext
Ascending or descending. WordPress defaults to descending.One of: desc (Descending), asc (Ascending).
Results per pageper_pagenumber
How many results to return, 1 to 100. WordPress defaults to 10 and refuses more than 100; read total_pages and ask for the next page for the rest.From 1 to 100. Default: 10.
Pagepagenumber
Which page of results to return, starting at 1.At least 1. Default: 1.

Outputs

countnumber
How many categories came back on this page.
has_moretrue/false
True when a later page exists.
itemslist
The categories on this page of results.
pagenumber
Which page this is.
per_pagenumber
The page size that was used.
site_urltext
The site that was read, normalised. Useful when the step named one rather than using the default.
totalnumber
How many categories match in all, across every page, from the site's X-WP-Total header. Null when the site did not say.
total_pagesnumber
How many pages there are at this page size.
Example output
{
  "count": 1,
  "has_more": false,
  "items": [
    {
      "count": 14,
      "description": "Product news and release notes.",
      "id": 5,
      "link": "https://example.com/category/news/",
      "name": "News",
      "parent": 0,
      "slug": "news",
      "taxonomy": "category"
    }
  ],
  "page": 1,
  "per_page": 10,
  "site_url": "https://example.com",
  "total": 4,
  "total_pages": 1
}

List comments

List the approved comments across a site or on one post, newest first. Each comes back with the commenter's name, website and avatar and the text as HTML and plain text. Only approved comments are public, so the moderation queue is not here; use the WordPress integration with an Application Password for that.

Inputs

Site URLsite_urltext
The WordPress site to read, e.g. https://example.com or https://example.com/blog for a site in a subdirectory. Leave empty to read the default site saved on the connection.
Post IDpostnumber
Only return the comments on this post.At least 1.
Parent comment IDparentnumber
Only return replies to this comment. 0 returns top-level comments only; leave empty for every comment.At least 0.
Searchsearchtext
Only return comments matching these words.
Posted afterposted_afterdate and time
Only return comments posted after this moment. A bare date such as 2026-09-01 means the start of that day. Compared in the site's own time zone: a value with a time zone is converted to the site's clock first.
Posted beforeposted_beforedate and time
Only return comments posted before this moment. A bare date such as 2026-09-01 means the start of that day. Compared in the site's own time zone: a value with a time zone is converted to the site's clock first.
Sort byorder_bytext
What to sort by. WordPress defaults to date_gmt.One of: date, date_gmt (Date (UTC)), id, post, parent, type, include (Order of included IDs).
Sort directionordertext
Ascending or descending. WordPress defaults to descending.One of: desc (Descending), asc (Ascending).
Results per pageper_pagenumber
How many results to return, 1 to 100. WordPress defaults to 10 and refuses more than 100; read total_pages and ask for the next page for the rest.From 1 to 100. Default: 10.
Pagepagenumber
Which page of results to return, starting at 1.At least 1. Default: 1.

Outputs

countnumber
How many comments came back on this page.
has_moretrue/false
True when a later page exists.
itemslist
The comments on this page of results.
pagenumber
Which page this is.
per_pagenumber
The page size that was used.
site_urltext
The site that was read, normalised. Useful when the step named one rather than using the default.
totalnumber
How many comments match in all, across every page, from the site's X-WP-Total header. Null when the site did not say.
total_pagesnumber
How many pages there are at this page size.
Example output
{
  "count": 1,
  "has_more": false,
  "items": [
    {
      "author": 0,
      "author_avatar_url": "https://secure.gravatar.com/avatar/a1b2?s=96&d=mm&r=g",
      "author_name": "Sam",
      "author_url": "",
      "content_html": "<p>Congratulations on the launch!</p>\n",
      "content_text": "Congratulations on the launch!",
      "date": "2026-09-01T11:02:00",
      "date_gmt": "2026-09-01T10:02:00",
      "id": 77,
      "link": "https://example.com/2026/09/we-launched/#comment-77",
      "parent": 0,
      "post": 128,
      "status": "approved",
      "type": "comment"
    }
  ],
  "page": 1,
  "per_page": 10,
  "site_url": "https://example.com",
  "total": 1,
  "total_pages": 1
}

List content of a type

List the published items of any public post type by its REST base: product for a WooCommerce shop, portfolio, event, testimonial, recipe, or anything a plugin or theme added. Each item comes back with the standard fields plus every term on it and, under custom_fields, whatever else the type carries (an ACF group, a plugin's own columns). Run List post types first to see what a site has.

Inputs

Site URLsite_urltext
The WordPress site to read, e.g. https://example.com or https://example.com/blog for a site in a subdirectory. Leave empty to read the default site saved on the connection.
REST baserest_basetextRequired
The route name of the post type, as List post types reports it in rest_base: product for a WooCommerce shop, portfolio, event, testimonial, or posts and pages themselves.
Searchsearchtext
Only return items matching these words.
Slugslugtext
Only return the item with this slug, the last part of its URL. Exact match.
Published afterpublished_afterdate and time
Only return items published after this moment. A bare date such as 2026-09-01 means the start of that day. Compared in the site's own time zone: a value with a time zone is converted to the site's clock first.
Published beforepublished_beforedate and time
Only return items published before this moment. A bare date such as 2026-09-01 means the start of that day. Compared in the site's own time zone: a value with a time zone is converted to the site's clock first.
Sort byorder_bytext
What to sort by. WordPress defaults to date.One of: date, modified (Last modified), title, slug, id, author, relevance (Relevance (with a search)), include (Order of included IDs), include_slugs (Order of included slugs), menu_order (Menu order).
Sort directionordertext
Ascending or descending. WordPress defaults to descending.One of: desc (Descending), asc (Ascending).
Results per pageper_pagenumber
How many results to return, 1 to 100. WordPress defaults to 10 and refuses more than 100; read total_pages and ask for the next page for the rest.From 1 to 100. Default: 10.
Pagepagenumber
Which page of results to return, starting at 1.At least 1. Default: 1.
Include contentinclude_contenttrue/false
Turn this on to return each item's full body as HTML and as plain text, with a word count. Off by default, because a page of full posts is a lot to carry; the excerpt is always included.Default: false.

Outputs

countnumber
How many items came back on this page.
has_moretrue/false
True when a later page exists.
itemslist
The items on this page of results.
pagenumber
Which page this is.
per_pagenumber
The page size that was used.
rest_basetext
The REST base that was read, normalised.
site_urltext
The site that was read, normalised. Useful when the step named one rather than using the default.
totalnumber
How many items match in all, across every page, from the site's X-WP-Total header. Null when the site did not say.
total_pagesnumber
How many pages there are at this page size.
Example output
{
  "count": 1,
  "has_more": true,
  "items": [
    {
      "author": 3,
      "author_name": "Jordan Blake",
      "author_url": "https://example.com/author/jordan/",
      "content_html": null,
      "content_text": null,
      "custom_fields": {
        "acf": {
          "price_note": "Free shipping over 40"
        },
        "product_cat": [
          9
        ],
        "product_tag": []
      },
      "date": "2026-06-05T08:00:00",
      "date_gmt": "2026-06-05T07:00:00",
      "excerpt_text": "A5, dot grid, 192 pages.",
      "featured_image_url": "https://example.com/wp-content/uploads/2026/08/launch-hero.jpg",
      "id": 301,
      "link": "https://example.com/product/field-notebook/",
      "modified": "2026-08-20T10:30:00",
      "modified_gmt": "2026-08-20T09:30:00",
      "slug": "field-notebook",
      "status": "publish",
      "terms": [
        {
          "id": 9,
          "name": "Stationery",
          "slug": "stationery",
          "taxonomy": "product_cat"
        }
      ],
      "title": "Field notebook",
      "type": "product",
      "word_count": null
    }
  ],
  "page": 1,
  "per_page": 10,
  "rest_base": "product",
  "site_url": "https://example.com",
  "total": 48,
  "total_pages": 5
}

List media

List a site's media library: images, video, audio and documents, with the URL of every size the site generated. Narrow to one kind of file, one MIME type, or the files uploaded to one post. Use it to pull a site's images into a gallery or a digest, or to find the PDF a page links to.

Inputs

Site URLsite_urltext
The WordPress site to read, e.g. https://example.com or https://example.com/blog for a site in a subdirectory. Leave empty to read the default site saved on the connection.
Searchsearchtext
Only return media items matching these words.
Media typemedia_typetext
Only return one kind of file. Leave empty for the whole library.One of: image (Images), video, audio, application (Documents (PDF, Office files, archives)), text (Text files).
MIME typemime_typetext
Only return files of exactly this MIME type, e.g. image/png or application/pdf.
Attached to post IDparentnumber
Only return files uploaded to this post or page. 0 returns files attached to nothing; leave empty for every file.At least 0.
Uploaded afteruploaded_afterdate and time
Only return files uploaded after this moment. A bare date such as 2026-09-01 means the start of that day. Compared in the site's own time zone: a value with a time zone is converted to the site's clock first.
Uploaded beforeuploaded_beforedate and time
Only return files uploaded before this moment. A bare date such as 2026-09-01 means the start of that day. Compared in the site's own time zone: a value with a time zone is converted to the site's clock first.
Sort byorder_bytext
What to sort by. WordPress defaults to date.One of: date, modified (Last modified), title, slug, id, author, relevance (Relevance (with a search)), include (Order of included IDs), include_slugs (Order of included slugs).
Sort directionordertext
Ascending or descending. WordPress defaults to descending.One of: desc (Descending), asc (Ascending).
Results per pageper_pagenumber
How many results to return, 1 to 100. WordPress defaults to 10 and refuses more than 100; read total_pages and ask for the next page for the rest.From 1 to 100. Default: 10.
Pagepagenumber
Which page of results to return, starting at 1.At least 1. Default: 1.

Outputs

countnumber
How many media items came back on this page.
has_moretrue/false
True when a later page exists.
itemslist
The media items on this page of results.
pagenumber
Which page this is.
per_pagenumber
The page size that was used.
site_urltext
The site that was read, normalised. Useful when the step named one rather than using the default.
totalnumber
How many media items match in all, across every page, from the site's X-WP-Total header. Null when the site did not say.
total_pagesnumber
How many pages there are at this page size.
Example output
{
  "count": 1,
  "has_more": true,
  "items": [
    {
      "alt_text": "Five people around a laptop",
      "author": 3,
      "caption_text": "The team at launch.",
      "date": "2026-08-30T10:12:00",
      "date_gmt": "2026-08-30T09:12:00",
      "description_text": "",
      "file_size": 184320,
      "height": 900,
      "id": 412,
      "large_url": "https://example.com/wp-content/uploads/2026/08/launch-hero-1024x576.jpg",
      "link": "https://example.com/launch-hero/",
      "media_type": "image",
      "medium_url": "https://example.com/wp-content/uploads/2026/08/launch-hero-300x169.jpg",
      "mime_type": "image/jpeg",
      "post": 128,
      "sizes": [
        {
          "height": 150,
          "name": "thumbnail",
          "url": "https://example.com/wp-content/uploads/2026/08/launch-hero-150x150.jpg",
          "width": 150
        },
        {
          "height": 169,
          "name": "medium",
          "url": "https://example.com/wp-content/uploads/2026/08/launch-hero-300x169.jpg",
          "width": 300
        },
        {
          "height": 576,
          "name": "large",
          "url": "https://example.com/wp-content/uploads/2026/08/launch-hero-1024x576.jpg",
          "width": 1024
        },
        {
          "height": 900,
          "name": "full",
          "url": "https://example.com/wp-content/uploads/2026/08/launch-hero.jpg",
          "width": 1600
        }
      ],
      "slug": "launch-hero",
      "source_url": "https://example.com/wp-content/uploads/2026/08/launch-hero.jpg",
      "thumbnail_url": "https://example.com/wp-content/uploads/2026/08/launch-hero-150x150.jpg",
      "title": "Launch hero",
      "width": 1600
    }
  ],
  "page": 1,
  "per_page": 10,
  "site_url": "https://example.com",
  "total": 212,
  "total_pages": 22
}

List pages

List or search a site's published pages: the about page, the contact page, documentation, landing pages. Narrow to the children of one page, or to top-level pages with a parent of 0, and sort by menu order to get them in the site's own navigation order. Turn on Include content for the full body.

Inputs

Site URLsite_urltext
The WordPress site to read, e.g. https://example.com or https://example.com/blog for a site in a subdirectory. Leave empty to read the default site saved on the connection.
Searchsearchtext
Only return pages matching these words.
Parent page IDparentnumber
Only return the child pages of this page. 0 returns top-level pages only; leave empty for every page.At least 0.
Slugslugtext
Only return the page with this slug, the last part of its URL. Exact match.
Sort byorder_bytext
What to sort by. WordPress defaults to date.One of: date, modified (Last modified), title, slug, id, author, relevance (Relevance (with a search)), include (Order of included IDs), include_slugs (Order of included slugs), menu_order (Menu order).
Sort directionordertext
Ascending or descending. WordPress defaults to descending.One of: desc (Descending), asc (Ascending).
Results per pageper_pagenumber
How many results to return, 1 to 100. WordPress defaults to 10 and refuses more than 100; read total_pages and ask for the next page for the rest.From 1 to 100. Default: 10.
Pagepagenumber
Which page of results to return, starting at 1.At least 1. Default: 1.
Include contentinclude_contenttrue/false
Turn this on to return each page's full body as HTML and as plain text, with a word count. Off by default, because a page of full posts is a lot to carry; the excerpt is always included.Default: false.

Outputs

countnumber
How many pages came back on this page.
has_moretrue/false
True when a later page exists.
itemslist
The pages on this page of results.
pagenumber
Which page this is.
per_pagenumber
The page size that was used.
site_urltext
The site that was read, normalised. Useful when the step named one rather than using the default.
totalnumber
How many pages match in all, across every page, from the site's X-WP-Total header. Null when the site did not say.
total_pagesnumber
How many pages there are at this page size.
Example output
{
  "count": 1,
  "has_more": false,
  "items": [
    {
      "author": 3,
      "author_name": "Jordan Blake",
      "author_url": "https://example.com/author/jordan/",
      "comment_status": "closed",
      "content_html": null,
      "content_text": null,
      "date": "2025-03-10T12:00:00",
      "date_gmt": "2025-03-10T12:00:00",
      "excerpt_html": "",
      "excerpt_text": "",
      "featured_image_alt": null,
      "featured_image_url": null,
      "featured_media": 0,
      "id": 2,
      "link": "https://example.com/about/",
      "menu_order": 1,
      "modified": "2026-07-01T09:00:00",
      "modified_gmt": "2026-07-01T08:00:00",
      "parent": 0,
      "slug": "about",
      "status": "publish",
      "title": "About",
      "type": "page",
      "word_count": null
    }
  ],
  "page": 1,
  "per_page": 10,
  "site_url": "https://example.com",
  "total": 6,
  "total_pages": 1
}

List post types

List the public post types a site has and the REST base each one answers on. Every site has posts, pages and media; a shop adds products, a portfolio site adds projects, a theme adds testimonials or events. Feed a rest_base from here into List content of a type to read any of them.

Inputs

Site URLsite_urltext
The WordPress site to read, e.g. https://example.com or https://example.com/blog for a site in a subdirectory. Leave empty to read the default site saved on the connection.

Outputs

countnumber
How many post types the site has.
itemslist
The public post types, built-in ones first.
rest_baseslist
The rest_base of every type, in the same order, for a quick membership check.
site_urltext
The site that was read, normalised. Useful when the step named one rather than using the default.
Example output
{
  "count": 4,
  "items": [
    {
      "description": "",
      "hierarchical": false,
      "name": "Posts",
      "rest_base": "posts",
      "rest_namespace": "wp/v2",
      "slug": "post",
      "taxonomies": [
        "category",
        "post_tag"
      ]
    },
    {
      "description": "",
      "hierarchical": true,
      "name": "Pages",
      "rest_base": "pages",
      "rest_namespace": "wp/v2",
      "slug": "page",
      "taxonomies": []
    },
    {
      "description": "",
      "hierarchical": false,
      "name": "Media",
      "rest_base": "media",
      "rest_namespace": "wp/v2",
      "slug": "attachment",
      "taxonomies": []
    },
    {
      "description": "This is where you can add new products to your store.",
      "hierarchical": false,
      "name": "Products",
      "rest_base": "product",
      "rest_namespace": "wp/v2",
      "slug": "product",
      "taxonomies": [
        "product_type",
        "product_cat",
        "product_tag"
      ]
    }
  ],
  "rest_bases": [
    "posts",
    "pages",
    "media",
    "product"
  ],
  "site_url": "https://example.com"
}

List posts

List or search a site's published posts, newest first unless sorted otherwise. Narrow by words, category, tag, author, a date range or a slug. Each post comes back with its author's name, its featured image URL and its category and tag names already filled in, plus the excerpt; turn on Include content for the full body as HTML and as plain text. The result carries the site's total, so a workflow knows how many pages there are without fetching them.

Inputs

Site URLsite_urltext
The WordPress site to read, e.g. https://example.com or https://example.com/blog for a site in a subdirectory. Leave empty to read the default site saved on the connection.
Searchsearchtext
Only return posts matching these words.
Category IDcategorynumber
Only return posts in this category. Find IDs with List categories.At least 1.
Tag IDtagnumber
Only return posts with this tag. Find IDs with List tags.At least 1.
Author IDauthornumber
Only return posts by this author. Find IDs with List authors, or read author off any post.At least 1.
Published afterpublished_afterdate and time
Only return posts published after this moment. A bare date such as 2026-09-01 means the start of that day. Compared in the site's own time zone: a value with a time zone is converted to the site's clock first.
Published beforepublished_beforedate and time
Only return posts published before this moment. A bare date such as 2026-09-01 means the start of that day. Compared in the site's own time zone: a value with a time zone is converted to the site's clock first.
Slugslugtext
Only return the post with this slug, the last part of its URL. Exact match.
Sticky postsstickytext
Sticky posts are the ones pinned to the top of the blog. Leave empty to list them with everything else, or narrow to only them or to everything but them.One of: only (Only sticky posts), exclude (Everything except sticky posts).
Sort byorder_bytext
What to sort by. WordPress defaults to date.One of: date, modified (Last modified), title, slug, id, author, relevance (Relevance (with a search)), include (Order of included IDs), include_slugs (Order of included slugs).
Sort directionordertext
Ascending or descending. WordPress defaults to descending.One of: desc (Descending), asc (Ascending).
Results per pageper_pagenumber
How many results to return, 1 to 100. WordPress defaults to 10 and refuses more than 100; read total_pages and ask for the next page for the rest.From 1 to 100. Default: 10.
Pagepagenumber
Which page of results to return, starting at 1.At least 1. Default: 1.
Include contentinclude_contenttrue/false
Turn this on to return each post's full body as HTML and as plain text, with a word count. Off by default, because a page of full posts is a lot to carry; the excerpt is always included.Default: false.

Outputs

countnumber
How many posts came back on this page.
has_moretrue/false
True when a later page exists.
itemslist
The posts on this page of results.
pagenumber
Which page this is.
per_pagenumber
The page size that was used.
site_urltext
The site that was read, normalised. Useful when the step named one rather than using the default.
totalnumber
How many posts match in all, across every page, from the site's X-WP-Total header. Null when the site did not say.
total_pagesnumber
How many pages there are at this page size.
Example output
{
  "count": 2,
  "has_more": true,
  "items": [
    {
      "author": 3,
      "author_name": "Jordan Blake",
      "author_url": "https://example.com/author/jordan/",
      "categories": [
        5
      ],
      "category_names": [
        "News"
      ],
      "comment_status": "open",
      "content_html": null,
      "content_text": null,
      "date": "2026-09-01T09:30:00",
      "date_gmt": "2026-09-01T08:30:00",
      "excerpt_html": "<p>After a year of work, the new version is out. [&hellip;]</p>\n",
      "excerpt_text": "After a year of work, the new version is out. [\u2026]",
      "featured_image_alt": "Five people around a laptop",
      "featured_image_url": "https://example.com/wp-content/uploads/2026/08/launch-hero.jpg",
      "featured_media": 412,
      "format": "standard",
      "id": 128,
      "link": "https://example.com/2026/09/we-launched/",
      "modified": "2026-09-02T14:05:00",
      "modified_gmt": "2026-09-02T13:05:00",
      "slug": "we-launched",
      "status": "publish",
      "sticky": true,
      "tag_names": [
        "Launch"
      ],
      "tags": [
        22
      ],
      "title": "We launched \u2013 here\u2019s what\u2019s new",
      "type": "post",
      "word_count": null
    },
    {
      "author": 3,
      "author_name": "Jordan Blake",
      "author_url": "https://example.com/author/jordan/",
      "categories": [
        5
      ],
      "category_names": [
        "News"
      ],
      "comment_status": "closed",
      "content_html": null,
      "content_text": null,
      "date": "2026-08-18T16:00:00",
      "date_gmt": "2026-08-18T15:00:00",
      "excerpt_html": "<p>Three things we are building next.</p>\n",
      "excerpt_text": "Three things we are building next.",
      "featured_image_alt": null,
      "featured_image_url": null,
      "featured_media": 0,
      "format": "standard",
      "id": 121,
      "link": "https://example.com/2026/08/summer-roadmap/",
      "modified": "2026-08-18T16:00:00",
      "modified_gmt": "2026-08-18T15:00:00",
      "slug": "summer-roadmap",
      "status": "publish",
      "sticky": false,
      "tag_names": [],
      "tags": [],
      "title": "Summer roadmap",
      "type": "post",
      "word_count": null
    }
  ],
  "page": 1,
  "per_page": 10,
  "site_url": "https://example.com",
  "total": 57,
  "total_pages": 6
}

List tags

List a site's tags with how many posts each carries, or the tags on one post. This is how to find the tag ID the post filters take. Sort by number of posts to see what a site writes about most.

Inputs

Site URLsite_urltext
The WordPress site to read, e.g. https://example.com or https://example.com/blog for a site in a subdirectory. Leave empty to read the default site saved on the connection.
Searchsearchtext
Only return tags matching these words.
Slugslugtext
Only return the tag with this slug, the last part of its URL. Exact match.
Post IDpostnumber
Only return the terms assigned to this post.At least 1.
Hide emptyhide_emptytrue/false
Turn this on to leave out terms that no published post uses.Default: false.
Sort byorder_bytext
What to sort by. WordPress defaults to name.One of: name, count (Number of posts), id, slug, description, term_group (Term group), include (Order of included IDs), include_slugs (Order of included slugs).
Sort directionordertext
Ascending or descending. WordPress defaults to descending.One of: desc (Descending), asc (Ascending).
Results per pageper_pagenumber
How many results to return, 1 to 100. WordPress defaults to 10 and refuses more than 100; read total_pages and ask for the next page for the rest.From 1 to 100. Default: 10.
Pagepagenumber
Which page of results to return, starting at 1.At least 1. Default: 1.

Outputs

countnumber
How many tags came back on this page.
has_moretrue/false
True when a later page exists.
itemslist
The tags on this page of results.
pagenumber
Which page this is.
per_pagenumber
The page size that was used.
site_urltext
The site that was read, normalised. Useful when the step named one rather than using the default.
totalnumber
How many tags match in all, across every page, from the site's X-WP-Total header. Null when the site did not say.
total_pagesnumber
How many pages there are at this page size.
Example output
{
  "count": 1,
  "has_more": true,
  "items": [
    {
      "count": 3,
      "description": "",
      "id": 22,
      "link": "https://example.com/tag/launch/",
      "name": "Launch",
      "parent": null,
      "slug": "launch",
      "taxonomy": "post_tag"
    }
  ],
  "page": 1,
  "per_page": 10,
  "site_url": "https://example.com",
  "total": 31,
  "total_pages": 4
}

Search a site

Search everything public on a site at once: posts, pages, custom types such as products, or categories and tags. Each result is an ID, a title, a URL and what kind of thing it is, so a match can be fetched in full with Get a post or Get a page. Narrow to one type when the mix is not wanted.

Inputs

Site URLsite_urltext
The WordPress site to read, e.g. https://example.com or https://example.com/blog for a site in a subdirectory. Leave empty to read the default site saved on the connection.
SearchsearchtextRequired
The words to search for.
Result typeresult_typetext
What kind of thing to search. Content is posts, pages and any public custom type; terms are categories and tags. Leave empty for content.One of: post (Content (posts, pages, custom types)), term (Terms (categories, tags)), post-format (Post formats).
Subtypesubtypetext
Narrow to one post type or taxonomy by its slug: post, page, a custom type such as product, or for terms category or post_tag. Several can be given separated by commas. Leave empty for any.
Results per pageper_pagenumber
How many results to return, 1 to 100. WordPress defaults to 10 and refuses more than 100; read total_pages and ask for the next page for the rest.From 1 to 100. Default: 10.
Pagepagenumber
Which page of results to return, starting at 1.At least 1. Default: 1.

Outputs

countnumber
How many results came back on this page.
has_moretrue/false
True when a later page exists.
itemslist
The results on this page of results.
pagenumber
Which page this is.
per_pagenumber
The page size that was used.
site_urltext
The site that was read, normalised. Useful when the step named one rather than using the default.
totalnumber
How many results match in all, across every page, from the site's X-WP-Total header. Null when the site did not say.
total_pagesnumber
How many pages there are at this page size.
Example output
{
  "count": 2,
  "has_more": false,
  "items": [
    {
      "id": 128,
      "subtype": "post",
      "title": "We launched \u2013 here\u2019s what\u2019s new",
      "type": "post",
      "url": "https://example.com/2026/09/we-launched/"
    },
    {
      "id": 2,
      "subtype": "page",
      "title": "About",
      "type": "post",
      "url": "https://example.com/about/"
    }
  ],
  "page": 1,
  "per_page": 10,
  "site_url": "https://example.com",
  "total": 2,
  "total_pages": 1
}

On this page