Ghost Blog Scraper avatar

Ghost Blog Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Ghost Blog Scraper

Ghost Blog Scraper

Scrape posts, pages, tags, authors, and site info from any Ghost CMS-powered blog via Ghost's public Content API - including ghost.org's own /resources, /changelog, and /help sections. Works globally against any Ghost publication by auto-discovering its public Content API key.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Scrape posts, pages, tags, authors, and site info from any Ghost CMS-powered blog — including ghost.org's own /resources, /changelog, and /help publications, or any independent Ghost blog (Platformer, Lenny's Newsletter-style publications, and thousands more). Works via Ghost's official public Content API, with the read-only API key auto-discovered from the target site's homepage — no login, no admin credentials, no proxy required.

What this actor does

  • Global by design: point it at any Ghost-powered site's URL and it works — the public Content API key every Ghost theme embeds for its member-signup widget is auto-discovered automatically
  • Ten modes: posts, pages, tags, authors, byPostSlugs, byPageSlugs, byTagSlugs, byAuthorSlugs, siteInfo, tiers
  • Post filters: tag, author, publish-date range, keyword, featured-only, minimum reading time
  • Full metadata: tags, authors, feature images, SEO/OG/Twitter card fields, reading time, comment/member-access flags
  • Empty fields are omitted — every record only contains fields that actually have data

Output fields

Posts / Pages (recordType: "post" / "page")

FieldDescription
postId, uuid, slugPost identity
title, excerpt, html, plaintextContent (plaintext only if includePlaintext is set)
featureImage, featureImageAlt, featureImageCaptionCover image
featuredWhether flagged as featured
visibilitypublic / members / paid
publishedAt, updatedAt, createdAtTimestamps
readingTimeMinutesEstimated reading time
commentsEnabled, access, commentIdComment/member-access flags, native Ghost comment-thread ID
tags[], tagSlugs[], primaryTagTags (posts only)
authors[], authorSlugs[], primaryAuthorAuthors (posts only)
emailSubjectNewsletter email subject line, if sent as a newsletter (posts only)
metaTitle, metaDescription, canonicalUrlSEO fields
ogImage, ogTitle, ogDescription, twitterImage, twitterTitle, twitterDescriptionSocial card fields
postUrlCanonical URL

Tags (recordType: "tag")

tagId, name, slug, description, featureImage, visibility, accentColor, metaTitle, metaDescription, ogImage, ogTitle, ogDescription, twitterImage, twitterTitle, twitterDescription, canonicalUrl, tagUrl

Authors (recordType: "author")

authorId, name, slug, profileImage, coverImage, bio, website, location, social links (facebook, twitter, threads, bluesky, mastodon, tiktok, youtube, instagram, linkedin), metaTitle, metaDescription, authorUrl

Membership tiers (recordType: "tier")

tierId, name, slug, description, type (free / paid), visibility, active, welcomePageUrl, currency, monthlyPrice, yearlyPrice, trialDays, benefits[], createdAt, updatedAt

Prices are in the smallest currency unit (e.g. cents for USD) as returned by the Content API.

Site info (recordType: "site")

siteTitle, siteDescription, logo, icon, accentColor, coverImage, social links, locale, timezone, navigation[], secondaryNavigation[], metaTitle, metaDescription, ogImage, ogTitle, ogDescription, twitterImage, twitterTitle, twitterDescription, codeinjectionHead, codeinjectionFoot, membersEnabled, paidMembersEnabled, donationsEnabled, recommendationsEnabled, commentsEnabled, version, siteUuid, siteUrl

Every record also includes recordType and scrapedAt (UTC ISO timestamp).

Input

FieldTypeDefaultDescription
modestringpostsposts / pages / tags / authors / byPostSlugs / byPageSlugs / byTagSlugs / byAuthorSlugs / siteInfo / tiers
siteUrlstringhttps://ghost.org/resourcesBase URL of any Ghost-powered site
contentApiKeystringOverride, only if auto-discovery fails
apiBaseUrlstringOverride, only if auto-discovery fails
tagSlugstringmode=posts: filter to a tag slug
authorSlugstringmode=posts: filter to an author slug
visibilityselectmode=posts: public / members / paid
sortOrderstringnewestmode=posts/pages: newest / oldest
dateFromstringmode=posts: ISO date, published on/after
dateTostringmode=posts: ISO date, published on/before
keywordstringCase-insensitive substring match on title/excerpt
featuredOnlybooleanfalseOnly featured posts
minReadingTimeintegerDrop posts/pages shorter than this many minutes
includePlaintextbooleanfalseAlso fetch a plaintext body
postSlugsarraymode=byPostSlugs: exact slugs to look up
pageSlugsarraymode=byPageSlugs: exact page slugs to look up
tagSlugsarraymode=byTagSlugs: exact tag slugs to look up
authorSlugsarraymode=byAuthorSlugs: exact author slugs to look up
maxItemsinteger50Hard cap (1–1000)

Example: latest posts from ghost.org's resources hub

{
"mode": "posts",
"siteUrl": "https://ghost.org/resources",
"sortOrder": "newest",
"maxItems": 25
}

Example: posts filtered by tag and date range

{
"mode": "posts",
"siteUrl": "https://ghost.org/resources",
"tagSlug": "newsletter",
"dateFrom": "2025-01-01",
"maxItems": 20
}

Example: any independent Ghost blog

{
"mode": "posts",
"siteUrl": "https://www.platformer.news",
"maxItems": 20
}

Example: single post lookup

{
"mode": "byPostSlugs",
"siteUrl": "https://ghost.org/resources",
"postSlugs": ["grasping-your-growth"]
}

Example: exact page / tag / author lookups

{ "mode": "byPageSlugs", "siteUrl": "https://ghost.org/resources", "pageSlugs": ["referrals"] }
{ "mode": "byTagSlugs", "siteUrl": "https://ghost.org/resources", "tagSlugs": ["newsletter"] }
{ "mode": "byAuthorSlugs", "siteUrl": "https://ghost.org/resources", "authorSlugs": ["armando"] }

Use cases

  • Content research — pull a Ghost publication's full archive with metadata
  • Newsletter tracking — monitor a Ghost-powered newsletter's post cadence and topics
  • Migration / backup — export posts, tags, and authors from a Ghost site
  • SEO analysis — audit meta titles, descriptions, and social card fields across posts
  • Competitive monitoring — track any independent Ghost publication's publishing activity

FAQs

Does this require a Ghost admin account or API key? No. Ghost's Content API key is a public, read-only key that every Ghost theme embeds directly in its homepage HTML (for the built-in member-signup widget). This actor discovers that key automatically — the same way your browser's page already has access to it.

Will this work on my own Ghost blog? Yes — set siteUrl to your blog's URL. If your theme doesn't expose the standard member-signup widget (rare), supply contentApiKey and apiBaseUrl manually; you can find these in your Ghost Admin under Settings → Integrations.

Why does ghost.org/resources return different data than ghost.org? ghost.org itself is a static marketing site, not Ghost CMS. Ghost's own product blog, changelog, and help center live at ghost.org/resources, ghost.org/changelog, and ghost.org/help — each is a genuine Ghost-powered publication reverse-proxied onto the main domain. All three work as siteUrl values.

Can I scrape members-only or paid content? No — the Content API only returns what's publicly visible without a member login. Posts with visibility: members or visibility: paid will show their metadata but the html/plaintext body will be excerpt-only, matching what a logged-out visitor sees.

Is this actor global? Yes — Ghost is used by thousands of independent publications worldwide with no regional restrictions. Any Ghost site's URL works as input.