Substack API
An unofficial Python client library for interacting with Substack newsletters and content.
Overview
This library provides Python interfaces for interacting with Substack's unofficial API, allowing you to:
- Retrieve newsletter posts, podcasts, and recommendations
- Get user profile information and subscriptions
- Fetch post content and metadata
- Search for posts within newsletters
Installation
pip install substack-api
poetry add substack-api
Usage Examples
Working with Newsletters
from substack_api import Newsletter
newsletter = Newsletter("https://example.substack.com")
recent_posts = newsletter.get_posts(limit=5)
top_posts = newsletter.get_posts(sorting="top", limit=10)
search_results = newsletter.search_posts("machine learning", limit=3)
podcasts = newsletter.get_podcasts(limit=5)
recommendations = newsletter.get_recommendations()
authors = newsletter.get_authors()
Working with Posts
from substack_api import Post
post = Post("https://example.substack.com/p/post-slug")
metadata = post.get_metadata()
content = post.get_content()
Working with Users
from substack_api import User
user = User("username")
profile_data = user.get_raw_data()
user_id = user.id
name = user.name
subscriptions = user.get_subscriptions()
Limitations
- This is an unofficial library and not endorsed by Substack
- APIs may change without notice, potentially breaking functionality
- Some features may only work for public content
- Rate limiting may be enforced by Substack
Development
Running Tests
pip install -e ".[dev]"
pytest
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
)
- Commit your changes (
git commit -m 'Add some amazing feature'
)
- Push to the branch (
git push origin feature/amazing-feature
)
- Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Disclaimer
This package is not affiliated with, endorsed by, or connected to Substack in any way. It is an independent project created to make Substack content more accessible through Python.