Buttondown Newsletter Archive Scraper avatar

Buttondown Newsletter Archive Scraper

Pricing

Pay per event

Go to Apify Store
Buttondown Newsletter Archive Scraper

Buttondown Newsletter Archive Scraper

Scrape posts from any Buttondown newsletter publication. Input a list of publication usernames and get back every post with title, date, excerpt, cover image, tags, and optional full body text. Supports multi-publication fan-out. No login required.

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Scrape posts from any Buttondown newsletter publication. Input a list of publication usernames and get back every post with title, publish date, excerpt, cover image, tags, paid flag, and full body text. Supports multi-publication fan-out in a single run.

What it does

Buttondown is the leading privacy-first newsletter platform used by developers, indie authors, and technical writers. This actor crawls the server-rendered Buttondown archive — no login required.

For each username you provide, the actor:

  1. Fetches https://buttondown.com/<username>/sitemap.xml to discover all post URLs.
  2. Visits the publication's archive page to extract the publication name, description, and per-post card metadata (excerpt, cover image, date, tags, paid flag).
  3. Visits each post's detail page to extract the title, publish date, and full body text.

Input

FieldTypeDescription
usernamesarrayRequired. List of Buttondown usernames (e.g. ["cassidoo", "buttondown"]). You can also pass full URLs like https://buttondown.com/cassidoo.
maxItemsintegerMaximum posts to scrape per publication. Set 0 for unlimited. Default: 10.

Example input

{
"usernames": ["cassidoo", "swyx"],
"maxItems": 50
}

Output

Each record in the dataset contains:

FieldDescription
publication_usernameButtondown username (e.g. cassidoo)
publication_namePublication display name
publication_descriptionPublication about text
post_urlFull URL to the post
post_titlePost title
post_subtitleSubtitle, if present
authorAuthor name
publish_datePublication date as shown on the page (e.g. May 25, 2026)
excerptShort excerpt from the archive listing card
cover_image_urlCover image URL from the archive card
tagsComma-separated tag list
is_paidWhether the post is behind a paid subscription wall
full_textFull body text of the newsletter email
scraped_atISO timestamp when this record was scraped

Example output record

{
"publication_username": "cassidoo",
"publication_name": "rendezvous with cassidoo",
"publication_description": "Interviews, tips, and thoughts on software engineering...",
"post_url": "https://buttondown.com/cassidoo/archive/permit-yourself-to-change-your-mind/",
"post_title": "Permit yourself to change your mind",
"post_subtitle": "",
"author": "rendezvous with cassidoo",
"publish_date": "May 25, 2026",
"excerpt": "Hey friends! I hope you had a good week...",
"cover_image_url": "",
"tags": "",
"is_paid": false,
"full_text": "Hey friends!\nI hope you had a good week!...",
"scraped_at": "2026-05-28T17:15:00.000Z"
}

How to find a Buttondown username

The username is the part of the publication URL after buttondown.com/. For example:

  • https://buttondown.com/cassidoo → username is cassidoo
  • https://buttondown.com/swyx → username is swyx

Any publication that has a public archive at https://buttondown.com/<username>/archive/ or a sitemap at https://buttondown.com/<username>/sitemap.xml works.

Limitations

  • Private posts: Posts behind a free-subscription gate are still fetched but flagged is_paid: false. Posts behind a paid-tier wall are flagged is_paid: true and may have truncated full_text.
  • Sitemap coverage: Only posts listed in the publication's sitemap are discovered. Publications without a sitemap or with a private-only archive return zero results.
  • Rate limiting: The actor uses a polite crawl rate. For large publications with thousands of posts, use maxItems to cap the run size.