Skip to main content

Medium Scraper

A high-scale, async Medium scraper with request abstraction and HTML-to-Markdown parser. Quickly discover and convert Medium articles to clean Markdown with our intuitive web interface.

🌐 Web Interface (Recommended)

The easiest way to use Medium Scraper is through our web interface:

# Install web dependencies  
pip install medium-scraper[web]

# Run web server
cd web && python app.py

Then open your browser to http://localhost:8000

Docker Deployment (Easiest Setup)

cd web && docker build -t medium-scraper-web . && docker run -p 8000:8000 medium-scraper-web

Features

  • Intuitive GUI for scraping Medium articles
  • Real-time progress tracking via WebSocket
  • Download results as ZIP files
  • Job history and persistent storage
  • Multiple request modes:
    • Decodo API: Smart managed scraping (requires Decodo API key)
    • Custom Proxies: Bring your own proxy list
    • Proxyless: Direct requests with your IP

🔧 Core Features

All components share these powerful features:

  • Async/await support for high-performance operations
  • Multiple request backends: Direct requests, custom proxies, or Decodo Scraper API
  • Intelligent caching with configurable backends
  • Progress tracking with callbacks
  • Concurrent processing with rate limiting
  • Robust error handling and retries

Web Interface

  • Intuitive GUI for scraping Medium articles
  • Real-time progress tracking via WebSocket
  • Download results as ZIP files
  • Job history and persistent storage
  • Multiple request modes:
    • Decodo API: Smart managed scraping (requires Decodo API key)
    • Custom Proxies: Bring your own proxy list
    • Proxyless: Direct requests with your IP

CLI Tool

  • Interactive prompts with rich formatting
  • Progress bars and detailed statistics
  • Multiple output formats (JSON, Markdown files)
  • Proxy support and custom configurations
  • Tag pagination and article filtering

Core Library

These features are also available when using the library programmatically. See our Library Documentation for details.

🛠️ Installation Options

Basic Installation

pip install medium-scraper

📚 Request Senders

The library supports multiple request backends:

  1. RequestsRequestSender: Standard requests library (works with custom proxies or proxyless)
  2. DecodoScraperRequestSender: Advanced scraping with Decodo API (requires API key)
  3. CachedRequestSender: Adds caching to any sender

Choose the appropriate sender based on your needs:

from medium_scraper import RequestsRequestSender, DecodoScraperRequestSender

# For simple use cases (proxyless or with custom proxies)
sender = RequestsRequestSender()

# For advanced scraping with Decodo (requires API key from https://decodo.com)
sender = DecodoScraperRequestSender(api_key="your-decodo-api-key")

🔄 Async Usage

The library is designed to be fully async:

import asyncio
from medium_scraper import MediumExplorer

async def main():
    explorer = MediumExplorer()
    articles = await explorer.get_tag_articles("python", limit=5)
    
    for article in articles:
        print(f"Title: {article.title}")
        print(f"URL: {article.url}")

asyncio.run(main())

📚 Library Usage

For programmatic usage of the core library, please refer to our Library Documentation which provides detailed examples.

🖥️ CLI Tool

The command-line interface offers powerful scraping capabilities. See our CLI Documentation for comprehensive usage instructions.

📖 Documentation

For more detailed information about each component, please see the documentation in the docs folder:

🔗 Links

Metadata

Release files for medium-scraper 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for medium-scraper 0.1.1
File Size Uploaded
medium_scraper-0.1.1.tar.gz 21.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for medium-scraper 0.1.1
File Interpreter ABI Platform
medium_scraper-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 42.4 kB

Release files / medium_scraper-0.1.1.tar.gz

Download URL medium_scraper-0.1.1.tar.gz
Size 21.6 kB
Tags Source
SHA-256 checksum
How to use checksums
90fc34a96e9de4eafa9e07c641c46cf947edb59fcb6dda595c76b8f817976bf7
BLAKE2b-256 checksum
How to use checksums
44c4f96412140febfa4bdf5e3f651631627ea8536bcbd0c2ec781886c5bc3d1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.11

Release files / medium_scraper-0.1.1-py3-none-any.whl

Download URL medium_scraper-0.1.1-py3-none-any.whl
Size 20.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ca995a6c8a6a41912ca6190f4f179a31edd48fac616b8ae992196adbcd47e34d
BLAKE2b-256 checksum
How to use checksums
56ce74cca083431abb741f72118146fe07e085b5fe1871e2c27feb3ff39d6f88
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.11

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page