AI & documents · Live on Apify

WordPress Posts and Pages Scraper: Export Public Content

Add a WordPress site URL and export its public posts and pages. You get HTML, plain text, dates, categories and tags. The site must allow its public REST API.

About $1.90 for 1,000 posts and pages$0.0019 per post or page + $0.0045 per run. Apify bills you, not us.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

sourceUrlhttps://wordpress.org/news
recordTypePOST
typepost

How to use it: 3 steps

  1. Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: https://wordpress.org/news in WordPress site URLs. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Export public WordPress posts and pages with HTML, plain text, dates, categories and tags. Add one site URL for a small content sample. The site must allow its public WordPress REST API. Limits and source errors are shown in the run summary.

Who uses it

Site migration teams

Export content as JSON for your migration tool.

SEO specialists

Get a list of posts with dates and tags to review in a sheet.

Text researchers

Collect plain text of blog posts for your analysis.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Start fee$0.0045Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more.
Saved post or page$0.0019One unique public published post or page saved to the Dataset.

Examples

  • One post or page: about $0.0064.
  • 1,000 posts and pages: about $1.90.
  • Every day 100 posts and pages, for 30 days: about $5.83 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 2,600 posts and pages.

Prices checked on 24 October 2026. See the current price on Apify.

Questions

Can it get drafts or private posts?

No. It reads only published, public posts and pages.

Why does a site not work?

Some sites turn off the public WordPress REST API. Then the tool cannot read them.

Does it change anything on the site?

No. It only reads data. It never edits the site.

Does it get comments or images?

No. Comments, media files and author profiles are not included.

Do I need a WordPress login?

No. The source API must be public. The Actor does not accept passwords or cookies.

Does it work on every WordPress site?

No. It needs a reachable core REST API on that site. Some hosted sites, plugins and firewalls change or block the API.

Is an empty run free?

No. It has the start event and Apify platform usage, but no saved-record event.

Can it collect all content without a limit?

No. Each run has explicit result, page, time, request and size limits. Check the summary before using an export.

Are category and tag names always available?

No. IDs can be present while embedded names are missing. Those values stay null and extractionStatus is partial. Standard pages have empty taxonomy arrays.

Details

Step by step on Apify
  1. Open Input.
  2. Add https://wordpress.org/news to WordPress site URLs (siteUrls).
  3. Choose posts and pages.
  4. Set maxResults to 4, perPage to 2 and maxPagesPerType to 1.
  5. Click Start. Open the Dataset and check id, titleText and link.
  6. Open KVS RUN_SUMMARY. The sample is partial because more posts exist.
Use cases
TaskInputKey fieldsNext step
Content migrationChoose posts and pagescontent.rendered, title.rendered, slug, linkExport JSON for your migration tool.
SEO content listAdd a site and small limitid, titleText, link, date, categoriesExport CSV for review.
Text collectionChoose posts and optional searchcontentText, excerptText, sourceUrlRead Dataset records in your text workflow.
Tips for better results
  • Start small: 4 results and 1 page per type. Check the output first.
  • Read the run summary. An empty dataset alone does not tell you what happened.
  • Use the search field to export only posts about one topic.
Limits and good to know

The result cap is 1,000 saved records per run. A live WordPress News export returned 1,000 supported posts at 512 MB. This proves that sample, not every WordPress site. Sources can change, block cloud IPs, disable REST API routes or return large content.

Troubleshooting

SymptomPossible reasonCheck and next action
0 rows, completeA valid collection is empty or search has no matchesCheck search and selected types. Remove search for a small new run.
0 rows, errorNon-WordPress HTML, denied REST API or malformed JSONCheck outcomes.errorCode. Use the WordPress installation root and verify its public REST API.
not_foundBoth supported REST route formats return 404Check the site root or subdirectory. This Actor cannot enable the API.
Some rows, partialA limit, missing terms or one failed siteCheck row extractionStatus and outcomes. Increase page/result caps only within the allowed range.
HTTP_429 or HTTP_5xxSource rate limit or server problemThe Actor retries temporary failures up to twice. Increase requestDelayMs or try a small run later. Long Retry-After values stop with a clear code.
UNSAFE_ADDRESS or CROSS_SITE_REDIRECTPrivate address or another destination hostUse a public site root. Private addresses and unrelated redirect hosts are rejected.
RESPONSE_TOO_LARGE or CONTENT_TOO_LARGEThe source payload exceeds a size limitLower perPage for response size. A single oversized field remains unsupported.
PAGE_LIMIT or RESULT_LIMITMore source records exist than requestedThe result is a bounded sample. Increase the matching cap to read more.

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "sourceUrl": "https://wordpress.org/news",
  "recordType": "POST",
  "id": 21731,
  "type": "post",
  "status": "publish",
  "link": "https://wordpress.org/news/2026/09/wordpress-7-1-2-release/",
  "date": "2026-09-22T14:01:20",
  "date_gmt": "2026-09-22T14:01:20",
  "title": {
    "rendered": "WordPress 7.1.2 Release"
  },
  "titleText": "WordPress 7.1.2 Release",
  "categories": [
    14,
    15
  ],
  "tags": [],
  "categoryDetails": [
    {
      "id": 14,
      "name": "Releases",
      "slug": "releases",
      "link": "https://wordpress.org/news/category/releases/"
    },
    {
      "id": 15,
      "name": "Security",
      "slug": "security",
      "link": "https://wordpress.org/news/category/security/"
    }
  ],
  "tagDetails": [],
  "extractionStatus": "complete",
  "content": {
    "rendered": "\n<p class=\"wp-block-paragraph\">This security release features a fix for a critical severity security vulnerability.</p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong",
    "protected": false
  },
  "contentText": "This security release features a fix for a critical severity security vulnerability.\n\nBecause this is a security release, it is recommended that you update your"
}

Use it from code

Actor ID: cliqtomedia/wordpress-posts-pages-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/wordpress-posts-pages-scraper").call(run_input={
    "siteUrls": [
        "https://wordpress.org/news"
    ],
    "contentTypes": [
        "posts",
        "pages"
    ]
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~wordpress-posts-pages-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"siteUrls": ["https://wordpress.org/news"], "contentTypes": ["posts", "pages"]}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/wordpress-posts-pages-scraper")
result = tool.invoke({"run_input": {"siteUrls": ["https://wordpress.org/news"], "contentTypes": ["posts", "pages"]}})
print(result)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Data fields (23)
FieldType
sourceUrlstring
recordTypestring
typestring
statusstring
linkstring
titleTextstring
contentTextstring
excerptTextstring
extractionStatusstring
observedAtstring
slugstring
datestring
date_gmtstring
modifiedstring
modified_gmtstring
idinteger
titleobject
contentobject
excerptobject
categoriesarray
tagsarray
categoryDetailsarray
tagDetailsarray
Input settings (7)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
WordPress site URLs requiredsiteUrlsarray["https://wordpress.org/news"]
Content to collectcontentTypesarray["posts", "pages"]
Maximum saved recordsmaxResultsinteger100
Maximum pages per content typemaxPagesPerTypeinteger5
Records per API pageperPageinteger20
Search in WordPresssearchstring""
Delay between requests (ms)requestDelayMsinteger1000

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure