Buttondown Newsletter Archive Scraper
Pricing
Pay per event
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
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:
- Fetches
https://buttondown.com/<username>/sitemap.xmlto discover all post URLs. - Visits the publication's archive page to extract the publication name, description, and per-post card metadata (excerpt, cover image, date, tags, paid flag).
- Visits each post's detail page to extract the title, publish date, and full body text.
Input
| Field | Type | Description |
|---|---|---|
usernames | array | Required. List of Buttondown usernames (e.g. ["cassidoo", "buttondown"]). You can also pass full URLs like https://buttondown.com/cassidoo. |
maxItems | integer | Maximum 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:
| Field | Description |
|---|---|
publication_username | Buttondown username (e.g. cassidoo) |
publication_name | Publication display name |
publication_description | Publication about text |
post_url | Full URL to the post |
post_title | Post title |
post_subtitle | Subtitle, if present |
author | Author name |
publish_date | Publication date as shown on the page (e.g. May 25, 2026) |
excerpt | Short excerpt from the archive listing card |
cover_image_url | Cover image URL from the archive card |
tags | Comma-separated tag list |
is_paid | Whether the post is behind a paid subscription wall |
full_text | Full body text of the newsletter email |
scraped_at | ISO 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 iscassidoohttps://buttondown.com/swyx→ username isswyx
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 flaggedis_paid: trueand may have truncatedfull_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
maxItemsto cap the run size.