{
  "openapi": "3.0.1",
  "info": {
    "title": "WordPress Posts & Pages API — Any WP Site, No Login",
    "description": "Every WordPress site has a public JSON API; this reads it. Posts and pages from any WP site as clean rows: full text or Markdown, categories and tags by name, featured image, dates in UTC, word count. Free rows for sites that are not WordPress or have the API off. No login, no browser.",
    "version": "0.1",
    "x-build-id": "t2IGH1KYogIfAYCy3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/insight.solutions~wordpress-posts-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-insight.solutions-wordpress-posts-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/insight.solutions~wordpress-posts-api/runs": {
      "post": {
        "operationId": "runs-sync-insight.solutions-wordpress-posts-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/insight.solutions~wordpress-posts-api/run-sync": {
      "post": {
        "operationId": "run-sync-insight.solutions-wordpress-posts-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "sites"
        ],
        "properties": {
          "sites": {
            "title": "WordPress sites",
            "type": "array",
            "description": "One site per line, as you would type it into a browser: `https://wordpress.org/news`, `ma.tt`, `https://example.com/blog`. `https://` is added when missing, a subdirectory install is found at its own path first, and a pasted post, feed or `/wp-json/` URL is read as the site it belongs to. Duplicates are dropped. A site that is not WordPress, or has switched its REST API off, comes back as one free row saying so.",
            "items": {
              "type": "string"
            }
          },
          "contentTypes": {
            "title": "Content types",
            "type": "array",
            "description": "`posts` are the blog entries (newest first); `pages` are the site's static pages (About, Contact…). Both come back on the same columns. With both selected, `maxItemsPerSite` covers them together, in the order listed.",
            "items": {
              "type": "string",
              "enum": [
                "posts",
                "pages"
              ],
              "enumTitles": [
                "Posts",
                "Pages"
              ]
            },
            "default": [
              "posts"
            ]
          },
          "search": {
            "title": "Search",
            "type": "string",
            "description": "Only posts matching this text, searched by WordPress itself (title, excerpt and content). Results stay newest first. Leave empty for everything.",
            "default": ""
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Only posts in any of these categories. Each entry is a category id (`577047203`), its slug (`artificial-intelligence`) or its archive URL (`https://techcrunch.com/category/venture/`); a slug is looked up once per site. A slug a site does not have comes back as a free row naming it. Pages have no categories, so pages are skipped when this is set.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "tags": {
            "title": "Tags",
            "type": "array",
            "description": "Only posts with any of these tags: ids, slugs or tag archive URLs, as for categories.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "publishedAfter": {
            "title": "Published after",
            "pattern": "^$|^\\d{4}-\\d{2}-\\d{2}([T ]\\d{2}:\\d{2}(:\\d{2})?(\\.\\d+)?(Z|z|[+-]\\d{2}:?\\d{2})?)?$",
            "type": "string",
            "description": "Only posts published after this: `2026-09-01` (midnight at the start of that day) or a full timestamp such as `2026-09-01T12:00:00`. WordPress compares it with the post's publish time in the site's own timezone; add `Z` or an offset to pin it."
          },
          "publishedBefore": {
            "title": "Published before",
            "pattern": "^$|^\\d{4}-\\d{2}-\\d{2}([T ]\\d{2}:\\d{2}(:\\d{2})?(\\.\\d+)?(Z|z|[+-]\\d{2}:?\\d{2})?)?$",
            "type": "string",
            "description": "Only posts published before this, in the same formats. A bare date is midnight at the *start* of that day, so `2026-10-01` means \"up to the end of September\"."
          },
          "textFormat": {
            "title": "Body format",
            "enum": [
              "text",
              "markdown",
              "html"
            ],
            "type": "string",
            "description": "How the post body comes back. `text` is clean plain text in the `text` column; `markdown` keeps headings, links, lists, images and code in the `markdown` column; `html` is the body exactly as WordPress rendered it, in the `html` column. `wordCount` and `excerpt` are filled whichever you pick.",
            "default": "text"
          },
          "maxTextChars": {
            "title": "Max body length (characters)",
            "minimum": 100,
            "maximum": 1000000,
            "type": "integer",
            "description": "Bodies longer than this are cut, and `textTruncated` says so. `wordCount` always counts the whole post.",
            "default": 50000
          },
          "includeFeaturedImage": {
            "title": "Featured images",
            "type": "boolean",
            "description": "Fill `imageUrl` and `imageAlt` with each post's featured image. Costs one extra request per page of up to 100 posts, never one per post.",
            "default": true
          },
          "maxItemsPerSite": {
            "title": "Max items per site",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "The most posts and pages (together) read from each site, newest first. Each one is a paid row; free site and diagnostic rows do not count.",
            "default": 50
          },
          "maxConcurrency": {
            "title": "Sites at once",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many sites to read at the same time. Each site is still held to two requests in flight, 300–600 ms apart, whatever you set here.",
            "default": 3
          },
          "maxRunSecs": {
            "title": "Time budget (seconds)",
            "minimum": 30,
            "maximum": 3600,
            "type": "integer",
            "description": "Stop after this many seconds. Rows already returned are kept, and a free `deadline` row names each site that was cut short or never started.",
            "default": 240
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "The capture probe read wordpress.org, TechCrunch and ma.tt through Apify's datacenter proxy, so that is the default. Switch to residential for sites that refuse datacenter addresses — a refused site comes back as a free `blocked` row, after one retry from a fresh address.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}