A lightweight R client for the Substack API. All functions return data frames, handle errors with informative messages, and work out of the box once you’ve set your API key.
Installation
From CRAN:
install.packages("substackR")Development version from GitHub:
# install.packages("pak") # if needed pak::pak("posocap/substackR")
Authentication
Provide your API key once per session with:
library(substackR) set_substack_key("your-substack-api-key")
If you haven’t set the key, any API call will prompt you to call set_substack_key() first.
Main Functions
get_substack_latest()
Fetches the latest posts.
latest_posts <- get_substack_latest( publication_url = "posocap.substack.com", limit = 10, offset = 0 )
Returns a data frame with columns:
- slug
- url
- title
- description
- excerpt
- body_html
- reading_time_minutes
- audio_url
- date
- likes
- paywall
- cover_image
- cover_image_color_palette
- author
- author_image
get_substack_top()
Fetches the top (most liked) posts.
top_posts <- get_substack_top("posocap.substack.com", limit = 5)
get_substack_search()
Searches posts by keyword.
search_results <- get_substack_search( publication_url = "posocap.substack.com", query = "data science", limit = 20 )
get_substack_post()
Retrieves a single post by slug.
single_post <- get_substack_post( publication_url = "posocap.substack.com", slug = "your-post-slug" )
Error Handling
- Missing API key → error asking you to run
set_substack_key(). - HTTP errors (4xx, 5xx, rate limits) →
cli::cli_abort()with status code and message. - JSON parsing issues → warning + empty data frame.
Contributing
- Fork the repo
- Create a branch (e.g.
feature/xyz) - Install dependencies:
devtools::install_deps(dependencies = TRUE)
- Run tests:
devtools::test()
- Submit a pull request.
License
MIT © Posocap.com
See LICENSE for details.